標(biāo)題: 基于物聯(lián)網(wǎng)的ESP8266連接機(jī)智云教程 [打印本頁]
作者: TOLONX 時(shí)間: 2018-3-16 11:13
標(biāo)題: 基于物聯(lián)網(wǎng)的ESP8266連接機(jī)智云教程
前言:本文詳細(xì)介紹了小黑板接入機(jī)智云教程,通過一個(gè)手機(jī)APP遠(yuǎn)程控制LED亮滅的應(yīng)用,完整的體驗(yàn)了機(jī)智云提供的一些列簡(jiǎn)單方便的開發(fā)工具,尤其是代碼自動(dòng)生成工具,懶人福音。
一、 esp8266簡(jiǎn)介ESP8266 是上海樂鑫研發(fā)的高性能無線 SOC,旨在以最低成本提供最大實(shí)用性,為 WiFi 功能嵌入其他系統(tǒng)提供無限可能,被稱為業(yè)界里程碑。通俗的講就是高性能單片機(jī)+無線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 高度集成了天線開關(guān)、射頻 balun、功率放大器、低噪放大器、過濾器和電源管理模塊,僅需很少的**電路,可將所占 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,其他均可用于用戶編程和開發(fā)。
低功耗
ESP8266EX 專為移動(dòng)設(shè)備、可穿戴電子產(chǎn)品和物聯(lián)網(wǎng)應(yīng)用而設(shè)計(jì),通過多項(xiàng)專有技術(shù)實(shí)現(xiàn)了最低功耗。ESP8266EX 有三種運(yùn)行模式:激活模式、睡眠模式和深度睡眠模式,能夠延長電池壽命。
性能穩(wěn)定
ESP8266EX 集成了更多的元器件,性能穩(wěn)定,易于制造,工作溫度范圍達(dá)到 -40°C 到 +125°C。
二、小黑板簡(jiǎn)介

小黑板是安信可基于ESP8266研發(fā)的開發(fā)板,板載1顆三色RGBLED,光敏電阻,3.3V LDO電源模塊,以及1個(gè)輕觸按鍵,可在官網(wǎng)查看原理圖,原理圖如下:
各個(gè)引腳的功能如下:
一、 開發(fā)步驟
首先明確下目的:通過手機(jī)APP控制RGB LED的亮滅。進(jìn)一步分析,除了LED的驅(qū)動(dòng),我們還需要輔助,就是如何配置輸入路由器的SSID和密碼問題,利用板載的一顆輕觸開關(guān)進(jìn)行觸發(fā)和機(jī)智云手機(jī)APP可輕而易舉的實(shí)現(xiàn)smartconfig。
利用機(jī)智云平臺(tái)只需2步,1是底層LED驅(qū)動(dòng)代碼編寫,2是利用代碼自動(dòng)生成工具生成工程框架,然后填充用戶指令,比如開關(guān)燈。
準(zhǔn)備工作:
第一步:了解機(jī)智云平臺(tái)架構(gòu)(可略過),戳我。
第二步:了解機(jī)智云Soc方案(可略過),戳我。
1. 首先在開發(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ù)。
例如開關(guān)紅燈的數(shù)據(jù)點(diǎn):
2.1 顯示名稱:自定義功能點(diǎn)名稱。
2.2 標(biāo)識(shí)名:用于應(yīng)用層傳輸,客戶端或業(yè)務(wù)云開發(fā)時(shí)需要使用。命名規(guī)則遵循標(biāo)準(zhǔn)的開發(fā)語言變量名命名規(guī)范,支持英文字母、數(shù)字和下劃線,以英文字母開頭。
2.3 讀寫類型:
① 只讀:表示該數(shù)據(jù)點(diǎn)非控制,數(shù)據(jù)只支持從設(shè)備上報(bào)。
② 可寫:表示該數(shù)據(jù)點(diǎn)可控制。設(shè)備端可上報(bào)該數(shù)據(jù)點(diǎn)數(shù)據(jù);云端/客戶端可對(duì)該數(shù)據(jù)點(diǎn)數(shù)據(jù)做出下發(fā)控制。
③ 報(bào)警:表示該數(shù)據(jù)點(diǎn)非控制,數(shù)據(jù)只支持從設(shè)備上報(bào),數(shù)據(jù)類型需為布爾值。
④ 故障:表示該數(shù)據(jù)點(diǎn)非控制,數(shù)據(jù)只支持從設(shè)備上報(bào),數(shù)據(jù)類型需為布爾值。云端會(huì)對(duì)設(shè)備上報(bào)的該數(shù)據(jù)點(diǎn)做統(tǒng)計(jì),可在“運(yùn)行狀態(tài)”查看。
2.4 數(shù)據(jù)類型:
① 布爾值:表示兩個(gè)狀態(tài):0,或1。如開關(guān)狀態(tài)等,建議使用布爾數(shù)據(jù)類型。例如gokit開發(fā)板的“寵物屋”,“開啟/關(guān)閉紅色燈”該數(shù)據(jù)點(diǎn)。
② 枚舉類型:可定義一個(gè)有限的取值集合。當(dāng)定義的某個(gè)功能(元器件)有固定的若干個(gè)值。例如GoKit開發(fā)板的“寵物屋”,“設(shè)定LED組合顏色”該數(shù)據(jù)點(diǎn)的枚舉定義值:“自定義,黃色,紫色,粉色”。
③ 數(shù)值:填寫數(shù)值范圍,數(shù)值可為負(fù)數(shù)/小數(shù),機(jī)智云自動(dòng)將數(shù)值轉(zhuǎn)換為正數(shù)。例如GoKit開發(fā)板的“寵物屋”,“設(shè)定電機(jī)轉(zhuǎn)速”該數(shù)據(jù)點(diǎn):電機(jī)有正反轉(zhuǎn)、調(diào)速功能,數(shù)據(jù)點(diǎn)值可定義為:-5~5。
④ 擴(kuò)展:填寫數(shù)據(jù)長度,數(shù)據(jù)內(nèi)容由用戶自定義。對(duì)于上述功能點(diǎn)無法滿足的復(fù)雜功能可采用。機(jī)智云不建議使用此類型數(shù)據(jù),設(shè)備上報(bào)該數(shù)據(jù)點(diǎn)的數(shù)據(jù),機(jī)智云無法識(shí)別。
1.5 備注:選填,用一段文本描述當(dāng)前數(shù)據(jù)點(diǎn)的功能及定義方法,對(duì)字符格式不做限制。只用于提高數(shù)據(jù)點(diǎn)的易讀性,如果需要團(tuán)隊(duì)協(xié)作開發(fā),建議規(guī)范填寫。
3. 選擇SOC方案以生成工程:
然后點(diǎn)擊生成按鈕即可生成完畢;
點(diǎn)擊下載即可,下載后把它改名為MiniE_Test,因?yàn)槟莻(gè)名字實(shí)在是太長了。在開發(fā)向?qū)Ю,有很多十分?shí)用的工具和教程。
4. 至此云端工作完畢,開始MCU端編程,下載生成的工程,目錄如下:
詳情如下:
生成的這個(gè)工程和官方的微信寵物屋源碼框架是相似的,源碼邏輯詳解點(diǎn)我。
下面編寫RGB LED驅(qū)動(dòng)頭文件,命名為hal_led.h,并把它放到\MiniE_Test\app\include\driver目錄:
接下來編寫對(duì)應(yīng)的C文件,命名為hal_led.c,并把它放到\MiniE_Test\app\driver目錄:
關(guān)于GPIO功能的定義在這個(gè)文件:
接下來修改按鍵,這個(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ù):
至此按鍵修改完畢。接下來在\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í)際并沒有去檢測(cè)的LED的好壞,另外的2個(gè)參數(shù)是用于光照檢測(cè)的,本期沒有添加板載光明敏電阻的驅(qū)動(dòng),這里直接給了一個(gè)固定值,下期將給出相關(guān)教程。
最后一步是在\MiniE_Test\app\Gizwits里的gizwits_product.c文件中添加業(yè)務(wù)邏輯,本例就是MCU收到手機(jī)APP的對(duì)應(yīng)指令后執(zhí)行開或關(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)單的編寫了底層驅(qū)動(dòng)和填充了用戶業(yè)務(wù)邏輯代碼,其它和云端交互的代碼完全應(yīng)用代碼自動(dòng)生成工具為我們搭建的框架即可。
二、 編譯和燒錄、測(cè)試
編譯源碼、燒錄教程:點(diǎn)我,總結(jié)下就是使用樂鑫開發(fā)的工具,選擇好固件,然后GPIO0管腳接地進(jìn)入燒錄模式,這里給個(gè)直觀的接線圖:
最后效果:
作者: zuoshen 時(shí)間: 2020-2-25 23:11
多謝分享
作者: jancis 時(shí)間: 2020-3-21 17:38
你好,我想問一下,esp8266模塊怎么連接按鍵才能配置上網(wǎng)?我的如何都搜不到設(shè)備
作者: Y!NG 時(shí)間: 2020-8-6 08:35
這個(gè)按鍵是隨便定義的嗎?airkiss按鍵
作者: Y!NG 時(shí)間: 2020-8-6 08:52
各個(gè)BIN的地址怎么對(duì)應(yīng)?
作者: 初心一久 時(shí)間: 2022-1-9 00:44
手上剛好有同款開發(fā)板,正愁沒有教程學(xué)習(xí),收藏了,明天嘗試一下
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |