資料介紹
描述
介紹
在最初的項目中,我使用了一個 LED,但當然你可以連接一個 5V 繼電器來完成家庭自動化的工作。
請注意,這是我寫的原始文章的一部分,并發布在?
本文將指導您完成將 Edison 與 Windows Azure 連接的過程,以及如何做一些很酷的事情,例如控制它。此示例將僅打開和關閉連接到 Edison 板上與 Arduino 分線板配對的任何數字引腳的 LED。讓我們看看它是如何工作的。Azure 移動服務將充當 Edison 和控制器之間的橋梁(此處使用 Windows 手機應用程序)。Edison 將從移動服務表中讀取屬性值。Windows 手機應用程序將更新表中的值,因此我們將根據值對 Edison 代碼進行更改。
先決條件
假定讀者具有 Windows 手機應用程序開發的基本知識,并且可以將應用程序與 Azure 移動服務連接起來。如果您不熟悉為您的應用創建后端,請瀏覽此?鏈接。?
首先,讓我們創建一個 Azure 移動服務。?有很多關于創建 Azure 移動服務的文章。按照此?鏈接?創建一個包含單個表的移動服務,并將其命名為?controltable 。該表將包含一個名為“ status ”的列和另一個名為“ name ”的列。status列的值??將是 1 或 0,而?name?的值將設置為 Edison/Arduino。
現在我們將開發一個將添加/修改屬性值的 Windows 手機應用程序。下圖為我們展示了 Azure sql 表的截圖。請注意,“設備”的屬性值無關緊要。如果您愿意,您甚至可以排除此屬性。
下一節將討論 Windows 手機應用程序的開發。
Windows 手機應用程序
我們的應用程序將僅包含兩個按鈕:一個?打開?按鈕和一個?關閉?按鈕。該應用程序的屏幕截圖如下所示。

您可以忽略注銷按鈕,實際上,我正在嘗試添加一些功能。現在這些按鈕會是什么?這將更新“狀態”?屬性的值。當我們按下按鈕時,“狀態”?的值為1,否則為 0。?
不過有一點問題。如果什么都沒有創建,要更新什么?為此,我們將部署應用程序兩次。第一次,我們將創建表并分配一些默認值。下次我們將只更新以前更新的值。
現在,我們的應用程序已準備就緒。測試應用程序并檢查“狀態”的值是否正在更新。一旦它工作,然后你去。該應用程序已準備就緒。下一部分將集中討論愛迪生代碼。
愛迪生密碼
讓我們進入愛迪生。在開始為您的 Edison 編寫代碼之前,請按照?此處提到的初始步驟?配置您的 Edison。連接 Edison 后,記下您的通訊端口號。然后打開您的 Arduino IDE 并從板上選擇 Intel Edison。如果您沒有找到 Intel Edison 選項,則需要從“ Boards Manager”?選項下載必要的文件。

打開 Arduino IDE 后,前面會提到兩個函數:Void setup() 和 void loop()。愛迪生有一個內置的 Wi-Fi。我們將使用 Wi-Fi 將其連接到 Internet。所以我們的第一個行動是包含一個用于 Wi-Fi 的庫。轉到?Sketch ,包括庫,然后?是 Wi-Fi 。之后,讓我們添加此代碼以將其連接到 Wi-Fi。?
#include???
#include???
#include???
??
char?ssid[]?=?"avirup171";?//??your?network?SSID?(name)???
char?pass[]?=?"avirupbasu";????//?your?net?ork?password?(use?for?WPA,?or?use?as?key?for?WEP)??
int?keyIndex?=?0;????????????//?your?network?key?Index?number?(needed?only?for?WEP)??
??
void?setup()??
{??
??pinMode(13,OUTPUT);??
??digitalWrite(13,HIGH);??
??Serial.begin(115200);??
??while?(!Serial)?{??
????;?//?wait?for?serial?port?to?connect.?Needed?for?Leonardo?only??
??}??
????
??//?check?for?the?presence?of?the?shield:??
??if?(WiFi.status()?==?WL_NO_SHIELD)?{??
????Serial.println("WiFi?shield?not?present");???
????//?don't?continue:??
????while(true);??
??}???
??
??String?fv?=?WiFi.firmwareVersion();??
??if(?fv?!=?"1.1.0"?)??
????Serial.println("Please?upgrade?the?firmware");??
????
??//?attempt?to?connect?to?Wifi?network:??
??while?(status?!=?WL_CONNECTED)?{???
????Serial.print("Attempting?to?connect?to?SSID:?");??
????Serial.println(ssid);??
????//?Connect?to?WPA/WPA2?network.?Change?this?line?if?using?open?or?WEP?network:????
????status?=?WiFi.begin(ssid,?pass);??
????
??}??
} ??
上面的代碼負責通過 Wi-Fi 將 Edison 連接到互聯網。此外,我們已將 PIN 13 設置為輸出模式,當前狀態為關閉。我們將使用 IDE 的串行監視器來監視該過程。現在,讓我們轉到 void loop()。從 Azure 檢索數據是通過 http get 方法完成的。
void loop()
{
??send_request();??
??wait_response();??
??read_response();??
??end_request();??
??delay(100);??
}??
這些函數將從 Azure 表中檢索數據。但是在深入研究這些方法之前,我們需要添加一些全局變量來將我們的 Edison 鏈接到 Azure 服務。添加這些全局變量:
const?char*?server=?"server name URL"; ?//service URL ?
const?char*?table_name=?"Table name"; //Table name ?
const?char*?ams_key="Your application key";??
char buffer[150];
應用程序密鑰可以在 Azure 門戶的管理密鑰按鈕中找到。現在,我們將為 void loop() 中的方法編寫代碼。
我們執行了一個 HTTP 請求并調用了 GET,我們之前已經指出了表的名稱、服務器的名稱和代碼鍵;這允許正確檢索數據。然后我們指定需要以什么格式檢索數據并將其指定為 JSON。讓我們為 wait_response() 編寫代碼。
然后我們需要讀取檢索到的數據。由于它是 JSON 格式,我們需要解析 JSON 字符串以獲得我們想要的值。下面是示例字符串的示例。
{"id":"2492D996-C471-48F0-B3C9-F33E3B37477F","status":"0","name":"arduino"}
存在一個非常高效的庫,稱為 ArduinoJson。這將完成大部分解析。但是檢索到的 JSON 字符串包含在 '[' 和 ']' 中。必須刪除這些才能使庫正常工作。因此,首先您需要在代碼中包含該庫并添加以下全局變量并添加:
#include? ????
???
#define?RESPONSE_JSON_DATA_LINENNO?10????
????
int?charIndex=0;????
StaticJsonBuffer<200>?jsonbuffer; ??
然后在您的read_response()?方法?中編寫以下代碼?:?
void?read_response()?
{??
??boolean?bodyStarted;??
??int?jsonStringLength;??
??int?jsonBufferCntr=0;??
??int?numline=RESPONSE_JSON_DATA_LINENNO;??
??//Ignore?the?response?except?for?the?10th?line??
??while?(client.available())???
??{??
????//Serial.println("Reading:");??
????char?c?=?client.read();????
????if?(c?==?'\n')??
????{??
??????numline?-=1;??
????}??
????else???
????{??
??????if?(numline?==?0?&&?(c!='[')&&?(c!=']')?)??
??????{??
????????buffer[jsonBufferCntr++]?=?c;???
????????buffer[jsonBufferCntr]?=?'\0';???
??????}??
????}??
??}??
??Serial.println("Received:");??
??Serial.println(buffer);??
??Serial.println("");??
??parse();??
}??
上面的代碼將讀取響應,解析方法負責解碼字符串。parse() 方法如下所示。在 parse() 方法本身中,我們將更改 PIN8 的狀態。
void?parse()??
{??
??StaticJsonBuffer<150>?jsonbuffer;??
??JsonObject&?root?=?jsonbuffer.parseObject(buffer);??
??if(!root.success())??
??{??
????Serial.println("PARSING?FAILED!!!");??
????return;??
??}??
??int?f=?root["status"];??
??Serial.println("Decoded:?");??
??Serial.println(f);??
??if(f==0)??
????digitalWrite(8,LOW);??
??else??
????digitalWrite(8,HIGH);??
}?
這里,在上面的代碼中,f存儲了status的屬性值。然后,我們檢查 f 的值并最終將 PIN 設置為 HIGH 或 LOW。
有關 ArduinoJson 庫的詳細文檔,請訪問此鏈接。但是,這個庫有一點問題。稍后將討論。現在,我們將編寫剩余方法的代碼。??
現在,您將看到,當您編譯代碼時,您很可能會遇到一些錯誤。這些錯誤需要被刪除。在進一步移動之前,請查看此問題。文件 WString.h 遺漏了一些代碼行。區別可以看這里。您需要更新位于此處的文件。C:\Users\Username\AppData\Roaming\Arduino15\packages\Intel\hardware\i686\1.6.2+1.0\cores\arduino\WString.h??
更新后您的錯誤將得到解決。編譯代碼后,將其刻錄到您的 Edison 中,然后您就完成了。當代碼在您的 Edison 中燒毀時,取一個 LED,并將 LED 的較長腿連接到 PIN13,將較短的腿連接到 Gnd。較長的腿可以添加一個可選的 233 歐姆電阻器。因此,我們通過 Windows Azure 控制的 Windows Phone 控制 Edison 已經準備就緒。?
下面附有一段視頻,顯示了它的功能,但 LED 連接到引腳 13。
?
- Intel Edison主板驅動配置工具 1次下載
- 使用Arduino Uno和SmartEdge Agile實現家庭自動化
- 基于物聯網的家庭自動化
- 使用物聯網的家庭自動化
- 使用Google助手和Bolt IoT實現家庭自動化
- 使用谷歌助手實現家庭自動化
- 使用Node MCU的家庭自動化
- 使用Google Assistant和Adafruit IO實現家庭自動化
- 使用螺栓模塊的家庭自動化
- 使用Bolt IoT和Google Assistant實現家庭自動化
- 家庭自動化系統開源分享
- 使用Blynk IR Remote和ESP32實現家庭自動化
- 基于藍牙的家庭自動化
- 用Intel Edison實現具有完整語音控制的家庭自動化
- 現代家庭自動化遙控系統電路圖
- 工業自動化中的控制方式 898次閱讀
- 如何實現PLC的自動化控制邏輯 1264次閱讀
- 工業自動化和自動化區別是什么 1838次閱讀
- 自動化控制系統的基本知識 5909次閱讀
- keil自動化編譯腳本 1976次閱讀
- 過程自動化控制和運動自動化控制的原理詳解 1736次閱讀
- 自動化測試框架unittes詳解 2965次閱讀
- 基于PlatformIO IDE的家庭自動化系統設計方案實現 2489次閱讀
- 基于Raspberry Pi Pico開發先進的家庭自動化系統 3003次閱讀
- 如何自學PLC與自動化? 2814次閱讀
- Pilz PSS 4000自動化系統,助力天然氣管道實現高度自動化運營和監測 1664次閱讀
- ATE自動化測試系統是什么_ATE自動化測試系統介紹 3.2w次閱讀
- 自動化領域初涉水 非標自動化和自動化到底有哪些區別? 6349次閱讀
- jenkins自動化部署 4717次閱讀
- 基于GPRS的電網調度自動化系統 1321次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數據手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關電源設計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數字電路基礎pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅動電路設計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537798次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191187次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論