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