ESP8266指南:角色、功能及应用
http://makerpro.cc/2015/08/esp8266-guideline/
最近ESP8266(其实是芯片编号,但在此指ESP-0112系列的电路板,或是同样用ESP8266的电路板)很夯,相关文章很多,但零星一篇一篇看容易一头霧水,而且多數偏重具體技術實務解說,或很熱情的告訴大家ESP8266又有什麼發展與突破(科技傳教士),較少有基本觀念建立的文章(心理建設),筆者嘗試寫一篇這樣的文章。
ESP8266可以扮演什麼(應用)角色?ESP8266大致可以扮演3種應用角色:
1. 扮演Arduino的功能擴充,成為Arduino的受控者Arduino本身沒有Wi-Fi功能,但ESP8266有Wi-Fi功能,Arduino需要進行Wi-Fi無線收發時,可以透過ESP8266來實現。簡單說,這是把ESP8266當成Arduino的Wi-Fi擴充卡(Shield)來用,差別只是ESP8266可能更便宜而已。
2. 扮演獨立運作的Web Client角色例如將溫度計與ESP8266連接,並預先在ESP8266的執行程式中寫入SSID=xxx,Password=yyy,讓ESP8266以Web Client(其實連上線後用任何Internet協定均可,但最常用是WWW/HTTP)的身份,定時把溫度資料回傳到附近的Wi-Fi路由器上,再透過路由器傳遞到區域網路或Internet上的某個網站(Web Server),以便定時統整記錄溫度資料。
3. 扮演獨立運作的Web Server角色這角色是扮演成Web Server,而讓Web Client來連線取得服務,這種應用方式最少,畢竟ESP8266硬體規格、效能太過薄弱,但網路上確實有一點這類的想法與討論。
整體而言多數人採第二種應用,例如用ESP8266連接一個電源插座,然後透過Web瀏覽器遙控插座的開或關,也有人用來定期記錄土壤濕度等。
怎樣開發ESP8266的執行程式?若本來已經使用過Arduino的人,最簡單的開發方式就是用Arduino IDE開發軟體來開發ESP8266的執行程式,很多語法已經可相容使用,如pinMode、digitalRead、digitalWrite等。
如果不用Arduino也可以用C語言(嚴格而論Arduino用的程式語言,其學名為Processing,但其實90%與C、C++語言相仿),因為ESP8266的SDK(軟體開發套件)源頭就來自GCC編譯器,C語言可以提供更接近硬體層的低階控制。另外也可以用Python語言開發,但是是微型的Micro Python。
怎樣把開發的執行程式放入ESP8266內?程式開發完後怎樣放入ESP8266內,以便讓ESP8266一直執行該程式呢?此分成有Arduino電路板或沒有Arduino電路板。
如果有,可以在Arduino IDE內選擇讓Arduino電路板充當燒錄器,對ESP8266進行燒錄。如果沒有,就必須去購買一條「USB轉TTL」的轉接器,將轉接器一端連接PC的USB埠,另一端(先確認電壓已從5V降至3.3V,否則過高的電壓會傷害ESP8266)接至ESP8266,而後在PC端用串列埠通訊軟體,如putty、Realterm、 sscom32等,而後以下指令的方式,將程式從PC端燒錄到ESP8266上。
除了燒錄執行程式外,其實也可以燒錄、更新ESP8266上的韌體程式,但使用機會比燒錄執行程式低一點。
ESP8266有哪些(硬體)功效?除了Wi-Fi通訊能力外,有的ESP8266有提供1個10-bit的ADC輸入(實際接腳與TOUT共用),如此可方便ESP8266與各種感測器連接,不過有的沒有提供,必須注意。
另外ESP8266有PWM輸出功能,腳位為GPIO12、GPIO13、GPIO15,但還要看電路板本身是否有實現。(註:2015年8月21日釋出的1.1版ESP8266 RTOS SDK可以支援PWM、C++程式語言。)
此外ESP8266的Datasheet上有提及ESP8266有即時鐘(Real-Time Clock, RTC)功能,但多數ESP8266電路板沒有實現這項功能。如果真的有取得真實世界的日期、時間等資訊需求,建議在Wi-Fi連線後,用Internet上的NTP(Network Time Protocol)協定來取得會比較合適。
整體而言ESP8266的一般性輸出入(General Purpose Input/Output, GPIO)功能相當薄弱,畢竟是以Wi-Fi通訊為主要功能,表面上有編號1-16的GPIO接腳,但實際真的顯露的接腳相當少,象徵性提供2、3個腳位,因此不要對ESP8266有過度期望,畢竟只是57美元的小玩意兒。
另外,ESP8266雖可支援SDIO、SPI、I2C等多種介面,但其實同時間只能使用一種介面,且為了串接外部的快閃記憶體(韌體與執行程式都存在這個記憶體內),已經不可能轉換成SDIO、I2C等其他介面,此同樣在提醒大家勿過度期望ESP8266的外接接腳功能,應將多數需求寄望在Wi-Fi通訊上。
開發建議途徑簡單來說,對電子線路較無把握、只學過簡單Arduino應用開發者,筆者建議用Arduino來開發ESP8266應用,也透過Arduino將程式燒錄到ESP8266內,比較簡單,一片Arduino電路板約數百元台幣。
而對電子線路較把握者,或期望用Arduino IDE/Processing以外的程式語言開發者,可以只花數十元台幣買一條USB轉TTL線路,透過串列埠通訊程式來燒錄。軟硬體底子較足的人才建議此法。
谢谢大老板分享。
谢谢大牛的分享,正学习中!感谢分享!
讲的有点啰嗦,讲AT和IOT功能就行