一
設備端的開發是一個非常簡單的工作。零妖今天就簡單講解一下物聯網彈幕器這個設備的源代碼,給大家提供一個裸機上云的思路。連載文章更新到這里要告一段落,因為真的沒啥要講的了。
二
首先要說的是使用技小新的MQTT單片機編程小工具生成一個C語言的頭文件,這個在之前的文章里已經說過了。你的單片機要干的事情就是通過串口把這些16進制的數據發送給CH9121模塊,然后CH9121模塊會自動把這些數據打包一下以TCP的形式發送給服務器。
三
單片機的串口資源真的非常好用。STM32F103C8T6這個型號的單片機有三個可以獨立使用的串口資源,物聯網彈幕器真正用的其實是兩個,一個是串口1和電腦的串口連接,調試代碼時候輸出數據用的,一個是串口3用來和CH9121通信用的。在代碼上你可以讓串口1和串口3連接在一起,這樣就可以在電腦上發送數據給CH9121了,實現的方法請看代碼。
在單片機的內部程序里,也是可以控制串口3發送任何數據的,所以就能發送小工具生成的數組到CH9121了。代碼如下。
四
從云端下發給設備的信息可能每次都不一樣,比如說彈幕信息,每個人發送的都不一樣那么單片機接收的數據長度就不一樣,這需要你使用循環隊列的方法來接收數據。首先你要預測一下云端一次性有可能下發數據的最大字節數,然后隊列緩沖區的大小要是它的兩倍以上。這樣的處理可以非常有效的防止數據接收丟失的問題。
五
為了示范物聯網設備的數據上報流程,物聯網彈幕器上面安裝了一個溫度傳感器。這個溫度傳感器輸出的是一個電壓信號,這個電壓的大小是和溫度成正比例關系的。單片機能夠通過一種叫ADC的方法來獲取這個電壓數值,然后就可以計算溫度了。
六
在開始做規劃的時候,我從來沒有認為顯示一個漢字會是整個項目中最大的絆腳石。從網頁上下發的彈幕信息是一個字符串,這個字符串是UTF8編碼的,英文字母一切正常,但是涉及到漢字就一定會亂碼,因為單片機這邊按照往年經驗直接做了GBK編碼的處理。
經過零妖老哥的不斷摸索,終于發現了一個曲折的救國之路,就是先把UTF8編碼轉換為Unicode編碼,然后再把它轉化為能夠顯示再OLED上面的點陣信息,存到外部存儲器里面,需要的時候就讀取一下并顯示出來。相關代碼如下:
七
好了,零妖老哥的物聯網全棧教程分享到這里就結束了。感謝各位兄弟的支持和鼓勵讓我有動力連載完畢(堅持做一件事情真的好難)。尤其感謝阿里巴巴IOT事業部的同學提供技術上的幫助。
有很多的想法和具體的細節是沒辦法在一個文章里寫清楚的,為了能幫助更多的朋友快速上云,零妖把這個教程拍成了一個系列的視頻教程,同時提供了物聯網彈幕器的相關硬件(前面已經給了你開源地址,你完全可以自己做硬件哦)給想節約時間的工程師評估物聯網項目使用。
-
物聯網
+關注
關注
2904文章
44298瀏覽量
371418
發布評論請先 登錄
相關推薦
評論