天天看點

【連載,完結】物聯網全棧教程-從雲端到裝置---簡單介紹單片機代碼,裸機上雲!

物聯網全棧教程-從雲端到裝置(完結 十四)

裝置端的開發是一個非常簡單的工作。零妖今天就簡單講解一下物聯網彈幕器這個裝置的源代碼,給大家提供一個裸機上雲的思路。連載文章更新到這裡要告一段落,因為真的沒啥要講的了。

首先要說的是使用技小新的MQTT單片機程式設計小工具生成一個C語言的頭檔案,這個在之前的文章裡已經說過了。你的單片機要幹的事情就是通過序列槽把這些16進制的資料發送給CH9121子產品,然後CH9121子產品會自動把這些資料打包一下以TCP的形式發送給伺服器。

【連載,完結】物聯網全棧教程-從雲端到裝置---簡單介紹單片機代碼,裸機上雲!

單片機的序列槽資源真的非常好用。STM32F103C8T6這個型号的單片機有三個可以獨立使用的序列槽資源,物聯網彈幕器真正用的其實是兩個,一個是序列槽1和電腦的序列槽連接配接,調試代碼時候輸出資料用的,一個是序列槽3用來和CH9121通信用的。在代碼上你可以讓序列槽1和序列槽3連接配接在一起,這樣就可以在電腦上發送資料給CH9121了,實作的方法請看代碼。

【連載,完結】物聯網全棧教程-從雲端到裝置---簡單介紹單片機代碼,裸機上雲!
【連載,完結】物聯網全棧教程-從雲端到裝置---簡單介紹單片機代碼,裸機上雲!

在單片機的内部程式裡,也是可以控制序列槽3發送任何資料的,是以就能發送小工具生成的數組到CH9121了。代碼如下。

【連載,完結】物聯網全棧教程-從雲端到裝置---簡單介紹單片機代碼,裸機上雲!

從雲端下發給裝置的資訊可能每次都不一樣,比如說彈幕資訊,每個人發送的都不一樣那麼單片機接收的資料長度就不一樣,這需要你使用循環隊列的方法來接收資料。首先你要預測一下雲端一次性有可能下發資料的最大位元組數,然後隊列緩沖區的大小要是它的兩倍以上。這樣的處理可以非常有效的防止資料接收丢失的問題。

【連載,完結】物聯網全棧教程-從雲端到裝置---簡單介紹單片機代碼,裸機上雲!

為了示範物聯網裝置的資料上報流程,物聯網彈幕器上面安裝了一個溫度傳感器。這個溫度傳感器輸出的是一個電壓信号,這個電壓的大小是和溫度成正比例關系的。單片機能夠通過一種叫ADC的方法來擷取這個電壓數值,然後就可以計算溫度了。

【連載,完結】物聯網全棧教程-從雲端到裝置---簡單介紹單片機代碼,裸機上雲!

在開始做規劃的時候,我從來沒有認為顯示一個漢字會是整個項目中最大的絆腳石。從網頁上下發的彈幕資訊是一個字元串,這個字元串是UTF8編碼的,英文字母一切正常,但是涉及到漢字就一定會亂碼,因為單片機這邊按照往年經驗直接做了GBK編碼的處理。

經過零妖老哥的不斷摸索,終于發現了一個曲折的救國之路,就是先把UTF8編碼轉換為Unicode編碼,然後再把它轉化為能夠顯示再OLED上面的點陣資訊,存到外部存儲器裡面,需要的時候就讀取一下并顯示出來。相關代碼如下:

【連載,完結】物聯網全棧教程-從雲端到裝置---簡單介紹單片機代碼,裸機上雲!
【連載,完結】物聯網全棧教程-從雲端到裝置---簡單介紹單片機代碼,裸機上雲!

好了,零妖老哥的物聯網全棧教程分享到這裡就結束了。感謝各位兄弟的支援和鼓勵讓我有動力連載完畢(堅持做一件事情真的好難)。尤其感謝阿裡巴巴IOT事業部的同學提供技術上的幫助。

有很多的想法和具體的細節是沒辦法在一個文章裡寫清楚的,為了能幫助更多的朋友快速上雲,零妖把這個教程拍成了一個系列的視訊教程,同時提供了物聯網彈幕器的相關硬體(前面已經給了你開源位址,你完全可以自己做硬體哦)給想節約時間的工程師評估物聯網項目使用。

寫在最後:祝你抓住物聯網市場的1%的機會!

繼續閱讀