查看: 173|回复: 1

[资料] [Micropython][ESP8266] TPYBoard V202 之MQTT协议接入OneNET云平台

[复制链接]

28

主题

0

好友

442

积分

秀才

Rank: 3Rank: 3

  • TA的每日心情
    开心
    2016-9-7 16:50
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    发表于 2017-7-22 14:41:29 |显示全部楼层
      随着移动互联网的发展,MQTT由于开放源代码,耗电量小等特点,将会在移动消息推送领域会有更多的贡献,在物联网领域,传感器与服务器的通信,信息的收集,MQTT都可以作为考虑的方案之一。在未来MQTT会进入到我们生活的各各方面,本篇文章教大家利用TPYBoardv202使用MQTT协议接入OneNET平台,并且远程控制LED灯。

      什么是MQTT协议

      早在1999年,IBM的AndyStanford-Clark博士以及Arcom公司ArlenNipper博士发明了MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输)技术。MQTT(MessageQueuingTelemetryTransport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部分。该协议支持所有平台,几乎可以把所有联网物品和外部连接起来,被用来当做传感器和致动器(比如通过Twitter让房屋联网)的通信协议。

      实验准备

      一、硬件材料

      1.TPYBoardv202

    1.png

      2.面包板

      3.数据线

      4.LED发光二极管

      二、软件准备

      1.MicroPythonFileUploader用于与开发板的文件传输

      下载地址:http://www.tpyboard.com/download/tool/170.html

      2.ESPFlashDownloadTool_v3.3.4TPYBoardv202固件烧写工具

      下载地址:http://www.tpyboard.com/download/tool/185.html

      3.第三方库文件:micropython-lib\umqtt.simple\umqtt\simple.py

      下载地址:http://www.tpyboard.com/download/data/184.html

      4.TPYBoardv202固件

      下载地址:http://www.tpyboard.com/download/firmware/171.html

      OneNET平台创建MQTT协议的产品并添加设备

    2.png

      如果没有产品,点击创建产品即可,上面显示我已经创建完毕。

    3.png

      SmartBoy是我添加的设备,当我们插上TPYBoardv202时,就会看到上图绿点点亮,拔了以后就会变灰,前提是板子里程序已经写入。

      实物接线图

    4.jpg

      我用的TPYBoardv202的G4引脚,这个引脚可以随便定义,主要看程序里你想用哪个。

      程序源代码

      boot.py源码
    1. #连接本地网络
    2. def do_connect():
    3.         import network
    4.         sta_if = network.WLAN(network.STA_IF)
    5.         ap_if = network.WLAN(network.AP_IF)
    6.         if ap_if.active():
    7.                 ap_if.active(False)
    8.         if not sta_if.isconnected():
    9.                 print('connecting to network...')
    10.         sta_if.active(True)
    11.         sta_if.connect(WIFI名称, '密码') #wifi的SSID和密码
    12.         while not sta_if.isconnected():
    13.                 pass
    14.         print('network config:', sta_if.ifconfig())
    15. do_connect()
    复制代码
    mqtt.py源码
    1. from simple import MQTTClient
    2. from machine import Pin
    3. import machine
    4. import micropython
    5. #选择G4引脚
    6. g4 = Pin(4, Pin.OUT, value=0)
    7. # MQTT服务器地址域名为:183.230.40.39,不变
    8. SERVER = "183.230.40.39"
    9. #设备ID
    10. CLIENT_ID = "9377500"
    11. #随便起个名字
    12. TOPIC = b"TurnipRobot"
    13. #产品ID
    14. username='91025'
    15. #产品APIKey:
    16. password='y7zd=7wNaObdfRYhxQn7D5jiDnI='
    17. state = 0
    18. def sub_cb(topic, msg):
    19.     global state
    20.     print((topic, msg))
    21.     if msg == b"on":
    22.             g4.value(1)
    23.             state = 1
    24.             print("1")
    25.     elif msg == b"off":
    26.             g4.value(0)
    27.             state = 0
    28.             print("0")
    29.     elif msg == b"toggle":

    30.             state = 1 - state
    31.             g4.value(state)
    32.            
    33. def main(server=SERVER):
    34.     #端口号为:6002
    35.     c = MQTTClient(CLIENT_ID, server,6002,username,password)
    36.     c.set_callback(sub_cb)
    37.     c.connect()
    38.     c.subscribe(TOPIC)
    39.     print("Connected to %s, subscribed to %s topic" % (server, TOPIC))
    40.     try:
    41.             while 1:
    42.                     c.wait_msg()
    43.     finally:
    44.             c.disconnect()
    复制代码
    simple.py源码不用更改,直接按照下载地址下载即可。

      main.py源码
    1. import mqtt
    2. mqtt.main()
    复制代码
    源码下载请到:http://www.tpyboard.com/download/data/183.html

      效果展示

    5.png

      这个时候我们OneNET云平台上设备就会显示在线了

    6.png

      当我们发送指令on的时候,就会看到控制台显示

      (b'$creq/3e25b3f5-27c8-50d5-b2bb-b7cb7ddddac4',b'on')

      1并且看到我们面包板上的led会亮起来

    7.png

      当我们发送指令off的时候,就会看到控制台显示

      (b'$creq/c01cc820-72b2-50e2-ab0c-6954d35796ef',b'off')

      0并且看到我们面包板上的led灯会熄灭

    8.png

      当我们发送toggle时候,就会看到控制台显示:

      (b'$creq/e2f94a0b-7363-56ec-b87c-1d5d02dc4774',b'toggle')

      并且看到我们面包板上的led灯会亮起来,再次发送,控制台会显示:

      (b'$creq/9aa4a04f-eb90-503f-b14f-6f0575869c23',b'toggle')

      我们会看到led熄灭。       

      视频展示效果

      

      在这只是给大家演示了TPYBoardv202怎么用MQTT协议接入OneNet云平台,并教大家如何控制一个外围电路点亮一个led,大家可以利用TPYBoardv202接入更复杂,更好玩的东西。



    回复

    使用道具 举报

    3

    主题

    1

    好友

    3680

    积分

    状元

    Rank: 6Rank: 6

  • TA的每日心情
    奋斗
    3 小时前
  • 签到天数: 845 天

    连续签到: 5 天

    [LV.10]以坛为家III

    发表于 2017-7-22 22:47:26 |显示全部楼层
    好的产品,学习和参考
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    关闭

    站长推荐上一条 /4 下一条

    手机版|爱板网 |网站地图  

    GMT+8, 2017-8-24 14:43 , Processed in 0.116054 second(s), 11 queries , Memcache On.

    苏公网安备 32059002001056号

    Powered by Discuz!

    回顶部