[Micropython][ESP8266] TPYBoard V202 之MQTT協議接入OneNET雲平臺

隨着移動互聯網的發展,MQTT由於開放源代碼,耗電量小等特點,將會在移動消息推送領域會有更多的貢獻,在物聯網領域,傳感器與服務器的通信,信息的收集,MQTT都可以作爲考慮的方案之一。在未來MQTT會進入到我們生活的各各方面,本篇文章教大家利用TPYBoardv202使用MQTT協議接入OneNET平臺,並且遠程控制LED燈。

  什麼是MQTT協議

  早在1999年,IBM的AndyStanford-Clark博士以及Arcom公司ArlenNipper博士發明了MQTT(MessageQueuingTelemetryTransport,消息隊列遙測傳輸)技術。MQTT(MessageQueuingTelemetryTransport,消息隊列遙測傳輸)是IBM開發的一個即時通訊協議,有可能成爲物聯網的重要組成部分。該協議支持所有平臺,幾乎可以把所有聯網物品和外部連接起來,被用來當做傳感器和致動器(比如通過Twitter讓房屋聯網)的通信協議。

  實驗準備

  一、硬件材料

  1.TPYBoardv202

圖片描述

  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協議的產品並添加設備

圖片描述

  如果沒有產品,點擊創建產品即可,上面顯示我已經創建完畢。

圖片描述

  SmartBoy是我添加的設備,當我們插上TPYBoardv202時,就會看到上圖綠點點亮,拔了以後就會變灰,前提是板子里程序已經寫入。

  實物接線圖

圖片描述

  我用的TPYBoardv202的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

  在這只是給大家演示了TPYBoardv202怎麼用MQTT協議接入OneNet雲平臺,並教大家如何控制一個外圍電路點亮一個led,大家可以利用TPYBoardv202接入更復雜,更好玩的東西。

發佈了63 篇原創文章 · 獲贊 20 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章