????????價(jià)廉物美又好玩的物聯(lián)網(wǎng)模塊ESP8266,十多塊錢的東東卻不容易玩的轉(zhuǎn),在此記錄學(xué)習(xí)過程。
? ??????初識(shí)ESP8266

????????ESP8266是上海樂鑫(ESPRESSIF)生產(chǎn)的WI-FI低功耗芯片,是業(yè)內(nèi)集成度最高的 Wi-Fi 芯片,最小封裝尺寸僅為 5mm x 5mm。提供了一套高度集成的 Wi-Fi SoC 解決方案,其低功耗、緊湊設(shè)計(jì)和高穩(wěn)定性可以滿足用戶的需求。ESP8266集成了天線開關(guān)、射頻 balun、功率放大器、低噪放大器、過濾器和電源管理模塊,僅需很少的外圍電路,可將所占 PCB 空間降到最低。ESP8266EX 專為移動(dòng)設(shè)備、可穿戴電子產(chǎn)品和物聯(lián)網(wǎng)應(yīng)用而設(shè)計(jì),通過多項(xiàng)專有技術(shù)實(shí)現(xiàn)了最低功耗。ESP8266EX 有三種運(yùn)行模式:激活模式、睡眠模式和深度睡眠模式,能夠延長(zhǎng)電池壽命。
????????ESP8266EX 擁有完整的自成體系的 Wi-Fi 網(wǎng)絡(luò)功能,既能夠獨(dú)立應(yīng)用,也可以作為從機(jī)搭載于其他主機(jī) MCU 運(yùn)行。當(dāng) ESP8266EX 獨(dú)立應(yīng)用時(shí),能夠直接從外接 flash 中啟動(dòng)。內(nèi)置的高速緩沖存儲(chǔ)器有利于提高系統(tǒng)性能,并且優(yōu)化存儲(chǔ)系統(tǒng)。此外 ESP8266EX 只需通過 SPI/SDIO 接口或 I2C/UART即可作為 Wi-Fi 適配器,應(yīng)用到基于任何微控制器的設(shè)計(jì)中。ESP8266EX 還集成了增強(qiáng)版的 Tensilica’s L106 鉆石系列 32-bit 內(nèi)核處理器,具有超低功耗和 16 位RSIC,時(shí)鐘速度最高可達(dá) 160 MHz。支持實(shí)時(shí)操作系統(tǒng) (RTOS),目前 Wi-Fi 協(xié)議棧只用了 20% 的 MIPS,其他均可用于用戶編程和開發(fā)。帶片上SRAM,ESP8266EX 可以通過 GPIO 外接傳感器和其他設(shè)備。? ??

????????ESP8266芯片體積小并且是QFN封裝,我等普通愛好者用起來會(huì)比較困級(jí)。不過好在Taobao上有和外圍電路一起封裝好的模塊。還有基于這些模塊的開發(fā)板,板載USB轉(zhuǎn)串口電路,只要用MicroUSB線連接電腦就可以調(diào)試了。建議入手這種,方便好用價(jià)格也不貴。


? ? ? ??本人所了解的幾種主流開發(fā)方式
????????AT指令:模塊通過串口與上位機(jī)連接,上位機(jī)發(fā)出指令,模塊收到指令后做出響應(yīng)??梢杂肞C端的串口助手調(diào)試。當(dāng)然也可以用另一片單片機(jī)做上位機(jī),不過放著模塊集成的32位MCU不用,再用51之類的8位單片機(jī)驅(qū)動(dòng)的話就有點(diǎn)小馬拉大車了。
????????NodeMCU:運(yùn)行于ESP8266模塊上的一種固件,該固件提供一些封裝好的模塊(API),直接調(diào)用就可以了。使用LUA語言編程。
????????Arduino:模塊可以在Arduino環(huán)境下調(diào)試,有基礎(chǔ)的同學(xué)可以使用此方式。本菜鳥沒玩過Arduino,只是按教程簡(jiǎn)單試了一下,發(fā)現(xiàn)編譯下載好慢就放棄掉了。
????????3種方法各有優(yōu)劣,同學(xué)們可以自行選擇最適合自己的方式。至于官方推薦的開發(fā)方式是運(yùn)行在Linux環(huán)境下,本菜鳥直接無視,入門太難了。比來比去,最后還是選擇了NodeMCU,LUA語言和C有很大的相似性,以前玩過C51再玩這個(gè)可能會(huì)有幫助。
????????NodeMCU固件
????????NodeMCU的源代碼發(fā)布在github網(wǎng)站,但是要編譯成可刷入模塊的bin固件,需要在陌生的Linux環(huán)境下,我也沒有找到一個(gè)靠譜的教程,特意裝了個(gè)Linux系統(tǒng)試了試,貌似玩不轉(zhuǎn)。
????????不過有個(gè)好消息:固件可以在線訂制,打開http://nodemcu-build.com/,留下自己的Email,選擇自己需要的模塊和版本。很快會(huì)就收到訂制好的固件了,一個(gè)integer,一個(gè)float。區(qū)別大概是Float支持浮點(diǎn)Integer不支持。
刷入固件用的工具從這里下載https://github.com/nodemcu,按住Flash鍵不放,把模塊接入U(xiǎn)SB,選好COM口和要刷入的固件,速度優(yōu)先選高的,如果刷入失敗,再向下降就行。
固件刷好后,打開串口助手。波特率選115200,試一下第一句程序:print(“Hello NodeMCU!”),模塊正常的話會(huì)顯示Hello NodeMCU!
試試node.restart(),重新啟動(dòng)一下模塊,會(huì)顯示當(dāng)前固件的版本、生成時(shí)間、包含模塊等信息。
為便于理解,我們可以把ESP8266模塊看作一個(gè)可以連接WIFI的單片機(jī)。但是要玩轉(zhuǎn)這片小小的板子,卻沒有想像中那么簡(jiǎn)單。模塊的編程和51單片機(jī)有很大的區(qū)別,
固件刷好后,就可以開心的玩了。開發(fā)軟件個(gè)人建議使用Esplorer,此軟件需要安裝JAVA。試一下第一句程序:print(“Hello NodeMCU!”),模塊正常的話會(huì)顯示Hello NodeMCU!
試試node.restart(),重新啟動(dòng)一下模塊,會(huì)顯示當(dāng)前固件的版本、生成時(shí)間、包含模塊等信息。
最新的NODEMCU固件支持可變波特率,不再局限于9600bps。比如可以在Esplorer里把波特率改為57600。如下圖:
至此開發(fā)環(huán)境搭建完畢,可以試著先把模塊連接到家里的WIFI,參照如下例程,把SSID和密碼改成自己的,運(yùn)行一下就能連接了。