一
設(shè)備端的開發(fā)是一個非常簡單的工作。零妖今天就簡單講解一下物聯(lián)網(wǎng)彈幕器這個設(shè)備的源代碼,給大家提供一個裸機(jī)上云的思路。連載文章更新到這里要告一段落,因為真的沒啥要講的了。
二
首先要說的是使用技小新的MQTT單片機(jī)編程小工具生成一個C語言的頭文件,這個在之前的文章里已經(jīng)說過了。你的單片機(jī)要干的事情就是通過串口把這些16進(jìn)制的數(shù)據(jù)發(fā)送給CH9121模塊,然后CH9121模塊會自動把這些數(shù)據(jù)打包一下以TCP的形式發(fā)送給服務(wù)器。

三
單片機(jī)的串口資源真的非常好用。STM32F103C8T6這個型號的單片機(jī)有三個可以獨立使用的串口資源,物聯(lián)網(wǎng)彈幕器真正用的其實是兩個,一個是串口1和電腦的串口連接,調(diào)試代碼時候輸出數(shù)據(jù)用的,一個是串口3用來和CH9121通信用的。在代碼上你可以讓串口1和串口3連接在一起,這樣就可以在電腦上發(fā)送數(shù)據(jù)給CH9121了,實現(xiàn)的方法請看代碼。


在單片機(jī)的內(nèi)部程序里,也是可以控制串口3發(fā)送任何數(shù)據(jù)的,所以就能發(fā)送小工具生成的數(shù)組到CH9121了。代碼如下。

四
從云端下發(fā)給設(shè)備的信息可能每次都不一樣,比如說彈幕信息,每個人發(fā)送的都不一樣那么單片機(jī)接收的數(shù)據(jù)長度就不一樣,這需要你使用循環(huán)隊列的方法來接收數(shù)據(jù)。首先你要預(yù)測一下云端一次性有可能下發(fā)數(shù)據(jù)的最大字節(jié)數(shù),然后隊列緩沖區(qū)的大小要是它的兩倍以上。這樣的處理可以非常有效的防止數(shù)據(jù)接收丟失的問題。

五
為了示范物聯(lián)網(wǎng)設(shè)備的數(shù)據(jù)上報流程,物聯(lián)網(wǎng)彈幕器上面安裝了一個溫度傳感器。這個溫度傳感器輸出的是一個電壓信號,這個電壓的大小是和溫度成正比例關(guān)系的。單片機(jī)能夠通過一種叫ADC的方法來獲取這個電壓數(shù)值,然后就可以計算溫度了。

六
在開始做規(guī)劃的時候,我從來沒有認(rèn)為顯示一個漢字會是整個項目中最大的絆腳石。從網(wǎng)頁上下發(fā)的彈幕信息是一個字符串,這個字符串是UTF8編碼的,英文字母一切正常,但是涉及到漢字就一定會亂碼,因為單片機(jī)這邊按照往年經(jīng)驗直接做了GBK編碼的處理。
經(jīng)過零妖老哥的不斷摸索,終于發(fā)現(xiàn)了一個曲折的救國之路,就是先把UTF8編碼轉(zhuǎn)換為Unicode編碼,然后再把它轉(zhuǎn)化為能夠顯示再OLED上面的點陣信息,存到外部存儲器里面,需要的時候就讀取一下并顯示出來。相關(guān)代碼如下:


七
好了,零妖老哥的物聯(lián)網(wǎng)全棧教程分享到這里就結(jié)束了。感謝各位兄弟的支持和鼓勵讓我有動力連載完畢(堅持做一件事情真的好難)。尤其感謝阿里巴巴IOT事業(yè)部的同學(xué)提供技術(shù)上的幫助。
有很多的想法和具體的細(xì)節(jié)是沒辦法在一個文章里寫清楚的,為了能幫助更多的朋友快速上云,零妖把這個教程拍成了一個系列的視頻教程,同時提供了物聯(lián)網(wǎng)彈幕器的相關(guān)硬件(前面已經(jīng)給了你開源地址,你完全可以自己做硬件哦)給想節(jié)約時間的工程師評估物聯(lián)網(wǎng)項目使用。
-
物聯(lián)網(wǎng)
+關(guān)注
關(guān)注
2950文章
48092瀏覽量
418060
發(fā)布評論請先 登錄
Nordic Semiconductor 重磅亮相 Bluetooth Asia 2026 以全域物聯(lián)網(wǎng)全棧能力開啟無線創(chuàng)新篇章
明晚:睿擎物聯(lián)網(wǎng)實戰(zhàn):從傳感器采集到MQTT上云全流程解析|問學(xué)直播
【直播預(yù)告】下周三晚8點|睿擎物聯(lián)網(wǎng)實戰(zhàn):從傳感器采集到MQTT上云全流程解析
為啥現(xiàn)在這么多人學(xué)物聯(lián)網(wǎng)?
芯源半導(dǎo)體在物聯(lián)網(wǎng)設(shè)備中具體防護(hù)方案
學(xué)習(xí)物聯(lián)網(wǎng)可以做什么工作?
如何從 MCU/MPU 角度保護(hù)物聯(lián)網(wǎng)應(yīng)用?
物聯(lián)網(wǎng)遠(yuǎn)程控制系統(tǒng):從硬件接入到業(yè)務(wù)賦能
自動駕駛中常提的“全棧”是個啥?有必要“全棧”嗎?
低代碼物聯(lián)網(wǎng)平臺典型場景落地全流程:從需求到實現(xiàn)的路徑解析
低代碼物聯(lián)網(wǎng)云平臺功能解析:從設(shè)備接入到智能應(yīng)用
物聯(lián)網(wǎng)的應(yīng)用范圍有哪些?
物聯(lián)網(wǎng)工程師為什么要學(xué)Linux?
全棧開發(fā)進(jìn)階指南:LuatOS-log庫從入門到實戰(zhàn)!
物聯(lián)網(wǎng)全棧教程-從云端到設(shè)備(十四 完結(jié))
評論