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

龙川县建设网站中山市住房和城乡建设局官网

龙川县建设网站,中山市住房和城乡建设局官网,万峰科技.jsp网站开发四酷全书 m,优秀网站网页设计分析文章目录 1. 前言2. 平台操作流程2.1 创建设备2.2 创建数据流模板 3. WIZnet以太网芯片4. 示例讲解以及使用4.1 程序流程图4.2 测试准备4.3 连接方式4.4 相关代码4.5 烧录验证 5. 注意事项6. 相关链接 1. 前言 在这个智能硬件和物联网时代#xff0c;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 PerformanceW5100STCP/IPv4 MAC PHY8bit BUS, SPI16KB4Max 25MbpsW6100TCP/IPv4/IPv6, MAC PHY8bit BUS, Fast SPI32KB8Max 25MbpsW5500TCP/IPv4, MAC PHYFast SPI32KB8Max 15Mbps W5100S/W6100 支持 8bit数据总线接口网络传输速度会优于W5500。W6100 支持IPV6与W5100S 硬件兼容若已使用W5100S的用户需要支持IPv6可以Pin to Pin兼容。W5500 拥有比 W5100S更多的 Socket数量以及发送与接收缓存 相较于软件协议栈WIZnet的硬件协议栈以太网芯片有以下优点 硬件TCP/IP协议栈WIZnet的硬件协议栈芯片提供了一种硬件实现的TCP/IP协议栈这种硬件实现的协议栈比软件实现的协议栈具有更好的性能和稳定性。不需要额外的嵌入式系统软件栈和内存资源由于所有的以太网传输和接收操作都由独立的以太网控制器处理因此不需要额外的嵌入式系统软件栈和内存资源。抵抗网络环境变化和DDoS攻击与易受网络环境变化和DDoS攻击影响的软件TCP/IP协议栈相比硬件协议栈芯片能够提供更稳定的以太网性能。适用于低规格的嵌入式系统即使在低规格的嵌入式系统中使用WIZnet的硬件协议栈芯片也可以比使用软件TCP/IP协议栈的高规格系统显示出更高效的互联网应用操作性能。 4. 示例讲解以及使用 4.1 程序流程图 4.2 测试准备 软件 ThonnyOneNET平台 硬件 W5100S IO模块 RP2040 树莓派Pico开发板 或者 WIZnet W5100S-EVB-Pico开发板DHT11温湿度传感器Micro USB 接口的数据线网线 4.3 连接方式 通过数据线连接PC的USB口当使用W5100S/W5500 IO模块连接RP2040时 RP2040 GPIO 16 ---- W5100S/W5500 MISORP2040 GPIO 17 ---- W5100S/W5500 CSRP2040 GPIO 18 ---- W5100S/W5500 SCKRP2040 GPIO 19 ---- W5100S/W5500 MOSIRP2040 GPIO 20 ---- W5100S/W5500 RST DHT11连接RP2040 RP2040 GPIO 2 ---- DHT11 dataRP2040 3V3 ---- DHT11 VCCRP2040 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 fhhneBwiD6m4o4X1uQ6HXp8#DHT11 definitions pin Pin(2,Pin.OUT) sensor dht.DHT11(pin) W5x00 chip initialization.param: None returns: None def w5x00_init():spiSPI(0,2_000_000, mosiPin(19),misoPin(16),sckPin(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(freq1, callbacktick)while True:time.sleep(1)if __name__ __main__:main()其中还需要用到urequests.py库代码如下 import usocketclass Response:def __init__(self, f):self.raw fself.encoding utf-8self._cached Nonedef close(self):if self.raw:self.raw.close()self.raw Noneself._cached Nonepropertydef content(self):if self._cached is None:try:self._cached self.raw.recv(4096)finally:self.raw.close()self.raw Nonereturn self._cachedpropertydef text(self):return str(self.content, self.encoding)def json(self):import ujsonreturn ujson.loads(self.content)def request(method, url, dataNone, jsonNone, headers{}, streamNone):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_hostnamehost)s.write(b%s /%s HTTP/1.0\r\n % (method, path))if not Host in headers:s.write(bHost: %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(bContent-Type: application/json\r\n)if data:s.write(bContent-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(bTransfer-Encoding:):if bchunked in l:raise ValueError(Unsupported l)elif l.startswith(bLocation:) 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://www.hkea.cn/news/14570814/

相关文章:

  • 事业单位报名网站html网站引导页模板
  • 企业网站的设计与实现南平 建网站
  • 临沂市建设局兰山区网站wordpress漂浮框
  • 网站建设作业素材wordpress 缓存下不计数
  • 成都网站建设怎么样郑州做网站网络公司
  • 加强人社网站建设一个公司可以注册几个网站
  • 在线名片制作网站开发网站营销优化方案
  • 昆明网站推广8888168如何让我们的网站新闻被百度新闻收录
  • 无本金一天赚500大型网站seo课程
  • 网站制作完成后应进入什么阶段广州网站建设广州网络推广公司好
  • 工商网站如何做实名ui设计已经不火了
  • 海珠做网站广州营销推广
  • 保山市建设厅网站传奇怎么建设自己的网站
  • 全面的聊城网站建设网站发布之后上传文件路径变了
  • 咋样着做自己的网站二级域名网站怎么建设
  • 沭阳网站建设shy1z永春县建设局网站
  • 网站开发项目进度安排wordpress 字符串函数大全
  • 商务网站开发实训任务书公司注册资金实缴和认缴有什么区别
  • 免费的手机网站模板软件开发费用明细
  • 大学生旅游网站策划书设计装饰公司
  • 房产网站建设公司网站建设与管理维护
  • 商城网站解决方案做网站需要向客户了解什么
  • 网站名称设置大气企业响应式网站
  • 免费制作网站平台哪个好淮北论坛房产
  • 汉爱手表官方网站做电商网站要备案吗
  • 卓业网站建设seo搜索引擎优化名词解释
  • 徐州中小企业网站制作摄影网站规划设计书
  • 永久免费域名注册网站福建建筑人才服务中心
  • 油漆网站设计wordpress企业电商主题排行榜
  • 哪里有做枪网站的工业设计产品效果图