目前分類:ESP模組應用 (27)

瀏覽方式: 標題列表 簡短摘要

2017.03.24 星期五

      許多文章都會提到ESP8266 對外部電源的要求是出名的嚴格(耗電),外部電源不稳定可能會造成ESP模組莫名其妙的Reset,因此我們要去思考要如何考慮一個問題,我們要使用什麼稳壓電路或稳壓IC才能提供足夠電壓、電流供電給ESP模組,另外除了ESP本身模組外我們的專案可能還有其他的傳感器也需要外部電源,例如我們設計一個IoT(物聯網)的專案時,你的偵側節點地理位置可能是置放在戶外,你要確保該裝置能持續的工作。因此我的IoT節點外部電源能夠維持多久,大約的功率消耗是多少?要使用什麼電池種類當做電源,多久要回收更換電池或再充電,需要設計太陽能自足充/供電嗎?這些問題將會使得電源設計變成了一個很大的研究問題。

   就目前針對大部份的專案需求,通常至少需要二種電壓5V和3.3V,許多幑控制器或開發版需要5V例如像Arduino Uno、Raspberry,而有些傳感器卻是需要3.3V的工作電壓。另外則是工作電流的問題要提供多少的電源才足夠。我們的原則仍是使用最便宜但技術可行的解決方案去解決這個問題。

 ESP8266模組使用者手册中有提到的一個ESP8266的耗電量平常是100mA,最多是200mA。電流消耗可能依工作型態不同而不同,例如在持續傳送資料時可能消耗電流從平圴值0-70mA,甚至於到200mA。

工作模式

平均值

峰值

持續傳送下

~70mA

200mA

正常型態下

~12mA

200mA

待機

<200uA

 

資料來源:ESP8266 WiFi 模組用戶手册 V1.0 [1]

  Espressif針對ESP8266模組的電源消耗作了一個統計,發現當ESP8266作Wi-Fi網路傳輸時會消耗比較多的電力。這個表格顯示當ESP8266模組使用802.11b 11Mbps資料傳輸時要消耗170mA的電力,而在Sleep模式消耗值大約在10mA~15mA,因此ES8266模組作資料傳輸時會比較耗電,如在執行程式或利用傳感器收集I/O資料會如上表所示平均值在~12mA之間。

  是故,在設計專案時ESP8266模組專案時當系統處於無工作或閒置時應該設計讓晶片進入Sleep狀態,以節省電源。其實從微處理器工作負載量的角度而言,晶片90%的時間都是閒置的,因此當無工作或任務時ESP晶片應該要進入休眠模式以可以節省較多的電力。至於如何實作下次再寫一篇敍述或可參考這篇Espressif的技術文件-ESP8266 Low Power Solutions

esp current.png
資料來源: Espressif - ESP8266 Power Consumption


問題(1):使用Arduino Uno版的3.3V輸出電源是否可以當做ESP8266的外部電源?

    根據Arduino Uno的官方技術規格書中寫到3.3V的輸出電源只能提供50mA 的電流(DC Current for 3.3V Pin 50 mA),但是ESP8266的平常耗電量可能要0~100mA,因此感覺上這種的供電方式似乎是不太足夠的。但是有作者做過測試,利用這種方式跑測試資料,開Client模式傳資料時,整個板(USB電壓電流檢測器)最多寫吃100mA,沒出什麼問題,但是作者提到在作程式實作時會影響耗電,特別是在燒錄程式時,板子就會變得不穩定[2]。因此如我們從Arduino供電給ESP8266運作的技術文件上來看,實際上是不太足夠的,特別時在開發階段要燒錄資料或修改程式都會有問題,甚至於在執行階段要做資料傳輸工作電流有時是足夠、有時是不夠的,因此所以最好的方式還是要另接外部電源。否則在需要高電流的需求情況下,有可能燒毀Arduino Uno開發版。

 

 問題(2): 許多USB to Serial 晶片(例如PL-2303HX晶片)會產出3.3V的DC,ESP8266模組是否可以使用這個3.3V的電壓 ?

    許多教學網站皆會使用到USB to Serial 晶片(例如PL-2303HX晶片),該晶片會提供3.3V的直流電壓,有些網站會直接利用這個輸出接到ESP8266模組,並没有外接3.3V的電源,這是可行的嗎 ? 其實答案跟上面一樣,有些會成功,有時會有問題,為什麼? 因為這要看你給予ESP8266模組什麼樣的工作或任務,如僅使用在教學或技術展示使用,個人覺得或許可行,但在產品開發或專案執行可能是不恰當的。因為從FT2303 IC
內的技術規格書中提到在巾部線部內有個5 to 3.3V 的稳壓電路,3.3V的輸出電壓為3.0V~3.6V,平均輸出電壓是3.3V,但在輸出電流部份只有描述到5V輸出端最大電流為150mA,但没寫到3.3V輸出端的最大輸出電流是多少。那我們假設這晶片將可輸出最大輸出電流為150mA。因此我們可以結論如使用PL-2302晶片供電給ESP8266模組有些作業是可以,但有些作業可能會不稳定。

 

問題(3): USB to Serial 晶片的TX接脚是否可以直接連接到ESP8266模組的RX接脚 ?

    根據FT2303 IC 內的技術規格書中的通訊接脚TX輸出是3.3V ,因此此脚直接連接到直接連接到ESP8266模組的RX接脚是没有問題的。但是如我們是使用Arduino來傳資料,將Arduino的TX(傳送資料)接脚直接連接到ESP8266的RX(接收資料)接脚,但Arduino 的TX接脚輸出壓為5V,但ESP8266的RX接脚為3.3V的輸入電壓,所以如用上圖的而Arduino TX0接ESP8266 RX可能會有燒毀ESP8266的可能性,因此建議使用二個電阻(1K及2K或10K及 20K)分壓,使5.5V的輸出電壓變成3.3V的電壓。而Arduino RX與ESP8266 TX不需要分壓電路,因為當TX為High電位(3.3V)時, Arduino的RX能偵測到這是高電位,所以不需要分壓電路 (更多資訊請參考ESP8266硬體連接這篇文章)。

問題(4): 什麼是較好的電源供應方式 ?

   就目前針對大部份的專案需求,通常至少需要二種直流電壓5V3.3V,許多幑控制器或開發版需要5V例如像Arduino UnoRaspberry,而有些傳感器卻是需要3.3V的工作電壓。因此我們最好設計一個能同時提供雙電源的電路,也就是一個輸入源而輸出二個輸出源的供電方式,參考下面方式:

AMS1117雙電源.jpg 
資料來源:於電源穩壓 IC      

問題(4): 什麼是較好的電源供應來源 ?

    就目前市面上的電源供應來源,大部份仍是使用電池為主,下表可參考各電池種類的工作電壓及容量,各種電池有不同的工作特性及優缺點,列出各種種類電池的用意在比較電容量,那一種較電池技術較適合你的專案計劃。有些電池可再充電重覆使用,有些電池需要經過穏壓電路後才可供電ESP8266模組。

電池種類

電壓

容量

數量

穏壓否

可充電否

鹼性電池

1.5V(AAA)

1100-1300mAh

2~3

1.5V(AA)

1300-3500mAh

2~3

9V(方形)

200mAh

1

鎳鎘電池

1.2V(AAA)

200-320mAh

3

1.2V(AA)

600-1000mAh

3

鎳氫電池

1.2V(AAA)

800-1000mAh

3

1.2V(AA)

2000-2300mAh

3

18650鋰聚電池

3.7V

2000-2650mAh

1

磷酸鐵鋰電池

3.2V(AAA)

700mAh

1

3.2V(18650)

1100-1800mAh

1

鉛酸電池

2.2V

3-50Ah

3

資料來源:#64 What is the Ideal Battery Technology to Power 3.3V Devices like the ESP8266?

 

有數個提供5V或3.3V穩壓IC的方案可供選擇,使用者應該考慮全部5V和3.3V的負載需求選擇適當的穩壓IC,輸出電流愈高,價錢當然就愈貴,要自行評估選擇。

  1. AMS1117 為可調整或固定輸出電壓3.3V的穩壓IC,輸入電壓範圍從4.8V~ 15V,可提供800mA的輸出電流。
  2. LD1117輸入電壓範圍從4.75V ~ 15V,可提供800mA的輸出電流。
  3. LMS7833輸入電壓範圍從3.3V ~ 18V,可提供1A的輸出電流,如整個專案需要3.3V負載很多,可以考慮使用這個輸出電流較大的IC。
  4. HT7833輸入電壓範圍從1.8V ~ 8V,可提供500mA的輸出電流。
  5. MIC5219輸入電壓範圍從2.5V ~ 12V,可提供500mA的輸出電流,雖然輸出電流没有前面大,但已經足夠應付ESP8266模組的最高需求電流200mA。
  6. LM317輸入電壓範圍從3V~40V直流電壓,輸出可提供1.5A的輸出電流。

    以上這些穩壓IC有些是調整或固定輸出電壓,其實最重要的是穩壓IC的輸入耐壓範,這些大概都可耐壓12V以下的電壓,所以不管是 9V 方形電池, 還是 12V 23A 的 L1208 鹼性電池,或者12V鉛酸電池都可以作為其輸入來源。在露天都可找到 3.3V 與 5V 這兩種晶片,而且價格也很親民。為了增加電源穩定度通常都會在穩壓IC加上電容,這些要考就需要參考規格書才可以了,但我看很多教學網站直接也能成功,但端看你的使用目的而定了,教學實驗用或是專案產品設計用,重要的是使用這些穩壓IC就可以滿足你雙電源的需求了,不要因為電源的問題造成電話不稳定,有時做不出來花費很多時間和金錢但卻找不到原因。

 

回ESP8266文件主目錄

 

參考資料

  1. ESP8266 WiFi 模組用戶手册 V1.0
  2. 便宜大碗的WiFi 晶片 ESP8266入手 Arduino對接
文章標籤

stanley 發表在 痞客邦 留言(2) 人氣()

ESP8266 是一個由大陸上海樂鑫信息(Espressif Systems)公司所生產的wifi低價格晶片,該晶片內建TCP/IP協定堆疊的通訊架構和擁有微控制器(MCU-Micro Controller Unit)的處理能力,ESP8266 有分成一大堆 ESP01 ~ ESP12E/F,這些不同型號是由 ai-thinker 製造的,依照用途不同型號有不同的規格,因此在使用上使用者依你的應用程式或專案需求選擇不同的型號。編號愈小晶片功能會較差例如記憶體容量較少,可容納的韌體容量會比較小或者使用不同天線形式或晶片大小會有所不同,使用上會比較麻煩,但價格相對會比較便宜,但每個型號的價格差異不太,因此個人建議剛入門的使用者從ESP12E或ESP12F開始玩起,可以少走一些比較複雜之路,(ESP-12E 和 ESP-12F 外觀的最大差異為ESP-12F為ESP-12E加強版,天線全新改版射頻性能優化。) 當你能夠有成功的駕馭該晶片後,再依自己的專案需求選擇不同的晶片。所有型號差異可參考下面表格,或至ES8266 community 查詢比較。另外該公司最近也會發表一些新的ESP8266晶片,使用者可以自己評估該晶片功能再選購。

ESP8285 是一個ESP8266 模組新增內建1 MB 的flash ROM

ESP32是較新的模組,它的最主要特點是新增內建藍芽功能。  

下面網址有列出所有ESP8266晶片家族的列表

ESP8266 From Wikipedia https://en.wikipedia.org/wiki/ESP8266
 

  如果你還看不懂的話,就依我的建議到網站選購ESP12X系列晶片,不一樣的型號還有不同的 flash size, 要特別注意 flash size,因為Flash是用來存放韌體及你的程式,它們會影響韌體可以更新的版本,所以較新版的晶片flash size 會比較大!大小由 512KBytes 到最大 16 MBytes,像最早的ESP-01(藍色板) 僅有標準的4Mb (512KB) of FLASH。現在 (黑色板) 都是 1MBytes 的 Flash 設置;ESP-12F 就使用 4MByte 的 Flash ... 等(要小心注意b和B的不同,b是指bits,而B是指bytes)。當選購完晶片後再依照我的網站教學,一個步驟一個步驟的實作。如此你將可以完全的掌控及享受ESP8266無線自動控制之路。

 

回ESP8266文件主目錄

 

文章標籤

stanley 發表在 痞客邦 留言(0) 人氣()

ESP8266 是一個wifiSOC (system on a chip)的晶片,Soc就是一個將電腦或其他電子系統集成到單一晶片的積體電路,並且ES8266本身也可稱為一個Microcontroller(微控制器)又可簡稱MCU,也有人稱為單晶片微控制器(Single Chip Microcontroller),MCUROMRAMCPUI/O集合在同一個晶片中,為不同的應用場合做不同組合控制.微控制器在藉由這幾年不斷地研究,目前MCU發展歷經4位元、8位元、到現在的16位元及32位元甚至64位元。

典型的系統單晶片(MCU)通常具有以下部分:

  1. CPU:至少一個微控制器或微處理器、數位訊號處理器,但是也可以有多個中央控制核心。CPU的運作完全由儲存於記憶體內、依照指令順序執行的程式而決定。CPU只是以預先定義的順序讀取並執行這些指令。
  2. Memory記憶體則可以是唯讀記憶體、隨機存取存儲器、EEPROM和快閃記憶體中的一種或多種,MCU的記憶體用於儲存程式碼與資料,記憶體主要有兩種類型:ROMRAM
    (2.1)ROM唯讀記憶體):即使關閉電源,此記憶體仍會保留內容。ROM通常用於儲存啟動程式(開啟電源或重設後立即執行)以及儲存可透過執行程式自由存取的常數。許多MCU皆使用快閃記憶體(flash)取代ROM。快閃記憶體與ROM一樣皆可在關閉電源時保留內容,但與ROM不同的是快閃記憶體中保留的內容可被覆寫。

    (2.2)RAM(隨機存取記憶體): 此記憶體可任意重新寫入,但缺點在於電源關閉時,內容便會遺失。RAM主要用於儲存程式變數。許多單晶片MCU使用靜態RAMSRAM)作  為內 建RAMSRAM具備兩大優點:支援更快的存取速度、不需定期更新整理。缺點則是內部電路系統複雜,無法在晶片有限空間內容納大量內容。SRAM不適合用於實作大容量記憶體。SRAM的替代品稱為DRAM(動態RAM)。DRAM由於結構簡單,可在小型空間內提供大容納量。標準的DRAM尺寸會比標準SRAM尺寸略大,但於單一晶圓上要整合DRAM與高速邏輯相當不易,也因此單晶片MCU中通常不會使用DRAMDRAM通常與晶片連接,作為周邊連接裝置的電路系統。

  1. 不同標準的連線介面: 如通用串行匯流排、火線、乙太網、通用異步收發和序列周邊介面等微控制器內含Serial I/O是為了提供對外部週邊Device的通訊管道,各家種類不同,常見的有以下幾種:

UART(Universal Asynchronous Receiver Transmitter):Intel,Atmel;通用非同步收發傳輸器是一種異步收發傳輸器,是電腦硬體的一部分,將資料由串行通信與並行通信間作傳輸轉換。UART通常用在與其他通訊介面(如EIA RS-232)的連結上。

USART(Universal Synchronous/Asynchronous Receiver Transmitter ):Siemens;

SPI(Serial Peripheral Interface):Motorola;序列周邊介面,是一種用於短程通訊的同步串行通訊介面規範,主要應用於單晶片系統中。類似I²C。 這種介面首先被Motorola(摩托羅拉)公司開發,然後發展成了一種行業規範。典型應用包含SD卡和液晶顯示器。 SPI裝置之間使用全雙工模式通訊,包含一個主機和一個或多個從機。

SCI(Serial Communications Interface):這是UART的加強版;

◆I2C bus(lnter Integrated Circuit bus): 積體電路匯流排字面上的意思是積體電路之間,它其實是內部整合電路的稱呼,由飛利浦公司在 1980 年代為了讓主機板、嵌入式系統或手機用以連接低速週邊裝置而發展。是一種串列通訊匯流排,使用多主從架構,I²C 的正確讀法為 "I-squared-C" ,而 "I-two-C" 則是另一種錯誤但被廣泛使用的讀法

Microwire/Plus:National Semiconductor;

 

目前以Arduino、Raspberry Pi開發板而言就有這些介面。以Arduino而言,最原初的Arduino就有UART,而演化不久後也加添了I2C,現在無論Arduino家族開發板如何演化,多會具備UART與I2C。

圖1 Arduino上的UART、SPI、I2C介面接腳位置(綠框)。 

資料來源: 【Maker進階】認識UART、I2C、SPI三介面特性

Pi2 Pinout
資料來源: Raspberry Pi and Pi2, Pi3 接腳圖 (Pinout)

  ESP晶片的MCU的連線介面至少有提供UARTSPII2CGPIO。而我們在連線介面使用較簡單的UART方式,即是使用非同步的的傳送及接收方式,但因為是利用資料序列的傳送方式,所以MCU與周邊裝置須要經過一個Serial轉換器USB-to-TTL adapter (有時稱為USB-to-UART bridge),最常使用的轉換模組為FT232 模組或PL2303模組或是CH340FT232RLCP2102。另外有時會聽到一個名詞FTDI,其實FTDI USB-to-TTL (or serial) 轉換器的另一個專業用語。

 

 

回ESP8266文件主目錄

 

文章標籤

stanley 發表在 痞客邦 留言(0) 人氣()

2017320 星期一

    一個大哉問,ESP8266能做什麼? 不知位讀者是否有思考一問題,我們花費這麼時間,金錢,人力,物力去學習ESP8266的相關技術,那ESP826晶片在我的專案或應用程式中扮演什麼角色,角色確定了在設計整個專案時我們才可能檢視它是否有按照我們的設計理念去完成工作。其實這才是讀者要去思考的問題,如你不能了解ESP8266可以做的事情,你必須花費更多的時間去尋找更多學習的更多的技術,花費更多的金錢去建構你的專案。如此你的專案在功能在技術上是可行的,但在商業模式考量下是毫無競爭力可言的。

ESP8266 Mode.png

註:單一節點的元件內容可能是不同的,可能一個簡單地的ESP模組,或ESP模組+傳感器或是Arduino+ESP8266+傳感器,要依你的專案特性決定。

               ESP8266 三種應用模式

   下面文章可以幫助你思考你可以如何應用ES8266ESP8266是目前市場上較便宜的晶片,如可以使用ESP8266在你的專案設計,將可以降低你整個專案的開發成本。根據Wfi 無線網路的使用方式可分為AP模式及STA模式,且根據ESP8266的規格書說明,ESP支援STA/AP/STA+AP 三種模式,那這三種模式是什麼意思?目前ESP8266大致可以扮演3種應用角色:

  1. AP (Access Point-又叫SoftAP,HostAP)模式: ESP8266當作被動方或Server端,當作網站連線時的接受者。 AP 模式是最常見也是應用最廣泛的運作模式。它可將無線訊號轉換為數據封包,讓智慧型手機、平板電腦…等行動裝置,透過實體線路上網。而這種運作方式在自動控制或物聯網領域中扮演Arduino的功能擴充的角色,正如眾所皆知,Arduino本身並沒有Wi-Fi功能,但ESP8266Wi-Fi功能,所以我們在Arduino的專案中需要進行Wi-Fi無線收發時,要透過ESP8266來實現。使Arduino可以連上網路進而傳輸資料至後端或雲端。簡單說,這是把ESP8266當成Arduino的一個Wi-Fi擴充卡(Shield)來用,如此Arduino+ESP8266就可透過Wifi和外界無線傳輸資料至後端設備。所以當ESP8266設定在AP模式時,我們必須知道並且設定你的SSID password如此我們即可建立連線和無線傳輸資料。例如我們可將溫溼度傳感器與ESP8266連接建立一個偵測的節點,而在設計節點時預先在ESP8266的執行程式中寫入SSID=xxxPassword=yyy,讓ESP8266以Server的角色,定時把遠端的溫溼度資料回傳ESP8266上,再透過路由器傳遞到區域網路上的某個網站(Web Server)或雲端,以便定時統整記錄溫溼度資料。這方面的技術,例如安裝方式、指令、程式可在很多Arduino的相關書籍中找到。
    例如參考下面的網址
    #使用ESP8266 wifi模組+DHT 溫溼度感測器上傳thingspeak
    簡單說AP mode 是為了讓ESP8266當做Server,讓其他設備連線至ESP8266。你可以使用這模式將ESP8266去建立自己的私人網路。
  1. STA(Station) 模式: STA模式在Wifi無線路中扮演獨立運作的Client角色,當作網站連線時的發動者,將ESP8266連線到現有網路。例如在實例應用中我們可以把ESP8266獨立運作當做client端連線至後端的Server。簡單說Station mode (工作站模式)是為了讓ESP8266 連線至附近的路由器,這是預設的模式
    例如參考下面的網址    

    # ESP8266 Web Server Tutorial
    # How To Use the ESP8266 and Arduino as a Webserver

  1. STA+AP模式:AP_STA模式可扮演獨立運作的Client+Server的混合角色,當ESP8266當作Server,即可開放線讓 Client來連線取得服務,這種應用方式最少,原因是ESP8266硬體規格、效能擔任此角色會比較吃力,在ESP8266的規格書中有提到,最多僅能有5TCP連線,但不表示這類的應用不存在,實際上在網路上也有人實作類似的專案。例如用ESP8266連接一個電源插座,然後透過Web瀏覽器遙控插座的開或關,這是當做Server的角色,但有時我們也會希望這個裝置傳送Client的訊息給Server傳。這種也可想成是P2P的運作模式。 
    ESP-8266 Smart Dishwasher (smart Plug / Smart Socket) 

   知道了這些模式的差異,相信讀者可以明白ESP8266可做的事情,也可思考出什麼專案應用要設定成什麼運作模式,因為ESP8266運算能力可能會有所限制,但有些專案可能不需要很強的運算能力但需要傳輸能力,或者有些專案需要有個存取點,偵測點等等,了解這些有幫助讀者思考ESP8266的應用方向。

回ESP8266文件主目錄

  

文章標籤

stanley 發表在 痞客邦 留言(0) 人氣()

首先我們必先談ESP8266晶片的電氣特性及工作模式。ESP8266的工作電壓在2.8 ~3.5伏特,工作電流大約300mA~500 mA, 所以可以使用二顆或二顆以上AA型式的電池供電或者使用一個5V的外部電源連接一個3.3伏特的稳壓IC (AMS1117,它可接受輸入4.6V to 15V的工作電壓並且提供3.3V的輸出電壓及1A的輸出電流)去提供ESP8266電源

ESP8266晶片對電源的穏定供應要求較高,不好或不稳定的電源供應會引起ESP8266模組不預期的重置進而造成程式除錯的困難度。ESP8266 工作模式有兩種的模式狀態,該晶片是利用IC接腳的不同電位去操作工作模式。


一種為燒錄模式:

  1. CH_PD = HIGH (3.3V) 啟動ESP8266晶片
  2. GPI0 = Low啟動ESP8266燒錄軟體模式, 在ESP8266 內的boot ROM 接管並且開始透過UART開始通訊,使用boot ROM 我們能夠載入程式到 flash 記憶體內。簡單地說ESP8266模組開始可以透過串列傳輸的方式傳輸資料,將別人寫好的韌體或你撰寫的程式燒寫並儲存到ESP8266 的記憶體內。更簡單的說:這個步驟在安裝作業系統,將作業系統程式傳輸到硬碟。

另一種為正常操作模式:

  1. GPIO0=HIGH (3.3V),在ESP8266 內的啟動程式將從ESP8266的記憶體的軟體開始載入到ESP8266的IRAM內並且從頭開始執行使用者的程式。簡單的說:這個步驟在電腦開機,電腦開機後開始作業系統並且執行使用者的程式。

VCC : HIGH (3.3V) 電源供應

GPIO0:可當作一般性的數位控制接脚,但它兼做模式操控。

GPIO2:可當作一般性的數位控制接脚,但它兼做模式操控。但 GPIO2 也可以不使用,所以我們把它接High電位。

CH_PD:晶片啟動接脚。正常操作模式保持在High (3.3V)。

RST: Reset:晶片重置接脚。正常操作模式保持在High (3.3V),Low電位將整個重置晶片。

Tx: 傳送資料。

Rx: 接受資料。(需要電壓調整)

GND:Low(接地)。

 在了解ESP8266 的電氣特性和工作模式後,我們對ESP8266晶片的使用會有更進一步的了解,也就會明白你在其他網站上看到的電路圖或接線圖是如何連接的。

 

回ESP8266文件主目錄

文章標籤

stanley 發表在 痞客邦 留言(0) 人氣()

ESP8266是可程式化的通用微控制器(具有WiFi功能),具有少數的 GPIOESP模組要能順利動作需要軟體及硬體相互配合宜,而且使用者如能了解目前ESP模組的發展趨勢及開發環境才能了解網路上的文章在寫什麼,而你也能了解搜尋到的技術或文章是否能為你所用,作者就因為發現目前ESP模組正在火熱發展各種開發平台及方式正在不斷的出現及發展,每個廠商或技術擁抱者在網路發表自己的使用心得,但正因為技術掘起但開發方式正處於兵荒馬亂時代,有各種不同的開發方式且網路文章及技術分類很混亂,本人才會才會整理出這篇文章,意旨在幫忙自己溫故自新另一方面也可幫助讀者了解目前的最新使用方式。

ESP模組要能使用,首先要確定模組已有燒錄韌體在裡面,否則你下的指令是無法被ESP模組所接受,ESP模組從拍賣網站上買到手的時候,或許裡面已經有燒好最新版本的韌體,第一步模組內有燒錄韌體,ESP模組即可支援 AT command。而我們就能利用AT command 來操控ESP模組動作,當ESP模組即可支援 AT command即表示我們的硬體連接及軟體指令已没問題,如此我們可以開始使用複雜的軟體去建構開發環境進而開發複雜的ESP應用程式。正因為硬體有數種的連接方式而軟體也有數種的開發方式,所以讀者在網路上搜尋出技術文章時往往不知作者在什麼且為什麼要寫這些。目前網路上較舊的技術文章即在指導如何更新韌體,但没有說明為何需要更新韌體及更新韌體完後要做什麼事情,而較新的技術文章就會說明如何使用開發平台及使用何種語言去撰寫ESP專案的應用程式。

因此目前市場上的韌體新方式大概可分為以下幾種:

(1)AT 指令 : 透過串列傳輸, 直接下達 AT 指令進行操作. 比較常見的像是以 Arduino 為主要核心, 透過 Rx Tx ESP8266連接,進而擴展無線上網能力,使用這種方式需要使用Arduino USB線與電腦連接。在程式當中,我可以透過 Serial Serial1分別與電腦和 ESP8266通訊,並且AT指令去操控ESP8266。我們在電腦端發送 AT」指令給Arduino,而Arduino再與 ESP8266通訊,相對地 ESP8266 收到指令後,會執行指令而指令執行成功後會傳送回覆訊息給Arduino,最後再回到電腦端。用這種開發方式是開發者首先需要安裝或更新韌體程式,且必須了解控制ESP8266AT指令且撰寫的通訊程式碼會比較複雜。這種的方式大部份僅在測試ESP8266的通訊功能或硬體操控功能。

(2)使用 NodeMCU ESP8266 韌體平台 : NodeMCU是一個充許你使用 LUA 語言去控制ESP8266的開發韌體, 其實你會發現它的開發方式很類似於Arduino的作業方式,但它必須用 LuaLoaderESPlorer程式把程式燒寫到 ESP8266 的記憶體中,它的好處是你只要使用少許的程式碼即可建立Wifi連線、控制ESP8266GPIO,轉變你的ESP8266變成一個Http server¸Web Service 等等專案。但缺點是你必須再學習一種新的程式語言 .目前目前普遍的IoT架構,就是利用ESP8266 再運用常見的protocol –MQTT來傳遞訊息資料,以完成完成物聯網應用開發。

(3)MicroPython開發平台: MicroPython是由來自英國劍橋的理論物理學家Damien George 博士建立的kickstarter專案所發展出的MCU控制器。它可支援 ESP8266 晶片和其它任何的開發板。MicroPython是開源硬體,使用如其名的Python 語言來做開發。有別於Arduino使用的類C/C++語言開發, Python 相較於 C/C++ 屬於高階語言,語法上相對比C/C++ 友善直觀容易閱讀。Python程式誩言的優點是它包含了一組功能完備的標準庫,能夠輕鬆完成很多常見的任務。並且它的語法簡單,與其它大多數程式設計語言使用大括弧不一樣,它使用縮排來定義語句塊。Python的設計哲學是「優雅」、「明確」、「簡單」。Python開發者的哲學是「用一種方法,最好是只有一種方法來做一件事」,也因此它和擁有明顯個人風格的其他語言很不一樣。另外Python是一種直譯式語言,你可以直接就在命令列上就開始下達程式指令而不用經過編譯的程序。但不知道是什麼原因MicroPython這塊開發板在國內似乎不是很流行,相關網頁也很少。官方網頁如下http://micropython.org/

(4)使用官方原生的 ESP8266-RTOS-SDK:上海樂鑫提供兩種的SDK - NonOS and RTOS(, RTOS透過 C/C++ 直接撰寫程式碼,呼叫SDK提供的API。這個難度最高級,但優點是它可以提供多工及多時序的工作方式。而缺點是這種作業方式比較適合在Linux的作業平台,它需要重新利用像gcccompiler重新編輯Native SDK, 所以在Window 作業平台需要再外加gcc 的編輯程式,比較繁瑣。而Non-OS的開發方式類似於下面Arduino IDE作業方式。

(5)Arduino IDE : 使用Arduino軟體的IDE界面去寫ESP8266程式是最簡單的方式,最主要是要把ESP8266 SDK 匯入至Arduino 軟體內,所以我們就可以利用Arduino軟體的IDE界面去撰寫程式、再編輯程式成Bin檔,再匯入ESP8266 的記憶體內。如此我們便可利用Arduino的語法及程式架構去控制ESP8266晶片,進而達到我們專案所需要的功能。將原生的 Non-SDK 重新改寫並支援 Arduino IDE 環境, 就像在寫 Arduino 一樣,一樣的IDE界面可以讓原本就會撰寫 Arduino 的人很快地移轉到 ESP8266的開發環境。

下面三種是WEB 開發平台

(6)WF8266R.js:這是台灣自主研發設計的 WEB 開發平台,使用 ESP12F做為 MCU 並設計多樣的開發板以滿足不同需求的環境,並為物聯網開發者搭建了一整合方案。WF8266R.js目標是建構完整的 WoT(Web of Things)方案也就是IoT + Web-enabled 技術。其目地是為降低前端設計師(設計類,軟體類)對於硬體和網路通訊的門檻, 研發了WF8266R 開發板以及WF8266R 物聯雲 APP和相同豐富的Web DevKit,混合運用這些 API 讓設計師們快速建立自已的物聯網應用。因此初學者或設計師,不需要很強的程式和硬體背景就能完成一些互動性作品。有興趣讀者可參考http://code.unumobile.com/wf8266r/

(7)愛爾蘭Cesanta Smart.js:這是由愛爾蘭 Cesanta Software發展,是一種JavaScript-based韌體IoT開發平台,它目前僅支支援ESP8266的模組開發,把javascript當作最主要的開發語言並且把javasceipt引擎內置於ESP8266,直接用網頁將js傳入 ESP8266 執行. 有興趣讀者可參考https://github.com/cesanta/smart.js

(8) ESP8266Basic–ESP Baisc 也是開放源碼,這是較新開發平台及語言,它最主要的特點是Basic,使用傳統80年代簡單的Basic當做開發誩言,希望開發過程及程序Basic化, 所以它完全針對ESP8266模組提供基本的ESP8266 Basic直譯器,它的官網提供燒錄程式,編輯器,程式參考手册,及簡易GUI的小工具並且網站提供不少的範例程式。官方網址 https://www.esp8266basic.com/

回ESP8266文件主目錄

文章標籤

stanley 發表在 痞客邦 留言(0) 人氣()

 

讓 ESP8266跟電腦連接。

幫 ESP8266更新韌體。

透過指令(AT Command)去操作 ESP8266。

等我們把這三個步驟都完成,熟悉並駕馭了 ESP8266後,我們就不需要再用電腦去連接 ESP8266,而可以改用 Arduino去連接,並對 ESP8266發送指令了。

(1) 材料淮備

硬體:

WIFI數據機 or 手機熱點分享 

Arduino 板子 (Uno、Nano、Mega、Mini、Yun...都可) *1塊

FT232  *1塊

ESP8266  (鮑率9600)*1塊

軟體:

Arduino IDE
PUTTY(WIN7用終端機) 

,也有人稱"USB轉TTL"...等等
但我用的是長的跟上圖一樣,網拍一個賣25元。

 

它有兩大功用: 

1.是用來燒錄ESP8266內建韌體用的,就是修改鮑率。

2.可以隨時用簡單的Realterm(終端機)來測試ESP8266是否正常。(這非常重要,因為常常有人遇到問題就認為ESP826燒壞了!)


FT232在本實驗是一大功臣,我當初玩ESP8266時沒有順便買FT232,就玩不起來,因為不知道原廠的鮑率,ESP8266就不會回話,然後也不知道怎下手,弄得自己吃不到魚,卻惹得一身腥。

 

http://lolwarden.pixnet.net/blog/post/82031214###

 

 

文章標籤

stanley 發表在 痞客邦 留言(0) 人氣()

«12
Close

您尚未登入,將以訪客身份留言。亦可以上方服務帳號登入留言

請輸入暱稱 ( 最多顯示 6 個中文字元 )

請輸入標題 ( 最多顯示 9 個中文字元 )

請輸入內容 ( 最多 140 個中文字元 )

reload

請輸入左方認證碼:

看不懂,換張圖

請輸入驗證碼