1. 程式人生 > >拒絕平庸,以程式設計師的名義定義新桌面!

拒絕平庸,以程式設計師的名義定義新桌面!

經過近半年時間的角逐,騰訊雲IoT應用創新大賽日前完滿落下帷幕,大賽期間不少優秀的作品脫穎而出,獲得了評委和讀者們的認可和喜愛。本文是對其中一篇獲獎作品的摘錄,基於TencentOS tiny與騰訊雲物聯網開發平臺IoT Explorer,打造一款實現創意桌面的個性化物聯網小產品。

點選視訊,檢視詳細作品展示

一、作品簡介

現代人群與各類電子終端的接觸時間越來越長,桌面作為經常伴隨的環境,成為了我們視線和注意力最集中的一角,說是一片個人的小天地也不為過。

 

好的桌面環境會給我們帶來更好的感受,人們希望能夠讓自己的桌面充實一點,個性化一點,更加智慧化一點,保持整潔光亮不枯燥。在此思想出發,本文作者基於TencentOS tiny與騰訊雲物聯網開發平臺IoT Explorer,打造了一款實現桌面個性化的物聯網作品,並且可以通過微信小程式去控制。

 

”Hello-IoT 創意桌面擺件”專注打造個性化桌面!

 

 

1. 為什麼推出這款產品?

 

通過大賽提供的機會使用TencentOS tiny和騰訊雲物聯網開發平臺IoT Explorer,感受IoT帶來的便捷與創新,並且設計一個稍微實用而不失美觀的作品,讓大家都有機會去體驗。

 

桌面成了我們經常伴隨的環境,桌面環境也在潛移默化影響著我們,好的桌面環境會給我們帶來更好的感受。基於這些考慮,做出了這樣的作品。

 

2. 為什麼需要聯網以及通過微信小程式控制?

 

(1)成本削減

 

通過聯網和利用微信小程式控制,可以去掉一部分硬體成本。螢幕使用的觸控式螢幕成本還是比較高的,通過使用裸螢幕顯示就可以把硬體上的電容觸控式螢幕方案省掉。能夠把硬體成本壓縮下去,作為一個消費級電子產品才更具備競爭力。

 

(2)適應更多場景

 

通過微信小程式能夠實現更多的應用場景,隨著今後物聯網應用的推廣,以後可能會推出更多的應用功能。

 

(3)降低開發難度

 

微信小程式的介面開發比嵌入式平臺的介面開發相對來說容易很多,也更易於實現更多的功能和更友好的使用者互動介面。

 

(4) 融入騰訊雲生態

 

通過使用騰訊的TencentOS tiny和騰訊雲物聯網開發平臺IoT Explorer會有穩定的服務,同時有可能通過騰訊雲的其它產品平臺實現更多的功能,實現產品功能的多樣化。

二、技術原理展示

 

1. 裝置端軟體層次結構

 

首先通過xFrame微控制器軟體框架來實現硬體底層和系統抽象層來適配TencentOS tiny。這樣的話就可以在不修改或者最小修改上層應用程式碼的前提下適應我們不同的微控制器和硬體平臺,以及RTOS。

 

其次通過Platform平臺適配層,通過虛擬的方式將微控制器應用放到Windows或者Linux上執行,我們這裡相當部分的應用開發便是放到Windows上進行虛擬開發的,在電腦上虛擬了LCD/觸控/按鍵/SPI Flash/檔案系統/24C02等。

 

下圖展示了"Hello-IoT 桌面擺件“的裝置端軟體層次結構圖:

 

裝置端微控制器的軟體層次結構圖

 

2. TencentOS tiny的移植

 

GitHub上的TencentOS tiny專案下,開發者們貢獻了很多開發板的TencentOS tiny的移植例程,我使用的微控制器是STM32F103VET6,所以我直接參考整點原子的工程進行了移植。

 

把HAL庫改成了標準庫,GUI需要的記憶體比較大,又把TencentOS tiny的堆疊大小由0x6000改成了0x1000,其它的保留不變,移植就完成了,TencentOS tiny的移植非常簡單便捷。

 

3. 使用者互動開發

 

這裡的使用者圖形介面比較多,所以使用了一個叫做LemonGUI的元件框架方便我們的使用者互動開發,下圖為相關的GUI元件框架結構圖:

 

GUI元件框架圖

 

4. 對接騰訊雲物聯網開發平臺IoT Explorer

 

這裡裝置通過ESP8266 AT指令連線網路,間接通過路由器與騰訊雲物聯網開發平臺IoT Explorer實現對接,在GitHub上也都提供了很多的例程參考。

 

第一次使用物聯網雲平臺感覺並沒有想象中的那麼難,佷方便,能夠把時間和精力都放到產品應用開發上,減短開發週期及時推出產品。尤其是作為小團隊,沒有專門的人去搭建和維護伺服器,使用騰訊雲物聯網開發平臺IoT Explorer是一個很不錯的選擇。

 

5.微信小程式開發

 

因為之前有安卓介面的開發經驗和有完善素材庫的支援,所以很快實現了微信小程式的開發。

 

關於微信小程式如何通過騰訊雲物聯網開發平臺IoT Explorer控制我們的裝置,GitHub上已經提供有微信小程式智慧燈的參考例程,所以我就借鑑例程進行了開發,最終實現了微信小程式對裝置的操作。

 

微信小程式主介面的截圖

 

微信小程式按照原來預想的完整使用者業務對接實現,介面佈局參考了APP的樣式,這樣介面會好看一點,同時以後需要寫對應的安卓APP的話也會方便點,介面微信小程式的功能組織框架圖如下:

                         

 

6.裝置硬體平臺

 

我們這裡使用的是一塊以STM32F103VET6為主控的微控制器硬體平臺,帶有ESP8266和JDY32藍芽串列埠模組,以此實現聯網和輸出除錯,W25Q128 Flash晶片作為字型檔和素材儲存,SD卡作為檔案系統和桌面電子相簿相片的儲存。

 

硬體PCB加上我們的LCD面板基本就可以實現最小功能了,然後搭配了一個塑料支架,可調仰俯角,方便實用。LCD面板使用ISP全視角面板,即使擺得很偏也能保持驚豔的觀看效果。

電路原理圖

 

PCB3D版圖

 

”Hello-IoT創意桌面擺件”前檢視

三、優化方向

 

1. 選用低成本硬體平臺

 

因為相當部分人沒有製作硬體的經驗,所以藉助便宜的第三方硬體方案可能是更好的選擇。這裡選擇國產某TKM32F499,這個晶片帶有8MB的RAM和240MHz的主頻。官方硬體板卡成本價格相對來說很便宜。

 

(1)TencentOS tiny的移植

 

因為這款MCU的是基於M4核心的,GitHub上也正好有正點原子F429開發板的TencentOS tiny移植例程。只要是核心一樣,直接複製貼上檔案就可以移植,所以移植TencentOS tiny到這個平臺是有可能的。

 

(2)板卡自帶ESP8266模組

 

正好滿足了我們WiFi聯網到騰訊雲物聯網開發平臺IoT Explorer的需求,不過需要說明的是ESP8266的韌體還是需要手動燒錄騰訊提供的韌體,這個可以從GitHub上下載。

 

(3)240MHz的主頻和8MB記憶體

 

可以彌補當前STM32刷屏不流暢的缺點,實現更多的功能。

 

2. 通過APP訪問騰訊雲物聯網開發平臺IoT Explorer

 

由於微信小程式需要搭建伺服器,不利於個人DIY,所以對裝置的操作最好是使用手機APP直接訪問騰訊雲物聯網開發平臺IoT Explorer進行操作。這裡就需要把微信小程式的功能用JAVA實現到安卓APP上。騰訊雲物聯網開發平臺IoT Explorer很是完善,提供了JAVA的API介面,相信實現這麼一個APP並不會很難。

四、結語

 

騰訊雲物聯網開發平臺IoT Explorer和TencentOS tiny系統給開發者帶來的開發效率和開發便利性不是一點點的提升。作為一個入門的產品工程師,我深知一個消費級產品對開發週期的敏感性,如果一個消費級產品沒有在最短時間內完成開發、除錯、推廣,就很有可能讓競爭對手搶佔先機佔據市場份額。

 

作為開發者應當使產品的開發週期在保證質量的前提下儘可能地短。那麼在物聯網產品的開發中怎麼才能即能保證質量的同時縮短開發週期呢?騰訊雲物聯網開發平臺IoT Explorer的出現無疑是一個很好的途徑與方式。

 

大多數嵌入式工程師往往在網路後臺和前端都不是很擅長,騰訊雲物聯網開發平臺IoT Explorer不需要開發者實現前端與後臺只需要實現對應的介面就能網路通訊和前端使用者互動,於是使用者->裝置端->網路->伺服器後臺->前端使用者互動->IoT裝置端就很快捷地對接起來了。

 

舉一個例子,作者本人在本次比賽之前幾乎沒有接觸過任何網路開發,也沒接觸過任何物聯網雲平臺,連最基本Linux下的socket通訊demo和ESP8266 SDK開發都沒有接觸過,更不要說MTQQ之類的了,此前也就接觸過微控制器串列埠通訊,在物聯網行業連小白都算不上。

 

這一次比賽期間,正是基於騰訊雲物聯網開發平臺IoT Explorer,作者在一天之內就完成了ESP8266的開發環境部署與遠端控制開發,實現了基本的通訊功能,所以騰訊雲物聯網開發平臺IoT Explorer在開發效率上佔據很大優勢。

 

我就是依賴GitHub上提供的參考文件和騰訊雲物聯網開發平臺IoT Explorer的API文件一點一點地把這個比賽作品搭建起來的。

 

另外,TencentOS tiny的多平臺支援非常全面,各個廠商的多個系列晶片還有官方板卡的例程工程應有盡有,尤其是STM32的支援連正點原子的開發板都適配了,給開發者帶來了極大的便利。

 

參考資料:

[1] 騰訊雲物聯網開發平臺IoT Explorer:

https://cloud.tencent.com/product/iotexplorer

[2] TencentOS tiny:

https://github.com/Tencent/TencentOS-tiny

 

點選檢視作品路演PPT~<