在此感謝關注和簡信支持我的朋友。這一篇涉及的領域——WIFI通訊應該是我死磕了最久的一部分,所以寫起來也變成了讓我最糾結的地方。一方面想給大家介紹更多的內容,另一方面又想保持幫助零基礎朋友上手就能搞定的初衷。輾轉反側之下,還是決定力求簡單快速~OK, 各位久等了,下面進入正題!
前兩篇我們分享了IOT的主體結構——《我可能做了個假的IOT(物聯網)》和云端的零基礎演示《大家一起來做IOT大腦——云端構建》,有興趣的朋友可以看一看,以免這篇銜接不上。
言歸正傳
WIFI通訊的目的是什么呢?
低成本,適用場景豐富(在家,學校,單位等等)幾乎現在每到一個房間都能找到WIFI,所以使用、普及和開發產品的適用性非常好。而且成本低啊!一個ESP8266也就10-20元能搞定,配套上Arduino nano, 電源模塊和自己焊個電路板,總成本目測不超過50元。
WIFI通訊的方式如何能夠理解呢?
看過前兩篇的朋友都知道,我的套路就是少跟我扯專業詞匯和原理,能用才是硬道理。所以這個通訊方式我把他比喻成,用WIFI模塊打開我們之前創建的網站,將網站顯示的內容當做一套可執行的密碼,交給Arduino nano去破譯,然后控制繼電器去執行。看懵了文字版的朋友請看下圖:
一不小心,把整個的原理圖畫上了......
IOT通訊的必要性
這個問題最開始也困擾了我好久,相信有些細心的小伙伴們肯定會琢磨,按照上圖的原理,為什么不只用arduino進行決定讓小5上電,而非要通過云端呢?這個還要從我的創業項目說起,呃,說遠了。主要還是有以下幾個情景導致了IOT方案優于本地處理的方案:
1. 有很多的終端,分布在不同的地方,如果需要升級控制程序,比如將原來的5號繼電器啟動變為6號繼電器啟動,誰想去跑完所有的終端拷貝程序呢?
2. 如果你的程序涉密,不想拷貝來拷貝去的,IOT在一定程度上可以幫你把程序從物理層面變成一個黑箱。
3. 如果反過來,終端需要向云端輸送數據,比如環境參數等等信息,是不是就需要IOT這種通訊的必要性了呢?
4. 更Fashion一點,你想用手機控制家里的空調,熱水器,空氣凈化器,關窗,澆花,喂食阿貓阿狗,是不是都有需要用這個IOT了呢?
下面是干貨:
本地設備硬件準備
1. Arduino nano: 成本低,接口夠用,性價比比較好,uno有點貴了,mini燒錄不方便,當然土豪上Arduino Mega請自便。
2. ESP8266或者任意成熟串口WIFI模塊,為了方便大家使用,推薦具備httpd_client功能的模塊或者相似功能的設備,具體產品為了避免推廣嫌疑就不在文中提了,留言吧。為什么要這種功能呢?因為可以避免使用大量AT命令,簡單的設置WIFI模塊,就可以通過串口向WIFI模塊發送參數(網址最后一個”/“后邊的內容),從而實現WIFI模塊自動發送全部內容的功能。
舉個例子:
如果用ESP8266實現訪問云端的功能,流程圖如下:
如果使用有httpd_client功能的WIFI模塊,流程圖如下:
很簡單有沒有???有沒有?就問你有沒有?
注意:
1. 當然這么簡單的實現之前也需要對HTTPD_CLIENT進行上電設置的,但只需要設置一次就可以了,不用每次開機設置的哦~相對于ESP8266的AT命令模式簡單很多,但是靈活性就不夠咯,HTTPD尤其是WIFI的登陸,設置后就不能更改,每次更改都需要重置,比較費勁了。設置方法需要依據模塊廠商的說明書來做,一般比較簡單。
2).設置HTTPD_CLIENT的時候,要求設置訪問的服務器,大家就把上次開發的sae云端的地址填入就可以了(http://XXXXX.applinzi.com)
3. 電源板:3.3V電源*1+5V電源*1。千萬千萬記住,不要將Arduino nano連接到電腦上之后,再將nano上的3V電源接到WIFI模塊上,大概率出現信號不穩定,結果就是收不到信息或者返回數據不全!
硬件連線
假設大家有自己焊接電路板,了解電壓,電流和數學比較大小的能力。不太了解的可以私信,如果感興趣的朋友多,我再開一篇幫大家打下基礎。
這是個簡單的示意圖,各位有基礎的,水平高的朋友見諒,為了避免零基礎的朋友心里有陰影,咱們怎么簡單怎么來哈。Altium Designer 之類的以后有機會再上哈。
怎么樣,會接線了么?如果有問題,歡迎留言或者簡信。
敲黑板!!!注意正負極一定不要,千萬不要接反了,不然冒煙是小,板子燒了事大。
開始編程
假設你已經設置好了WIFI模塊的httpd_client功能。不會的私信或者留言吧,新定的配件還沒到,到了發帖演示給大家看怎么設置。
敲黑板!注意啦!
知識點1:AltSoftSerial這個功能。arduino nano有一個硬件串口,同時還可以有一個虛擬的串口。我個人比較喜歡硬件串口接電腦,可以監控信息收發,所以用虛擬串口連接WIFI模塊。
貼程序啦!
就是這么簡單!功能是什么呢?就是通過電腦鍵盤向串口監視器(arduino IDE——工具——串口監視器)輸入”i_was_pressed“,然后被Arduino的Serial.read()讀取到,再由Arduino的wifiSerial.print出去,相當于在瀏覽器里鍵入地址然后按回車(此處參見上一篇IOT大腦)。之后將云端返回來的網頁內容由wifiSerial.read()讀取到Arduino, 再通過Arduino的Serial.print輸出,最終呈現到串口監視器中。
那,現在快將電路板連好,把nano的串口線插到電腦USB口里,打開arduino IDE——工具——串口監視器,然后輸入”iot“試試,看看串口監視器里會蹦出來什么有意思的東西!
另外,有基礎有興趣的兔子們可以嘗試添加更多的擴展,來讓自己的物聯網實現更多功能
好啦,寫在最后。作為一個工科生,文字的表達有時候真的是累覺不愛,感覺很多時候意猶未盡,有些有說不清。不知道大家有沒有興趣看視頻??我發現簡書的大課堂的機制不錯,想試試,不知道有沒有同志感興趣?這樣交流演示和問題處理會更有效率和直觀。大家說呢?