如何通過互聯(lián)網(wǎng)遠(yuǎn)程控制Arduino使用Blynk應(yīng)用程序
你有沒有想過遠(yuǎn)程控制你的Arduino板,而不使用任何屏蔽或模塊,如ESP8266和藍(lán)牙?是的,在Blynk應(yīng)用程序及其服務(wù)器的幫助下,這是可能的。
Blynk是一個非常受歡迎的物聯(lián)網(wǎng)平臺,用于構(gòu)建物聯(lián)網(wǎng)項目,如:
?使用Blynk和ESP8266 (Node MCU)的物聯(lián)網(wǎng)控制LED
?基于物聯(lián)網(wǎng)的溫濕度監(jiān)測,使用BLYNK, ESP8266和DHT11傳感器
?物聯(lián)網(wǎng)家庭自動化使用Blynk應(yīng)用程序使用ESP32
?基于物聯(lián)網(wǎng)的家庭自動化使用Blynk應(yīng)用程序和樹莓派
?物聯(lián)網(wǎng)控制LED使用ESP32與Blynk應(yīng)用程序
在這個項目中,我們將使用Blynk應(yīng)用程序遠(yuǎn)程控制兩個LED。兩個LED都將與Arduino連接,一個LED將被打開和關(guān)閉,另一個LED將使用Blynk應(yīng)用程序控制亮度。
布林克是什么?
Blynk是一個物聯(lián)網(wǎng)平臺,允許我們快速構(gòu)建項目來控制和監(jiān)控使用Android和iOS設(shè)備的數(shù)據(jù)。我們可以創(chuàng)建一個項目儀表板,并添加控件,如按鈕、顯示器、滑塊等,用于控制微控制器和其他外圍設(shè)備。使用這些小部件,我們可以控制設(shè)備,可以監(jiān)控手機屏幕上的傳感器數(shù)據(jù)。
我們之前已經(jīng)介紹了Blynk應(yīng)用程序與其他基于物聯(lián)網(wǎng)的微控制器,請點擊鏈接找到它們。
Blynk的特點:
1. 您可以使用Blynk應(yīng)用程序添加通知服務(wù),而無需使用任何第三方平臺,如IFTTT。例如,您可以在Twitter上發(fā)布數(shù)據(jù),并在達到閾值時收到電子郵件。這可以通過配置Blynk應(yīng)用程序來實現(xiàn)。
2. 在物聯(lián)網(wǎng)項目中,與軟件部分相比,硬件部分更容易。但是使用Blynk,軟件部分也變得比硬件更容易。所需的編碼非常少,所有代碼都包含在其庫中。Blynk是構(gòu)建簡單項目的完美工具。
3. 市場上大多數(shù)可用的微控制器都由Blynk支持,這些微控制器可以使用Blynk應(yīng)用程序通過Wi-fi, BLE, USB, GSM和以太網(wǎng)進行控制。
4. 您可以創(chuàng)建自己的本地Blynk服務(wù)器,只需使用幾個步驟即可在本地控制設(shè)備,并且可以使用Blynk應(yīng)用程序輕松控制。
5. Blynk最有趣的特性之一是虛擬引腳的使用。虛擬引腳是Blynk發(fā)明的一個概念,用于在硬件和Blynk移動應(yīng)用程序之間提供任何數(shù)據(jù)交換。這些引腳不同于數(shù)字和模擬引腳,它們沒有任何物理屬性。
因此,如果您想要來自虛擬引腳的任何數(shù)據(jù),Blynk應(yīng)用程序?qū)?shù)據(jù)發(fā)送到定義的虛擬引腳,然后可以在MCU引腳上訪問此數(shù)據(jù)。此外,數(shù)據(jù)可以從Blynk應(yīng)用程序發(fā)送到任何虛擬引腳,然后可以很容易地在應(yīng)用程序上訪問數(shù)據(jù)。
在這個項目中,我們還將使用虛擬引腳來控制Arduino。
所需的材料
?Arduino Uno
?Arduino Uno USB電纜
?兩個發(fā)光二極管
?跳線
?電路試驗板
線路圖
電路圖非常簡單,只需將一個LED連接到PWM引腳(5),另一個LED連接到Arduino Uno的數(shù)字引腳4。
現(xiàn)在,讓我們從安裝Blynk應(yīng)用程序和庫開始。
安裝和配置Blynk應(yīng)用程序來控制LED
1. 從play store下載Blynk應(yīng)用。Android和iOS用戶都可以使用。打開應(yīng)用程序,通過輸入你的電子郵件ID和密碼創(chuàng)建一個帳戶。
2. 現(xiàn)在,我們將創(chuàng)建一個新項目。點擊新建項目。
3. 給出一個項目名稱,并選擇設(shè)備為Arduino UNO,連接類型為USB,因為我們使用串行通信與Arduino和Blynk服務(wù)器進行通信?,F(xiàn)在,單擊Create,如下所示。
4. 創(chuàng)建項目后,您將在注冊郵件id上收到一個認(rèn)證令牌。此令牌將在代碼中使用。在本教程的末尾給出了完整的代碼。
5. 現(xiàn)在將顯示一個空的儀表板,我們將放置所有所需的小部件,即按鈕,顯示器,滑塊等。點擊+號。這里顯示了所有可用的小部件。您可以瀏覽所有的小部件,并根據(jù)自己的需求使用它們。
在本教程中,我們將切換一個LED并控制其他LED的亮度。我們需要一個按鈕和一個滑塊來控制亮度。
選擇按鈕小部件和滑塊類型(H或V)通過點擊它。
6. 現(xiàn)在,設(shè)置這兩個小部件的屬性。輕按儀表盤上的按鈕。在D4上選擇輸出和模式切換,然后回到儀表板并點擊滑塊。在虛擬引腳V1上選擇輸出引腳,所有屬性保持不變。
現(xiàn)在我們已經(jīng)準(zhǔn)備好了Blynk應(yīng)用程序。讓我們開始編程Arduino板,以便與Blynk應(yīng)用程序一起工作,為此有一個可用于Arduino的庫。
在Arduino中安裝Blynk Library
在開始為Arduino Uno編寫代碼之前,我們將首先在Arduino IDE中安裝Blynk庫:
1. 要安裝庫,請轉(zhuǎn)到Sketch -> Include Libraries -> Manage Libraries。然后搜索Blynk并安裝最新版本,如下所示。
2. 現(xiàn)在,我們將修改一個示例代碼。因此,打開示例->Blynk->Boards_USB_Serial->Arduino_Serial_USB。
讓我們看看給定的代碼并試著理解它。
基于Blynk App的Arduino編程
在本教程的最后給出了完整的代碼和演示視頻。在這里,我們一步一步地解釋了代碼。
1. 首先,在代碼中根據(jù)需要使用#define聲明宏。這里宏BLYNK_PRINT被定義為DebugSerial用于打印。
2. 現(xiàn)在,包括software serial和Blynk函數(shù)的頭文件,并為software serial創(chuàng)建一個實例DebugSerial。
3. 將該驗證令牌存儲在字符數(shù)組中。
4. 在setup()函數(shù)中初始化波特率為9600的軟件串口、內(nèi)置串口和Blynk。函數(shù)blynk.begin()接受兩個參數(shù),即Serial和auth token。
5. 在void loop()函數(shù)中,應(yīng)該有非常少的代碼,以便Blynk可以在沒有任何中斷或數(shù)據(jù)丟失的情況下工作。這是因為當(dāng)你把一些東西放入空循環(huán)函數(shù)中,比如從MCU或智能手機獲取傳感器讀數(shù),它執(zhí)行百萬次,這些數(shù)據(jù)上傳到Blynk服務(wù)器上,這意味著Blynk云將被大量消息淹沒,服務(wù)器將認(rèn)為這是垃圾郵件,所以Blynk云將自動終止連接。此外,避免在環(huán)路中使用延遲功能,因為它完全停止了MCU的功能,在這種情況下連接也會關(guān)閉。
從Arduino獲取傳感器數(shù)據(jù)的最佳選擇是使用計時器。在setup函數(shù)中初始化計時器,并定義一個函數(shù)來執(zhí)行任務(wù)。
這將需要一個最小的函數(shù)——Blynk.run()和timer函數(shù)可以處理獲取數(shù)據(jù)并將其發(fā)送到服務(wù)器的所有任務(wù)。但在本教程中,我們不發(fā)送任何數(shù)據(jù),因此不需要計時器。
6. 用于切換LED的代碼內(nèi)置在Blynk.run()函數(shù)中,但我們必須創(chuàng)建一個用于從智能手機獲取滑動條值的函數(shù)。有兩個函數(shù)用于發(fā)送和接收數(shù)據(jù),即BLYNK_READ()和BLYNK_WRITE()。這些函數(shù)將虛擬引腳作為讀取和寫入數(shù)據(jù)的輸入?yún)?shù)。因此,我們必須使用BLYNK_WRITE函數(shù)從Blynk應(yīng)用程序?qū)懭胩摂M引腳V1上的數(shù)據(jù)。
現(xiàn)在,將從引腳V1傳入的值賦給一個變量,param.asInt()函數(shù)將接收到的值作為整數(shù)返回。如果接收到的值不是整數(shù),則可以使用float、double或string。
然后使用analogWrite()函數(shù)將此值放入Arduino的PWM引腳中。
就是這樣。我們已經(jīng)完成了編碼部分。現(xiàn)在,使用USB電纜插入Arduino板,并在設(shè)備管理器中檢查板的COM端口。
互聯(lián)網(wǎng)連接腳本:
在這里,我們沒有使用Arduino板的任何模塊,但需要一個工作的互聯(lián)網(wǎng)連接來發(fā)送和接收云上的數(shù)據(jù),所以有一個腳本包含在Blynk庫中,可以訪問我們的筆記本電腦/PC互聯(lián)網(wǎng)連接。因此,該腳本通過串行通信從Arduino板獲取數(shù)據(jù),并使用筆記本電腦的互聯(lián)網(wǎng)連接將數(shù)據(jù)上傳到Blynk云上。我們必須運行這個腳本來啟動操作。
這個腳本可以在Arduino目錄下的Documents文件夾中找到,轉(zhuǎn)到Libraries -> Blynk -> Scripts。有一個名為blynk-ser.bat的文件,它是所需的腳本。使用Arduino板的COM端口和Blynk云端口號編輯此腳本。
使用記事本打開腳本并替換以下內(nèi)容。你只需要替換你的COM端口并保存文件,所有其他的東西保持不變。
測試-使用Blynk應(yīng)用程序遠(yuǎn)程控制Arduino
現(xiàn)在,我們都準(zhǔn)備好了用Blynk應(yīng)用程序控制Arduino GPIO引腳。確保你已經(jīng)連接了兩個led,并在筆記本電腦和智能手機上有一個工作的互聯(lián)網(wǎng)連接。
為了運行項目,雙擊腳本,它將開始執(zhí)行?,F(xiàn)在,打開應(yīng)用程序,點擊右上角的播放按鈕。
然后輕按LED按鈕開啟LED,再輕按關(guān)閉LED。
同樣,移動滑塊來改變LED的亮度。
如果你在應(yīng)用程序的棋盤圖標(biāo)上看到一個紅點,這意味著兩邊都沒有互聯(lián)網(wǎng)連接,所以檢查一下互聯(lián)網(wǎng)連接,然后再試一次。
這就是如何輕松地使用Blynk應(yīng)用程序遠(yuǎn)程控制Arduino板。
本文編譯自iotdesignpro