【庫和教程】ESP8266 WIFI模組實現遠端wifi控制
http://www.geek-workshop.com/thread-11266-1-1.html
ITEAD首款智慧wifi通用改裝件成功上市:http://www.geek-workshop.com/thread-17944-1-1.html
----------------------------------------------------2015年6月10日更新-------------------------------------------------------
最新wifi庫下載地址:https://github.com/itead/ITEADLIB_Arduino_WeeESP8266/archive/master.zip
庫預設是使用硬體串列埠與ESP8266通訊,需要軟串列埠通訊只需取消註釋Esp8266.h檔案裡的一行程式碼
#define ESP8266_USE_SOFTWARE_SERIAL
--------------------------------------------------2015年2月5日釋出---------------------------------------------------------
使用UNO搭建硬體所需配件:
因為UNO只有一對串列埠,已經被WIFI模組佔用了,所以要增加一個轉串列埠的板子用軟串列埠來列印串列埠資訊。
使用ITEADUINO MEGA2560搭建硬體所需配件:
此處也可以使用Arduino MEGA2560,但是需要飛線到後面的
需要使用到的庫檔案地址:http://pan.baidu.com/s/1kT9TBz5這個庫跟之前發的庫是一樣的,但很多小夥伴反應編譯不過,這個庫我是用1.0.6版本的IDE測試一定能過的。不放心的朋友可以把以前下的庫從libraries裡移除,重新下載這個到libraries資料夾裡面。
庫預設設定的是UNO可以直接使用本教程,無需做任何修改。 使用mega2560的時候,只需要開啟uartWIFI.h檔案,把UNO註釋掉,取消註釋MEGA,如下:
//#define UNO //uncommentthis line when you use it with UNO board
硬體搭建方面我們先不說怎麼接線,因為經常有人問我:“你好,程式已經燒給模組了,為什麼不成功?”我的親大哥啊,所有程式碼都是燒寫進UNO和mega2560主機板的,你就算不接模組,程式碼也是可以上傳編譯成功的。所以我們的步驟是先把程式碼燒寫進UNO和MEGA2560。
程式碼如下:
ARDUINO 程式碼複製列印
- #define SSID "ITEAD_2" //type your own SSID name
- #define PASSWORD "27955416" //type your own WIFI password
- #include "uartWIFI.h"
- #include <SoftwareSerial.h>
- WIFI wifi;
- extern int chlID; //client id(0-4)
- void setup()
- {
- pinMode(6,OUTPUT); //使用mega的時候在不改變接線的情況下,此處改為24腳
- wifi.begin();
- bool b = wifi.Initialize(STA, SSID, PASSWORD);
- if(!b)
- {
- DebugSerial.println("Init error");
- }
- delay(8000); //make sure the module can have enough time to get an IP address
- String ipstring = wifi.showIP();
- DebugSerial.println(ipstring); //show the ip address of module
- delay(2000);
- wifi.confMux(1);
- delay(100);
- if(wifi.confServer(1,8080))
- DebugSerial.println("Server is set up");
- }
- void loop()
- {
- char buf[100];
- int iLen = wifi.ReceiveMessage(buf);
- if(iLen > 0)
- {
- if (strcmp(buf, "CH0ON") == 0)
- {
- digitalWrite(6,HIGH); //使用mega的時候在不改變接線的情況下,此處改為24腳
- DebugSerial.println("CH0ON");
- }
- if (strcmp(buf, "CH0OFF") == 0)
- {
- digitalWrite(6,LOW); //使用mega的時候在不改變接線的情況下,此處改為24腳
- DebugSerial.println("CH0OFF");
- }
- }
- }
使用MEGA時,把程式碼裡繼電器的D6腳改為D24腳。程式碼燒寫完成後,我們現在來搭建硬體。
UNO接線如圖:
Foca轉串板連線的是D2和D3作為軟串列埠。G要共地。
ITEADUINO MEGA2560接線如圖:
此處的Xbee擴充套件板的跳帽應該是2和3,而不是0和1,此處有錯。正確跳帽如下:
. . . 4
._. . 3
. ._. 2
. . . 1
. . . 0
Xbee擴充套件板插在TX2和RX2這排排母上。如圖:
連線電腦,插上9V/1A介面卡電源供電,開啟Arduino IDE串列埠監視器就可以檢視wifi執行狀態了。如果是使用UNO,開啟監視器後需要先按一下UNO板子上的重啟鍵再按一下xbee擴充套件板上的重啟鍵。此時才能看到串列埠監視資訊。使用mega2560則無需操作。如果是出現“Module have no response”則只需要按一下mega板子側邊的重啟鍵。
成功連線路由器後,我們就得到了WiFi模組的IP地址,串列埠列印資訊如下: ↑UNO串列埠列印資訊
↑MEGA串列埠列印資訊
該軟體目前只支援4寸-7寸安卓智慧手機或者平板,7寸平板的話排版可能會有空隙,不過不影響使用。
下載安裝後,進入set up設定介面。在客戶端輸入我們剛剛獲得的IP地址和埠號8080,如圖:
點選“開始連線”,連線成功會顯示:成功連線server。如圖:
按鍵指令我們重新設定一下,下拉到最下面,將On和Off的指令改為CH0OFF和CH0ON(指令可以任意設定,只要跟程式碼裡的指令一致就行),如果開關狀態相反,把指令反過來即可,如圖:
↑修改前
↑修改後
輸入完成後,點選“返回”到操作介面,此時點選On和Off就可以成功控制開關了!
關(UNO)
開(UNO)
關(MEGA)
開(MEGA)
可以收到串列埠列印資訊如下:
-------------------------------------------------2014年10月15日釋出-------------------------------------------------------
更新說明:由於韌體升級,很多小夥伴們收到ESP8266模組後用我們的庫調不通,在此誠摯道歉。釋出此篇教程的時候使用的是舊版本韌體,庫檔案設定的波特率是115200。如果調不通的話應該收到的是新版本,使用的波特率是9600。庫檔案我們已經更新了http://pan.baidu.com/s/1sj2nUyT 請知悉,謝謝!
(一)ESP8266 wifi模組庫檔案測試
上週終於寫完ESP8266 wifi 模組的庫了,測試OK!在此開出原始碼和例項教程,希望能幫到大家!
主要配件:
一張圖介紹mini RBoard
步驟:
1. 下載庫檔案
燒寫程式之前,我們需要用到ESP8266庫,下載地址為:
http://pan.baidu.com/s/1sj2nUyT
溫馨提示: ESP8266 wifi庫檔案是基於arduino IDE 1.0.5版本編譯的,如遇編譯不過,請嘗試其他版本。
開啟庫中的uartWIFI.h檔案,因為我們的mini RBoard使用的是跟UNO一樣的晶片,所以要在H檔案裡去掉定義UNO的註釋,登出掉MEGA。
#define UNO
//#define MEGA
然後把_DBG_RXPIN_和_DBG_TXPIN_引腳定義改為D9和D10.
#define _DBG_RXPIN_ 9 //A0
#define _DBG_TXPIN_ 10 //A1
然後儲存uartWIFI.h檔案。
燒寫程式碼:
插上FOCA,板子的型別選擇“Arduino UNO”,點選燒寫程式。如下圖:
ARDUINO 程式碼複製列印
- /*
- ESP8266 library
- When you use with UNO board, uncomment the follow line in uartWIFI.h.
- #define UNO
- When you use with MEGA board, uncomment the follow line in uartWIFI.h.
- #define MEGA
- Connection:
- When you use it with UNO board, the connection should be like these:
- ESP8266_TX->D0
- ESP8266_RX->D1
- ESP8266_CH_PD->3.3V
- ESP8266_VCC->3.3V
- ESP8266_GND->GND
- FTDI_RX->D3 //The baud rate of software serial can't be higher that 19200, so we use software serial as a debug port
- FTDI_TX->D2
- When you use it with MEGA board, the connection should be like these:
- ESP8266_TX->RX1(D19)
- ESP8266_RX->TX1(D18)
- ESP8266_CH_PD->3.3V
- ESP8266_VCC->3.3V
- ESP8266_GND->GND
- When you want to output the debug information, please use DebugSerial. For example,
- DebugSerial.println("hello");
- Note: The size of message from ESP8266 is too big for arduino sometimes, so the library can't receive the whole buffer because
- the size of the hardware serial buffer which is defined in HardwareSerial.h is too small.
- Open the file from \arduino\hardware\arduino\avr\cores\arduino\HardwareSerial.h.
- See the follow line in the HardwareSerial.h file.
- #define SERIAL_BUFFER_SIZE 64
- The default size of the buffer is 64. Change it into a bigger number, like 256 or more.
- */
- #define SSID "Itead_1(Public)" //type your own SSID name
- #define PASSWORD "27955416" //type your own WIFI password
- #include "uartWIFI.h"
- #include <SoftwareSerial.h>
- WIFI wifi;
- extern int chlID; //client id(0-4)
- void setup()
- {
- pinMode(4,OUTPUT);
- pinMode(5,OUTPUT);
- pinMode(6,OUTPUT);
- pinMode(7,OUTPUT);
- wifi.begin();
- bool b = wifi.Initialize(STA, SSID, PASSWORD);
- if(!b)
- {
- DebugSerial.println("Init error");
- }
- delay(8000); //make sure the module can have enough time to get an IP address
- String ipstring = wifi.showIP();
- DebugSerial.println(ipstring); //show the ip address of module
- delay(2000);
- wifi.confMux(1);
- delay(100);
- if(wifi.confServer(1,8080))
- DebugSerial.println("Server is set up");
- }
- void loop()
- {
- char buf[100];
- int iLen = wifi.ReceiveMessage(buf);
- if(iLen > 0)
- {
- //mini Rboard D4 pin is relay,mini Rboard URL:[url=http://item.taobao.com/item.htm?spm=a1z10.3.w4002-2605688463.12.EMkeTJ&id=39334222369]http://item.taobao.com/item.htm? ... keTJ&id=39334222369[/url]
- if (strcmp(buf, "CH0ON") == 0)
- {
- digitalWrite(4,HIGH);
- DebugSerial.println("CH0ON");
- }
- if (strcmp(buf, "CH0OFF") == 0)
- {
- digitalWrite(4,LOW);
- DebugSerial.println("CH0OFF");
- }
- /* the other 3 chanels below are for Rboard D5 D6 D7 , Rboard URL:[url=http://item.taobao.com/item.htm?spm=a1z10.3.w4002-2605688463.12.EMkeTJ&id=39334222369]http://item.taobao.com/item.htm? ... keTJ&id=39334222369[/url]
- if (strcmp(buf, "CH1ON") == 0)
- {
- digitalWrite(5,HIGH);
- DebugSerial.println("CH1ON");
- }
- if (strcmp(buf, "CH1OFF") == 0)
- {
- digitalWrite(5,LOW);
- DebugSerial.println("CH1OFF");
- }
- if (strcmp(buf, "CH2ON") == 0)
- {
- digitalWrite(6,HIGH);
- DebugSerial.println("CH2ON");
- }
- if (strcmp(buf, "CH2OFF") == 0)
- {
- digitalWrite(6,LOW);
- DebugSerial.println("CH2OFF");
- }
- if (strcmp(buf, "CH3ON") == 0)
- {
- digitalWrite(7,HIGH);
- DebugSerial.println("CH3ON");
- }
- if (strcmp(buf, "CH3OFF") == 0)
- {
- digitalWrite(7,LOW);
- DebugSerial.println("CH3OFF");
- }
- */
- }
- }
黏貼程式碼到arduino IDE中,在SSID和PASSWORD巨集定義中修改成自己的路由器WIFI名稱和密碼。
#define SSID "Itead_1(Public)" //type your own SSID name
#define PASSWORD "27955416" //type your own WIFI password
編譯,燒寫,OK!
接下來我們還需要用到foca來讀取串列埠資訊,檢視wifi狀態。
按照以下連線方式連線FOCA和ESP8266到mini Rboard上。
相關推薦
【庫和教程】ESP8266 WIFI模組實現遠端wifi控制
http://www.geek-workshop.com/thread-11266-1-1.html ITEAD首款智慧wifi通用改裝件成功上市:http://www.geek-workshop.com/thread-17944-1-1.html
【醬菜創客】ESP8266連線伺服器實現遠端控制LED燈
#include <ESP8266WiFi.h> WiFiClient client; #define relay1 2 //繼電器連線在8266的GPIO2上 const char *ssid = "xxxx";//這裡是我的wifi,你使用時修改為你要連線的wifi ssid con
【Arduino基礎教程】RS1307時鐘模組
RS1307時鐘模組 RS1307是一個低功耗的外接時鐘模組,它可以讓你的專案即使在斷電的情況下,也能保證在重新啟動後走時正確。 所需材料 1x Ar
【.Net碼農】用asp.net實現遠端獲取其他網站頁面指定內容
遠端獲取網頁內容.經過一定的處理和靈活應用,可以開發成成體系網站內容採集系統.通常也叫做"新聞小偷"一般來說.做內容採集分為如下幾個大致的步驟: 1.遠端獲取頁面的全部Html源文字. 2.通過過濾處理,分析有效內容文字.(通常用正則表示式來擷取有效資料) 3.將格式有效的資料,根據自己的資料庫結
【RTX作業系統教程】第5章 RTX作業系統庫方式移植(超級簡單)
第5章 RTX作業系統庫方式移植(超級簡單) 原文來源:http://forum.armfly.com/forum.php?mod=viewthread&tid=16596&highlight=RTX%B2%D9%D7%F7%CF%B5%CD%B3
day06.Hadoop快速入門&雲服務三種模式IaaS,PaaS和SaaS【大資料教程】
day06.Hadoop快速入門&雲服務三種模式IaaS,PaaS和SaaS【大資料教程】1. HADOOP背景介紹1.1 什麼是HADOOP1). HADOOP是apache旗下的一套開源軟體
【Qt OpenGL教程】25:變形和從檔案中載入3D物體
第25課:變形和從檔案中載入3D物體 (參照NeHe) 這次教程中,我們將學會如何從檔案中載入3D模型,並且平滑的從一個模型變形為另一個模型。在這一課裡,我們將介紹如何實現模型的變形過程,這將會是效果很棒的一課! 程式執行時效果如下: 下面進入教程: 我們這次將在第
【Unity3D基礎教程】給初學者看的Unity教程(四):通過製作Flappy Bird瞭解Native 2D中的RigidBody2D和Collider2D
引子 認識RigidBody 當RigidBody2D的質量屬性被設定為0時,剛體的質量變為無限大,此時剛體相當於靜態剛體,永遠一動不動。但是在Unity中你是無法把一個RigidBody2D的質量設定為0的,所以,當你想建立一個靜態剛體時,只需要建立碰撞器,而不需要建立RigidBo
Django2.0:【Django2.0教程】08.常用的模版標籤和過濾器 視訊學習筆記
繼續搭建blog blog/views.py from django.shortcuts import render_to_response, get_object_or_404 from .models import Blog, BlogType d
【黑金原創教程】【FPGA那些事兒-驅動篇I 】【實驗一】流水燈模組
實驗一:流水燈模組 對於發展商而言,動土儀式無疑是最重要的任務。為此,流水燈實驗作為低階建模II的動土儀式再適合不過了。廢話少說,我們還是開始實驗吧。 圖1.1 實驗一建模圖。 如圖1.1 所示,實驗一有名為 led_funcmod的功能模組。如果無視環境訊號(時鐘訊號還有復位訊號),該功能模組只有
【黑金原創教程】【FPGA那些事兒-驅動篇I 】實驗三:按鍵模組② — 點選與長點選
實驗三:按鍵模組② — 點選與長點選 實驗二我們學過按鍵功能模組的基礎內容,其中我們知道按鍵功能模組有如下操作: l 電平變化檢測; l 過濾抖動; l 產生有效按鍵。 實驗三我們也會z執行同樣的事情,不過卻是產生不一樣的有效按鍵: l 按下有效(點選); l 長按下有效(長點選)。 圖3
【黑金原創教程】【FPGA那些事兒-驅動篇I 】實驗二:按鍵模組①
實驗二:按鍵模組① - 消抖 按鍵消抖實驗可謂是經典中的經典,按鍵消抖實驗雖曾在《建模篇》出現過,而且還惹來一堆麻煩。事實上,筆者這是在刁難各位同學,好讓對方的慣性思維短路一下,但是慘遭口水攻擊 ... 面對它,筆者宛如被甩的男人,對它又愛又恨。不管怎麼樣,如今 I’ll be back,筆者再也不會重複一
【黑金原創教程】【FPGA那些事兒-驅動篇I 】實驗六:數碼管模組
實驗六:數碼管模組 有關數碼管的驅動,想必讀者已經學爛了 ... 不過,作為學習的新儀式,再爛的東西也要溫故知新,不然學習就會不健全。黑金開發板上的數碼管資源,由始至終都沒有改變過,筆者因此由身懷念。為了點亮多位數碼管從而顯示數字,一般都會採用動態掃描,然而有關動態掃描的資訊請怒筆者不再重複。在此,同樣也是
【黑金原創教程】【FPGA那些事兒-驅動篇I 】實驗四:按鍵模組③ — 單擊與雙擊
實驗四:按鍵模組③ — 單擊與雙擊 實驗三我們建立了“點選”還有“長點選”等有效按鍵的多功能按鍵模組。在此,實驗四同樣也是建立多功能按鍵模組,不過卻有不同的有效按鍵。實驗四的按鍵功能模組有以下兩項有效按鍵: l 單擊(按下有效); l 雙擊(連續按下兩下有效)。 圖4.1 單擊有效按鍵,時序示意圖
【黑金原創教程】【FPGA那些事兒-驅動篇I 】實驗五:按鍵模組④ — 點選,長點選,雙擊
實驗五:按鍵模組④ — 點選,長點選,雙擊 實驗二至實驗四,我們一共完成如下有效按鍵: l 點選(按下有效) l 點選(釋放有效) l 長擊(長按下有效) l 雙擊(連續按下有效) 然而,不管哪個實驗都是隻有兩項“功能”的按鍵模組而已,如今我們要建立三項“功能”的按鍵模組,亦即點選(按下有效),長
【黑金原創教程】【FPGA那些事兒-驅動篇I 】實驗二十一:SDRAM模組④ — 頁讀寫 β
實驗二十一:SDRAM模組④ — 頁讀寫 β 未進入主題之前,讓我們先來談談一些重要的體外話。《整合篇》之際,筆者曾經比擬Verilog如何模仿for迴圈,我們知道for迴圈是順序語言的產物,如果Verilog要實現屬於自己的for迴圈,那麼它要考慮的東西除了步驟以外,還有非常關鍵的時鐘。 for(
【黑金原創教程】【FPGA那些事兒-驅動篇I 】實驗十:PS/2模組④ — 普通滑鼠
實驗十:PS/2模組④ — 普通滑鼠 學習PS/2鍵盤以後,接下來就要學習 PS/2 滑鼠。PS/2滑鼠相較PS/2鍵盤,驅動難度稍微高了一點點,因為FPGA(從機)不僅僅是從PS/2滑鼠哪裡讀取資料,FPGA還要往滑鼠裡寫資料 ... 反之,FPGA只要對PS/2鍵盤讀取資料即可。然而,最傷腦筋的地方就在
【黑金原創教程】【FPGA那些事兒-驅動篇I 】實驗十八:SDRAM模組① — 單字讀寫
實驗十八:SDRAM模組① — 單字讀寫 筆者與SDRAM有段不短的孽緣,它作為冤魂日夜不斷糾纏筆者。筆者嘗試過許多方法將其退散,不過屢試屢敗的筆者,最終心情像橘子一樣橙。《整合篇》之際,筆者曾經大戰幾回兒,不過內容都是點到即止。最近它破蠱而出,日夜不停:“好~痛苦!好~痛苦!”地呻吟著,嚇得筆者不敢半夜如
【黑金原創教程】【FPGA那些事兒-驅動篇I 】實驗二十七:TFT模組
實驗二十七:TFT模組 - 顯示 所謂TFT(Thin Film Transistor)就是眾多LCD當中,其中一種支援顏色的LCD,相較古老的點陣LCD(12864笑),它可謂高階了。黑金的TFT LCD除了320×240大小以外,內建SSD1289控制器,同時也是獨立模組。事實上,無論是驅動點陣LCD還
【黑金原創教程】【FPGA那些事兒-驅動篇I 】實驗十三:串列埠模組② — 接收
實驗十三:串列埠模組② — 接收 我們在實驗十二實現了串列埠傳送,然而這章實驗則要實現串列埠接收 ... 在此,筆者也會使用其它思路實現串列埠接收。 圖13.1 模組之間的資料傳輸。 假設我們不考慮波特率,而且一幀資料之間的傳輸也只是發生在FPGA之間,即兩隻模組之間互轉,並且兩塊模組都使用相同的時