2021/11/29 更新: 這篇文章裡面的內容雖然依然可以實現,但隨著技術的發展,現在已經有更好的方式可以實現文章中的範例了,而且價格上也便宜擴充性也更好建議可以參考下面幾篇文章的教學

SPIFFS安裝 :  https://karta146831.pixnet.net/blog/post/334863831-esp32--%e5%a4%96%e6%8e%9bspiffs-%e5%ae%89%e8%a3%9d%e6%95%99%e5%ad%b8

ESP8266 ESP32 AsyncWebServer(非同步伺服器)控制LEDhttps://karta146831.pixnet.net/blog/post/334863888-esp32-asyncwebserver%28%e9%9d%9e%e5%90%8c%e6%ad%a5%e4%bc%ba%e6%9c%8d%e5%99%a8%29-%e5%9f%ba%e7%a4%8e%e6%95%99%e5%ad%b8%e5%90%ab%e7%af%84

ESP8266 ESP32 AsyncWebServer 顯示數值(局部刷新) : https://karta146831.pixnet.net/blog/post/334959285-esp8266-esp32-asyncwebserver-%e9%a1%af%e7%a4%ba%e6%95%b8%e5%80%bc%28%e5%b1%80%e9%83%a8%e5%88%b7%e6%96%b0%29%e5%90%ab

 

ESP32-Webserver(非同步)透過Websocket傳送JSON格式:

https://karta146831.pixnet.net/blog/post/335437088-esp32-webserver%28%e9%9d%9e%e5%90%8c%e6%ad%a5%29%e9%80%8f%e9%81%8ewebsocket%e5%82%b3%e9%80%81json%e6%a0%bc%e5%bc%8f

 

網路上有很多關於ESP的教學文,但大多數都是只有ESP本身的腳位的運用,好比說做了一個簡單的網頁控制LED...等等。

但個人認為ESP的腳位數那麼少,控個兩三隻GPIO真的沒甚麼意義,所以我這邊會以ESP為WebSever加上一片Arduino MEGA2560

(負責接收跟傳值),然後透過這兩個晶片的TXRX來彼此傳接收資料,用這個框架來介紹我認為比較有實際面的運用。

我這邊會以簡單的作法及操作來寫,保證你照做不會有問題,這篇我會用ESP01來做一個簡單的範例,之後硬體可能會改用NodeMCU但程式都是

可以互燒的,所以不用擔心,只是我銜接線麻煩所以才這麼做的

1.首先請先照我上面的接線方式把ESP跟UNO接在一起,然後記得把UNO上面那個長長的IC拔起來,這個是我們要燒程式進ESP01

裡面所要用的接法

 

https://drive.google.com/open?id=1E0dxA-dzPz041mCeEUm6nsSRP492RD0J

上面是範例要用的程式,先把他載下來然後把燒錄Arduino的線皆在剛剛上圖接的電路,電腦正常會讀的到

接下來是燒錄設定,照我圖上面的設定,我這邊就不附匯入ESP涵式庫的圖了,點圖片上的"草稿碼"會看到"匯入程式庫"

後會看到"管理程式庫",點下去搜尋ESP8266點第一個下去安裝就可以了

然後有一點要注意,記的要把程式碼裡面的SSID跟Password換成你的手機熱點,(程式在蠻上面的很好找)然後按下燒錄(燒錄過程有點久是正常的)

燒錄完後請不要拔掉剛剛燒路ESP的燒錄線,請在準備另一條燒錄線來燒MEGA2560

程式的壓縮檔檔名都有寫是要燒在哪一邊的,請不要犯蠢

燒完MEGA2560的程式後兩條都請先不要拔掉燒錄線

現在請拿出你的安卓手機去PLAY商店載Service Browser  這個APP

你如果都照做的話,你就會在APP上看到你Sever的IP了

現在打開瀏覽器輸入APP看到的Sever IP,如果你是用電腦看要記的電腦也要連你手機的WIFI喔

然後你就會看到跟我一樣的畫面了,上面的亮度不要理他,是我懶的做忘記刪,重點是開關,這個範例我用比較簡單好懂的方式說明一下,就是我按下網頁

上的按鈕他會傳一個值給晶片,然後晶片收到跟判斷式相符的字後呢,在透過TXRX傳值給Arduino MEGA 2560  然後收到符合的字時在序列副監控式窗跳出字

如果你仔細觀察MEGA的程式你會發現setup() 的地方有兩組序列傳輸。115200是板子自身的胞率,而9600則是跟ESP溝通的胞率,要記住一條序列副只能跟一邊溝通喔

開跟關分別傳的是字元 "a"跟"b"  而我MEGA只有寫收到"a"才跳出提示,記得MEGA的監控視窗的胞率要調成115200阿,不然到時候就沒辦法正常顯示

講到這邊有經驗的就會知道怎麼改了。 當然也會有人有疑問不拔掉序列副這東西沒應用價值之類的,

答案當然是可已拔掉拉,但如過要很多人自己接電路,觀念不夠得可能真的接不出來,所以我把圖都接好了,只要照接就可以了,再來是把MEGA收到字元"a"的時候要做的事情裡面寫讓下圖的LED腳位HIGH動作就完成啦(寫個燈泡亮滅應該不難所以我這邊就簡單講一下帶過)

我寫這篇文章不太想要用很多人聽不懂的術語或是用對初階的程式設計者看不懂的Code,因為我覺得沒意義,

我希望這篇文章盡可能地帶實務而不是原理,寫這篇文章是希望真的能幫助到人,拜託高手不要來批評但歡迎糾正我的錯誤

裡面有些程式跟線路架構是

參考:

超圖解物聯網IoT實作入門   作者: 趙英傑   

這本真的寫得很棒,一些觀念的東西如果想要了解的話,很推薦大家去看

 

arrow
arrow
    創作者介紹
    創作者 凶王 的頭像
    凶王

    凶王的部落

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