3C科技 娛樂遊戲 美食旅遊 時尚美妝 親子育兒 生活休閒 金融理財 健康運動 寰宇綜合

Zi 字媒體

2017-07-25T20:27:27+00:00
加入好友
在本教程中,我們將介紹如何實施 Android Things bot來執行任務。 這是一個有趣的話題,因為它將兩種新興技術(物聯網)和機器人相結合。你可能知道,Android Things是為物聯網而建的新的Google操作系統。該操作系統可幫助您開發專業的物聯網項目,而無需了解嵌入式系統。Android的東西是建立在Android上的,所以你可以重用你的Android專業知識,並準備開發IoT項目。此外,你已經知道機器人是什麼。也許你聽過很多關於這個話題。無論如何,如果你是一個新的概念,機器人是一個執行自動化任務的應用程序。換句話說,它是我們開發的一個軟體來執行一些特定的任務。這些任務的範圍可以是在線執行查詢以搜索某些內容,或者回答某些命令並檢索天氣信息。在本文中,我們將討論實現使用bot來控制遠程外設的不同服務的機器人主題。這個IoT項目集成了IoT和bots,從而提供可在現實生活中的IoT項目中擴展和重用的服務。物聯網項目概述這個Android Things bot項目背後的想法是使用機器人來控制遠程外圍設備來執行任務。在這個項目中,Android Things bot將控制兩個不同的LED來解析傳入的命令並打開或關閉它們。如前所述,該項目可以進一步擴展並應用於現實用例。該項目使用 Telegram 作為支持第三方應用程序的機器人平台。要與機器人互動,我們使用聊天,我們發送消息到機器人是命令。要構建這個IoT機器人,我們需要按照以下步驟:在電報中創建並配置機器人。開發使用API與機器人交互的Android Things bot應用。將作為消息進入的命令轉換為「硬體」命令來控制遠程外設。我們將使用Android Things開發這個項目,因為它是一個新的操作系統,它提供了很好的功能。此外,我們可以在Android Things中使用現有的Android庫,並且有幾個Telegram bot,基於Java的庫可以使用。如何創建一個機器人第一步是在電報中創建機器人。為此,我們可以按照本指南中描述的 步驟進行操作。另外,為了構建我們的bot,我們需要與BotFather進行交互 :我們使用/start 命令和 /newbot 命令與BotFather開始對話 ,從而告訴我們想要創建一個新的機器人的機器人。有必要提供一些信息,如:要創建的機器人的名稱。機器人的用戶名(它必須以機器人結尾)。在這些簡單的步驟之後,機器人就準備好了。對於這個IoT bot項目,我們創建了一個名為AndroidThingsBot的機器人 :在此過程結束時,電報bot提供了我們將在我們的Android Things IoT機器人中使用的HTTP API令牌。就這樣; 我們的機器人已經準備好接收命令。下一步是實現處理傳入命令並與外設交互的Android Things bot。開發一個Android Things Bot來執行IoT任務作為第一步,有必要在Android Studio中創建一個新的 Android Things項目 。本教程假定您熟悉Android Things。如果您想了解如何在IoT項目中使用Android Things,您可以閱讀 由Packt發布的題為「Android Things Projects」的書。項目配置完成後,我們可以添加依賴關係。該IoT項目使用開源庫與Telegram進行交互。將以下行添加到build.gradle中:依賴 { ... 編譯 'com.github.pengrad:java-telegram-bot-api:3.0.1' 編譯 'com.squareup.okhttp3:okhttp:3.8.1'}就這樣!我們準備與機器人進行互動。我們的目標是收到AndroidThingsBot的消息並處理它們。接下來,我們必須使用Telegram API初始化處理通信詳細信息的類:TelegramBot 機器人 ; @覆蓋protected void onCreate(Bundle savedInstanceState){ 超。onCreate(savedInstanceState); 登錄。d(TAG,「onCreate」); bot = TelegramBotAdapter。構建(BOT_TOKEN); ...}BOT_TOKEN是我們在上一段創建步驟中收到的令牌。我們可以利用幾種策略來接收消息。該庫提供了一個偵聽器來收聽傳入的消息://開始偵聽收到的消息GetUpdates getUpdates = new GetUpdates 。限制(100) 。偏移(0) 。超時(10); 機器人。setUpdatesListener(new UpdatesListener{ @覆蓋 public int process(List < Update > updates){ for(更新 更新:updates){ 消息 msg = 更新。message; // Bot邏輯這裡 } 返回 UpdatesListener。CONFIRMED_UPDATES_ALL ; }});這樣一來,一旦機器人收到消息,Android Things應用就會通知並處理該命令。最後,最後一步,我們的Android Things應用程序與外設交互。如何處理命令在本節中,我們介紹了Android Things應用程序如何控制外設,在這種情況下,它們是簡單的LED。當然,您可以擴展此項目並使用其他類型的外設。原理圖如下所示:連接非常簡單,兩個LED使用220Ω電阻連接到Raspberry Pi,以限制流過LED本身的電流。此外,LEDS在Raspberry Pi中使用兩個GPIO引腳進行管理:針13 - > BCM 27針15 - > BCM 22有關更多信息,請查看 Android Things Raspberry Pinout。一旦連接準備就緒,我們可以將注意力集中在開發源代碼上。您可能已經知道,Android Things的強大功能正在抽象出硬體的工作原理,提供了與組件和外設交互的常用方式。讓我們初始化用於管理引腳的外設服務。要完成此操作,請將以下行添加到Android Activity:私人 PeripheralManagerService pmService = new PeripheralManagerService;然後,我們必須初始化引腳:private void initPins{ 嘗試 { bluePin = pmService。openGpio(「BCM22」); yellowPin = pmService。openGpio(「BCM27」); bluePin。setDirection(GPIO。DIRECTION_OUT_INITIALLY_LOW); yellowPin。setDirection(GPIO。DIRECTION_OUT_INITIALLY_LOW); } catch(IOException ioe){ IOE。printStackTrace; }}調用MainActivity類的時間。此外,添加另一種管理引腳的方法是有用的,以便應用程序可以打開或關閉LED:private void setPin(Gpio pin,String state){ 嘗試 { 針。的setValue(布爾。parseBoolean(狀態)); } catch(IOException ioe){ IOE。printStackTrace; }}最後,應用程序必須處理來自機器人的傳入命令並管理LED,因此,有必要修改處理傳入消息的方法:機器人。setUpdatesListener(new UpdatesListener{ @覆蓋 public int process(List < Update > updates){ for(更新 更新:updates){ 消息 msg = 更新。message; if(msg != null){ String txt = msg。text; 如果(TXT。修剪。startsWith(「LED」 )){ 登錄。d(TAG,「LED命令」); String data = txt。split(「」); 如果(數據。長度 < 3){ 登錄。d(TAG,「命令格式錯誤」); 返回 UpdatesListener。CONFIRMED_UPDATES_ALL ; } String value = data [ 2 ]; if(data [ 1 ] 。equalsIgnoreCase(「b」)){ 登錄。d(TAG,「Blue pin [」 + value + 「]」); setPin(bluePin,value); } else if(data [ 1 ] 。equalsIgnoreCase(「y」)){ setPin(yellowPin,value); } } } } 返回 UpdatesListener。CONFIRMED_UPDATES_ALL ; }});現在你可以測試你的機器人 機器人手柄的命令格式如下:LED y | b開|關

本文由yidianzixun提供 原文連結

寫了 5860316篇文章,獲得 23313次喜歡
精彩推薦