ESP8266-01是一款很強大的模塊,能夠知足咱們任何IOT項目的需求。自發布以來,它已經造成了一個很強大的羣體,並演變成一個易於使用、價格低廉且功能強大的Wi-Fi模塊。另外一個更受歡迎的開源平臺是Arduino開發板,圍繞該平臺,已經創建起大量的項目。將這兩個平臺相結合將爲許多創新項目打開大門,所以在本教程中,咱們將學習如何將ESP8266-01模塊與Arduino進行鏈接。這樣就能夠在Arduino開發板和互聯網之間發送或接收數據。html
爲了實現目標,咱們將使用ESP8266-01經過一個API接口從互聯網中讀取時間、日期、溫度和溼度。而後將這些值發送到Arduino板,並將它們顯示在LCD顯示屏1602上。聽起來是否是很酷!那麼讓咱們開始吧。git
所需的材料github
● Arduino開發板編程
● ESP8266-01模塊json
● 帶有3.3V選項的FTDI編程電路板api
● 液晶顯示屏1602瀏覽器
● 電位器安全
● 按鈕ide
● 鏈接導線函數
● 麪包板
如何工做的?
在咱們深刻研究以前,瞭解這件事情的實際狀況很是重要。咱們須要從ESP8266-01模塊的基礎開始。使用Arduino IDE對ESP8266編程,並將編寫代碼以使用API經過http請求讀取JSON文件。而後將解析這個JSON文件,從完整的JSON文件中只提取所需的信息。
一旦信息解析完成,咱們將使用串行通訊將其打印出來。這些串口線鏈接到Arduino,以便Arduino能夠讀取ESP8266發送的信息。一旦信息被讀取和處理,咱們將在LCD液晶屏上進行顯示。
若是你尚未徹底理解,不要緊,咱們將在本文的其他部分進行介紹。
編程ESP8266-01
本教程假定您有一些ESP8266模塊的使用經驗。若是沒有的話,建議閱讀如下三個教程以更好地理解。
● 使用Arduino IDE編程ESP8266-01並進行燒寫程序
在這裏,咱們將使用Arduino IDE編程ESP8266-01模塊。硬件方面,咱們使用3.3V的FTDI板編程ESP8266,由於它可使硬件變得很是簡單。下圖顯示了將ESP8266與FTDI板鏈接的電路圖。
確保知足如下條件
1. ESP8266-01模塊只支持3.3V,不要使用5V。因此只能在3.3V模式下設置FTDI。
2. 編程模式下,GPIO_0必須接地
3. 復位引腳應經過按鈕鏈接到接地引腳。上傳代碼以前應該按下該按鈕。每次按下該按鈕時,ESP8266-01模塊上的藍色LED指示燈將變爲高電平,表示模塊已復位。
鏈接完成後,打開Arduino IDE並檢查是否能夠成功上傳示例程序。若是您不肯定如何使用Arduino IDE將程序上傳至ESP8266,請閱讀Arduino編程ESP8266進行學習。
如今讓咱們進入實際的程序,咱們將從互聯網獲取數據並將其發送給Arduino。完整的程序在本文末尾處給出,我將其分開對其進行解釋。該程序編譯時還須要Arduino JSON庫,因此若是您還沒有將該庫添加到Arduino IDE中,則能夠經過從Github的Arduino JSON庫下載並進行添加。
ESP8266必須鏈接互聯網才能得到有關日期、時間、溫度和溼度的數據。因此你在下面的代碼中必須提供SSID和密碼,容許它來鏈接到你的Wi-Fi。
在setup()函數中,咱們檢查ESP是否可以鏈接到Wi-Fi,若是沒有,只需在串行監視器上打印「Connecting ..」,它將一直等待。
下一步是很是重要的一步。若是Wi-Fi鏈接成功,咱們必須調用http get請求從互聯網讀取JSON文件。在本教程中,我使用wunderground.com提供的API。所以,若是您打算使用相同的API,則能夠進入連接並註冊免費API密鑰或使用您選擇的任何API。一旦你完成了你的API,你將最終獲得一個以下所示的連接
http://api.wunderground.com/api/abcd124578qwert/conditions/q/IN/Chennai.json
注意:我已更改此連接的API密鑰,所以這不會起做用。請注意保持您的API密鑰安全,不要共享。
個人API用於獲取Chennai的天氣數據。您可使用任何API。可是當你在任何瀏覽器中加載API時,它應該返回一個JSON文件。例如個人API返回如下JSON文件
您可能會返回具備不一樣數據的文件。咱們能夠經過讀取它來檢查ESP8266是否也收到了這個JSON文件,而後在串行監視器上使用打印JSON,代碼以下:
我已經註釋掉這些代碼,由於它們僅用於測試。一旦確保ESP8266可以獲取JSON數據,就須要對數據進行解析。正如你所看到的,這些數據量很大,除了咱們須要的數據如日期、時間、溫度和溼度外,大部分數據都是無用的。
因此咱們使用JSON Arduino庫來分離須要的值並將其存儲在一個變量中。這種方法是可行的,由於JSON文件中的值被分配爲名稱值對。因此這個名字是一個字符串,它將保存咱們所需的值。