Blynk是一項物聯(lián)網(wǎng)(IoT)服務(wù),旨在使遠(yuǎn)程控制和從您的設(shè)備中讀取傳感器數(shù)據(jù)的速度盡可能快和容易。在本文中,我們將確切介紹Blynk的含義,工作方式,并提供兩個簡短的示例項目,說明如何通過NodeMCU和Raspberry Pi開發(fā)板使用該服務(wù)。
開始開發(fā)從未如此簡單。近年來,使用微控制器和物聯(lián)網(wǎng)設(shè)備的智能對象迅速普及。諸如Arduino或Raspberry Pi之類的開發(fā)板可用于控制一切,從家里的電源插座到運(yùn)動激活的圣誕節(jié)裝飾品。
一個可能引起初學(xué)者問題的領(lǐng)域是編碼和聯(lián)網(wǎng)。 Blynk旨在消除對廣泛編碼的需求,并使從智能手機(jī)上任何位置的設(shè)備訪問變得容易。業(yè)余愛好者和開發(fā)人員可以免費使用它,盡管也可以付費付費使用-公司可以使用Blynk創(chuàng)建自己的應(yīng)用和系統(tǒng),然后以自己的品牌進(jìn)行銷售。
Blynk使用其自己的服務(wù)器,庫以使服務(wù)正常運(yùn)行,但這似乎是Blynk應(yīng)用的主要優(yōu)勢。
輸入Blynk應(yīng)用
Blynk應(yīng)用可在Android和Android上免費使用iOS。這是項目的起點,它具有易于使用的拖放系統(tǒng),可為IoT設(shè)置構(gòu)建自定義控件。工作流程非??焖伲簡有马椖繒r,系統(tǒng)會提示您從廣泛的列表中選擇開發(fā)板,以及連接方式。然后,該應(yīng)用通過電子郵件發(fā)送授權(quán)令牌,以通過Blynk服務(wù)器連接到您的設(shè)備。
控制元素稱為小工具:各種類型的輸入法和輸出顯示,包括按鈕,滑塊,游戲桿,圖形和文本反饋。還有一些特定于組件的小部件,帶有用于LED,LCD顯示器甚至是實時流式視頻的樣式化控件。另外值得注意的是添加了功能(例如自動發(fā)布到Twitter和自定義通知)的小部件。
該應(yīng)用程序是免費的,但通過為所有這些部件提供“能源”成本,它限制了一次可使用的小部件數(shù)量。 。該應(yīng)用程序為您提供了2,000的余額,可以選擇是否需要購買。
我發(fā)現(xiàn),提供的初始余額對于此處列出的示例項目來說綽綽有余,盡管您的設(shè)置更為復(fù)雜,您可能會很快發(fā)現(xiàn)果汁耗盡。
每個小部件都有一個編輯菜單,可讓您更改名稱和顏色。然后,您選擇要影響的引腳(無論是板上的引腳還是Blynk的虛擬引腳之一)以及要發(fā)送的值范圍。對于圖形或文本框之類的輸出顯示,您還可以選擇更新頻率,從而節(jié)省寶貴的帶寬。
Blynk還具有將指令分配給“虛擬”引腳的功能,這是用戶配置的應(yīng)用程序與硬件之間的連接。因此,應(yīng)用程序中的單個按鈕可用于觸發(fā)設(shè)備上的許多不同事件。我們將在文章的后面介紹如何使用它們。
該應(yīng)用程序提供了與他人共享您的項目的選項。生成的QR碼可以通過電子郵件發(fā)送或直接掃描,也可以由擁有Blynk應(yīng)用的任何人使用。與您共享的任何人都不能對項目進(jìn)行更改,這使之成為共享設(shè)備控制權(quán)的快速便捷的方法。但是,值得注意的是,您的應(yīng)用程序中的項目必須正在運(yùn)行,其他人才能訪問硬件。
您也可以在不允許訪問硬件的情況下共享項目,這是一種很好的教學(xué)方法人們?nèi)绾问褂迷搼?yīng)用程序而又不讓他們打開和關(guān)閉燈!
我發(fā)現(xiàn)創(chuàng)建應(yīng)用程序非常快捷,直觀。創(chuàng)建完成后,您可以通過按右上角的播放符號立即開始使用它。如果您以后需要進(jìn)行更改,則只需按相同的按鈕即可回到編輯模式。
Blynk服務(wù)器
創(chuàng)建了用于控制設(shè)備的應(yīng)用后,您可以有兩種方法與之通信。
Blynk云服務(wù)器快速,響應(yīng)迅速且免費使用。連接到Wi-Fi設(shè)備就像將生成的授權(quán)代碼復(fù)制到Arduino草圖中并提供Wi-Fi詳細(xì)信息一樣容易。對于Raspberry Pi,Blynk提供了一個測試腳本,您可以將其與授權(quán)代碼一起運(yùn)行以達(dá)到相同的效果。在本文的后面,我們將使用Blynk庫創(chuàng)建自己的腳本以連接到服務(wù)。
第二個選項是托管您自己的Blynk服務(wù)器。 Blynk提供了一個基于Netty的開源Java服務(wù)器,可以從您的計算機(jī)甚至Raspberry Pi運(yùn)行該服務(wù)器。在功能和安全性方面,這為某些用戶帶來了各種好處,盡管在此處的示例中,我們將專注于使用提供的Blynk云服務(wù)器。
Blynk庫
Blynk的第三個也是最后一個元素是Blynk庫。該庫與大量開發(fā)板一起使用,以允許該應(yīng)用程序與您的硬件之間進(jìn)行通信。
最簡單的是,所需要做的就是安裝該庫并加載提供的帶有注釋的示例草圖之一。 。
Blynk:初始設(shè)置
在智能手機(jī)上安裝Blynk應(yīng)用并創(chuàng)建一個帳戶。確保使用您可以實際訪問的電子郵件地址,因為這是授權(quán)令牌的發(fā)送位置?,F(xiàn)在創(chuàng)建一個項目,選擇要使用的板以及連接方式。這兩個示例都通過Wi-Fi連接,盡管也可以通過藍(lán)牙,以太網(wǎng)甚至GSM進(jìn)行連接。
創(chuàng)建您的項目。這將自動發(fā)送授權(quán)令牌。如果沒有收到,可以通過選擇項目設(shè)置圖標(biāo)(小螺母),選擇設(shè)備,然后選擇“電子郵件”來重新發(fā)送。
下一步,從以下位置安裝Blynk庫: Blynk網(wǎng)站。對于Arduino,請通過將文件復(fù)制到您的 Arduino》庫文件夾中來安裝庫。如果您不熟悉Arduino,請參閱以下指南。
對于Raspberry Pi,您需要確保先安裝Node.js。
首先,請確保您的Pi是最新的,并且已安裝了build-essential軟件包。
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential
然后安裝 Node Package Manager , OnOff 庫和 Blynk 庫,方法是:您的終端窗口。
sudo npm install -g npm
sudo npm install -g onoff
sudo npm install -g blynk-library
您可以通過運(yùn)行Blynk測試腳本來檢查一切是否正常:
blynk.js [YourAuthorizationTokenHere]
已提供一切正常,應(yīng)該看起來像這樣:
如果遇到任何錯誤,請確保您的Pi是最新的,并且擁有最多的最新版本的Node.js,然后重新安裝NPM,OnOff和Blynk庫。
使用NodeMCU進(jìn)行快速設(shè)置
第一個示例顯示了使用以下命令設(shè)置簡單系統(tǒng)的速度有多快布林克它不需要編碼,而且一旦設(shè)置,它就完全獨立了。只要開發(fā)板可以訪問您的Wi-Fi連接,您就可以使用智能手機(jī)從任何地方訪問它。
首先,在面包板上設(shè)置一個簡單的電路。將引腳 D0 連接到LED的正極,然后通過220歐姆電阻將其連接到GND引腳。
在Blynk應(yīng)用程序中打開您的NodeMCU項目。在右側(cè),從菜單中選擇 Button 小部件。選擇項目中的按鈕以打開其屬性菜單。您可以在此處命名,并選擇它應(yīng)該影響NodeMCU板上的哪個引腳。從輸出列表中選擇 D0引腳,然后切換模式以使其為打開和關(guān)閉開關(guān),而不是瞬時按動開關(guān)。
按向后(所有更改將自動保存) ,然后按右上角的播放圖標(biāo)啟動您的應(yīng)用。您可以隨時按此相同按鈕以返回到編輯項目。
下一步,打開Arduino IDE,然后從工具菜單中選擇NodeMCU板和端口。如果您在此菜單中沒有看到您的開發(fā)板,則可能需要安裝ESP8266庫(本指南應(yīng)會有所幫助)。
現(xiàn)在,通過導(dǎo)航到,打開其庫中提供的ESP8266獨立腳本Blynk。 》文件》示例》 Blynk》 Boards_WiFi》 ESP8266_Standalone 。將授權(quán)令牌的占位符替換為通過電子郵件收到的授權(quán)令牌,然后輸入您的Wi-Fi詳細(xì)信息。
char auth[] = “YourAuthToken”;
char ssid[] = “YourNetworkName”;
char pass[] = “YourPassword”;
以新名稱保存草圖,然后上傳草圖到你的董事會?,F(xiàn)在,當(dāng)您按應(yīng)用程序中的按鈕時,LED應(yīng)該會亮起和熄滅。如果不起作用,請檢查您是否已按下應(yīng)用程序中的播放圖標(biāo)。
在這種簡單情況下,Blynk的設(shè)置速度非??臁?/p>
還有一點值得注意,因為它使用了Blynk服務(wù)器,所以只要董事會可以訪問您的家庭Wi-Fi連接并且您的智能手機(jī)具有移動功能,您就可以在任何地方控制董事會。數(shù)據(jù)訪問。
在Raspberry Pi上使用Blynk
您可以通過使用Blynk測試腳本,以與上述示例在Raspberry Pi上完全相同的方式使用Blynk,但是有一些Blynk的虛擬引腳提供的更深層次的功能,我們現(xiàn)在將進(jìn)行研究。
Blynk使用Node.js進(jìn)行工作,因此我們今天要編寫的代碼將使用Javascript。如果您是該語言的新手,那么它應(yīng)該是入門的好入門。
我們將使用Blynk庫來創(chuàng)建一個應(yīng)用程序,該應(yīng)用程序報告門傳感器是打開還是關(guān)閉,并發(fā)送一個
您將需要:
門磁開關(guān)(也稱為簧片開關(guān))
1x 1k?電阻
1x 10k?電阻器
1x 220?電阻器
1x LED
面包板和接線導(dǎo)線
設(shè)置面包板,如下所示:
請注意,Blynk的庫使用Pi引腳的GPIO編號,因此我們將在整個項目中使用它們。將5V和GND引腳連接到面包板上的電源軌。將Raspberry Pi上的GPIO引腳22連接到LED陽極,然后通過220?將陰極連接到接地軌。電阻。將GPIO引腳17連接到1k的一側(cè)嗎?電阻,并連接10個?電阻的另一端,以及電源軌的5V端。最后,將簧片開關(guān)的一側(cè)連接到電源軌的GND側(cè),并將其連接到1k?和10k?電阻彼此相遇。這種上拉電阻器設(shè)置將在開關(guān)打開時使引腳17上的電壓讀取高電平。
在Blynk應(yīng)用中創(chuàng)建一個新項目,然后選擇Raspberry Pi板。在小部件菜單中,選擇“標(biāo)簽值”,“電子郵件”和“通知”小部件
選擇標(biāo)簽值,為其命名,然后選擇虛擬圖釘V0 作為其輸入圖釘。您還可以更改信息的顯示方式。在這種情況下,在“標(biāo)簽”選項卡的/pin/之前添加“門是”。我們可以將“讀取頻率”值保留為默認(rèn)設(shè)置,盡管您可以更改此值以不同的速率將數(shù)據(jù)發(fā)送到您的應(yīng)用。
值得注意的是,您實際上不必輸入電子郵件地址到電子郵件窗口小部件,因為稍后我們將其添加到代碼中,盡管該窗口小部件必須存在才能正常工作。
一旦您對應(yīng)用的外觀感到滿意,請按“播放”按鈕
現(xiàn)在創(chuàng)建一個名為 blynkdoor.js 的新腳本。完整的代碼在此處有完整注釋。
sudo nano blynkdoor.js
我們需要首先導(dǎo)入Blynk庫,添加我們的授權(quán)密鑰,并創(chuàng)建要在我們的系統(tǒng)中使用的Blynk實例。
var blynklib = require(‘/usr/local/lib/node_modules/blynk-library’);
var AUTH =‘PasteAuthorizationCodeHere’
var blynk = new blynklib.Blynk(AUTH);
我們還需要導(dǎo)入OnOff庫,并聲明用于設(shè)置磁簧開關(guān)和LED的變量。我們還將為在Blynk應(yīng)用上設(shè)置的虛擬圖釘創(chuàng)建一個變量。
var Gpio = require(‘onoff’).Gpio,
reed = new Gpio(17, ‘in’, ‘both’), //register changes ‘both’ when switch is opened and closed
led = new Gpio(22, ‘out’);
var virtualPin = 0;
現(xiàn)在,我們將使用手表函數(shù)從OnOff庫中觀察我們的簧片開關(guān)的變化。門開關(guān)位于 0 或 1 ,并且每當(dāng)該值更改時,我們都會將該更改寫入LED引腳。
reed.watch(function(err,value){
led.writeSync(value);
我們可以使用該值還將數(shù)據(jù)發(fā)送到Blynk應(yīng)用。如果門是關(guān)著的,我們希望能夠在您的標(biāo)簽值小部件中看到它。如果門開了,我們希望收到通知和電子郵件告知我們。我們使用if語句,并使用Blynk庫中的 virtualWrite ,通知和電子郵件功能。有關(guān)Blynk的完整文檔,請參見此處。
if(value==0){
blynk.virtualWrite(virtualPin,“Closed”);
console.log(‘Door Closed’);
};
if(value==1){
blynk.notify(“The door just opened!”);
blynk.email(“email@address.here”, “Front Door”, “The front door just opened.”);
blynk.virtualWrite(virtualPin,“Open”);
console.log(‘Door Open’);
};
});
現(xiàn)在,只要簧片開關(guān)記錄了值的更改,數(shù)據(jù)就會發(fā)送到我們的虛擬引腳,并且在這種情況下應(yīng)用程序中通知小部件的門的開口以及向控制臺的寫入。請注意,最后的花括號是我們從上面的監(jiān)視功能啟動的位置開始。
最后,我們需要在程序結(jié)束時重置圖釘。這與您可能已經(jīng)熟悉的 GPIO.cleanup()相同。
process.on(‘SIGINT’, function () {
led.unexport();
reed.unexport();
});
現(xiàn)在保存代碼并退出。使用節(jié)點運(yùn)行腳本。
sudo node blynkdoor.js
現(xiàn)在,當(dāng)將磁鐵從干簧傳感器上移開時,您將收到一條通知,告知您門已打開,并且標(biāo)有標(biāo)簽的顯示屏應(yīng)更改。再次關(guān)閉開關(guān),您將看到標(biāo)記的顯示再次更改。
值得注意的是,Blynk應(yīng)用必須在您的手機(jī)上運(yùn)行為了接收推送通知,盡管無論應(yīng)用程序是否運(yùn)行,電子郵件都能正常工作。
到目前為止,在Blynk花費的時間很短,這似乎是一種非常容易使用的服務(wù)。最簡單的方法是,無需編程知識的人就可以輕松構(gòu)建DIY家庭自動化系統(tǒng)。有了一點額外的編碼知識,它就會變得更加強(qiáng)大,從而允許更復(fù)雜的系統(tǒng)和應(yīng)用程序中的單個按鈕按下操作產(chǎn)生多個事件觸發(fā)器。
該項目是Blynk的基本介紹,盡管我們擁有幾乎所有家庭自動化或微控制器項目都可以輕松修改此處介紹的內(nèi)容。
您是否使用過Blynk?您是否有想要使用與我們共享的服務(wù)的瘋狂復(fù)雜系統(tǒng)?在下面的評論中讓我們知道!
責(zé)任編輯:wv
-
Arduino
+關(guān)注
關(guān)注
188文章
6473瀏覽量
187420
發(fā)布評論請先 登錄
相關(guān)推薦
評論