18. [Micropython][ESP8266] TPYBoard V202 之MQTT协议接入OneNET云平台¶
随着移动互联网的发展,MQTT由于开放源代码,耗电量小等特点,将会在移动消息推送领域会有更多的贡献,在物联网领域,传感器与服务器的通信,信息的收集,MQTT都可以作为考虑的方案之一。在未来MQTT会进入到我们生活的各各方面,本篇文章教大家利用TPYBoard v202使用MQTT协议接入OneNET平台,并且远程控制LED灯。
18.1. 什么是MQTT协议¶
早在1999年,IBM的Andy Stanford-Clark博士以及Arcom公司ArlenNipper博士发明了MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)技术 。MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。
18.2. 实验准备¶
18.2.1. 一、硬件材料¶
- 1.TPYBoard v202
![]()
- 2.面包板
- 3.数据线
- 4.LED发光二极管
18.2.2. 二、软件准备¶
- 1.MicroPython File Uploader 用于与开发板的文件传输
下载地址:http://www.tpyboard.com/download/tool/170.html
2.ESPFlashDownloadTool_v3.3.4 TPYBoard v202固件烧写工具下载地址:http://www.tpyboard.com/download/tool/185.html
- 3.第三方库文件:micropython-libumqtt.simpleumqttsimple.py
下载地址:http://www.tpyboard.com/download/data/184.html
- 4.TPYBoard v202固件
下载地址:http://www.tpyboard.com/download/firmware/171.html
OneNET平台创建MQTT协议的产品并添加设备
![]()
如果没有产品,点击创建产品即可,上面显示我已经创建完毕。
![]()
Smart Boy是我添加的设备,当我们插上TPYBoard v202时,就会看到上图绿点点亮,拔了以后就会变灰,前提是板子里程序已经写入。
实物接线图
![]()
我用的TPYBoard v202的G4引脚,这个引脚可以随便定义,主要看程序里你想用哪个。
程序源代码
boot.py源码:
#连接本地网络 def do_connect(): import network sta_if = network.WLAN(network.STA_IF) ap_if = network.WLAN(network.AP_IF) if ap_if.active(): ap_if.active(False) if not sta_if.isconnected(): print('connecting to network...') sta_if.active(True) sta_if.connect(WIFI名称, '密码') #wifi的SSID和密码 while not sta_if.isconnected(): pass print('network config:', sta_if.ifconfig()) do_connect()mqtt.py源码:
from simple import MQTTClient from machine import Pin import machine import micropython #选择G4引脚 g4 = Pin(4, Pin.OUT, value=0) # MQTT服务器地址域名为:183.230.40.39,不变 SERVER = "183.230.40.39" #设备ID CLIENT_ID = "9377500" #随便起个名字 TOPIC = b"TurnipRobot" #产品ID username='91025' #产品APIKey: password='y7zd=7wNaObdfRYhxQn7D5jiDnI=' state = 0 def sub_cb(topic, msg): global state print((topic, msg)) if msg == b"on": g4.value(1) state = 1 print("1") elif msg == b"off": g4.value(0) state = 0 print("0") elif msg == b"toggle": state = 1 - state g4.value(state) def main(server=SERVER): #端口号为:6002 c = MQTTClient(CLIENT_ID, server,6002,username,password) c.set_callback(sub_cb) c.connect() c.subscribe(TOPIC) print("Connected to %s, subscribed to %s topic" % (server, TOPIC)) try: while 1: c.wait_msg() finally: c.disconnect()simple.py源码不用更改,直接按照下载地址下载即可。
main.py源码:
import mqtt mqtt.main()源码下载请到: http://www.tpyboard.com/download/data/183.html
效果展示
![]()
这个时候我们OneNET云平台上设备就会显示在线了
![]()
当我们发送指令on的时候,就会看到控制台显示
(b’$creq/3e25b3f5-27c8-50d5-b2bb-b7cb7ddddac4’, b’on’)
1并且看到我们面包板上的led会亮起来
![]()
当我们发送指令off的时候,就会看到控制台显示
(b’$creq/c01cc820-72b2-50e2-ab0c-6954d35796ef’, b’off’)
0并且看到我们面包板上的led灯会熄灭
![]()
当我们发送toggle时候,就会看到控制台显示:
(b’$creq/e2f94a0b-7363-56ec-b87c-1d5d02dc4774’, b’toggle’)
并且看到我们面包板上的led灯会亮起来,再次发送,控制台会显示:
(b’$creq/9aa4a04f-eb90-503f-b14f-6f0575869c23’, b’toggle’)
我们会看到led熄灭。
视频展示效果
http://player.youku.com/player.php/sid/XMjkwNDM1MjMwMA==/v.swf
在这只是给大家演示了TPYBoard v202怎么用MQTT协议接入OneNet云平台,并教大家如何控制一个外围电路点亮一个led,大家可以利用TPYBoard v202接入更复杂,更好玩的东西。