前言
近年來,IoT行業(yè)迎來了一個快速發(fā)展的窗口期,隨之可見的是,越來越多的智能化產(chǎn)品進(jìn)入到了我們的日常生活中,包括隨著健康飲水熱度的攀升而進(jìn)入消費者視線的智能化水杯。本項目下的智能化水杯主要針對辦公室白領(lǐng)和獨居老人兩類群體,具備以下主要功能:
- 支持自定義提醒功能;
- 支持智能分析一段時間內(nèi)的飲水?dāng)?shù)據(jù);
- 支持屏顯水容量和水溫;
- 支持語音播報水容量和水溫;
- 支持用戶人群分類;
- 首創(chuàng)關(guān)懷模式,支持在子女和老人的賬戶共享,子女可通過App查看并提醒老人喝水。
一款產(chǎn)品的原型設(shè)計至關(guān)重要,而將產(chǎn)品搭在什么平臺之上,更是值得考究的問題。
國內(nèi)主流的IoT云平臺各有千秋,涂鴉云平臺的最大特色是采取標(biāo)準(zhǔn)模塊化開發(fā)規(guī)則,這對于產(chǎn)品的開發(fā)者而言,不僅大大降低了開發(fā)門檻,還大幅降低研發(fā)成本和開發(fā)周期,快速實現(xiàn)產(chǎn)品智能化。
正是基于這種標(biāo)準(zhǔn)化開發(fā)能力,我們在涂鴉云開發(fā)平臺上看到大量的行業(yè)標(biāo)品,幾乎覆蓋了我們?nèi)粘K芤姷降乃兄悄芷奉悾@無疑給開發(fā)者們帶了極大的便利。涂鴉云開發(fā)平臺上豐富的開發(fā)文檔,從設(shè)備端SDK、移動端SDK,再到云端SDK的支持,對于看重二次開發(fā)的開發(fā)者是非常不錯的福音。這也正是我本次選用涂鴉IoT云開發(fā)平臺開發(fā)這款智能水杯的主要考量。
點擊IoT商機孵化營,獲取開發(fā)資料和相關(guān)硬件物料。
IoT商機孵化營:https://t.tuya.com/AY1D3R9mS6
1. 智能單品的創(chuàng)建
選定了涂鴉IoT云平臺之后,就可以在涂鴉的IoT云平臺可以快速地創(chuàng)建需要的智能單品:
2. 產(chǎn)品開發(fā)
整個產(chǎn)品開發(fā)分為兩大部分:硬件部分和軟件部分。在硬件部分呢,涂鴉只提供標(biāo)準(zhǔn)化的模組(Wi-Fi模塊或藍(lán)牙模組等),并不提供具體的MCU選型以及對應(yīng)傳感器相關(guān)的選型,這些就需要智能單品開發(fā)根據(jù)自己的實際情況,自行完成選型。
2.1 硬件設(shè)計
有了基本的IoT云平臺選型之后,下一步著重要進(jìn)行的就是硬件部分的選型。
硬件選型遵循的原則應(yīng)該是:盡可能選用成熟的硬件方案,選用的硬件型號應(yīng)略高于滿足你的功能需求,即留有冗余空間,盡可能考慮使用易開發(fā)的組件。
主控模塊
主控模塊選用的是開發(fā)者最容易上手的增強型 STC12C5A60S2,它是宏晶科技生產(chǎn)的單時鐘/機器周期(1T)的單片機,是高速/低功耗/超強抗干擾的新一代8051單片機,指令代碼完全兼容傳統(tǒng)8051,但速度快8-12倍。對比傳統(tǒng)的51單片機,它有非常顯著的技術(shù)優(yōu)勢:
藍(lán)牙通訊模塊
選用的是極具性價比的涂BT3L藍(lán)牙模組,在基于藍(lán)牙的智能單品上應(yīng)用非常廣泛,它的基本資料如下:
OLED顯示模塊
這里為了在產(chǎn)品中顯示相關(guān)的基礎(chǔ)數(shù)據(jù),包括當(dāng)前水杯溫度、藍(lán)牙連接狀態(tài)、定時喝水提醒倒計時、電池電量、本地計時、杯中水量、已喝水量、目標(biāo)水量等等。
考慮成本和接口設(shè)計等因素,采用的是由 SSD1306芯片驅(qū)動的9.6寸的OLED。
OLED 由于同時具備自發(fā)光,不需背光源、對比度高、厚度薄、視角廣、反應(yīng)速度快、可用于撓曲性面板、使用溫度范圍廣、構(gòu)造及制程較簡單等優(yōu)異之特性,被認(rèn)為是下一代的平面顯示器新興應(yīng)用技術(shù)。同比之下LCD都需要背光,而OLED不需要,因為它是自發(fā)光的,這樣的話同樣的顯示,OLED效果要來得好一些。
按鍵模塊
按鍵這部分相對比較簡單,直接采用的是點觸式非自鎖開關(guān);主要是配合應(yīng)用做一些簡單的功能切換;比如短按的時候切換屏幕開和關(guān),長按的時候復(fù)位藍(lán)牙模組,進(jìn)入配網(wǎng)流程等。
溫度傳感器模塊
溫度傳感器主要的用途是測量水杯的溫度,以便于展示真實的水溫度。這里我選用的是DS18B20數(shù)字溫度傳感器
DS18B20是常用的數(shù)字溫度傳感器,其輸出的是數(shù)字信號,具有體積小,硬件開銷低,抗干擾能力強,精度高的特點。[1] DS18B20數(shù)字溫度傳感器接線方便,封裝成后可應(yīng)用于多種場合,如管道式,螺紋式,磁鐵吸附式,不銹鋼封裝式,型號多種多樣,有LTM8877,LTM8874等等。
主要根據(jù)應(yīng)用場合的不同而改變其外觀。封裝后的DS18B20可用于電纜溝測溫,高爐水循環(huán)測溫,鍋爐測溫,機房測溫,農(nóng)業(yè)大棚測溫,潔凈室測溫,彈藥庫測溫等各種非極限溫度場合。耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測溫和控制領(lǐng)域。
RTC時鐘模塊
RTC時鐘作為一個本地計時的模塊而存在,選用的是非常經(jīng)典的RTC模塊:DS1302。
DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周、時、分、秒進(jìn)行計時,具有閏年補償功能,工作電壓為2.0V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(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)部的寄存器編程。
2.2 軟件設(shè)計
代碼整體框架
MCU主控
主控部分的軟件代碼,采用的是STC12C5A60S2這塊增強型的51單片機,它的軟件開發(fā)完全兼容傳統(tǒng)的51單片機,它的開發(fā)特定就是易上手,IO口豐富,外設(shè)也相對豐富,基本滿足需要的功能需求。
在這個項目,主要使用它的以下幾個部分:定時器、雙串口(一個串口日志調(diào)試、另一個串口與藍(lán)牙通訊)、ADC、標(biāo)準(zhǔn)的GPIO、E2PROM等。至于其他幾個外設(shè)傳感器,均采用的GPIO做通訊協(xié)議的模擬。
藍(lán)牙通訊
藍(lán)牙通訊這部分的軟件代碼其實分為兩部分:藍(lán)牙模組的固件代碼和MCU側(cè)對接藍(lán)牙模組的軟件代碼。由于是在涂鴉云平臺上直接創(chuàng)建產(chǎn)品,模組直接選用的是涂鴉的標(biāo)準(zhǔn)藍(lán)牙模組,所以藍(lán)牙模組這部分的固件代碼,是不用開發(fā)的,而需要開發(fā)的僅僅是通過簡單的串口協(xié)議跟藍(lán)牙模塊就能夠?qū)悠饋怼n愃葡逻呥@張圖的左半部分所展示的這樣:
關(guān)于這種開發(fā)方式,是 “MCU低代碼開發(fā)”,詳盡的介紹可以參考:https://developer.tuya.com/cn/docs/iot/mcu-access-guide?id=K9hrbv1ub5owo。
涂鴉的MCU側(cè)SDK移植
在涂鴉的IoT云平臺上創(chuàng)建了對應(yīng)的智能單品后,云平臺會自動創(chuàng)建對應(yīng)的MCU側(cè)參考SDK,這個SDK中將對應(yīng)產(chǎn)品的功能屬性、物模型數(shù)據(jù)都固話在里面了,并且SDK內(nèi)部已經(jīng)很好地實現(xiàn)了MCU和藍(lán)牙模組的對接,當(dāng)收到藍(lán)牙模組的數(shù)據(jù)傳遞時,自動進(jìn)行處理。
在適配的過程中,只需要根據(jù)SDK包中的參考文檔,將MCU側(cè)幾個核心的跟串口收發(fā)的接口適配好后,整一個與藍(lán)牙模組的通訊功能就可以跑起來了。
這時,通過SDK包中的mcu_api.h的接口就可以實現(xiàn)對藍(lán)牙模組的各種操作了。
- 更為詳盡的移植步驟,可以參考:https://developer.tuya.com/cn/docs/iot/mcu-sdk-migration-guide?id=K9fs77cw2vy27。
基礎(chǔ)外設(shè)
按鍵觸發(fā)
為了簡單處理,本項目中采用的簡單的GPIO實現(xiàn)單點按鍵的功能;同時,為了實現(xiàn)單個按鍵短按和長按的對應(yīng)不同的功能,在按鍵處理代碼中,增加了按鍵狀態(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)用邏輯有包括以下幾點:
-設(shè)備復(fù)位和設(shè)備配網(wǎng):當(dāng)按鍵長按3秒以上時,則觸發(fā)藍(lán)牙設(shè)備的解綁,所有本地數(shù)據(jù)都講復(fù)位到默認(rèn)值,同時藍(lán)牙設(shè)備再次發(fā)起廣播,等到手機APP的自動發(fā)現(xiàn),以及發(fā)起后續(xù)的設(shè)備配網(wǎng)操作。
-飲水提醒: 當(dāng)手機APP端下發(fā)的飲水提醒時間已到,則整個OLED屏幕開始1秒鐘開滅一次,直到檢測到一次新的喝水動作。
-飲水動作的檢測:當(dāng)水杯水容量,前后的變化銳減20ml以上,則認(rèn)為是一次有效的喝水動作,此時已喝水量會增加對應(yīng)的喝水量,同時喝水次數(shù)會加1,且會上報一次全量數(shù)據(jù)。
-本地數(shù)據(jù)定時上報:本地的數(shù)據(jù),每個5秒鐘會觸發(fā)上報,同時觀察手機APP,即可看到數(shù)據(jù)的變化。
-藍(lán)牙連接狀態(tài)顯示:藍(lán)牙有3種狀態(tài),0狀態(tài)對應(yīng)的是設(shè)備未綁定,此時藍(lán)牙圖標(biāo)每秒鐘閃爍一次;1狀態(tài)對應(yīng)已綁定但未連接手機,此時藍(lán)牙圖標(biāo)3秒鐘閃爍一次;2狀態(tài)表示正常已綁定已連接狀態(tài),測試藍(lán)牙圖標(biāo)常態(tài)化一直顯示。
代碼開源
本產(chǎn)品的相關(guān)代碼已開源,感興趣可以聯(lián)系我們。
2.3 功能調(diào)試
模擬調(diào)試
涂鴉模組調(diào)試助手是一個集成了云模組通訊協(xié)議的串口調(diào)試工具,常用于MCU低代碼開發(fā)方案的開發(fā)調(diào)試。模組調(diào)試助手集成了包括Wi-Fi、藍(lán)牙、Zigbee、NB-IoT等云模組常用串口協(xié)議,既可以模擬模組驗證MCU代碼邏輯,也可以模擬MCU調(diào)試配網(wǎng)功能。
這個助手很好地解決了產(chǎn)品設(shè)計前期的快速落地驗證和原型規(guī)劃,也極大地方便了在實際開發(fā)過程中遇到數(shù)據(jù)通訊問題時的調(diào)試手段,可以比較快地定位和解決問題。
關(guān)于模組調(diào)試助手的詳盡介紹,可以戳這里:https://developer.tuya.com/cn/docs/iot/network-module-overview?id=Ka4z12ojepber。
-設(shè)備調(diào)試
有了模擬調(diào)試的基礎(chǔ)之后,就可以在開發(fā)過程中,進(jìn)行真實設(shè)備的功能調(diào)試,這里采用的方式也是先從本地的基礎(chǔ)數(shù)據(jù)入手,先把本地的基礎(chǔ)數(shù)據(jù)調(diào)通,比如水溫的探測、飲水量的檢測、杯中水量的探測等等。
聯(lián)網(wǎng)調(diào)試
這里主要驗證智能水杯的聯(lián)網(wǎng)功能,包括與 智能生活A(yù)PP的發(fā)現(xiàn)配對、連接,基礎(chǔ)數(shù)據(jù)的上下行對接,智能場景聯(lián)動等核心功能調(diào)試。
產(chǎn)品核心功能的完整演示視頻,感興趣可以聯(lián)系我們。
最后
看似一個簡單的智能單品,但是,從最早的產(chǎn)品孵化再到產(chǎn)品原型的設(shè)計,再到IoT云平臺、硬件模塊的選型,然后進(jìn)行軟件開發(fā)、功能調(diào)試,這一系列的內(nèi)容也是需要經(jīng)過不斷地思考和打磨,方可把這個智能化產(chǎn)品真的的落地。
這段開發(fā)經(jīng)歷來說,最大的收獲并不是說把幾個智能化的核心功能給實現(xiàn)了,反倒是這個智能單品的開發(fā)全流程能學(xué)習(xí)到了不少技術(shù)以外的內(nèi)容,這些對于深入理解IoT領(lǐng)域提供了極大的幫助,也相信將來會有更多優(yōu)秀的智能單品從這里誕生。
-
單片機
+關(guān)注
關(guān)注
6043文章
44621瀏覽量
638566 -
mcu
+關(guān)注
關(guān)注
146文章
17321瀏覽量
352650 -
藍(lán)牙模塊
+關(guān)注
關(guān)注
30文章
578瀏覽量
55887 -
涂鴉智能
+關(guān)注
關(guān)注
7文章
217瀏覽量
19550
發(fā)布評論請先 登錄
相關(guān)推薦
評論