2015年12月26日 星期六

ESP8266 WIFI(4) -Soil_Humidity sensor



   接下來要介紹Arduino+ESP8266的一個應用範例,
從Arduino 讀取土壤濕度感測器的濕度以及POWER及ESP8266的電壓
透過ESP8266 wifi連線,把資料送上//http://api.thingspeak.com
Thingspeak 是一個可以免費註冊的網站,我們只要把資料送到該網站
即可在該網站監控我們所作的土壤濕度感測器的濕度及電壓.




Arduino 範例程式下載:
https://www.dropbox.com/s/ah21knzmc08ip5h/esp8266_soil.ino?dl=0


ESP8266 WIFI(3) -Connected with Arduino



這次要介紹的是ESP8266接在Arduino Nano v3 .因為Arduino Nano 只有一個Uart port 這個port我們要保留下來跟電腦連線及做DEBUG用,所以在我的接線上我會利用Arduino D2 pin當RX ,D3 pin 當TX,直接接到ESP8266 的TX跟RX ,也就是
Arduino D2 pin 接到ESP8266 TX pin
Arduino D3 pin 接到ESP8266 RX pin

請先參考前兩篇ESP8266的介紹:

ESP8266 Wifi (1)---Connected with PC.

http://arbu00.blogspot.tw/2015/12/esp8266-wifi-1-connected-with-pc.html

http://arbu00.blogspot.tw/2015/12/esp8266-wifi2-update-firmware-and.html

上述(1)(2)動作都ok後才有辦法繼續以下操作.


在Arduino 的程式上則是準備 <SoftwareSerial>這個開源的library去規劃D2/D3為RX/TX的功能(Arduino端)
EX: SoftwareSerial WifiSerial(2,3); /* RX:D2, TX:D3 */
據說SoftwareSerial  只能設定Baud rate到19200,所以這就是為什麼我們是先要將
ESP8266的Baud rate只設在9600.
如果你用的是Arduino Mega2560有多組RX/TX的,則可以直接接ESP8266跑115200 Baud rate.


另外我們還會用到另一個開源的Library <ITEADLIB_Arduino_WeeESP8266-master>
https://github.com/itead/ITEADLIB_Arduino_WeeESP8266/archive/master.zip
是一個把ESP8266的AT command 提供了實作的函式呼叫.

2015年12月25日 星期五

ESP8266 WIFI(2) -update firmware and modify baud rate.





這篇介紹如何更新升級ESP8266的韌體及如何更改Baud rate.


1.首先請參考,底下這篇如何接線跟電腦連線
上述該篇的動作ok了才有辦法進以下動作.

因為我們要做燒錄ESP韌體所以,須把GPIO0接地(GND).這是唯一接線的差別.
燒錄完成之後把GPIO0移開接地,再斷電重開才能重新正常連線,


我買了一條新的CP210x系列的也是可以用一樣的接法,它本身有提供3.3V輸出,但是也不不足供電的,還是得額外提供3.3V電源,多買一條USB-UART只是因為我原本另一條PL的在我正職的工作上有其他用途,在家用的只好多買一條..
我這裡一樣是用LM2596S DC-DC 降壓電源模塊 提供穩定3.3V給ESP8266供電.




2015年12月18日 星期五

ESP8266 Wifi (1)---Connected with PC.




這是我使用的ESP8266-12E,ESP8266有很多型號 價格都一樣約NT 60就可以入手.差別主要大概是在天線不同及GPIO pin的數目,

<ESP8266-12E>





除了ESP8266之外,需要準備一個USB轉UART的線或是類似的模組都可以,透過這條線可以更新ESP8266的韌體以及連接PC作一些設定及實驗.



<Picture2 USB-UART>




<Picture 3> DC-DC 降壓模組 ,ESP8266 需要一個穩定的3.3V並且工作時電流會達到200mA
所以最好獨立供電,根據許多人的經驗如更新韌體失敗都是因為供電問題.
LM2596S DC-DC 降壓電源模塊



<Picture 4> 在這邊我仍然是用慣用的兩顆18650串聯供電會達最高8.6V,接上降壓模組之後藉由上面的小螺絲調整到3.3v輸出獨立供電給ESP8266.




<Picture 5>底下是實際的接線,之後與Arduino的連接溝通留待以後在介紹,這裡只須先由USB-UART轉接線來連接PC及ESP8266.先作一些基本的連接及實驗



<Picture 6 >底下這個ESP8266官方的線路圖,參考就好


<Picture 7>實際的接線我是照這下面這張圖接,不過實驗過後發現兩個1K電阻都不上也行
例外REST的pin也可以不接,不過對於REST pin 我覺得是接上比較好,<這張圖是我從掏寶買
ESP8266時上面所附的.如有侵權請告知我.>



<線路實際接法>
  所以其實接線很簡單REST/CH_PD/VCC 都接到DC降壓模組轉輸出的3.3V
GPIO15/GND 可接到DC降壓模組轉輸出GND端

GPIO0 平時不接,如果把它接地代表著要進入更新韌體模式,更新完韌體須讓它離開接地
才能回到正常工作模式.有關韌體更新會另外篇幅介紹,與PC的連接不須更新韌體或更改設定即可做測試.

另外3 Pin 則是接到USB-uart 線的UART端.
ESP8266 的TX 要接到UART的RX
ESP8266 的RX 要接到UART的TX
ESP8266 的GND 要接到UART的GND 共地
至於UART端的VCC 或其他有CST 或RST pin的都不用接.
USB那端則直接接上PC.
這樣其實接線就完成了


<Picture 8> 當USB-UART (PL2303HX) 接上電腦時,要為它安裝上driver ,我是在windows 10做實驗,所以其實在win10上也是ok的 ,至於PL2303的driver 可以自行google搜尋都可以免費下載
或是按滑鼠右鍵讓win10自行去搜尋安裝(需有網路連線).

 裝好之後可以看到電腦會自動配一個Com port的號碼給它,在我電腦的例子是COM9
待會連線ESP8266就是要利用這個COM9 的port.


PS 所有相關的driver 或是測試用的軟體請自行google下載,我不貼連結因為那沒意義,就像
我常看別人的文章有貼軟體下載連結,但很多其實久了連結就失效了或是有更新的版本,有些還是奇怪的連結,最後還是得自行google搜尋. 所以這些driver還是軟體現在都google的到,幾乎都是免費的,我也是這樣下載的.







<用Realterm 做連接測試>
   線路接好了driver也裝好之後我們就可以來試試PC 與ESP8266能不能連線溝通.
底下先用Realterm做測試,有關COM port的測試軟體其實很多大多也都免費

   底下先介紹Realterm的測試方式
A.在<Display>可以選擇ANSI ,可以避免一些奇怪的字尾


B.在<Port>這一頁設定欲連接COM port的設定.
在[Baud]先設定為115200 或選擇9600
目前新買的ESP8266 預設Baud rate都是115200 除非去做韌體更改成9600 否則新買來的應該都是115200,如果不行的話再選9600或其他試試,如果選錯Baud 則可能出現亂碼也可能什麼都沒顯示, 
接著[port] 設成9 原因是剛剛PL2303H driver裝上時電腦配定為 COM9,這個數字必須根據你自己電腦上的driver安裝,幾乎我可以肯定你電腦的port號碼不會跟我一樣.要注意喔.
[stop Bit] 根據我的實驗必須選為1 bit就好,否則也是會有亂碼,但是也有人說選2 bits才不會亂碼.
如果有問題就都試試吧.
改變好設定後需要按一下[Change]它才會真的把剛剛的設定做變更
最後再按下[OPEN]鈕,打開COM9的連接.正常的話其實就已經可以連線ESP8266
接著就可以下一些AT command跟ESP8266做溝通. 
AT command 是ESP28266 的指令集,可以說ESP8266的功能就是透過這些AT command來做控制
有AT command可以自行在官網或是google搜尋,應該都找得到,這個版本也是一直在更新.
   底下只先介紹試驗3個基本AT command



C .切到<Send>頁面,把EOL的CR+LF打勾代表結尾符號
   第一個輸入AT 然後按下Send ASCII按鈕,s如果回傳OK ,表示與ESP8266已連接成功
第二個輸入AT+GMR(都要大寫) 則會回傳ESP8266的版本以及SDK的版本如下1.3.0


第三個輸入AT+RST(都要大寫) 則會reset重起ESP8266最後秀ready就是ok了
前端可能出現一小部分亂碼則沒關係,只要看到最後秀ready即是reset成功了.




<用SSCOM32做連接測試>
接下來介紹另一個測試軟體SSCOM32一樣可以google下載,我感覺這個設定會比Realterm 簡略一點,也它可以一次用檔案批次的方式輸入很多指令
A.重點依然是com port的選擇及Baud rate設定,在藍色的圈圈原本是秀OpenCom,按下連接之後
才變成CloseCom,表示連接com port或關閉.



底下一樣以AT /AT+GMR/AT+RST 做測試




基本上如果都成功了那與ESP8266的連接就是都ok了,
因為有關的ESP8266資料應用繁多之後再一一介紹.



有任何問題歡迎到我的FB粉絲團討論,只是我也不一定會就是了.
加入阿布拉機的3D列印與機器人的FB粉絲團
https://www.facebook.com/arbu00/

Scan QRcode to join FB Fans.
















2015年12月2日 星期三

18650鋰電池


   由於上週未在成大maker fair展出時,有很多人問起了我使用的電池.在這裡簡單介紹一下
18650鋰電池.

         簡單介紹一下18650鋰電池,以往大部分的電子實驗都會用4顆3號電池串聯
1.5VX4=6V ,所以很多電子玩具包括IC工作電壓都會設定在5V, 不過除非用像鎳氫可充電式的3號電池,否則用一般的3號鹼性電池實在很不環保,而充電式的鎳氫電池又會有記憶效應或是高自放電的問題,所以一般像手機或筆電都早已改用鋰電池.
        一般筆電裡的電池以及行動電源裡面裝的就是18650鋰電池.可充放電次數1000次,沒記憶效應,單顆容量即有2600mA~3400mA之多, 但是鋰電池單顆平均電壓約在3.7V,對一般常見的
IC 5V工作電壓並不適用,然而arduino的輸入電壓可到12V,所用兩顆18650串聯最高可到7.4V-8.4V是可行的. 於是在我的所有作品中皆是用2顆18650鋰電池供電.
   對於需要使用到5V或是3.3v的感測器,則可由arduino本身就由提供的3.3V ,5V提供
或是像ESP8266需要較大電流3.3V額外供電也可用降壓模組來供電.

    整體來說18650鋰電池會比一般3號電池來的耐用及方便,現在在各網路,如PChome或是yhaoo,露天都可以買得到兩顆一組加充電器,其實價格跟一組4顆3號充電電池差不多.
  目前新的LED手電筒都可以用一顆18650鋰電池也很方便.



Arduino Nano規格簡介

http://arduino.cc/en/Main/arduinoBoardNano
Arduino Nano 3.0 (ATmega328)

工作電壓5 V
建議輸入Input Voltage (recommended)        7-12 V
限制輸入Input Voltage (limits)        6-20 V
數位腳位14 ( 6個 PWM 輸出)
類比輸入8個
每腳位電流40 mA
Flash Memory        16 KB (ATmega168) or 32 KB (ATmega328) of which 2 KB used by bootloader
SRAM        1 KB (ATmega168) or 2 KB (ATmega328)
EEPROM        512 bytes (ATmega168) or 1 KB (ATmega328)
Clock Speed        16 MHz
Dimensions        0.73" x 1.70"


              <Picture1> 底下是三洋的18650鋰電池,這個我其實就是從筆電的電池拆下來的