在此感謝關(guān)注和簡信支持我的朋友。這一篇涉及的領(lǐng)域——WIFI通訊應(yīng)該是我死磕了最久的一部分孝扛,所以寫起來也變成了讓我最糾結(jié)的地方圾笨。一方面想給大家介紹更多的內(nèi)容乔遮,另一方面又想保持幫助零基礎(chǔ)朋友上手就能搞定的初衷然遏。輾轉(zhuǎn)反側(cè)之下贫途,還是決定力求簡單快速~OK, 各位久等了,下面進(jìn)入正題待侵!
前兩篇我們分享了IOT的主體結(jié)構(gòu)——《我可能做了個(gè)假的IOT(物聯(lián)網(wǎng))》和云端的零基礎(chǔ)演示《大家一起來做IOT大腦——云端構(gòu)建》潮饱,有興趣的朋友可以看一看,以免這篇銜接不上诫给。
言歸正傳
WIFI通訊的目的是什么呢香拉?
低成本,適用場景豐富(在家中狂,學(xué)校凫碌,單位等等)幾乎現(xiàn)在每到一個(gè)房間都能找到WIFI,所以使用胃榕、普及和開發(fā)產(chǎn)品的適用性非常好盛险。而且成本低啊勋又!一個(gè)ESP8266也就10-20元能搞定苦掘,配套上Arduino nano, 電源模塊和自己焊個(gè)電路板,總成本目測不超過50元楔壤。
WIFI通訊的方式如何能夠理解呢鹤啡?
看過前兩篇的朋友都知道,我的套路就是少跟我扯專業(yè)詞匯和原理蹲嚣,能用才是硬道理递瑰。所以這個(gè)通訊方式我把他比喻成,用WIFI模塊打開我們之前創(chuàng)建的網(wǎng)站隙畜,將網(wǎng)站顯示的內(nèi)容當(dāng)做一套可執(zhí)行的密碼抖部,交給Arduino nano去破譯,然后控制繼電器去執(zhí)行议惰∩骺牛看懵了文字版的朋友請看下圖:
一不小心,把整個(gè)的原理圖畫上了......
IOT通訊的必要性
這個(gè)問題最開始也困擾了我好久言询,相信有些細(xì)心的小伙伴們肯定會(huì)琢磨俯萎,按照上圖的原理,為什么不只用arduino進(jìn)行決定讓小5上電倍试,而非要通過云端呢讯屈?這個(gè)還要從我的創(chuàng)業(yè)項(xiàng)目說起,呃县习,說遠(yuǎn)了涮母。主要還是有以下幾個(gè)情景導(dǎo)致了IOT方案優(yōu)于本地處理的方案:
1. 有很多的終端谆趾,分布在不同的地方,如果需要升級控制程序叛本,比如將原來的5號繼電器啟動(dòng)變?yōu)?號繼電器啟動(dòng)沪蓬,誰想去跑完所有的終端拷貝程序呢?
2. 如果你的程序涉密来候,不想拷貝來拷貝去的跷叉,IOT在一定程度上可以幫你把程序從物理層面變成一個(gè)黑箱。
3. 如果反過來营搅,終端需要向云端輸送數(shù)據(jù)云挟,比如環(huán)境參數(shù)等等信息,是不是就需要IOT這種通訊的必要性了呢转质?
4. 更Fashion一點(diǎn)园欣,你想用手機(jī)控制家里的空調(diào),熱水器休蟹,空氣凈化器沸枯,關(guān)窗,澆花赂弓,喂食阿貓阿狗绑榴,是不是都有需要用這個(gè)IOT了呢?
下面是干貨:
本地設(shè)備硬件準(zhǔn)備
1. Arduino nano: 成本低盈魁,接口夠用翔怎,性價(jià)比比較好,uno有點(diǎn)貴了备埃,mini燒錄不方便姓惑,當(dāng)然土豪上Arduino Mega請自便。
2. ESP8266或者任意成熟串口WIFI模塊按脚,為了方便大家使用,推薦具備httpd_client功能的模塊或者相似功能的設(shè)備敦冬,具體產(chǎn)品為了避免推廣嫌疑就不在文中提了辅搬,留言吧。為什么要這種功能呢脖旱?因?yàn)榭梢员苊馐褂么罅緼T命令堪遂,簡單的設(shè)置WIFI模塊,就可以通過串口向WIFI模塊發(fā)送參數(shù)(網(wǎng)址最后一個(gè)”/“后邊的內(nèi)容)萌庆,從而實(shí)現(xiàn)WIFI模塊自動(dòng)發(fā)送全部內(nèi)容的功能溶褪。
舉個(gè)例子:
如果用ESP8266實(shí)現(xiàn)訪問云端的功能,流程圖如下:
如果使用有httpd_client功能的WIFI模塊践险,流程圖如下:
很簡單有沒有猿妈?吹菱??有沒有彭则?就問你有沒有鳍刷?
注意:
1. 當(dāng)然這么簡單的實(shí)現(xiàn)之前也需要對HTTPD_CLIENT進(jìn)行上電設(shè)置的,但只需要設(shè)置一次就可以了俯抖,不用每次開機(jī)設(shè)置的哦~相對于ESP8266的AT命令模式簡單很多输瓜,但是靈活性就不夠咯,HTTPD尤其是WIFI的登陸芬萍,設(shè)置后就不能更改尤揣,每次更改都需要重置,比較費(fèi)勁了柬祠。設(shè)置方法需要依據(jù)模塊廠商的說明書來做北戏,一般比較簡單。
2).設(shè)置HTTPD_CLIENT的時(shí)候瓶盛,要求設(shè)置訪問的服務(wù)器最欠,大家就把上次開發(fā)的sae云端的地址填入就可以了(http://XXXXX.applinzi.com)
3. 電源板:3.3V電源*1+5V電源*1。千萬千萬記住惩猫,不要將Arduino nano連接到電腦上之后芝硬,再將nano上的3V電源接到WIFI模塊上,大概率出現(xiàn)信號不穩(wěn)定轧房,結(jié)果就是收不到信息或者返回?cái)?shù)據(jù)不全拌阴!
硬件連線
假設(shè)大家有自己焊接電路板,了解電壓奶镶,電流和數(shù)學(xué)比較大小的能力迟赃。不太了解的可以私信,如果感興趣的朋友多厂镇,我再開一篇幫大家打下基礎(chǔ)纤壁。
這是個(gè)簡單的示意圖,各位有基礎(chǔ)的捺信,水平高的朋友見諒酌媒,為了避免零基礎(chǔ)的朋友心里有陰影,咱們怎么簡單怎么來哈迄靠。Altium Designer 之類的以后有機(jī)會(huì)再上哈秒咨。
怎么樣,會(huì)接線了么掌挚?如果有問題雨席,歡迎留言或者簡信。
敲黑板7褪健6咐濉抽米!注意正負(fù)極一定不要,千萬不要接反了雏亚,不然冒煙是小缨硝,板子燒了事大。
開始編程
假設(shè)你已經(jīng)設(shè)置好了WIFI模塊的httpd_client功能罢低。不會(huì)的私信或者留言吧查辩,新定的配件還沒到,到了發(fā)帖演示給大家看怎么設(shè)置网持。
敲黑板宜岛!注意啦!
知識(shí)點(diǎn)1:AltSoftSerial這個(gè)功能功舀。arduino nano有一個(gè)硬件串口萍倡,同時(shí)還可以有一個(gè)虛擬的串口。我個(gè)人比較喜歡硬件串口接電腦辟汰,可以監(jiān)控信息收發(fā)列敲,所以用虛擬串口連接WIFI模塊。
貼程序啦帖汞!
就是這么簡單戴而!功能是什么呢?就是通過電腦鍵盤向串口監(jiān)視器(arduino IDE——工具——串口監(jiān)視器)輸入”i_was_pressed“翩蘸,然后被Arduino的Serial.read()讀取到所意,再由Arduino的wifiSerial.print出去,相當(dāng)于在瀏覽器里鍵入地址然后按回車(此處參見上一篇IOT大腦)催首。之后將云端返回來的網(wǎng)頁內(nèi)容由wifiSerial.read()讀取到Arduino, 再通過Arduino的Serial.print輸出扶踊,最終呈現(xiàn)到串口監(jiān)視器中。
那郎任,現(xiàn)在快將電路板連好秧耗,把nano的串口線插到電腦USB口里,打開arduino IDE——工具——串口監(jiān)視器舶治,然后輸入”iot“試試绣版,看看串口監(jiān)視器里會(huì)蹦出來什么有意思的東西!
另外歼疮,有基礎(chǔ)有興趣的兔子們可以嘗試添加更多的擴(kuò)展,來讓自己的物聯(lián)網(wǎng)實(shí)現(xiàn)更多功能
好啦诈唬,寫在最后韩脏。作為一個(gè)工科生,文字的表達(dá)有時(shí)候真的是累覺不愛铸磅,感覺很多時(shí)候意猶未盡赡矢,有些有說不清杭朱。不知道大家有沒有興趣看視頻?吹散?我發(fā)現(xiàn)簡書的大課堂的機(jī)制不錯(cuò)弧械,想試試,不知道有沒有同志感興趣空民?這樣交流演示和問題處理會(huì)更有效率和直觀刃唐。大家說呢?