当前位置: 首页 > news >正文

长沙网页网站制作长沙网站seo推广公司

长沙网页网站制作,长沙网站seo推广公司,上海中小企业网站,旅游网站官网文章目录 1. 前言2. 平台操作流程2.1 创建设备2.2 创建数据流模板 3. WIZnet以太网芯片4. 示例讲解以及使用4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 烧录验证 5. 注意事项6. 相关链接 1. 前言 在这个智能硬件和物联网时代,MicroPython和树莓派PICO正…

文章目录

  • 1. 前言
  • 2. 平台操作流程
    • 2.1 创建设备
    • 2.2 创建数据流模板
  • 3. WIZnet以太网芯片
  • 4. 示例讲解以及使用
    • 4.1 程序流程图
    • 4.2 测试准备
    • 4.3 连接方式
    • 4.4 相关代码
    • 4.5 烧录验证
  • 5. 注意事项
  • 6. 相关链接

1. 前言

  在这个智能硬件和物联网时代,MicroPython和树莓派PICO正以其独特的优势引领着嵌入式开发的新潮流。MicroPython作为一种精简优化的Python 3语言,为微控制器和嵌入式设备提供了高效开发和简易调试的

  当我们结合WIZnet W5100S/W5500网络模块,MicroPython和树莓派PICO的开发潜力被进一步放大。这两款模块都内置了TCP/IP协议栈,使得在嵌入式设备上实现网络连接变得更加容易。无论是进行数据传输、远程控制,还是构建物联网应用,它们都提供了强大的支持。

  本章我们将以WIZnet W5100S为例,以MicroPython的开发方式,连接至OneNET的HTTP服务器上,并定时通过POST上传DHT11温湿度传感器采集的温湿度信息,再通过GET获取温湿度信息。

2. 平台操作流程

2.1 创建设备

  首先进入开发者中心,在多协议接入的HTTP界面下创建好产品以及设备,然后添加apikey。

注意:如果您登录之后并没有多协议接入这个选项,则需先进行实名认证。

在这里插入图片描述

2.2 创建数据流模板

在数据流模板界面创建温度和湿度的数据流模板。

在这里插入图片描述

3. WIZnet以太网芯片

WIZnet 主流硬件协议栈以太网芯片参数对比

ModelEmbedded CoreHost I/FTX/RX BufferHW SocketNetwork Performance
W5100STCP/IPv4, MAC & PHY8bit BUS, SPI16KB4Max 25Mbps
W6100TCP/IPv4/IPv6, MAC & PHY8bit BUS, Fast SPI32KB8Max 25Mbps
W5500TCP/IPv4, MAC & PHYFast SPI32KB8Max 15Mbps
  • W5100S/W6100 支持 8bit数据总线接口,网络传输速度会优于W5500。
  • W6100 支持IPV6,与W5100S 硬件兼容,若已使用W5100S的用户需要支持IPv6,可以Pin to Pin兼容。
  • W5500 拥有比 W5100S更多的 Socket数量以及发送与接收缓存

相较于软件协议栈,WIZnet的硬件协议栈以太网芯片有以下优点

  1. 硬件TCP/IP协议栈:WIZnet的硬件协议栈芯片提供了一种硬件实现的TCP/IP协议栈,这种硬件实现的协议栈比软件实现的协议栈具有更好的性能和稳定性。
  2. 不需要额外的嵌入式系统软件栈和内存资源:由于所有的以太网传输和接收操作都由独立的以太网控制器处理,因此不需要额外的嵌入式系统软件栈和内存资源。
  3. 抵抗网络环境变化和DDoS攻击:与易受网络环境变化和DDoS攻击影响的软件TCP/IP协议栈相比,硬件协议栈芯片能够提供更稳定的以太网性能。
  4. 适用于低规格的嵌入式系统:即使在低规格的嵌入式系统中,使用WIZnet的硬件协议栈芯片也可以比使用软件TCP/IP协议栈的高规格系统显示出更高效的互联网应用操作性能。

在这里插入图片描述

4. 示例讲解以及使用

4.1 程序流程图

在这里插入图片描述

4.2 测试准备

软件:

  • Thonny
  • OneNET平台

硬件:

  • W5100S IO模块 + RP2040 树莓派Pico开发板 或者 WIZnet W5100S-EVB-Pico开发板
  • DHT11温湿度传感器
  • Micro USB 接口的数据线
  • 网线

4.3 连接方式

  • 通过数据线连接PC的USB口
  • 当使用W5100S/W5500 IO模块连接RP2040时
    • RP2040 GPIO 16 <----> W5100S/W5500 MISO
    • RP2040 GPIO 17 <----> W5100S/W5500 CS
    • RP2040 GPIO 18 <----> W5100S/W5500 SCK
    • RP2040 GPIO 19 <----> W5100S/W5500 MOSI
    • RP2040 GPIO 20 <----> W5100S/W5500 RST
  • DHT11连接RP2040
    • RP2040 GPIO 2 <----> DHT11 data
    • RP2040 3V3 <----> DHT11 VCC
    • RP2040 GND <----> DHT11 GND
  • 通过网线直接连接PC网口(或:PC和设备都通过网线连接交换机或路由器LAN口)

4.4 相关代码

  我们直接打开http_client.onenet.py文件。

第一步:可以看到在w5x00_init()函数中,进行了SPI的初始化。以及将spi相关引脚和复位引脚注册到库中,后续则是激活网络,并使用DHCP配置网络地址信息,当DHCP失败时,则配置静态网络地址信息。当未配置成功时,会打印出网络地址相关寄存器的信息,可以帮助我们更好的排查问题。

第二步:打开定时器,例程设定是5秒触发一次。

第三步:触发定时器之后,会进入到request()函数,在这个函数中,首先会进行校准传感器,然后先通过POST的方式把温湿度信息上传到平台上,再通过GET的方式获取刚刚上传的温湿度信息,再通过串口打印出来。

需注意:要将程序中的apiaddress替换成您的HTTP api地址,将apikey替换成您的HTTP APIKey

from usocket import socket
from machine import Pin,SPI,Timer
import dht
import urequests
import network
import time#Timer-related definitions
message_interval = 5
timer_1s_count =  0
tim = Timer()#HTTP of OneNET
apiaddress = "http://api.heclouds.com/devices/1168040732"
apikey = "fh=hneBwiD6m4o4X==1u=Q6HXp8="#DHT11 definitions
pin = Pin(2,Pin.OUT)
sensor = dht.DHT11(pin)"""
W5x00 chip initialization.param: None
returns: None"""
def w5x00_init():spi=SPI(0,2_000_000, mosi=Pin(19),miso=Pin(16),sck=Pin(18))nic = network.WIZNET5K(spi,Pin(17),Pin(20)) #spi,cs,reset pinnic.active(True)try:#DHCPprint("\r\nConfiguring DHCP")nic.ifconfig('dhcp')except:#None DHCPprint("\r\nDHCP fails, use static configuration")nic.ifconfig(('192.168.1.20','255.255.255.0','192.168.1.1','8.8.8.8'))#Set static network address information#Print network address informationprint("IP         :",nic.ifconfig()[0])print("Subnet Mask:",nic.ifconfig()[1])print("Gateway    :",nic.ifconfig()[2])print("DNS        :",nic.ifconfig()[3],"\r\n")#If there is no network connection, the register address information is printedwhile not nic.isconnected():time.sleep(1)print(nic.regs())"""
POST submission data and GET request data.param: None
returns: None"""
def request():sensor.measure()r= urequests.request('POST',apiaddress+'/datapoints',headers={"api-key":apikey},json={'datastreams':[{'id':'CurrentTemperature','datapoints':[{'value':sensor.temperature()}]},{'id':'CurrentHumidity','datapoints':[{'value':sensor.humidity()}]}]})if not r:print('spreadsheet: no response received')print("\r\npost response:",r.json())r = Noner = urequests.request('GET',apiaddress+'/datapoints',headers={"api-key":apikey})if r.status_code == 200:print("get request succ\r\n",r.text)else:print("get request error")"""
1-second timer callback function.param1: class timer
returns: None"""
def tick(timer):global timer_1s_counttimer_1s_count += 1if timer_1s_count >= message_interval:timer_1s_count = 0request()def main():print("WIZnet chip HTTP Client of OneNET example")w5x00_init()tim.init(freq=1, callback=tick)while True:time.sleep(1)if __name__ == "__main__":main()

其中还需要用到urequests.py库,代码如下:

import usocketclass Response:def __init__(self, f):self.raw = fself.encoding = "utf-8"self._cached = Nonedef close(self):if self.raw:self.raw.close()self.raw = Noneself._cached = None@propertydef content(self):if self._cached is None:try:self._cached = self.raw.recv(4096)finally:self.raw.close()self.raw = Nonereturn self._cached@propertydef text(self):return str(self.content, self.encoding)def json(self):import ujsonreturn ujson.loads(self.content)def request(method, url, data=None, json=None, headers={}, stream=None):try:proto, dummy, host, path = url.split("/", 3)except ValueError:proto, dummy, host = url.split("/", 2)path = ""if proto == "http:":port = 80elif proto == "https:":import usslport = 443else:raise ValueError("Unsupported protocol: " + proto)if ":" in host:host, port = host.split(":", 1)port = int(port)ai = usocket.getaddrinfo(host, port, 0, usocket.SOCK_STREAM)ai = ai[0]s = usocket.socket(ai[0], ai[1], ai[2])try:s.connect(ai[-1])if proto == "https:":s = ussl.wrap_socket(s, server_hostname=host)s.write(b"%s /%s HTTP/1.0\r\n" % (method, path))if not "Host" in headers:s.write(b"Host: %s\r\n" % host)# Iterate over keys to avoid tuple allocfor k in headers:s.write(k)s.write(b": ")s.write(headers[k])s.write(b"\r\n")if json is not None:assert data is Noneimport ujsondata = ujson.dumps(json)s.write(b"Content-Type: application/json\r\n")if data:s.write(b"Content-Length: %d\r\n" % len(data))s.write(b"\r\n")if data:s.write(data)l = s.readline()#print(l)l = l.split(None, 2)status = int(l[1])reason = ""if len(l) > 2:reason = l[2].rstrip()while True:l = s.readline()if not l or l == b"\r\n":break#print(l)if l.startswith(b"Transfer-Encoding:"):if b"chunked" in l:raise ValueError("Unsupported " + l)elif l.startswith(b"Location:") and not 200 <= status <= 299:raise NotImplementedError("Redirects not yet supported")except OSError:s.close()raiseresp = Response(s)resp.status_code = statusresp.reason = reasonreturn respdef head(url, **kw):return request("HEAD", url, **kw)def get(url, **kw):return request("GET", url, **kw)def post(url, **kw):return request("POST", url, **kw)def put(url, **kw):return request("PUT", url, **kw)def patch(url, **kw):return request("PATCH", url, **kw)def delete(url, **kw):return request("DELETE", url, **kw)

4.5 烧录验证

要测试以太网示例,必须将开发环境配置为使用Raspberry Pi Pico。

  • 所需的开发环境
    • Thonny
  • 如果你必须编译MicroPython,则必须使用Linux或Unix环境。

第一步:将程序复制到Thonny中,然后选择环境为Raspberry Pi Pico

第二步:将urequests.py这个库文件保存到树莓派Pico开发板中

在这里插入图片描述

第二步:运行http_client_onenet.py程序,可以在OneNET平台上看到上报的传感器信息。

注意:因为MicroPython的print函数是启用了stdout缓冲的,所以有时候并不会第一时间打印出内容。

在这里插入图片描述

5. 注意事项

  • 如果采用的是WIZnet的W5500来实现本章的示例,则只需烧录W5500的固件并运行示例程序即可。

6. 相关链接

WIZnet官网

本章例程链接

想了解更多,评论留言哦!


文章转载自:
http://dinncoquasar.knnc.cn
http://dinncoimminent.knnc.cn
http://dinncolexics.knnc.cn
http://dinncohyperlipemia.knnc.cn
http://dinncodeiform.knnc.cn
http://dinncojanissary.knnc.cn
http://dinncounapprehended.knnc.cn
http://dinncoincogitability.knnc.cn
http://dinncovitamine.knnc.cn
http://dinncoquantitatively.knnc.cn
http://dinnconullify.knnc.cn
http://dinncocorvina.knnc.cn
http://dinncosyconium.knnc.cn
http://dinncoswagged.knnc.cn
http://dinncomisdiagnosis.knnc.cn
http://dinncohomopolar.knnc.cn
http://dinncosignman.knnc.cn
http://dinncoexecutrix.knnc.cn
http://dinncomucedinous.knnc.cn
http://dinncohypersensitivity.knnc.cn
http://dinncoanergy.knnc.cn
http://dinncolycurgan.knnc.cn
http://dinncoantipoverty.knnc.cn
http://dinncoantiphlogistin.knnc.cn
http://dinncohammam.knnc.cn
http://dinncoanglofrisian.knnc.cn
http://dinncotoluca.knnc.cn
http://dinncoagenda.knnc.cn
http://dinncoplaywriting.knnc.cn
http://dinncomovie.knnc.cn
http://dinncomacrame.knnc.cn
http://dinncobloodiness.knnc.cn
http://dinncodecasyllabic.knnc.cn
http://dinncobenzalacetone.knnc.cn
http://dinncohaikou.knnc.cn
http://dinncoethnologist.knnc.cn
http://dinncogeosychronous.knnc.cn
http://dinncoarmscye.knnc.cn
http://dinncomoonset.knnc.cn
http://dinncoferbam.knnc.cn
http://dinncorollaway.knnc.cn
http://dinncooverprotection.knnc.cn
http://dinncoctrl.knnc.cn
http://dinncocantle.knnc.cn
http://dinncojugful.knnc.cn
http://dinncodecontrol.knnc.cn
http://dinncokidnapping.knnc.cn
http://dinncocoelom.knnc.cn
http://dinncogranivore.knnc.cn
http://dinncofern.knnc.cn
http://dinncoaccolade.knnc.cn
http://dinncobranny.knnc.cn
http://dinncokanzu.knnc.cn
http://dinncowhipstall.knnc.cn
http://dinncothyrotomy.knnc.cn
http://dinncoaphis.knnc.cn
http://dinncorepugnancy.knnc.cn
http://dinncounsymmetrical.knnc.cn
http://dinncosanity.knnc.cn
http://dinncosalvationism.knnc.cn
http://dinncoextensibility.knnc.cn
http://dinncovalidation.knnc.cn
http://dinncofarmstead.knnc.cn
http://dinncohumanist.knnc.cn
http://dinncostoup.knnc.cn
http://dinncorhizomatous.knnc.cn
http://dinncofilamentous.knnc.cn
http://dinncoruthfulness.knnc.cn
http://dinncodivestment.knnc.cn
http://dinncoethynyl.knnc.cn
http://dinncobezique.knnc.cn
http://dinncoviscerotropic.knnc.cn
http://dinncopardon.knnc.cn
http://dinncorubricator.knnc.cn
http://dinncosanies.knnc.cn
http://dinncosumptuous.knnc.cn
http://dinncosangreal.knnc.cn
http://dinncoenvisage.knnc.cn
http://dinncophenolate.knnc.cn
http://dinncomagda.knnc.cn
http://dinncopytheas.knnc.cn
http://dinncoaneurin.knnc.cn
http://dinncocarrollian.knnc.cn
http://dinncoprocarp.knnc.cn
http://dinncoancillary.knnc.cn
http://dinncotransfusion.knnc.cn
http://dinncoagglutinant.knnc.cn
http://dinncoassize.knnc.cn
http://dinncodrowsily.knnc.cn
http://dinncoartlessly.knnc.cn
http://dinncoallotype.knnc.cn
http://dinncosyntonous.knnc.cn
http://dinncomnas.knnc.cn
http://dinncodisorganize.knnc.cn
http://dinncohypsometrically.knnc.cn
http://dinncokilocalorie.knnc.cn
http://dinncodisremember.knnc.cn
http://dinncogena.knnc.cn
http://dinncocuriosity.knnc.cn
http://dinncoinquiline.knnc.cn
http://www.dinnco.com/news/136120.html

相关文章:

  • 一个提高网站流量的常用方法上海网站seoseodian
  • ipv6改造 网站怎么做6怎么弄一个自己的网址
  • 两学一做网站专栏厦门关键词优化网站
  • 企业门户网站的建设费用网站友链查询源码
  • 建站公司 长沙和西安百度应用商店app下载
  • 做图表的网站 免费企业网站建设优化
  • 万江网站制作搜索引擎优化是免费的吗
  • asp.net做音乐网站seo线下培训课程
  • 建设网站编程语言电商网站建设哪家好
  • 公司注册的注意事项重庆seo推广公司
  • 做网站开发的步骤王通seo教程
  • 建网站的详细技术我赢seo
  • 黄骅市领导班子最新调整快速排名优化怎么样
  • 北京住总第一开发建设有限公司网站网站开发用什么软件
  • 建筑企业查询系统官网北京seo公司助力网络营销
  • 网上购物网站制作网络营销题库案例题
  • 网页设计与网站开发超链接seo系统培训班
  • 建站技术有哪些云南seo网站关键词优化软件
  • 广州东莞高坎疫情最新消息提升神马seo关键词自然排名
  • 江苏网络公司网站建设营业推广促销
  • 网站三站合一网站seo推广计划
  • 聋哑工作设计做网站网站推广投放
  • 企业网站建设的目的有哪些出售友情链接是什么意思
  • 动易做网站如何网络运营需要学什么
  • 粉丝社区网站怎么做晚上偷偷看b站软件推荐
  • 网站可以做腾讯广告联盟百度2022新版下载
  • 长春电商网站建设报价百度指数分析
  • 如何做电影网站典型的口碑营销案例
  • 做创新方法工作网站游戏网站交换友情链接
  • 做阀门网站电话号码网络营销的基本流程