Ⅰ 玩轉 ESP32 + Arino (十六) 通過mqtt協議連接阿里雲
需要用到的庫:
引入"PubSubClient.h"後
打開"PubSubClient.h"
修改如下內容:
關於MQTT協議, 請參考文章: https://zhuanlan.hu.com/p/89057819
請參考我之前整理的文檔:
【騰訊文檔】MQTT連接阿里雲示例(1) https://docs.qq.com/sheet/DWXBaUE9nWmZVaGJX
如果使用了AliyunMqttArino, 就不需要關系協議的報文和加密方式了
首先創建一個mqtt客戶端
返回值: 連接結果
返回: 狀態碼
mqttClient.publish(主題, 內容)
首先, 創建產品:
其次, 為產品添加設備
第三, 查看設備關鍵信息:
創建完後,我們發現系統已經自動創建了一些功能定義
找到產品的功能頁面, 點擊"編輯草稿"
最後發布新的物模型
非常簡單的修改, 只修改了要發送json里的param
注意同步修改param和json的內存佔用大小
Ⅱ 為什麼Arino示例程序通不過,顯紅色
原因可能是:
主IC的BOOTLOAD被破壞;問題版本;USB線被拉扯到或者在使用串口通信的時候操作不當;在晶振旁邊的電容焊得不對。以上出現問題原因的解決辦法:主IC的BOOTLOAD被破壞:解決方法是重新燒寫一下BOOTLOAD;版本問題:比如NANOMINI要在下載時按下RESET鍵,這種情況的解決方法是下載時按住RESET鍵,當電腦發射燈開始閃爍時鬆手;USB線被拉扯到,或者在使用串口通信的時候操作不當:拔掉USB線後再插上,重新下載程序;在晶振旁邊的電容焊得不對:去維修店維修一下。
Ⅲ arino如何加密AVR晶元
使用usbasp修改對應的加密熔絲位,如果加密了以後將不能再通過串口燒錄程序
Ⅳ 以前上傳到arino板裡面的程序怎麼下載下來
讀不出來了,就算avr晶元沒有加密,讀出來的也是二進制文件。
Ⅳ arino 程序解析, 求真正理解單片機的牛人
有以下疑問:
1. SoftPWMSet 這是什麼鬼? arino的pwm輸出,可以直接使用analogwrite函數。若是你自己寫的,;源文件丟出來給人看看是啥。
2. 還有"pins_arino.h"也是,如果是自己寫的,都把它貼出來。
3. arino的中斷,不是這樣用的。直接使用<avr/interrupt.h>,會造成沖突.
4. 對你這個程序,你遇到的困難是?想跟網友求助那個問題?看了10多分鍾,還是一頭霧水。你這個我大概看了下,目測你的程序是這樣的:3,5,10,9,這四個引腳來控制兩個直流電機,直接擴流來驅動電機,引腳8接的是一個LeD,用於顯示狀態,還有個11引腳,從注釋的字面上理解,應該是超聲波的相關引腳,但是一個引腳,超聲波,我愚鈍,看不出來的是幹嘛。
看了10多分鍾,還沒搞懂你想要幹嘛,根據超聲波測得的距離,來控制小車前進後退?還是前進過程中,超聲波檢測到障礙來做避障?
根據前面的分析,你這段代碼,肯定是不通過編譯的,錯誤提示呢?
你要網友幫你修正程序,但是又不知道你的需求,怎麼改?
總之,分給我吧~~~
Ⅵ Arino GPRS模塊的一些坑
要做一個偏遠地區的物聯網控制應用,考慮了多種通信方式,據我所知總共也就這幾種:有線,WIFI,GPRS。其餘的什麼MQTT,XBEE,RFID等等也離不開網路,或者可以這樣設計:用RFID做設備間信息傳輸,然後部署一台另外的設備負責把最終信息存儲設備的信息通過網路發送到服務端,這樣能減少一些聯網設備,不過感覺意義不大。
首先是第一個坑 ,現在arino gprs設備幾乎都是使用的2G通信,而運營商的2G通道漸漸都關閉了,會伴隨著速度緩慢,信號丟失,無反應等各種情況,所以有時候寫出來程序調試半天發現是通信的問題,直接讓人懷疑選型gprs是個錯誤,這時候就要在通信程序中加入各種判斷,考慮各種情況,工作量大幅上升。
去V2EX發帖吐槽,總結了網友給出消息:摩拜單車鎖用的通信方式是移動定製的4G物聯網流量卡,公路上的抓拍攝像頭使用的是有線連接,自動貨物出售機普遍採用4G物聯網卡,遠洋船舶通信是衛星信號,流量費貴出天際。總之GPRS通信處於被淘汰的邊緣了。
應該有人問,那為什麼不選4G?一個字:「窮」,arino官方有支持2G/3G/4G的模塊,一個將近900元,在硬體領域,有時候1分錢都要比較,不是斤斤計較,因為大量的設備意味著造價數量級的升高,同樣能給出解決方案,老闆肯定會選擇報價低的。自己做?我反正做不出。
第二個坑 ,arino gprs通信模塊便宜的有A6,SIM800,SIM900,這些模塊發送一個HTTP GET請求都要非常多的步驟,甚至A6模塊要自己實現HTTP請求,因為它自帶的只有TCP,更別說加密請求,生成鑒權token等東西了,這一套寫下來,沒有個幾千行搞不定。
第三個坑 ,耗電量大,GPRS本就不是為物聯網設計的,它甚至要外部供電,通信瞬間電流可達到2A,瞬間RF功率2W……耗電量刷刷的~
總之,以後想選型GPRS模塊的朋友要做好心裡准備,再加上近期的偽基站詐騙一夜一無所有的事件,2G簡訊通道會被關閉的更多,GPRS不再是一個好的選擇方式。
Ⅶ arino程序問題
在 int vol = analogRead(A0) * (5.0 / 1023.0*100) ; //讀取LM35溫度值
上面。。多個 「}」
while(1) 多餘了吧,loop本身就是循環
Ⅷ 如何使用 NB-Iot + Arino 通過MQTT協議上傳數據至阿里雲平台
有很多通信模塊只有TCP功能,沒有MQTT功能,比如WIFI,W5500等模塊,還有一些NBIOT模塊,但是又想連接阿里雲物聯網平台,官方提供了操作系統,需要自己移植,很麻煩,比較難看得懂。就在想有沒有一些簡單一定的方法。
心想MQTT是基於TCP的,能否使用TCP轉MQTT?因此就想使用TCP協議然後轉MQTT協議連接阿里雲物聯網平台,經過試驗證明是可以的。
首先我們先分析一下如何登陸接入Onenet平台。
先從它數據格式開始分析。首先我們要從後台取出三個信息,我們以這個為例。
我們把產品ID,設備名稱,設備秘鑰,簡稱三要素 (具體是什麼看你自己的設備)
其實阿里雲物聯網平台的MQTT協議用的就是標準的,不過它加入了自己的認證方式。
MQTT協議需要上傳四個參數,報活時間,clientID,用戶名,密碼。
那麼阿里雲的就在clientID,用戶名,密碼做了手腳。
clientID比較長,按照一定的格式
用戶名:設備名和秘鑰組成
密碼:使用了加密串進行了加密,有sha1或者MD5加密方式
下面我們來介紹一下
MQTT接入都是發十六進制的數據。
么我們發送的時候就是這樣子的一串數據
0x74 0x00 0x04 0x4d 0x51 0x54 0x54 0x04 0xC0 0078 0033 0x61 0x62 0x63 0x7c 0x73 0x65 0x63 0x75 0x72 0x65 0x6d 0x6f 0x64 0x65 0x3d 0x33 0x2c 0x73 0x69 0x67
0x6e 0x6d 0x65 0x74 0x68 0x6f 0x64 0x3d 0x68 0x6d 0x61 0x63 0x73 0x68 0x61 0x31 0x2c 0x74 0x69 0x6d 0x65 0x73 0x74 0x61 0x6d 0x70 0x3d 0x31 0x32 0x30 0x7c 0009
0x35 0x36 0x37 0x38 0x26 0x31 0x32 0x33 0x34 0028 0x32 0x32 0x32 0x37 0x35 0x30 0x44 0x45 0x44 0x46 0x45 0x34 0x46 0x37 0x37 0x34 0x30 0x30 0x32 0x45 0x45 0x38 0x37 0x45 0x45 0x44 0x32 0x39 0x43 0x46 0x44 0x30 0x36 0x33 0x38 0x43 0x35 0x46 0x36 0x36
十六進制解釋
數據長度:0x74
協議數據長度 0x00 0x04
協議類型: 0x4d 0x51 0x54 0x54
協議數據: 0x04 0xC0
keepAlive數據:0078
ClientID長度:0033
ClientID: 0x61 0x62 0x63 0x7c 0x73 0x65 0x63 0x75 0x72 0x65 0x6d 0x6f 0x64 0x65 0x3d 0x33 0x2c 0x73 0x69 0x67 0x6e 0x6d 0x65 0x74 0x68 0x6f 0x64 0x3d 0x68 0x6d 0x61 0x63 0x73 0x68 0x61 0x31 0x2c 0x74 0x69 0x6d 0x65 0x73 0x74 0x61 0x6d 0x70 0x3d 0x31 0x32 0x30 0x7c
用戶名:0009
用戶名: 0x35 0x36 0x37 0x38 0x26 0x31 0x32 0x33 0x34
密碼長度:0028
密碼: 0x32 0x32 0x32 0x37 0x35 0x30 0x44 0x45 0x44 0x46 0x45 0x34 0x46 0x37 0x37 0x34 0x30 0x30 0x32 0x45 0x45 0x38 0x37 0x45 0x45 0x44 0x32 0x39 0x43 0x46 0x44 0x30 0x36 0x33 0x38 0x43 0x35 0x46 0x36 0x36復制代碼上面的就是連接伺服器的連接包
下面呢,我們來做個發布包(上傳數據到伺服器)
0x30 0x1D 0009 2f7379732f706f7374 0x7b 0x70 0x61 0x72 0x61 0x6d 0x73 0x3a 0x7b 0x74 0x65 0x6d 0x70 0x3a 0x31 0x30 0x7d 0x7d
十六進制數據解釋
數據頭:0x30
數據長度:0x1D
TopicName數據長度:0009
TopicName數據內容:2f7379732f706f7374
主體json數據: 0x7b 0x70 0x61 0x72 0x61 0x6d 0x73 0x3a 0x7b 0x74 0x65 0x6d 0x70 0x3a 0x31 0x30 0x7d 0x7d復制代碼以上就是連接阿里雲的數據包格式及發布數據的格式,由於時間問題沒有做訂閱的數據包分析,下一次更新訂閱的內容。