近年來,IoT行業(yè)迎來了一個(gè)快速發(fā)展的窗口期。隨之可見的是,越來越多的智能化產(chǎn)品進(jìn)入到了我們的日常生活中,包括隨著健康飲水熱度的攀升而進(jìn)入消費(fèi)者視線的智能水杯。
本項(xiàng)目下的智能化水杯解決方案主要針對(duì)辦公室白領(lǐng)和獨(dú)居老人兩類群體,主要具備以下功能:
支持自定義提醒功能;
支持智能分析一段時(shí)間內(nèi)的飲水?dāng)?shù)據(jù);
支持屏顯水容量和水溫;
支持語音播報(bào)水容量和水溫;
支持用戶人群分類;
首創(chuàng)關(guān)懷模式,支持子女和老人的賬戶共享,子女可通過App查看并提醒老人喝水。
一款產(chǎn)品的原型設(shè)計(jì)至關(guān)重要,而將產(chǎn)品搭在什么平臺(tái)之上,更是值得考究的問題。
國內(nèi)主流的IoT開發(fā)平臺(tái)各有千秋,而涂鴉IoT開發(fā)平臺(tái)的最大特色是采取標(biāo)準(zhǔn)模塊化開發(fā)規(guī)則,這對(duì)于產(chǎn)品的開發(fā)者而言,不僅大大降低了開發(fā)門檻,還大幅降低研發(fā)成本和開發(fā)周期,快速實(shí)現(xiàn)產(chǎn)品智能化。
正是基于這種標(biāo)準(zhǔn)化開發(fā)能力,我們?cè)谕盔f IoT 開發(fā)平臺(tái)上看到大量的行業(yè)標(biāo)品,幾乎覆蓋了我們?nèi)粘K芤姷降乃兄悄芷奉悾@無疑給開發(fā)者們帶來了極大的便利。
涂鴉 IoT 開發(fā)平臺(tái)上豐富的開發(fā)文檔,從設(shè)備端SDK、移動(dòng)端SDK,再到云端SDK的支持,對(duì)于看重二次開發(fā)的開發(fā)者是非常不錯(cuò)的福音。這也正是我本次選用涂鴉 IoT 開發(fā)平臺(tái)開發(fā)這款智能水杯的主要考量。
智能水杯開發(fā)實(shí)操教程
整個(gè)產(chǎn)品開發(fā)分為硬件和軟件兩大部分。(文末可獲取開發(fā)資料和硬件物料)
在硬件部分,由于涂鴉只提供標(biāo)準(zhǔn)化的模組,并不提供具體的MCU選型以及對(duì)應(yīng)傳感器相關(guān)的選型,這就需要我們?cè)谥悄軉纹烽_發(fā)過程中,根據(jù)自己的實(shí)際情況,自行完成選型。
01
硬件設(shè)計(jì)
硬件選型遵循的原則應(yīng)該是:
1、盡可能選用成熟的硬件方案;
2、選用的硬件型號(hào)應(yīng)略高于你的功能需求,即留有冗余空間;
3、盡可能考慮使用易開發(fā)的組件。
主控模塊
主控模塊我選用的是開發(fā)者最容易上手的增強(qiáng)型 STC12C5A60S2,它是單時(shí)鐘/機(jī)器周期( 1T )的單片機(jī),是高速/低功耗/超強(qiáng)抗干擾的新一代 8051 單片機(jī),指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。
對(duì)比傳統(tǒng)的51單片機(jī),它具有非常顯著的技術(shù)優(yōu)勢(shì):
藍(lán)牙通訊模塊
選用的是極具性價(jià)比的涂鴉BT3L藍(lán)牙模組,在基于藍(lán)牙的智能單品上應(yīng)用非常廣泛:
OLED顯示模塊
考慮到成本和接口設(shè)計(jì)等因素,我采用的是由 SSD1306 芯片驅(qū)動(dòng)的9.6寸OLED,用以顯示水杯的基礎(chǔ)數(shù)據(jù),包括當(dāng)前水杯溫度、藍(lán)牙連接狀態(tài)、定時(shí)喝水提醒、倒計(jì)時(shí)、電池電量、本地計(jì)時(shí)、杯中水量、已喝水量、目標(biāo)水量等等。
OLED 具備自發(fā)光、無需背光源、對(duì)比度高、厚度薄、視角廣、反應(yīng)速度快、可用于撓曲性面板、使用溫度范圍廣、構(gòu)造及制程較簡單等優(yōu)異之特性,被認(rèn)為是下一代的平面顯示器新興應(yīng)用技術(shù)。
按鍵模塊
按鍵這部分相對(duì)比較簡單,我直接采用的是點(diǎn)觸式非自鎖開關(guān);主要是配合做一些簡單的功能切換:例如短按切換屏幕開關(guān),長按復(fù)位藍(lán)牙模組,進(jìn)入配網(wǎng)流程等。
溫度傳感器模塊
這里我選用的是 DS18B20數(shù)字溫度傳感器,用于測(cè)量水溫。
DS18B20輸出的是數(shù)字信號(hào),具有體積小、硬件開銷低、抗干擾能力強(qiáng)、精度高等特點(diǎn)。此外它接線方便,封裝后可應(yīng)用于多種場合。
RTC時(shí)鐘模塊
RTC時(shí)鐘作為一個(gè)本地計(jì)時(shí)的模塊而存在,我選用的是非常經(jīng)典的DS1302。它是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,可以對(duì)年、月、日、周、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.0V~5.5V。
采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。
壓力傳感器模塊
重力/壓力傳感器主要是用于測(cè)量水杯的整體重量,通過密度、體積、質(zhì)量三者的數(shù)量關(guān)系,從而得出水容量的一種方法。
這里我選用的是 HX711,它是一款專為高精度電子秤而設(shè)計(jì)的24位A/D轉(zhuǎn)換器芯片,與同類型其它芯片相比,該芯片集成了包括穩(wěn)壓電源、片內(nèi)時(shí)鐘振蕩器等其它同類型芯片所需要的外圍電路,具有集成度高、響應(yīng)速度快、抗干擾性強(qiáng)等優(yōu)點(diǎn)。
降低了電子秤的整機(jī)成本,提高了整機(jī)性能和可靠性。該芯片與后端MCU 芯片的接口和編程非常簡單,所有控制信號(hào)由管腳驅(qū)動(dòng),無需對(duì)接芯片內(nèi)部的寄存器編程。
02
軟件設(shè)計(jì)
MCU主控
主控部分的軟件代碼,采用的是 STC12C5A60S2 這塊增強(qiáng)型的 51 單片機(jī),它的軟件開發(fā)完全兼容傳統(tǒng)的 51 單片機(jī),它的開發(fā)特點(diǎn)就是易上手,IO 口豐富,外設(shè)也相對(duì)豐富,基本滿足我需要的功能需求。
在這個(gè)項(xiàng)目,我主要使用它的以下幾個(gè)部分:定時(shí)器、雙串口(一個(gè)串口日志調(diào)試、另一個(gè)串口與藍(lán)牙通訊)、ADC、標(biāo)準(zhǔn)的GPIO、E2PROM等。
至于其他幾個(gè)外設(shè)傳感器,均采用GPIO做通訊協(xié)議的模擬。
藍(lán)牙通訊
藍(lán)牙通訊這部分的軟件代碼其實(shí)分為兩部分:藍(lán)牙模組的固件代碼和MCU側(cè)對(duì)接藍(lán)牙模組的軟件代碼。
由于我是在涂鴉 IoT 開發(fā)平臺(tái)上直接創(chuàng)建產(chǎn)品,模組直接選用涂鴉提供的標(biāo)準(zhǔn)藍(lán)牙模組,所以藍(lán)牙模組的固件代碼,我是不用開發(fā)的,而需要開發(fā)的僅僅是通過簡單的串口協(xié)議跟藍(lán)牙模塊就能夠?qū)悠饋怼?/span>
類似下邊這張圖的左半部分所展示的這樣(涂鴉叫 “MCU低代碼開發(fā)”):
涂鴉MCU側(cè)的SDK移植
在涂鴉 IoT 開發(fā)平臺(tái)上創(chuàng)建了智能單品后,平臺(tái)會(huì)自動(dòng)創(chuàng)建對(duì)應(yīng)的 MCU 側(cè)參考SDK,將對(duì)應(yīng)產(chǎn)品的功能屬性、物模型數(shù)據(jù)都固化在里面了,并且 SDK 內(nèi)部已經(jīng)很好地實(shí)現(xiàn)了 MCU 和藍(lán)牙模組的對(duì)接,當(dāng)收到藍(lán)牙模組的數(shù)據(jù)傳遞時(shí),會(huì)自動(dòng)進(jìn)行處理。
在適配的過程中,只需要根據(jù) SDK 包中的參考文檔,將 MCU 側(cè)幾個(gè)核心的跟串口收發(fā)的接口適配好后,整個(gè)藍(lán)牙模組的通訊功能就可以跑起來了。
這時(shí),通過SDK包中的mcu_api.h的接口就可以實(shí)現(xiàn)對(duì)藍(lán)牙模組的各種操作了。
基礎(chǔ)外設(shè)按鍵觸發(fā)
為了便于處理,本項(xiàng)目中采用簡單的 GPIO 以實(shí)現(xiàn)單點(diǎn)按鍵的功能;同時(shí),為了對(duì)應(yīng)實(shí)現(xiàn)單個(gè)按鍵短按和長按的不同功能,在按鍵處理代碼中,增加了按鍵狀態(tài)機(jī)的處理模型,有效地區(qū)分兩者狀態(tài)。
OLED 顯示
OLED 采用的是 I2C 串行數(shù)據(jù)協(xié)議,考慮到 GPIO 的分布,本項(xiàng)目采用的是 GPIO 軟件模擬 I2C 洗衣的方式。
通過對(duì)不同寄存器的讀寫封裝,可以實(shí)現(xiàn)對(duì) OLED 區(qū)域的顯示;同時(shí)配合字模制作軟件,可以生成中文字模以及自定義各式各樣的圖形和符號(hào),極大地方便了顯示的多樣性。
溫度傳感器測(cè)溫
DS18B20 溫度傳感器采用的是單數(shù)據(jù)線串行協(xié)議,通過切換單數(shù)據(jù)線的電平,實(shí)現(xiàn)對(duì)溫度信息的采集,經(jīng)過合理的轉(zhuǎn)換運(yùn)算后,得到一個(gè)比較精確的水杯溫度值,用于展示在顯示屏上。
壓力傳感器測(cè)水容量
壓力傳感器用于檢測(cè)水的容量,這是一個(gè)間接的測(cè)量方法,先通過壓力(重力)傳感器測(cè)得不同水容量下的重量,得出不同容量下的重量分布表;
在真正的測(cè)量中,將取得的重量數(shù)據(jù)對(duì)照水容量表格,大致可以得出對(duì)應(yīng)的水容量,從而做水量的數(shù)據(jù)展示。
RTC本地時(shí)鐘
RTC時(shí)鐘,采用的是自定義的串行數(shù)據(jù)協(xié)議,通過RST、IO、SCK三線的變化,可以準(zhǔn)確地實(shí)現(xiàn)對(duì)RTC時(shí)鐘的讀和寫;同時(shí)該模塊是采用紐扣電池長供電的,所以可以長時(shí)間保持時(shí)鐘的有效性。
電池電量檢測(cè)
本產(chǎn)品由鋰電池或干錳電池供電,借助MCU側(cè)自帶的ADC通道,可以很快地測(cè)出供電電壓。
由于 STC12C5A60S2 的 ADC 內(nèi)部參考電壓就是供電電壓 VCC,所以必須借助2路 ADC 通道,其中一路外接一個(gè)參考電壓,然后根據(jù)等比關(guān)系計(jì)算出供電電壓VCC。
比如外部參考電壓是 V1 = 1.0V,對(duì)應(yīng)這路 ADC 測(cè)量的電壓值為 V11;而另一路 ADC 測(cè)量出來的電壓值為 V12。他們與 VCC 的等比關(guān)系是:VCC / V12 = V1 / V11
由此可計(jì)算出:VCC = V1 * V12 / V11
再結(jié)合 VCC 電壓和鋰電池的降壓特性,初步得出當(dāng)前的電量百分比,隨后送到屏幕展示。
基礎(chǔ)的應(yīng)用邏輯
這里的基礎(chǔ)應(yīng)用邏輯有包括以下幾點(diǎn):
1、設(shè)備復(fù)位和配網(wǎng)
當(dāng)按鍵長按3秒以上,則觸發(fā)藍(lán)牙設(shè)備的解綁,所有本地?cái)?shù)據(jù)都將復(fù)位到默認(rèn)值,同時(shí)藍(lán)牙設(shè)備再次發(fā)起廣播,等到手機(jī) App 自動(dòng)發(fā)現(xiàn),再發(fā)起后續(xù)的設(shè)備配網(wǎng)操作。
2、飲水提醒
當(dāng)手機(jī) App 端下發(fā)的飲水提醒時(shí)間已到,則整個(gè) OLED 屏幕開始1秒鐘開滅一次,直到檢測(cè)到一次新的喝水動(dòng)作。
3、飲水動(dòng)作的檢測(cè)
當(dāng)水杯水容量,前后的變化銳減 20ml 以上,則認(rèn)為是一次有效的喝水動(dòng)作,此時(shí),已喝水量會(huì)增加對(duì)應(yīng)的喝水量,同時(shí)喝水次數(shù)會(huì)加1,且會(huì)上報(bào)一次全量數(shù)據(jù)。
4、本地?cái)?shù)據(jù)定時(shí)上報(bào)
本地的數(shù)據(jù),每隔 5 秒鐘會(huì)觸發(fā)上報(bào),同時(shí)觀察手機(jī)App,即可看到數(shù)據(jù)的變化。
5、藍(lán)牙連接狀態(tài)顯示
總共有3種狀態(tài):
0狀態(tài)對(duì)應(yīng)的是設(shè)備未綁定,此時(shí)藍(lán)牙圖標(biāo)每秒鐘閃爍一次;
1狀態(tài)對(duì)應(yīng)已綁定但未連接手機(jī),此時(shí)藍(lán)牙圖標(biāo)3秒鐘閃爍一次;
2狀態(tài)表示正常已綁定已連接狀態(tài),此時(shí)藍(lán)牙圖標(biāo)常態(tài)化顯示。
本產(chǎn)品的相關(guān)代碼已開源,感興趣的童鞋,可以 [復(fù)制下方鏈接]獲?。?strong>https://gitee.com/recan-li/smart-cup
03
功能調(diào)試
模擬調(diào)試
涂鴉模組調(diào)試助手是一個(gè)集成了云模組通訊協(xié)議的串口調(diào)試工具,常用于 MCU 低代碼開發(fā)方案的開發(fā)調(diào)試。
模組調(diào)試助手集成了包括 Wi-Fi、藍(lán)牙、Zigbee、NB-IoT 等云模組常用串口協(xié)議,既可以模擬模組驗(yàn)證 MCU 代碼邏輯,也可以模擬 MCU 調(diào)試配網(wǎng)功能。
這個(gè)助手很好地解決了產(chǎn)品設(shè)計(jì)前期的快速落地驗(yàn)證和原型規(guī)劃,也極大地方便了在實(shí)際開發(fā)過程中遇到數(shù)據(jù)通訊問題時(shí)的調(diào)試手段,可以比較快地定位和解決問題。
設(shè)備調(diào)試
有了模擬調(diào)試的基礎(chǔ)之后,就可以在開發(fā)過程中,進(jìn)行真實(shí)設(shè)備的功能調(diào)試,這里采用的方式也是先從本地的基礎(chǔ)數(shù)據(jù)入手,先把本地的基礎(chǔ)數(shù)據(jù)調(diào)通,比如水溫的探測(cè)、飲水量的檢測(cè)、杯中水量的探測(cè)等等。
聯(lián)網(wǎng)調(diào)試
這里主要驗(yàn)證智能水杯解決方案的聯(lián)網(wǎng)功能,包括智能生活A(yù)pp的配網(wǎng)、基礎(chǔ)數(shù)據(jù)的上下行對(duì)接、智能場景聯(lián)動(dòng)等核心功能調(diào)試。
(App上相關(guān)飲水參數(shù)顯示)
產(chǎn)品功能拓展
由于時(shí)間投入的關(guān)系,本次開發(fā)主要集中在開發(fā)核心的功能特性上,包括基本數(shù)據(jù)的采集、數(shù)據(jù)的下發(fā)及對(duì)云端數(shù)據(jù)的響應(yīng)等等。
回到最開始我規(guī)劃的幾個(gè)特色功能,比如聯(lián)網(wǎng)分析飲水?dāng)?shù)據(jù)、智能語音播報(bào)、設(shè)備共享、多人提醒互動(dòng)等特色功能,將會(huì)在后續(xù)的產(chǎn)品開發(fā)中繼續(xù)保持功能迭代,感興趣的童鞋可以保持關(guān)注。
說在最后:
看似一款簡單的智能單品,從最早的產(chǎn)品孵化到產(chǎn)品原型的設(shè)計(jì),再到 IoT 開發(fā)平臺(tái)、硬件模塊的選型,然后進(jìn)行軟件開發(fā)、功能調(diào)試,一系列的過程需要不斷地思考、驗(yàn)證和打磨,直到最終落地。
這段開發(fā)經(jīng)歷于我而言,最大的收獲并不是說把幾個(gè)智能化的核心功能給實(shí)現(xiàn)了,而是通過整個(gè)過程對(duì)IoT領(lǐng)域有了更深刻的認(rèn)知。
PS:本文來源于CSDN技術(shù)博客,作者--架構(gòu)師李肯。
-
IOT
+關(guān)注
關(guān)注
186文章
4163瀏覽量
196045
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論