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