深入淺出 Wifi 晶片 ESP8266 with Arduino

P1100351

ESP8266 是一個約六十元就買得到的超便宜的 wifi 晶片,因為他的平易近人,就像巷口的早餐店,甚至在網路上形成一個社群,隨隨便便就能找到一堆文章在介紹,只是看了一些文章以後,自己實作還是遇到一些問題,所以就寫篇文章紀錄一下吧。

也或許是我的環境是在 Mac OS X..

其實克里斯寫了一篇文章已經蠻詳細的,可以先參考他的文章,只是我在 MAC 下沒有 Windows 的某些工具,所以就分享一下我遇到的問題跟解決的方法,介紹一些對應的軟體。

概觀

ESP8266 是一個 wifi 晶片 + 一個處理器(DPU, Xtensa LX3),而且還有一些 IO,所以它有提供一個韌體,讓你可以下指令組態他的 wifi 設定,而且其實有一個 Arduino ESP8266 的專案 可以讓你把他當成一個 arduino 來寫,完全不需要再買一片 arduino 也可以獨立使用,簡直新奇、有趣又好玩呢!…?

ESP8266

ESP8266 有分成一大堆 ESP01 ~ ESP12..,晶片是樂鑫出的,這些不同型號是由 ai-thinker 製造的,依照不同用途有不同的規格,常見的有 ESP01 跟 ESP03,還有熱門投票呢,ESP03 最夯,我買的是 ESP01 是第二名…。ESP03 引出的接腳比較多,而且價錢差不多,平平都是布丁,當然是吃有加雞蛋的阿~?詳細差異比較,實際上除了要考量到有沒有引出自己需要的接腳以外(GPIO16 + RST  = deepSleep 用),要接到麵包板的方便性(ESP05 > ESP01 >> ESP03),除了  ESP-05 大都要額外焊轉接板,才能插到麵包板上。

P1100395

且不一樣的型號還有不同的 flash size,可以看板子上面的 flash 晶片有寫(看到脫窗就會看到上面的字了),為什麼要注意 flash size 呢?會影響韌體可以更新的版本,ESP01 黑色的(上)是新版 flash size 會比較大喔!

esp13

耗電量

耗電最多是 200mA 平常是 100mA,它可傳送距離的測試,原始板子的天線可達到 366M,外掛天線可達 479M!(裡面還有比較一個在室外 wifi 可以傳 4KM↑的產品=_=)

ESP01

ESP01 有八個腳由左到右,由上到下,由內到外,由基隆到墾丁,依序為 TX、GND、CH_PD(must be 1 to enable WiFi)、GPIO02、GPIO01、RST(Reset)、VCC(3.3V)、RX。

P1100351

由於他的腳位設計蠻奇怪的,無法直接插入麵包板,可以按照影片裡面教的,切一塊板子下來,做一個轉接板,接插座跟接頭弄成適合麵包板插的形式(如圖;來源),或者我是到光華買一包公對母的杜比接頭線,公頭就可以直接插到麵包板或者 arduino 上,只是拔拔插插的要一直看腳位快脫窗。

OLYMPUS DIGITAL CAMERA

韌體

ESP8266 的 firmware 預設會支援一種 AT Command 的協定,讓你可以從 Serial 連進去以後,對他下指令並且會把設定寫入 flash 中,重開機也還會在,叫他設成 AP or wifi client 模式,或者叫他連線等等,設定跟查詢 wifi 的 config,實際測試起來還蠻方便的。因為他就像是一個介面讓你簡化他跟 Arduino 溝通的方法,而不用所有事都要透過底層 SDK 呼叫 C 的 API 來做。

Arduino

一開始先測試看看,把 ESP8266 RX、TX 跟 arduino 的 TX、RX 對接(Arduino RX0 <=> EXP8266 TX、Arduino TX0 <=> EXP8266 RX),然後 VCC 跟 CH_PD 接 Arduino 3.3V,GND 接… GND,如下圖(開發板不同)。這裡有個小問題要注意,官方規格寫到 3.3V 只能提供 50mA 的電流(DC Current for 3.3V Pin 50 mA),所以 ESP8266 可能吃超過 100mA 就要另外接電源,但是我自己跑測試,開 Client 模式傳資料時整個板(USB電壓電流檢測器)最多寫吃 100mA,也沒出什麼問題,所以我就沒另外供電囉,只是可能程式的實作會影響耗電,真的有問題就另外供電吧,另外發現只要從 Arduino 供電就沒問題,從燒錄線供電,板子就不穩定。

ESP8266ArduinoUNO_WiringDiagram

然後下載 Library ITEADLIB_Arduino_WeeESP8266 ,這是把 ESP8266 當模組用的 library,跑裡面的範例可以測是否正常,改 SSID 跟 PASSWORD 讓他連 AP 看看,Baud Rate 要改成 115200 或 57600 都試試看(要看韌體版本決定),我自己用 115200 試成功一次,成功連線,之後不斷重開再也沒成功過了…。用 Serial 連進去他也一直 check failed 感覺是韌體真的怪怪的,所以後來就決定要先更新(大家都說要更新)。

這邊在測的時候會遇到一個問題是,如果你是用 Uno 只要這樣接以後, ESP8266 就佔據了電腦跟 arduino 的 RX、TX 所以你無法燒錄,要先拔掉才能燒,但是燒完插進去,他又佔據你跟 Arduino 的 Serial ,你就看不到 Serial.print 的結果了,這時後有兩種解法,一種是用 Ardunio mega 有支援 Serial1~3 可以用,可以讓 ESP8266 接在RX1TX1,保留 TX0 跟 RX0 給 USB 對電腦,或者參考另外一個範例(沒有用到 Library)裡面註解的方法用其他腳當作 SoftwareSerial 作為 ESP8266 跟 Arduino 通訊 SoftwareSerial,前提是 SoftwareSerial 支援 Buad rate 不超過 19200,如果韌體預設不是 9600 的就要改 buad rate 或燒別的韌體。

後來查到 ITEADLIB_Arduino_WeeESP8266 關於 SoftwareSerial 的說明 ITEADLIB_Arduino_WeeESP8266 的 Softwareserial,也有提到它可以換成 SoftwareSerial。

- //#define ESP8266_USE_SOFTWARE_SERIAL
+ #define ESP8266_USE_SOFTWARE_SERIAL

裡面有提到只要把 Software Serial 註解拿掉就能改成用 SoftwareSerial 了。實際的程式在把 Serial 換成 mySerial

// 原始版本
#include "ESP8266.h"
ESP8266 wifi(Serial);

// arduino MEGA Serial[1] 版本
#include "ESP8266.h"
ESP8266 wifi(Serial1); /* RX1 pins 19, TX1 pins 18*/

// ESP8266.h + SoftwareSerial
#include "ESP8266.h"
#include <SoftwareSerial.h>
SoftwareSerial mySerial(3, 2); /* RX:D3, TX:D2 */
ESP8266 wifi(mySerial);

Serial

好,如果真的不行,你要直接從電腦連 USB 上去燒韌體或跟電腦跟它對接連進去下指令測試,那就要找一條 USB 對 TTL 的線,大概長這個樣子,裡面會有一個晶片,或者你直接買這個晶片也可以,我是買這條線裡面的晶片是 PL2303HX,大概三四十塊吧,也有其他代替品如 CP2102、FTDI。

USB-to-TTL-Serial-Cable-FTDI-font-b-Chipset-b-font-font-b-PL2303HX-b-font (1)

他的線路對應是 紅+5V, 黑 GND, 綠 TXD,白 RXD 。好,只是要直接接上 ESP8622 之前有個問題要考慮到,他的紅線是 5V 但是 ESP8266 吃的是 3.3V,所以接上去以後,可能會讓這個晶片斷開鎖練…斷開一切的牽連。所以我們來把這個神秘的 USB 小盒子打開,裡面其實是長這樣

PL2303

他其實有 3V 的電源藏在裡面沒拉出來,我們要把 5v 的線解焊改到 3V 上面,就能讓 PL2303 直接接到 ESP8622 囉。然後照著接 arduino 的接法一樣,把 RX TX 對接 電源、接地弄好以後就可以用電腦來連了。

只是要先裝個 Driver,裡面有 PL2303 跟 FTDI 的 MacOS X Driver,裝好重開以後,在裝個 CoolTerm or minicom (brew install) or screen (mac 內建?)就能跟 Serial /dvu/cu.usbserail 連接囉。記得設定

baudrate: 115200
Data Bits: 8bit
Stop Bits: 1

然後看是用什麼軟體連 Serial,也可以直接開 Arduino IDE 的 Serial Monitor 來看。

$ minicom --baudrate 115200 --device /dev/cu.usbserial
# screen
$ screen /dev/cu.usbserial 115200

就能打一些 AT 指令跟他聊聊天囉,例如

  • AT+GMR 取得韌體版本
  • AT+RST 重設
  • AT+CWLAP 取得 ap 列表

Screen Shot 2015-07-19 at 12.18.15 AM

上圖是 CoolTerm 連成功的畫面,如果還是都怪怪不能跟他講話還是先更新韌體再說吧。我是印出一直 CHECK FAILED。

更新韌體

好,管他有沒有問題(真的有問題),先來更新韌體,準備好燒韌體的軟體 esptool,python 寫的,下載好記得先 python setup.py install 安裝相依套件。

pinouts

按照上述 USB 的接法,再把 GPIO0 接地(跟 GND 接起來),如上圖,這是燒錄模式,然後去 Ai-thinker 論壇下載韌體 v1.1.1 ,用 CoolTerm 連連看,確定有回應,但是一直跳針無法溝通,就來給他燒給他死啦。

試了幾個版本,紀錄差別:

  • v0.9.2:AT+UART=9600,8,1,0,0 會一直 ERROR,無法改預設 buad rate(應該試 AT_ISP=9600?)。
  • v0.9.5:可以 AT+UART=9600,8,1,0,0 不會出錯。但是實測起來感覺 0.9.2 穩定度比較好耶,0.9.5 一直 createTCP 失敗?
  • v1.1.1:AI-thinker 最新板,需要 flash size 是 1MB 的版本(ESP01 黑色版)

最後結論,不同韌體有不同的 AT 指令跟不同的預設 buad rate,還要依照硬體支援度決定韌體版本 > 1.0(1MB) 或 < 1.0 (512KB)。可以穩定的使用就好也不見得支援範例測試內的每一個指令。

用 esptool 燒錄指令如下,要改成自己的 device 喔,燒錄的重點是要把 GPIO0 接地,平時運作時就不能接地。

$ python esptool.py -p /dev/cu.usbserial write_flash 0x000000 v0.9.2.2\ AT\ Firmware.bin
Connecting...
Erasing flash...
Writing at 0x0007ec00... (100 %)

Leaving...

詳細燒錄教學

測試方式與 AT 指令

再回去跑測試,就開心的通過啦,跑所有模式,印出很多資訊(其實我的韌體一堆 ERROR,但是可以用了)。

附上一個自己寫的小測試,接 mega 的 Serial1,透過 Arduino 跟 ESP8622 聊天,聊天模式很 OK ㄟ。


void setup() {
  Serial1.begin(9600); //RX1 TX1,即 Pin18 及 Pin19
  Serial.begin(9600);
}

void loop() {
  if (Serial1.available()) {
    Serial.write(Serial1.read());
  }

  if (Serial.available()) {
    char chars = Serial.read();
    Serial1.write(chars);
  }
}

測試的指令

$ AT+RST # 重設
OK

$ AT+CWMODE=3 # 設成 ap + client 模式
OK

$ AT+CWMODE? # 查詢目前模式 1 = client, 2 = AP, 3 = BOTH
+CWMODE:3

$ AT+CWLAP # 列出 SID
+CWLAP:(4,"TP-LINK",-65,"a0:f3:c1:86:10:8f",6)
+CWLAP:(4,"26-2",-87,"fc:75:16:ed:13:58",11)
+CWLAP:(4,"HITRON-1E60",-85,"78:8d:f7:6d:1e:68",11)
$ AT+CWJAP="TP-LINK","PASSWORD" # 連到 TP-LINK
OK
$ AT+CIFSR # 印出 IP 狀態
192.168.4.1
192.168.0.109

$ AT+GMR # 印出 firmware
0018000902

$ AT+CIOBAUD? # 查 baud rate
+CIOBAUD:9600
$ AT+CIOBAUD=9600 # 設定 baud rate
BAUD->9600

最後重開 arduino 他還是會紀錄上一次的連線狀態喔,所以要記得要設定都要先 AT+RST,官方 AT Command 文件

ITEADLIB_Arduino_WeeESP8266

這個 library 裡面其實實作就是把 API 轉成 AT Commands,所以直接看查 .h 檔 .cpp 檔就可以知道哪個 AT Command 對應到哪個 API,大部分都在範例裡面以了,剩下才要看 API,例如 deepSleep(ms),可以計算電池在睡眠跟啟動模式下可以用多久。

#include "ESP8266.h"
ESP8266 wifi(Serial1);
void setup() {
  Serial.begin(9600);
  Serial.println( wifi.getLocalIP().c_str());
}
void loop() {
  // sleep 1000ms low energy mode
  wifi.deepSleep(1000);
}

應用小範例:

另外接了土壤濕度偵測,把資料 POST 到免費的 IOT 平台 thingspeak,有空再補完…。

範例程式:

小結:

如果克服韌體更新的痛苦過程,這應該是顆 CP 值爆表的模組八…,之後研究完 BLE or Zigbee 再來比較一下。最後可以試著直接用 ESP8266 Arduino 專案直接燒程式進去取代 AT Command,可以不透過 Arduino 獨立運作。

後記:

因為這篇文章做了一場教學,有整理了一份比較新又全面的觀點的投影片跟程式碼可以參考這篇文章

相關資源:

很短又完整的 ESP8266 簡介影片,必看
https://www.youtube.com/watch?v=9QZkCQSHnko

Getting Started With The Esp8266 And Arduino

http://www.madebymarket.com/blog/dev/getting-started-with-esp8266.html

社群的 ESP8266 github & forum
https://github.com/esp8266/esp8266-wiki/wiki
http://www.esp8266.com/

ESP8266 Arduino IDE(用來把 ESP8266 當 Arduino 開發板)
https://github.com/esp8266/Arduino

基本測試指令
http://www.instructables.com/id/Using-the-ESP8266-module/step3/Configuring-the-8266-Module/

Makezine 5美元的WiFi微控器ESP8266已可與Arduino相容
http://www.makezine.com.tw/make2599131456/5wifiesp8266arduino

燒韌體教學
Intro Esp8266 firmware update http://www.instructables.com/id/Intro-Esp-8266-firmware-update/
Upgrading ESP8266 Firmware http://taylorcoffelt.com/article/1

ESP8266 官方論壇(找到bug有2000鎂的賞金喔)
http://bbs.espressif.com/

ESPTOOL ESP8266 ROM Bootloader utility
https://github.com/themadinventor/esptool

Arduino ESP8266 Library
https://github.com/itead/ITEADLIB_Arduino_WeeESP8266

AT指令文件

https://room-15.github.io/blog/2015/03/26/esp8266-at-command-reference/

ESP 系列是由 Ai-thinkers 生產,詳細規格比較
http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family

39 comments on “深入淺出 Wifi 晶片 ESP8266 with Arduino

  1. 蘇恆誠 說道:

    感謝您的詳細介紹
    這可以讓窮學生翻身,也不用等學校購買。

    1. mlwmlw 說道:

      希望對大家有幫助 🙂

  2. chelong 說道:

    大大你好,小弟有一些問題想請教,我成功燒入文中的範例程式碼(https://github.com/itead/ITEADLIB_Arduino_WeeESP8266/blob/master/examples/test/test.ino),只修改了SSID與PASSWORD,是否還要修改其他的網路設定(對這方面蠻薄弱的),還有可不可以直接讓手機當熱點呢?
    以上是我執行的結果
    setup begin
    set uart is error
    AT+CWMODE=?
    AT+CWMODE_CUR?
    AT+CWMODE_CUR?
    AT+CWMODE_CUR?
    AT+CWLAP
    AT+CWJAP=”Lin’s”,”00000000″
    AT+CWJAP_DEF?
    …..

    1. mlwmlw 說道:

      嗨,你好

      你的訊息裡面已經印出 SSID 的列表了,如果你要連的 SSID 有在列表內的話,連上應該也沒問題。

      用手機當熱點可以,你接下來可以跑跑看 https://github.com/itead/ITEADLIB_Arduino_WeeESP8266/blob/master/examples/HTTPGET/HTTPGET.ino 來做一些實際的連線。

      1. chelong 說道:

        嗨,您好
        我有兩個問題想要再請教您
        第一,(http://i.imgur.com/6Lzs8AW.png)這是我的Baud Rate的設定與印出來的結果,9600和115200我都試過了,但印出來的訊息有些是空白或是亂碼。
        第二,(http://i.imgur.com/jh0TEPV.png)我嘗試在loop區域模仿上面的教學讓ESP8266能夠收我的AT指令,但好像是失敗的,是因為我的設定沒有設定好,又或是我的程式碼根本沒辦法把我的AT轉成API嗎?

        1. mlwmlw 說道:

          嗨,我看你原本留言的那個資料好像看錯了,你的狀態好像是有點問題喔。
          現在看起來蠻像 Arduino 跟 ESP8266 通訊的 baud rate 有錯。

          條列幾個要注意的事項,可以都測測看:
          1. Serial.begin 是 Arduino 對 PC 的 Baud rate,mySerial 是 Ardunio 對 ESP8266 的 Baud rate,應該測的是後者。

          2. 如果韌體預設的 Baud rate 不是 9600,似乎會有無法透過 arduino 連線的可能。雖然可以設定 AT+CIOBAUD=9600,但也要先連上可以下指令。

          3. 所以有先更新韌體試試看嗎?韌體的預設 Baud rate 跟版本差異對實際運作影響蠻大的喔(例如組態是否會記憶)。

          4. 或先試著直接電腦用 TTL 線跟 ESP8266 對接下指令測試嗎?;例如改 AT+CIOBUAD=9600,重開再跑一次 AT+CIOBUAD?

          5. 換行符號很重要喔,我看你 IDE 裡面的換行符號沒有改為 Both,這樣指令是無法被處理喔。

          6. 都先想辦法先讓電腦對 ESP8266 的通訊是有正常回應,至少讓下錯指令會出 ERROR。

          希望你能成功..。﹍。

    2. letmeseesee 說道:

      你好我用APPINVENTOR做一個介面控制利用WIFI控制ARDUINO,我們打算用手機當基地台,我們在APPINVENTOR的介面輸入了手機的IP還有埠號80之後連結上了,控制ARDUINO上的LED燈,控制差不多兩次亮滅之後程式就會當掉,不知道到底是哪裡有錯誤,還是連手機的IP不用打埠號下面是我們程式碼,
      https://gist.github.com/letmeseesee1/963e7dce277e29818f93f46472e19faa

      1. mlwmlw 說道:

        從之前的經驗來看,用 AT Command 來建 Server 不太可靠,可以試著直接把 arduino 韌體燒到 ESP8266 上,會穩定一點,只是也不能期望他是一個能穩定提供服務的伺服器,可以多寫些錯誤處理的程式來解決穩定性的問題。

  3. 歐歐 說道:

    請問arduino有辦法讓baud rate 超過 115200 bps嗎

    1. mlwmlw 說道:

      hello

      不曉得你的問題是在問 arduino 板子本身嗎

      這問題則取決於 MCU(ATmega328P) 跟 usb ttl 晶片決定,理論上是能超過 115200 的。

      你可以簡單的測試
      Serial.begin(2000000);
      Serial.println(“baudrate = 2000000”);
      就能知道結果囉。

  4. 學生 說道:

    不好意思~
    我想請問一個小問題
    目前我是用兩個ESP8266+兩個arduino要進行連接資料傳輸
    目前遇到的問題是
    ESP28266創建的SERVER,有時連得上,有時連不上,請問有遇過這樣的問題嗎??
    供電正常(有另外供電)

    1. mlwmlw 說道:

      由於 arduino 與 esp8266 是用 at command 在通訊,感覺透過這種方式作 server 的穩定度的確有一點疑慮。

      可以試試看直接在 esp8266 上開發,會相對穩定許多,但多少還是會侷限在 esp8266 的處理能力上,只是簡單的應用應該很足夠了。

  5. rik 說道:

    好文章讓剛入門的我減少許多障礙
    謝謝你

    1. mlwmlw 說道:

      很開心對你有幫助:)

  6. Jeff 說道:

    感謝制作分享教學~ 很有幫助~ 謝

  7. Tecloder 說道:

    不好意思 對這領域還不太熟悉 看完文章對於ESP8266有一些問題想詢問,
    如果需要溝通是否至少需要兩個ESP8266模組(一發一收)
    利用手機APP PC網卡 之類的是否也能跟ESP8266進行溝通

    1. mlwmlw 說道:

      只要有一個 esp8266 可以連到 wifi 就可以做收發,不侷限要跟什麼裝置通訊,手機、電腦都可,剩下的應用都侷限在於你的網路知識。

      可以先參考我這 https://speakerdeck.com/mlwmlw/esp8266-workshop 個投影片,可以建立一些基礎 wifi 與網路應用程式的知識喔!

  8. Alber Wang 說道:

    聽說最近有另一塊老牌子廠商使用單晶片可以在Arduino上開發應用,功能強大可以跑影音串流,雖然已經買了ESP8266,但是因為也很便宜有點手癢
    http://www.amebaiot.com/

    1. mlwmlw 說道:

      哈哈 有一種置入的感覺,最近最夯應該是 linkit 7688

  9. kalapon 說道:

    請問您會怎麼檢查ESP-01已經損壞了呢?接線之後基板上的燈有亮,
    但燒韌體一直失敗,不是接線問題,是燒到固定位置就顯示fail
    原先的韌體也已經無法使用了=.=

    1. mlwmlw 說道:

      我都亂玩也沒真的燒壞半片過耶,

      你是不是拿 512KB 版本的 ROM 要燒 1 MB 的韌體才會燒到一半卡住阿~

  10. liao 說道:

    想請問一下,我目前還沒有看到用esp8266來做智能插座的
    本想用arduino來做,但又覺得在wifi上又要外掛
    這部分是否有涉略,可否給點建議可以參考甚麼文獻
    剛在摸索
    謝謝

    1. mlwmlw 說道:

      智能插座?

      就是接個繼電器,跟電流計算模組吧XD

      建議直接找 arduino 智能插座的資源,然後直接用 arduino/esp8266 來寫,

      幾乎只要改個 wifi 程式的部份就無痛上網了~

  11. LIANG 說道:

    你好,我用arduino uno的3.3V供電ESP-01時,我只要插上CH-PD的PIN在3.3V的時候,整個電壓就會降到1.8V,而且ESP-01會一直重開,請問你是否有遇過相同的情形?

    另外我也有買asm1117 3.3v的降壓模組來用,也是有同樣的情形,只要CH-PD一接上正極,電壓就會下降,而且esp-01連開都開不了。

    謝謝。

    1. mlwmlw 說道:

      是不是你 USB 供電的電流不足,換一個方式供電看看呢?

      有時候韌體版本有問題也會一直重開,可以試著先重刷看看。

      1. liang 說道:

        感謝回覆,我也有用鋰電池加上asm1117來供電,不過情形比用arduino直接供電更慘。

        我重刷韌體看看好了,謝謝。

  12. lei 說道:

    請問sample中的使用了buffer[1024],如果想獲得更大的data的話,比如說10KB,在Anduino中該如何實現呢?
    多謝。

    1. mlwmlw 說道:

      arduino 的記憶體有限,你想配超過 10k 是要取決於你用的硬體規格喔。

      以 uno 為例也只有 2KB 能用喔

  13. jim 說道:

    編譯錯誤,請問程式中
    #include
    在哪裡可以取得?

    1. mlwmlw 說道:

      看你是說哪一個 library,大都是在 github 上的專案喔。

  14. 阿修 說道:

    小弟想問ESP8266和USB對TTL的現在哪裡買的?

    1. mlwmlw 說道:

      網路拍賣買比較便宜,露天、奇摩都可以找找,如果等久一點也沒關係也可以考慮掏寶,順便買其他材料會比較便宜。

  15. 阿光 說道:

    請問,我把ESP8266-01當IOT單獨使用,並沒有另接arduino,要把自己寫的程式燒入ESP8266-01內,發展環境我是使用arduino IDE,使用UART接8266,如果要燒入自寫的程式,也是將GPIO0接地嗎?,這樣8266的韌體不會被蓋掉嗎?

    1. mlwmlw 說道:

      對喔,如果要直接把 arduino 韌體燒進去,就是在把 ESP8266 本身的韌體蓋掉。

      如果沒有壞掉的話,還是可以再燒回來的喔,不用擔心。

  16. 風兒 說道:

    您好!我將VOIFD LOOP 那裡作複製貼上測試,經過上船卻出現下列錯誤,我該如何解決?
    Arduino:1.8.0 (Windows 10), 開發板:”Arduino Nano, ATmega328″
    C:\Users\Eleven\AppData\Local\Temp\arduino_modified_sketch_618278\AT_cmd_test.ino: In function ‘void loop()’:
    AT_cmd_test:13: error: ‘Serial1’ was not declared in this scope
    if (Serial1.available()) {
    ^

    AT_cmd_test:19: error: ‘Serial1’ was not declared in this scope

    Serial1.write(chars);

    ^

    exit status 1
    ‘Serial1’ was not declared in this scope

    This report would have more information with
    “Show verbose output during compilation”
    option enabled in File -> Preferences.

    1. 風兒 說道:

      我是要用來做AT指令測試

    2. 風兒 說道:

      可給我完整的程式碼?

      1. mlwmlw 說道:

        整理好的飯粒都放在這裡了喔 https://github.com/mlwmlw/esp8266-workshop

    3. mlwmlw 說道:

      因為那段程式是給 mega 的板子用的喔

      如果是 nano 要參考下面那段改成 SoftwareSerial 的做法喔

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *