鈦極小龜,一款把Java語言應用到低資源的MCU開發(fā)中的創(chuàng)意產(chǎn)品(鈦極智能)
很榮幸有機會參與芯板坊開展的鈦極小龜物聯(lián)網(wǎng)開發(fā)板評測活動。該套件是北京鈦云物聯(lián)網(wǎng)推出的一套物聯(lián)網(wǎng)評估套件–鈦極小龜TiKit-T600-ESP8266B。
該硬件平臺是一款專門針對初學者入門的開發(fā)套件,由WiFi模組和各樣的傳感器等組合,但與其他物聯(lián)網(wǎng)公司不同的是,首先這家公司不是云平臺服務商,其次該套件設計還是比較用心的,最后,也是最獨特的是其使用Java語言進行應用功能的開發(fā)。
也就是說,即便你不是精通C語言的嵌入式工程師,你或許是擅長java類的軟件工程師,以前苦無機會進入嵌入式物聯(lián)網(wǎng)行業(yè)分一杯羹,而現(xiàn)在機會就擺在你的眼前。
一.硬件介紹
鈦極小龜物聯(lián)網(wǎng)開發(fā)套件(以后簡稱:鈦極小龜評估板)如下圖1所示。拿到手后,相信你肯定會被其外包裝色彩與圖案設計所吸引,其設計顯得極具科技味道。套件的硬紙盒質感非常好(就我目前拿到/買到的開發(fā)板包裝里,該包裝顯得很用心,算是最好的了!之前大很多數(shù)采用透明塑料盒進行包裝的。)
圖1 鈦極小龜物聯(lián)網(wǎng)開發(fā)套件全家福照片
該包裝盒分為上下兩層,上部分用軟塑料內(nèi)嵌評估板,下部分裝有一根MicroUSB線,一個紅外遙控器,另外還有基本的使用說明文檔。另外,隨盒附送了一個鈦云物聯(lián)的宣傳單(封面有句話,很觸動我:是時候用Java開發(fā)智能硬件了。之前聽說過有用javascript腳本語言進行應用開發(fā)的開發(fā)板,沒想到這次有機會玩玩用Java進行開發(fā)的開發(fā)板,再次感謝芯板坊給我這次機會)。
仔細端詳鈦極小龜評估板,你會發(fā)現(xiàn)其做工非常精細,器件布局錯落有致,設計風格獨樹一幟,有別于其他眾多云平臺廠商推出的開發(fā)板,讓用戶很容易識別各功能模塊區(qū)域。該評估板上板載有液晶屏模塊,溫濕度傳感器模塊,麥克風模塊,普通按鍵模塊,光照度傳感器模塊,紅外接收模塊,繼電器模塊和觸摸按鍵模塊。實物圖如下圖2所示。
圖2 鈦極小龜評估板實物圖
二.軟件簡介
鈦極OS是一個支持 Java 語言開發(fā)嵌入式智能硬件的物聯(lián)網(wǎng)操作系統(tǒng),支持大部分的Java特性,與標準Java兼容,并通過Eclipse進行開發(fā),同時鈦極OS還支持多應用。它的實現(xiàn)機制更像安卓、由內(nèi)核掌管底層硬件資源,軟硬隔離,同時集成高效的Java虛擬機,通過對硬件抽象,異步IO, 多線程、沙盒運行,事件驅動以及面向對象的Java語言開發(fā)等多種技術,使物聯(lián)網(wǎng)硬件應用開發(fā)變得輕松且高效。
鈦極OS由操作系統(tǒng)(TOS)、Java虛擬機(TiJVM)、功能組件(TiRT)三部分構成。TOS負責提供任務調度和控制、文件操作、基準時鐘、資源的分配、外設操作(GPIO/UART…)等基礎服務。同時鈦極OS的特點是內(nèi)核OS支持第三方的RTOS,例如LiteOS、FreeRTOS等。TiJVM的作用是建立Java程序的運行環(huán)境,實現(xiàn)Java語言的各種特性,同時TiJVM也是TOS的一個任務。
TiRT是為用戶開發(fā)應用程序提供的基礎類支持,包括感知層控制、網(wǎng)絡通信協(xié)議、為物聯(lián)網(wǎng)的安全接入和身份鑒別提供的安全組件、圖形組件包。其體系結構如下圖3所示。
圖3 鈦極OS系統(tǒng)結構圖
總體說來,鈦云物聯(lián)提供了豐富的例程資源供用戶遞進式的學習,由于時間有限,我此次沒有連接公有云、在手機上體驗和編寫手機端的控制程序,稍感遺憾。將來時間允許的話,再進行系統(tǒng)功能擴展,相信會有另一番的體驗。
三.項目簡介
當時我的申請計劃是用鈦極小龜物聯(lián)網(wǎng)開發(fā)套件搭建了一個移動式環(huán)境監(jiān)測系統(tǒng)。在申請的時候,經(jīng)過分析、研究相關資料,從原理圖上可以得到結論:
若想將其安裝到移動平臺上,除了繼電器接口外,別無它法(該套件沒有外擴引出任何引腳!若想做更多擴展要么換個平臺–鈦極OS(TiJOS)物聯(lián)網(wǎng)操作系統(tǒng)開發(fā)套件 ESP8266,當然也可以借鑒我此次的設計方法)。
1. 系統(tǒng)功能簡介。移動式環(huán)境監(jiān)測系統(tǒng)具有的功能如下所示。
- 用戶通過紅外遙控器指定移動平臺移動到預定地點的功能;
- 具有SmartConfig配置聯(lián)網(wǎng)功能;
- 移動平臺可以隨時進行環(huán)境參數(shù)的采集功能;
- 移動平臺通過MQTT協(xié)議將采集到的環(huán)境數(shù)據(jù)上傳到后臺云上(這里我采用的是本地私有云,當然也可以擴展到諸如阿里云等公有云平臺上)。
2. 系統(tǒng)通信協(xié)議
為了完成該套件與移動平臺間的通信,即將該套件安裝到移動平臺上,用戶可以通過紅外遙控器操作小車進行環(huán)境監(jiān)測,因此制定了如下表1所示的通信協(xié)議。
表1 移動式環(huán)境監(jiān)測系統(tǒng)通信協(xié)議
如前所述,因為該套件沒有外擴對外的引腳,所以在此次項目中,我通過將套件板載的繼電器與移動平臺的GPIO引腳進行連接,從而完成兩板子間的物理信道的連接。而實現(xiàn)邏輯上,移動平臺上的主控系統(tǒng)通過統(tǒng)計EXIT接口接收到的中斷申請的次數(shù)來識別用戶的控制命令,命令編碼如上表左側所示。
比如,用戶按下紅外遙控器的按鈕,希望移動平臺右轉時,該套件在識別鍵碼后,通過吸合板載繼電器4次后,引發(fā)與其相連接的移動平臺上的引腳有4次高低電平的變化,而該引腳復用了EXTI外部中斷功能,從而移動平臺上的主控解析出相應的電機動作。套件與移動平臺間硬件連線圖如下圖4所示。
圖4 套件與移動平臺間硬件連線圖
實物連接圖如上圖2中左上角紅色文字1/2/3所示,1為NC常閉引腳,2為COM公共引腳,3為NO常開引腳。這里連接原理如上圖4所示。
注意,這里板載繼電器電路是帶有防反向電動勢的二極管保護電路,所以我直接將2塊板子直接相連結了。如果自行搭建繼電器電路時,需要注意防反措施。原理圖如下圖5紅色圈所示。
圖5 帶有二極管保護的繼電器電路
四.硬件實物
硬件實物如圖6所示。
五.軟件設計
1. 鈦極小龜評估板程序
為了完成信號的采集,本軟件系統(tǒng)設計了3個線程,分別用于采集溫濕度、光線、環(huán)境音。示例代碼如下圖7和8所示。
圖7 線程的調用
圖8 溫濕度信號采集類的設計
而在主循環(huán)中每1秒將采集到的信息發(fā)送到本地私有云上(效果如視頻所示),示例代碼如下圖9所示。另外采用監(jiān)聽器實時對紅外遙控器進行解碼分析,如下圖10所示。
圖9 向本地云發(fā)布MQTT消息
圖10 紅外解碼部分代碼
(2)小車的程序
這里小車主要有接收協(xié)議編碼、解析協(xié)議、小車行進和壁障等四個功能,因為不是核心部分,其示例代碼略過。
六.實物
1. 測試問題
(1)當網(wǎng)絡信號不好時,日志會彈出如下圖10所示異常。另外,當連接wifi模塊創(chuàng)建的網(wǎng)絡時,系統(tǒng)能連接上,但是無法向本地云上傳相關數(shù)據(jù)。
(2)在系統(tǒng)運行時,有時日志會列舉如下圖11所示的異常,經(jīng)查閱是與DHT11相關的,且評估板此時的DHT11是無法工作的,還沒有查出問題。
六.使用心得
對于使用Eclipse進行開發(fā)時,沒有連接硬件進行debug的功能,有些遺憾!從個人角度來說,每次都得Run as TiJOS Application,對于與硬件相關的應用開發(fā),很難發(fā)現(xiàn)程序中潛在的邏輯/時序問題。
對我來說(大約花了3周時間里設計本項目),學習鈦極小龜評估板相關示例程序還是有一些難度的(約20年前學過Java語言,看到Java代碼確實有似曾相識的感覺,實則早已忘光了,所以還是花一些時間來慢慢熟悉和適應的),但是相信對于Java工程師而言,肯定沒有問題!也就說該評估板確實可以說是一款顛覆傳統(tǒng)開發(fā)的物聯(lián)網(wǎng)開發(fā)套件,為不需懂硬件電路設計的Java工程師打開了物聯(lián)網(wǎng)世界開發(fā)的大門。
總體說來,鈦云物聯(lián)有別于傳統(tǒng)的云平臺廠商,通過創(chuàng)新性地把Java語言應用到低資源、低成本的MCU開發(fā)中,從而降低了物聯(lián)網(wǎng)產(chǎn)品的開發(fā)難度和開發(fā)成本。個人相信其應用前景將會非常廣泛。
本次試用活動由芯板坊舉辦。帶大家體驗鈦極物聯(lián)開發(fā)板,大家可在芯板坊微信(xinzixun321),點擊菜單欄免費申請。