前言
最近這兩三年童番,“物聯(lián)網(wǎng)”一詞開始進(jìn)入我們普通大眾的耳朵精钮。但對(duì)大多人來說這似乎還是一個(gè)挺高大上的事物。隨著智能家居產(chǎn)品的興起剃斧,其實(shí)物聯(lián)網(wǎng)已經(jīng)在逐漸走進(jìn)我們的生活轨香,比如家里的可以遠(yuǎn)程控制的掃地機(jī)器人、智能插座及空調(diào)幼东。這些都是物聯(lián)網(wǎng)給我們生活帶來的便利臂容,物聯(lián)網(wǎng)將電器加上能夠連接互聯(lián)網(wǎng)的設(shè)備,使之成為互聯(lián)網(wǎng)中的一部分根蟹,方便我們隨時(shí)按需控制脓杉。
那么,我們自己可以制作物聯(lián)網(wǎng)產(chǎn)品嗎简逮?答案是肯定的球散。今天筆者就要與大家分享一個(gè)低成本,而且簡單的物聯(lián)網(wǎng)產(chǎn)品的制作方法散庶。
準(zhǔn)備材料
(1)WeMos D1開發(fā)板一塊:WeMos是一塊基于ESP8266的Arduino UNO 兼容Wi-Fi開發(fā)板蕉堰,這么說起來似乎有點(diǎn)難懂。我們可以把它理解成是一塊帶Wi-Fi功能的Arduino UNO開發(fā)板悲龟。
(2)電子元器件若干屋讶,如:5mm LED,LM35溫度傳感器须教,DHT11溫濕度傳感器等皿渗。
(3)智能手機(jī)一部(蘋果或安卓手機(jī)):用于遠(yuǎn)程控制WeMos D1主控板。
準(zhǔn)備工作
安裝Arduino
先從Arduino官網(wǎng)下載最新版的Arduino(下載地址為:http://www.arduino.cc)没卸。雙擊arduino-1.8.2-windows.exe安裝Arduino官方版本羹奉,點(diǎn)擊下一步,按照默認(rèn)參數(shù)安裝即可约计。
安裝ESP8266庫
打開Arduino軟件,找到文件-首選項(xiàng)迁筛,在首選項(xiàng)的附加開發(fā)板管理器網(wǎng)址中輸入以下地址:http://arduino.esp8266.com/stable/package_esp8266com_index.json煤蚌,如圖 1所示。
再依次點(diǎn)擊工具-開發(fā)板-開發(fā)板管理器细卧,搜索關(guān)鍵詞“8266”尉桩,搜到esp8266后點(diǎn)擊安裝,稍等幾分鐘后贪庙,該開發(fā)板庫文件就會(huì)安裝完畢蜘犁,如圖 2所示。
安裝完畢后止邮,再次點(diǎn)擊工具-開發(fā)板这橙,就可以找到WeMos D1(Retired)奏窑,單擊選中該選項(xiàng)。
安裝完Esp8266開發(fā)庫之后屈扎,Arduino IDE已經(jīng)可以為8266類開發(fā)板上傳程序埃唯,但是為了可以使用Blynk平臺(tái), 還需要安裝Blynk庫鹰晨。從GitHub下載最新版的Blynk庫墨叛,下載地址為https://github.com/blynkkk/blynk-library/releases/latest。再將Blynk庫解壓到Arduino項(xiàng)目文件夾模蜡,項(xiàng)目文件夾路徑可以通過Arduino軟件中文件-首選項(xiàng)找到漠趁,如圖 3所示。解壓后項(xiàng)目文件夾結(jié)構(gòu)如圖 4所示忍疾。
安裝Blynk APP并初始設(shè)置
安卓用戶掃描下方二維碼安裝Blynk App棚潦。
iOS用戶可以在App Store 中搜索Blynk并安裝。
安裝好App后膝昆,打開App后點(diǎn)擊Create New Account(注冊(cè)新用戶)丸边,然后在注冊(cè)頁面填寫自己的郵箱和密碼即可完成注冊(cè)。首次登錄后可以看到App內(nèi)暫時(shí)還沒有任何項(xiàng)目荚孵,點(diǎn)擊Create New Project(創(chuàng)建新項(xiàng)目)妹窖。在創(chuàng)建項(xiàng)目頁面填寫項(xiàng)目基本信息,其中的CHOOSE DEVICE (選擇設(shè)備)要選擇WeMos D1收叶,下面的CONNECTION TYPE(連接類型)選擇Wi-Fi并保存骄呼。保存之后,App會(huì)提示授權(quán)碼已經(jīng)生成并發(fā)送到了你的郵箱判没。App端的準(zhǔn)備工作就這么多蜓萄,只要你耐心一步一步操作,相信不會(huì)難倒你澄峰,步驟如下圖所示嫉沽。
牛刀小試:遠(yuǎn)程開燈
一切準(zhǔn)備就緒之后,我們就可以通過Blynk來遠(yuǎn)程控制一盞小燈啦俏竞。在控制小燈的過程中绸硕,我們一起來了解它的工作原理。
生成案例代碼
首先利用Blynk案例生成器(https://examples.blynk.cc/)產(chǎn)生一段簡單的范例程序魂毁。網(wǎng)站左側(cè)的設(shè)置如圖 6所示玻佩,其中的Auth Token是在App端創(chuàng)建項(xiàng)目之后郵箱中收到的授權(quán)碼,將它復(fù)制進(jìn)來即可席楚。
![圖 6在Blynk案例生成器中填寫授權(quán)碼](http://upload-images.jianshu.io/upload_images/10215886-7798b2c16d858263.png?!將右側(cè)生成的代碼全部復(fù)制到Arduino IDE中咬崔,在IDE中的選擇開發(fā)板信息,其中開發(fā)板選擇WeMos D1(Retired)烦秩,CPU頻率選擇80MHz垮斯,Upload Speed選擇115200郎仆,端口選擇WeMos D1所在的端口,設(shè)置如圖 7所示甚脉。
將程序中的ssid修改成你當(dāng)前位置的Wi-Fi名稱丸升,將pass修改成該Wi-Fi的密碼,注意此處的引號(hào)一定要保留牺氨,如圖 8所示狡耻。
點(diǎn)擊上傳按鈕就可以將程序上傳到WeMos D1開發(fā)板中,當(dāng)在Arduino IDE中看到如圖 9信息時(shí)表示程序上傳成功猴凹。
App端項(xiàng)目設(shè)置
開發(fā)板的程序上傳好之后夷狰,接下來需要設(shè)置手機(jī)上的App端。這樣通過App就可以控制開發(fā)板了郊霎。點(diǎn)擊空白處增加組件沼头。選擇第一個(gè)組件——Button,然后在按鈕設(shè)置界面設(shè)置按鈕信息书劝。WeMos D1板載的LED在D5口进倍,所以在output處選擇D5,MODE可以選擇PUSH(按住有效)或者SWITCH(按下有效)购对,再設(shè)置按鈕標(biāo)簽文本猾昆。
全部設(shè)置完畢后,返回主界面骡苞,點(diǎn)擊右上角的三角圖標(biāo)垂蜗,啟動(dòng)該項(xiàng)目。然后按下自己創(chuàng)建的按鈕試一試解幽,當(dāng)你按下時(shí)贴见,WeMos D1開發(fā)板上的SCK燈就會(huì)點(diǎn)亮;松開按鈕躲株,SCK燈就會(huì)熄滅片部,步驟如下圖所示。
通過這個(gè)小項(xiàng)目徘溢,是不是發(fā)現(xiàn)控制一盞小燈其實(shí)很簡單吞琐?除了修改幾個(gè)參數(shù),我們自己并不需要寫一行代碼然爆。
當(dāng)你完成這個(gè)實(shí)例之后,你還可以試著創(chuàng)建一個(gè)Slider組件黍图。OUTPUT也選擇D5曾雕,再啟動(dòng)該項(xiàng)目,拖動(dòng)slider的滑塊助被,觀察SCK燈剖张,是不是還可以用這個(gè)滑塊控制SCK燈的亮度呢切诀?slider組件可以輸出PWM值,而WeMos D1開發(fā)板除了D0口搔弄,其他接口全部支持PWM輸出幅虑,因此我們就可以通過一個(gè)slider組件來控制D5接口的LED亮度。如果D5接口連接的是一個(gè)小風(fēng)扇顾犹,那么是不是也可以用該方法控制風(fēng)速呢倒庵?
程序剖析
當(dāng)我們實(shí)現(xiàn)了遠(yuǎn)程控制開發(fā)板上的LED之后,我們?cè)賮硌芯砍绦蜢潘ⅲ崂硭悸贰?br> 刪除注釋之后擎宝,我們發(fā)現(xiàn),在WeMos D1開發(fā)板上傳的程序只有短短的16行浑玛,那么這16行分別有什么含義呢绍申?
#define BLYNK_PRINT Serial//宏定義
#include <ESP8266WiFi.h>//導(dǎo)入庫文件
#include <BlynkSimpleEsp8266.h>//導(dǎo)入庫文件
char auth[] = "YourAuthToken";//設(shè)置授權(quán)碼,該授權(quán)碼是App端創(chuàng)建項(xiàng)目后生產(chǎn)的唯一的授權(quán)碼顾彰。手機(jī)app通過該授權(quán)碼與開發(fā)板通信极阅。
char ssid[] = "YourNetworkName";//Wi-Fi名稱
char pass[] = "YourPassword";//Wi-Fi密碼
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);//連接到blynk云
}
void loop()
{
Blynk.run();//blynk開始工作
}
上面兩個(gè)實(shí)例中,我們并沒有修改代碼涨享,修改的只是App端的設(shè)置筋搏。其實(shí)這16行程序可以看做是多用途程序,在對(duì)I/O口進(jìn)行簡單讀寫操作時(shí)灰伟,都可以用這段程序拆又。
如果我們繼續(xù)推廣,還可以在此基礎(chǔ)上進(jìn)行拓展栏账。如果想要用WeMos D1遠(yuǎn)程控制家里的一盞臺(tái)燈帖族,只需要再加繼電器模塊即可。將繼電器的控制端接在WeMos D1的D5端口挡爵,將臺(tái)燈的火線剪斷竖般,接入繼電器即可,接線如圖 13所示茶鹃。
看到這里涣雕,我們已經(jīng)可以利用Blynk制作物聯(lián)網(wǎng)應(yīng)用,實(shí)現(xiàn)很多神奇的功能了闭翩,而實(shí)現(xiàn)這些功能并不需要太多的代碼挣郭。
遠(yuǎn)程獲取數(shù)據(jù)
在物聯(lián)網(wǎng)應(yīng)用中,除了簡單的控制以外疗韵,我們也常常會(huì)有其他的需求恋拷。比如遠(yuǎn)程獲取溫度就是一種常用的情況痊硕。當(dāng)我們?nèi)嗽谕饷媛茜瑁Mㄟ^手機(jī)查看家里的溫度咒彤。此時(shí),該如何借助Blynk遠(yuǎn)程讀取LM35溫度傳感器的數(shù)據(jù)呢?
硬件連接
LM35溫度傳感器是一款線性模擬電壓傳感器,該傳感器的輸出電壓與攝氏溫度呈線性關(guān)系,0℃時(shí)輸出電壓為0V叠赦,每升高1℃,輸出電壓增加10mv革砸。WeMos D1開發(fā)板上支持模擬輸入的引腳只有A0除秀,那么就可以將LM35溫度傳感器連接在A0引腳。溫度與A0口讀數(shù)之間的換算公式為:溫度=A0讀數(shù)×3.3÷1024×100业岁。(注:WeMos D1開發(fā)板的A0接口輸出電壓為3.3V)
APP端設(shè)置
在手機(jī)端需要設(shè)置一個(gè)可以顯示數(shù)值的模塊鳞仙,這個(gè)數(shù)值是從開發(fā)板傳輸過來的。在App端可以增加Value Display 或者Labeled Value組件笔时,前者只能顯示數(shù)值棍好,后者可以標(biāo)注數(shù)值名稱及單位。
在此允耿,選擇Labeled Value組件借笙,在組件設(shè)置中設(shè)置參數(shù),如下圖所示较锡。其中最關(guān)鍵的是要將INPUT一欄設(shè)置成V1业稼,此處要與程序中設(shè)置的端口保持一致。
程序剖析
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
char auth[] = "xxxxxxxxxxx";//授權(quán)碼
char ssid[] = "wifi-ssid";//wifi名稱
char pass[] = "wifi-password";//wifi密碼
BlynkTimer timer;
int value,Temperature;
void myTimerEvent()
{
value=analogRead(A0);//獲取到A0口測得數(shù)據(jù)
Temperature=value3.3/1024100;//計(jì)算溫度值
Blynk.virtualWrite(V1, Temperature);//將溫度值寫入V1端口
}
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
timer.setInterval(1000L, myTimerEvent);//每隔1秒執(zhí)行一次myTimerEvent
}
void loop()
{
Blynk.run();
timer.run();
}
程序效果
將程序上傳后蚂蕴,開啟App端低散,則可以看到溫度組件可以顯示當(dāng)前測到的溫度。如果給傳感器適當(dāng)加熱骡楼,APP端的數(shù)值馬上就會(huì)發(fā)生變化熔号。如果想要在App端顯示溫度的變化曲線,還可以增加History Graph組件鸟整,利用該組件就可以很方便地顯示溫度變化曲線了引镊,效果如下圖所示。
如果想要把記錄的數(shù)值導(dǎo)出來篮条,可以在History Graph組件上向左滑動(dòng)弟头,會(huì)出現(xiàn)導(dǎo)出數(shù)據(jù)和擦除數(shù)據(jù)選項(xiàng),如圖 17所示涉茧。選擇導(dǎo)出數(shù)據(jù)赴恨,你就可以收到一份郵件,郵件中的.csv文件中包括了你導(dǎo)出的數(shù)據(jù)伴栓,有了這份數(shù)據(jù)后嘱支,如果想要做一些數(shù)據(jù)分析就變得很方便了蚓胸。
幾十年前竺可楨爺爺記錄氣象日記需要每天觀察記錄挣饥,而如今除师,我們只需要制作一個(gè)簡單的物聯(lián)網(wǎng)應(yīng)用就可以輕松解決了。
結(jié)語
通過幾個(gè)簡單的例子扔枫,相信你已經(jīng)初步掌握了物聯(lián)網(wǎng)應(yīng)用的開發(fā)了吧汛聚。借助常用的傳感器,制作一些炫酷的作品短荐,讓物聯(lián)網(wǎng)技術(shù)盡早走進(jìn)你的生活吧倚舀!
(本文發(fā)表于《無線電》2017年10月刊)