前言:本文詳細(xì)介紹了小黑板接入機(jī)智云教程,通過(guò)一個(gè)手機(jī)APP遠(yuǎn)程控制LED亮滅的應(yīng)用,完整的體驗(yàn)了機(jī)智云提供的一些列簡(jiǎn)單方便的開(kāi)發(fā)工具,尤其是代碼自動(dòng)生成工具,懶人福音。 一、 esp8266簡(jiǎn)介ESP8266 是上海樂(lè)鑫研發(fā)的高性能無(wú)線(xiàn) SOC,旨在以最低成本提供最大實(shí)用性,為 WiFi 功能嵌入其他系統(tǒng)提供無(wú)限可能,被稱(chēng)為業(yè)界里程碑。通俗的講就是高性能單片機(jī)+無(wú)線(xiàn)WiFi外設(shè),特性如下: ESP8266 低功耗、高集成度的 Wi-Fi 芯片 僅需 7 個(gè)**元器件 超寬工作溫度范圍:-40°C 至 +125°C ESP8285 - ESP8266 內(nèi)封 8 Mbit Flash 高度集成 ESP8266EX 是業(yè)內(nèi)集成度最高的 Wi-Fi 芯片,最小封裝尺寸僅為 5mm x 5mm。ESP8266EX 高度集成了天線(xiàn)開(kāi)關(guān)、射頻 balun、功率放大器、低噪放大器、過(guò)濾器和電源管理模塊,僅需很少的**電路,可將所占 PCB 空間降到最低。 32 位 Tensilica MCU ESP8266EX 內(nèi)置 Tensilica L10632 位微型控制器 (MCU),具有超低功耗和 16 位 RSIC,時(shí)鐘速度最高可達(dá) 160 MHz。支持實(shí)時(shí)操作系統(tǒng) (RTOS),目前 Wi-Fi 協(xié)議棧只用了 20% 的 MIPS,其他均可用于用戶(hù)編程和開(kāi)發(fā)。 低功耗 ESP8266EX 專(zhuān)為移動(dòng)設(shè)備、可穿戴電子產(chǎn)品和物聯(lián)網(wǎng)應(yīng)用而設(shè)計(jì),通過(guò)多項(xiàng)專(zhuān)有技術(shù)實(shí)現(xiàn)了最低功耗。ESP8266EX 有三種運(yùn)行模式:激活模式、睡眠模式和深度睡眠模式,能夠延長(zhǎng)電池壽命。 性能穩(wěn)定 ESP8266EX 集成了更多的元器件,性能穩(wěn)定,易于制造,工作溫度范圍達(dá)到 -40°C 到 +125°C。 二、小黑板簡(jiǎn)介
 小黑板是安信可基于ESP8266研發(fā)的開(kāi)發(fā)板,板載1顆三色RGBLED,光敏電阻,3.3V LDO電源模塊,以及1個(gè)輕觸按鍵,可在官網(wǎng)查看原理圖,原理圖如下: 各個(gè)引腳的功能如下: 一、 開(kāi)發(fā)步驟
首先明確下目的:通過(guò)手機(jī)APP控制RGB LED的亮滅。進(jìn)一步分析,除了LED的驅(qū)動(dòng),我們還需要輔助,就是如何配置輸入路由器的SSID和密碼問(wèn)題,利用板載的一顆輕觸開(kāi)關(guān)進(jìn)行觸發(fā)和機(jī)智云手機(jī)APP可輕而易舉的實(shí)現(xiàn)smartconfig。 利用機(jī)智云平臺(tái)只需2步,1是底層LED驅(qū)動(dòng)代碼編寫(xiě),2是利用代碼自動(dòng)生成工具生成工程框架,然后填充用戶(hù)指令,比如開(kāi)關(guān)燈。 準(zhǔn)備工作: 第一步:了解機(jī)智云平臺(tái)架構(gòu)(可略過(guò)),戳我。 第二步:了解機(jī)智云Soc方案(可略過(guò)),戳我。 1. 首先在開(kāi)發(fā)者中心創(chuàng)建產(chǎn)品: 2. 建立數(shù)據(jù)點(diǎn)(詳解數(shù)據(jù)點(diǎn)):
數(shù)據(jù)點(diǎn)即設(shè)備產(chǎn)品的功能的抽象,用于描述產(chǎn)品功能及其參數(shù)。創(chuàng)建數(shù)據(jù)點(diǎn)后,設(shè)備與云端通訊的數(shù)據(jù)格式即可確定,設(shè)備、機(jī)智云可以相互識(shí)別設(shè)備與機(jī)智云互聯(lián)互通的數(shù)據(jù)。 例如開(kāi)關(guān)紅燈的數(shù)據(jù)點(diǎn): 2.1 顯示名稱(chēng):自定義功能點(diǎn)名稱(chēng)。 2.2 標(biāo)識(shí)名:用于應(yīng)用層傳輸,客戶(hù)端或業(yè)務(wù)云開(kāi)發(fā)時(shí)需要使用。命名規(guī)則遵循標(biāo)準(zhǔn)的開(kāi)發(fā)語(yǔ)言變量名命名規(guī)范,支持英文字母、數(shù)字和下劃線(xiàn),以英文字母開(kāi)頭。 2.3 讀寫(xiě)類(lèi)型: ① 只讀:表示該數(shù)據(jù)點(diǎn)非控制,數(shù)據(jù)只支持從設(shè)備上報(bào)。 ② 可寫(xiě):表示該數(shù)據(jù)點(diǎn)可控制。設(shè)備端可上報(bào)該數(shù)據(jù)點(diǎn)數(shù)據(jù);云端/客戶(hù)端可對(duì)該數(shù)據(jù)點(diǎn)數(shù)據(jù)做出下發(fā)控制。 ③ 報(bào)警:表示該數(shù)據(jù)點(diǎn)非控制,數(shù)據(jù)只支持從設(shè)備上報(bào),數(shù)據(jù)類(lèi)型需為布爾值。 ④ 故障:表示該數(shù)據(jù)點(diǎn)非控制,數(shù)據(jù)只支持從設(shè)備上報(bào),數(shù)據(jù)類(lèi)型需為布爾值。云端會(huì)對(duì)設(shè)備上報(bào)的該數(shù)據(jù)點(diǎn)做統(tǒng)計(jì),可在“運(yùn)行狀態(tài)”查看。 2.4 數(shù)據(jù)類(lèi)型:
① 布爾值:表示兩個(gè)狀態(tài):0,或1。如開(kāi)關(guān)狀態(tài)等,建議使用布爾數(shù)據(jù)類(lèi)型。例如gokit開(kāi)發(fā)板的“寵物屋”,“開(kāi)啟/關(guān)閉紅色燈”該數(shù)據(jù)點(diǎn)。 ② 枚舉類(lèi)型:可定義一個(gè)有限的取值集合。當(dāng)定義的某個(gè)功能(元器件)有固定的若干個(gè)值。例如GoKit開(kāi)發(fā)板的“寵物屋”,“設(shè)定LED組合顏色”該數(shù)據(jù)點(diǎn)的枚舉定義值:“自定義,黃色,紫色,粉色”。 ③ 數(shù)值:填寫(xiě)數(shù)值范圍,數(shù)值可為負(fù)數(shù)/小數(shù),機(jī)智云自動(dòng)將數(shù)值轉(zhuǎn)換為正數(shù)。例如GoKit開(kāi)發(fā)板的“寵物屋”,“設(shè)定電機(jī)轉(zhuǎn)速”該數(shù)據(jù)點(diǎn):電機(jī)有正反轉(zhuǎn)、調(diào)速功能,數(shù)據(jù)點(diǎn)值可定義為:-5~5。 ④ 擴(kuò)展:填寫(xiě)數(shù)據(jù)長(zhǎng)度,數(shù)據(jù)內(nèi)容由用戶(hù)自定義。對(duì)于上述功能點(diǎn)無(wú)法滿(mǎn)足的復(fù)雜功能可采用。機(jī)智云不建議使用此類(lèi)型數(shù)據(jù),設(shè)備上報(bào)該數(shù)據(jù)點(diǎn)的數(shù)據(jù),機(jī)智云無(wú)法識(shí)別。 1.5 備注:選填,用一段文本描述當(dāng)前數(shù)據(jù)點(diǎn)的功能及定義方法,對(duì)字符格式不做限制。只用于提高數(shù)據(jù)點(diǎn)的易讀性,如果需要團(tuán)隊(duì)協(xié)作開(kāi)發(fā),建議規(guī)范填寫(xiě)。
3. 選擇SOC方案以生成工程: 然后點(diǎn)擊生成按鈕即可生成完畢;
點(diǎn)擊下載即可,下載后把它改名為MiniE_Test,因?yàn)槟莻(gè)名字實(shí)在是太長(zhǎng)了。在開(kāi)發(fā)向?qū)Ю铮泻芏嗍謱?shí)用的工具和教程。 4. 至此云端工作完畢,開(kāi)始MCU端編程,下載生成的工程,目錄如下: 詳情如下: 生成的這個(gè)工程和官方的微信寵物屋源碼框架是相似的,源碼邏輯詳解點(diǎn)我。 下面編寫(xiě)RGB LED驅(qū)動(dòng)頭文件,命名為hal_led.h,并把它放到\MiniE_Test\app\include\driver目錄: 接下來(lái)編寫(xiě)對(duì)應(yīng)的C文件,命名為hal_led.c,并把它放到\MiniE_Test\app\driver目錄: 關(guān)于GPIO功能的定義在這個(gè)文件: 接下來(lái)修改按鍵,這個(gè)按鍵的作用是觸發(fā)小E進(jìn)入聯(lián)網(wǎng)模式,配合手機(jī)APP獲取路由器的SSID和密碼。由于生成的工程包含的按鍵驅(qū)動(dòng)是以機(jī)智云官方Gokit3 SOC版為模板的,我們小E的按鍵連接的管腳和Gokit是不一樣的,因此需要修改。 \MiniE_Test\app\user里的user_main.c文件,包含了整個(gè)框架和按鍵定義,直接在這里修改即可: 如上對(duì)比圖,去掉一個(gè)按鍵,并修改IO編號(hào),然后修改按鍵的初始化和回調(diào)函數(shù): 至此按鍵修改完畢。接下來(lái)在\MiniE_Test\app\user 里的user_main.c文件,即“主函數(shù)”里調(diào)用RGB LED初始化以完成外設(shè)初始化: 首先包含RGB LED驅(qū)動(dòng)路徑: 然后在void ICACHE_FLASH_ATTR user_init(void)函數(shù)調(diào)用RGB LED初始化: User_main.c中還有一個(gè)userTimerFun定時(shí)回調(diào)函數(shù),這里可依據(jù)數(shù)據(jù)點(diǎn)添加信息,例如本例增加了RGB LED故障上報(bào),當(dāng)然填充值為0,因?yàn)閷?shí)際并沒(méi)有去檢測(cè)的LED的好壞,另外的2個(gè)參數(shù)是用于光照檢測(cè)的,本期沒(méi)有添加板載光明敏電阻的驅(qū)動(dòng),這里直接給了一個(gè)固定值,下期將給出相關(guān)教程。
最后一步是在\MiniE_Test\app\Gizwits里的gizwits_product.c文件中添加業(yè)務(wù)邏輯,本例就是MCU收到手機(jī)APP的對(duì)應(yīng)指令后執(zhí)行開(kāi)或關(guān)燈動(dòng)作。首先是包含驅(qū)動(dòng)頭文件: 然后找到如下函數(shù):int8_t ICACHE_FLASH_ATTRgizwitsEventProcess(eventInfo_t *info, uint8_t *data, uint32_t len),在里面如下位置添加對(duì)應(yīng)代碼: 至此代碼編輯全部完成,后顧一下,是不是只是簡(jiǎn)單的編寫(xiě)了底層驅(qū)動(dòng)和填充了用戶(hù)業(yè)務(wù)邏輯代碼,其它和云端交互的代碼完全應(yīng)用代碼自動(dòng)生成工具為我們搭建的框架即可。 二、 編譯和燒錄、測(cè)試
編譯源碼、燒錄教程:點(diǎn)我,總結(jié)下就是使用樂(lè)鑫開(kāi)發(fā)的工具,選擇好固件,然后GPIO0管腳接地進(jìn)入燒錄模式,這里給個(gè)直觀的接線(xiàn)圖: 最后效果:
|