資料介紹
描述
項目級別:中級到高級
軟件先決條件
- 視窗 10
- 視覺工作室 2015
- 安卓工作室
- MPLAB X IDE(帶 XC8 編譯器)
介紹
Windows IoT 新的 Windows IoT 為開發(fā)人員提供了一些功能,可以在更短的時間內(nèi)創(chuàng)建強大而高效的應(yīng)用程序。Windows IoT 驅(qū)動的 Raspberry Pi 是這個家庭自動化項目的關(guān)鍵要素。 ??
Raspberry Pi 充當(dāng)系統(tǒng)的主人。Raspberry Pi 通過 2.4GHz ISM Band RF Link 連接到許多從屬設(shè)備。從設(shè)備是一個基于 PIC18F 微控制器的電路板,具有與 Raspberry Pi 建立雙工無線鏈路所需的電路和程序。除了不同的設(shè)備 ID/地址(應(yīng)該是唯一的)和設(shè)備類型編號外,每個從設(shè)備都具有相同的電路和 PCB 設(shè)計。Windows IoT 上的 C# 程序能夠同時處理任意數(shù)量的從屬設(shè)備。?
特征
2. Raspberry Pi 通過 ISM 頻段 2.4GHz 無線鏈路連接到一個或多個從設(shè)備。
3. 這些從屬設(shè)備允許Raspberry Pi 遠(yuǎn)程控制家用電器/電子設(shè)備。
4. 可以進(jìn)行不同級別的控制。
一種。基于繼電器的控制(簡單的開/關(guān)功能)。
b. 基于 Triac 的控制(可以控制光強度或平均功率)
d. 用戶可以毫不費力地添加其他控制方法,如 PWM、反饋系統(tǒng)等。
5. 我已經(jīng)編寫了一個移動應(yīng)用程序來啟用基于 Internet 和本地網(wǎng)絡(luò)(數(shù)據(jù)報套接字)的控制。
6. 樹莓派添加新的從設(shè)備無需更改程序。只需點擊奴隸的“添加我”按鈕。Raspberry Pi 會自動將設(shè)備添加到網(wǎng)絡(luò)(自動掃描選項也可用)。
7. 數(shù)字和模擬傳感器都可以連接到從設(shè)備。由于 Raspberry Pi 從設(shè)備通信是雙向 RF 鏈路,因此 Raspberry Pi 無需任何物理連接即可讀取傳感器讀數(shù)。
8. 簡潔的GUI C#程序?qū)椭脩魴z查連接狀態(tài)、網(wǎng)絡(luò)監(jiān)控、設(shè)備控制等。
9. 存在基于定時器的控制選項。設(shè)置您想要關(guān)閉/打開特定設(shè)備的時間,Raspberry Pi 將完成剩下的工作。
10.無需太多修改即可輕松引入語音檢測/語音命令。
11. 傳感器讀數(shù)可以寫入帶有時間戳的 Azure 數(shù)據(jù)庫。電氣設(shè)備也可以通過 Azure 云數(shù)據(jù)庫進(jìn)行控制。
樹莓派連接?
在這個家庭自動化系統(tǒng)中,Raspberry Pi 沒有任何物理連接,除了 nRF SPI 通信鏈路 [不包括電源、以太網(wǎng)/WiFi 和 HDMI(可選)等基本連接]。所有的控制、監(jiān)控、決策、觸發(fā)和切換操作都在 Raspberry Pi 中完成。Raspberry Pi 使用雙工無線鏈路(非 WiFi 或藍(lán)牙標(biāo)準(zhǔn))與從屬設(shè)備通信。整個C#程序可以從本文的軟件部分(GitHub)下載。
(注意:由于程序的硬件IO要求,編譯到x64/x86平臺可能無法正常工作。
注意:我為無線模塊編寫的 nRF 類沒有利用該模塊的真正潛力。一旦我有足夠的時間,我將更新 GitHub nRF 類文件。)
?
? ?C# 應(yīng)用程序支持 3 種方式來控制家用電器甚至工業(yè)系統(tǒng)。
1. RPi 的 GUI。在 Raspberry Pi 中運行的漂亮 C# GUI 將允許您監(jiān)視網(wǎng)絡(luò)命令、不同的傳感器讀數(shù)、控制家用電器和自動控制以及其他后臺任務(wù),如 Azure DB 讀/寫、計時器等。
設(shè)備框列出了所有可用的從屬設(shè)備。您可以隨時刪除或添加從屬設(shè)備。?
在 GUI 的頂部,您可以看到通過 nRF 無線鏈接從從屬設(shè)備提取的不同傳感器讀數(shù)。C# 應(yīng)用程序使用這些傳感器讀數(shù)來自動控制電氣設(shè)備。
在底部,“網(wǎng)絡(luò)日志”框顯示通過 Azure 云數(shù)據(jù)庫或 LAN 從移動設(shè)備/計算機接收到的所有命令以及連接設(shè)備的 IP 地址和名稱。在其下方,放置了一個狀態(tài)欄。它向用戶顯示所有必要的信息和通知。通過打開“自動更新”按鈕,您將從選定的從屬設(shè)備的傳感器數(shù)據(jù)中獲得實時更新(可以將這些傳感器數(shù)據(jù)寫入帶有時間戳的 Azure DB 中)。此按鈕還可用于檢查從設(shè)備是否在 nRF24 的 RF 鏈接的無線范圍內(nèi)。“自動控制”復(fù)選框用于啟用“自動控制”模式,該模式可以根據(jù)光強度傳感器讀數(shù)調(diào)整光強度。在 PIR 傳感器的幫助下,還可以對人員存在發(fā)出警報。
除了控制之外,還可以通過 LAN 或 Azure 云數(shù)據(jù)庫傳輸消息。
2.本地數(shù)據(jù)報包。
?我開發(fā)了一個簡單的 Android 和 Windows 通用應(yīng)用程序,用于通過本地網(wǎng)絡(luò) (LAN) 控制設(shè)備。
3. 基于Azure 云數(shù)據(jù)庫的控制。?
上面說的同一個應(yīng)用程序有一個特殊的模式通過互聯(lián)網(wǎng)(通過 Azure 云)向 Raspberry Pi 發(fā)送命令 ? ?
(注意:我制作這些應(yīng)用程序只是為了測試功能。如果你擅長 GUI 設(shè)計,你可以做得更好
注意:如果沒有運行 Windows IoT 的強大 Raspberry Pi 和上述 C# 應(yīng)用程序,則無法使用此應(yīng)用程序。
注意:所有網(wǎng)絡(luò)命令都以一個字符開頭,?'!'
您可以在 Pi 的 C# 程序的 MainPage.cs 文件中看到完整的命令。)
?
?
從機
從設(shè)備是一塊基于 PIC18F24K20 的板,帶有 nRF24 無線模塊。除了單獨的設(shè)備類型代碼和唯一的 ID/地址編號外,所有從屬設(shè)備都具有相同的電路和固件程序。因此,不費吹灰之力就可以輕松制作任意數(shù)量的從屬設(shè)備。
每個從屬設(shè)備都有一個“AddMe”和“RemoveMe”按鈕,用于將該從屬設(shè)備注冊到 Raspberry Pi 或刪除從屬設(shè)備。?
更新 (15/09/2015)
我添加了一個“自動掃描”選項。現(xiàn)在,連同“AddMe”按鈕,您可以掃描其無線范圍內(nèi)的從屬設(shè)備。此選項將允許您添加樹莓派無線范圍內(nèi)的所有從屬設(shè)備,而無需按從屬設(shè)備的“AddMe”按鈕。您所需要的只是“掃描”并等待可用設(shè)備列出。>
傳感器可用
1.溫度傳感器(LM35)
2.光強度傳感器(LDR)
3. PIR傳感器(HC-SR601)
從設(shè)備原理圖和 PCB 設(shè)計
您可以從本文的硬件部分下載 Eagle CAD 文件。
(我沒有在互聯(lián)網(wǎng)上找到任何好的 nRF Eagle 庫。所以我自己制作了一個。您可以在本文的自定義部件和外殼部分找到這個 nRF24L01+ 庫)
從設(shè)備如何工作
Slave Devices類似于無線擴展樹莓派的IO口。盡管無線通信系統(tǒng)有點復(fù)雜,但使用起來非常方便。永遠(yuǎn)不可能僅僅為了實施自動化系統(tǒng)而為整個家庭布線。所以,我決定選擇無線系統(tǒng)。另一個附加優(yōu)勢是,您可以隨時將家庭自動化系統(tǒng)擴展到任何房間,而無需添加或更新一行代碼。您所需要的只是奴隸的“點擊添加我”按鈕。想象一下用有線系統(tǒng)做同樣的事情??!
正如我所說,slave 設(shè)備以靈活性和更多控制擴展了 Raspberry Pi 的范圍。由用戶決定他/她應(yīng)該分配給從屬設(shè)備的控制功能。就像模板一樣,我制作了 5 種不同類型的從屬控件。您可以毫不費力地將它擴展到任何類型的任何數(shù)字。
public enum device_type : byte
{
? ? ? Test_Device = 0, ? //Used a prototype for testing
? ? ? Triac_Device = 1, ?//Triac/Solid state relay high speed switching
? ? ? Relay_Device = 2, ?//Common Relay Control
? ? ? Buzzer_Device = 3, //Buzzer and Alarm Control board (Not implemented)
? ? ? Motor_Device = 4
};
上面的枚舉語句顯示了我的程序中可能的從屬類型。
A. 三端雙向可控硅裝置
(注:對功率器件不熟悉的可以省略該類Slave Devices。)
Triac 是一種交流功率器件,可用于電機速度控制、光強度控制等快速開關(guān)應(yīng)用。適當(dāng)?shù)挠|發(fā)是必要的,在設(shè)計 Triac 電路時還應(yīng)考慮換向方法。從設(shè)備和 TRIAC 控制板的集成使系統(tǒng)更加有用和靈活。Triac 的觸發(fā)有點棘手。您需要一個過零檢測器來了解交流電 (LM358) 的過零點。從機內(nèi)部的 PIC18F24K20 微控制器將識別過零點(來自 LM358 的方波)并根據(jù)我們從 Raspberry Pi 發(fā)送的觸發(fā)延遲觸發(fā)三端雙向可控硅開關(guān)。
B. 中繼裝置
作為中繼設(shè)備配置和連接從站非常容易。除了 5v 或 12v 繼電器、BC547 NPN 晶體管 1k 電阻器和 1N4001/1N4004/1N4007 二極管或 ULN2003 達(dá)林頓對 IC 之外,您不需要任何額外的大型電路。我建議使用現(xiàn)成的簡單繼電器板(它非常便宜且容易獲得,不會超過 2 美元[至少在我們地區(qū)])
C. 12v直流電機裝置
它是中繼設(shè)備的擴展。這里不是繼電器電路,從設(shè)備控制兩個 12v 直流電機。流行的電機驅(qū)動器 IC L293 或 L93D 可用于這些設(shè)備。
樹莓派從機無線通信
對于 Raspberry Pi 和從屬設(shè)備之間的無線通信,我使用了 nRF24L01+ 模塊并在 10 字節(jié)的有效載荷內(nèi)創(chuàng)建了自定義數(shù)據(jù)包結(jié)構(gòu)。
數(shù)據(jù)包類型和從設(shè)備 ID
來自從設(shè)備的“add_me_packet”將在 Raspberry Pi 的設(shè)備列表中注冊該從設(shè)備 ID。Raspberry Pi 將使用這個唯一的設(shè)備 ID 與特定的從設(shè)備進(jìn)行進(jìn)一步的通信。?
同樣,數(shù)據(jù)包通常由樹莓派下發(fā),用于控制操作。
從屬設(shè)備在收到來自樹莓派的更新數(shù)據(jù)包請求后,將以其傳感器讀數(shù)和連接設(shè)備的狀態(tài)作為數(shù)據(jù)包響應(yīng)給樹莓派。如果您知道系統(tǒng)的工作原理,您可以輕松地將我的 10 字節(jié)數(shù)據(jù)包系統(tǒng)更改為 20 或 32(最大)數(shù)據(jù)包系統(tǒng)。
設(shè)備類型
我們已經(jīng)看到了 Triac 器件、繼電器和電機控制板。Raspberry Pi 如何知道或識別從設(shè)備將要執(zhí)行的操作類型(你已經(jīng)知道,每個從設(shè)備都有相同的固件和電路)。這由數(shù)據(jù)包的第 3 個字節(jié)定義。
要將從設(shè)備配置為電機設(shè)備,您需要更改給定嵌入式 C 程序的#define 語句。
//#define triac
#define relay //////need to change according to your device
#define device_id 59 //////need to change according to your device
///////////////////////////////////////////////////////////
#define device_type 4 ??
///Device type declaration for program
/*?
Test_Device = 0,
Triac_Device = 1,
Relay_Device = 2,
Buzzer_Device = 3,
Motor_Device = 4
?*/
對于可控硅設(shè)備
#define triac ? ///Uncomment this define statement?
//#define relay //////need to change according to your device
#define device_id 59 //////need to change according to your device
///////////////////////////////////////////////////////////
#define device_type 1 ///change to 1
對于繼電器設(shè)備?
//#define triac
#define relay //////need to change according to your device
#define device_id 59 //////need to change according to your device
///////////////////////////////////////////////////////////
#define device_type 2
?一些溝通情況
---------------------------------------------- -
其他有用的鏈接和注釋
- 要啟用 Internet 控制,您需要注冊 Azure 帳戶并使用 Azure 數(shù)據(jù)庫。此鏈接將為您簡要介紹 Azure 數(shù)據(jù)庫和 Azure 移動服務(wù)Azure
-
(Pi 的 C# 僅使用第一個表條目)
?????1 / 4 ? hi world 或任何文本:Pi 將在網(wǎng)絡(luò)日志窗口中顯示此消息?
-
可以將不同的傳感器讀數(shù)插入到 Azure 數(shù)據(jù)庫中。我沒有在我的系統(tǒng)中使用它,但你只需要 2 行代碼就可以做到這一點。只需將更新代碼放置在?
azureMonitor_tick
計時器滴答事件中。
//Note free Azure Subscription has 20MB database size limit.
- 您必須輸入自己的 Azure 訂閱密鑰、表條目 ID 和其他信息,才能在您的計算機/樹莓派/手機上運行我的程序。
? ? ?public static MobileServiceClient MobileService = new ? ? ? ? ? ? ? ? ? ? ? ? MobileServiceClient(
? ? ? ? ? ? ? ? ? "https://myandroid.azure-mobile.net/",
? ? ? ? ? ? ? ? ? "Replace this string");
和
? ? ?item_default.Id = "xxxxxxxxxxxxxxxxxxxxxxxxxx";
//Inside this case statement of?data_received(byte[] data_byte) function
case (byte)packet_type.update_packet:
..................
? if ((bool)autocontrol.IsChecked)
{
byte[] bb = {0x00,0x00, 0x00
, 0x00 , 0x00 , 0x00 };
if (temp < 140)
bb[0] = (byte)(temp);
else
bb[0] = 140;
bb[1] = data_byte[8]; ? ? ? ? ?//Added code (This will enable buzzer based?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //PIR reading.
bb[2] = lastitem.device3_state;
bb[3] = lastitem.device4_state;
nrf_send_data(bb, lastitem.device_address, packet_type.data_packet);
}
.......
}
最后一點
Windows IoT 家庭自動化與其他系統(tǒng)
附錄?
有些人可能不熟悉微控制器 (uC) 和 uC 編程。我將解釋刻錄從屬設(shè)備的 .hex 文件所需的一些基本內(nèi)容。
1.您需要安裝Microchip的MPLAB X IDE和XC8 Compiler才能重新編譯程序。如果只需要燒錄程序,則不需要安裝 XC8 編譯器。
您可以從此鏈接下載 MPLAB X 和 XC8 編譯器MPLAB X 和 XC8
2. 編程硬件工具或簡單的編程器是將程序燒錄到 uC 中必不可少的。對于 Microchip 的 PIC 控制器,可以使用 PicKit3、PicKit2 或 ICD3/2。(需要連接 MCLR、VDD、GND、PGD 和 PGC 引腳)。
3. 你可以在PCB設(shè)計中看到PicKit3的header。
..................................................... ..................................................... ......................
不可能在這里解釋整個程序。因此,請閱讀給定代碼文件的注釋。我在本文末尾添加了一些有用的代碼片段。
隨時發(fā)表您對這個項目的評論、意見和疑問。
謝謝 :)
阿南德。
- 基于Raspberry PI的應(yīng)用程序的典型場景家庭自動化
- 基于諾基亞5110的Raspberry Pi帽子 0次下載
- 基于樹莓派的開源庫存管理系統(tǒng)和MySQL數(shù)據(jù)庫 0次下載
- 基于Microsoft Azure和Raspberry Pi的鳥類探測器
- 帶有使用Raspberry Pi的數(shù)據(jù)庫安全系統(tǒng)的鍵盤
- ACS數(shù)據(jù)庫與RSC數(shù)據(jù)庫比較研究
- 創(chuàng)建新的數(shù)據(jù)庫和更改SQL Server CE數(shù)據(jù)庫中的數(shù)據(jù)操作教程免費下載 5次下載
- 數(shù)據(jù)庫教程之數(shù)據(jù)庫的設(shè)計過程資料說明 10次下載
- 數(shù)據(jù)庫學(xué)習(xí)教程之數(shù)據(jù)庫的發(fā)展?fàn)顩r如何數(shù)據(jù)庫有什么新發(fā)展 5次下載
- 數(shù)據(jù)庫教程之數(shù)據(jù)庫的創(chuàng)建與管理詳細(xì)資料免費下載 18次下載
- 數(shù)據(jù)庫教程之如何進(jìn)行數(shù)據(jù)庫設(shè)計 21次下載
- 如何進(jìn)行數(shù)據(jù)庫設(shè)計?數(shù)據(jù)庫設(shè)計介紹和需求分析及結(jié)構(gòu)設(shè)計資料概述 0次下載
- 《愛上Raspberry Pi》中譯版-電子書籍.pdf 0次下載
- 無線家庭自動化IPv6和特 4次下載
- 現(xiàn)代家庭自動化遙控系統(tǒng)電路圖
- 無模式數(shù)據(jù)庫的利與弊 366次閱讀
- 一款數(shù)據(jù)庫自動化提權(quán)工具 558次閱讀
- 多平臺的關(guān)系數(shù)據(jù)庫管理和開發(fā)工具 698次閱讀
- 什么是數(shù)據(jù)庫 1190次閱讀
- Python-mysql數(shù)據(jù)庫基礎(chǔ) 614次閱讀
- 常見的數(shù)據(jù)庫管理 1916次閱讀
- 基于Raspberry Pi Pico開發(fā)先進(jìn)的家庭自動化系統(tǒng) 2849次閱讀
- 云數(shù)據(jù)庫和自建數(shù)據(jù)庫的區(qū)別及應(yīng)用 4412次閱讀
- 利用Raspberry Pi構(gòu)建存儲和虛擬化時間序列數(shù)據(jù) 884次閱讀
- 自動駕駛技術(shù)虛擬場景數(shù)據(jù)庫的介紹和特點及仿真場景的詳細(xì)概述 1.1w次閱讀
- 一文看懂數(shù)據(jù)庫原理與應(yīng)用 11.7w次閱讀
- 數(shù)據(jù)庫引擎是什么 1.1w次閱讀
- 什么是數(shù)據(jù)庫技術(shù)_數(shù)據(jù)庫技術(shù)的基礎(chǔ)知識 1.3w次閱讀
- 目前流行的數(shù)據(jù)庫_構(gòu)建數(shù)據(jù)庫系統(tǒng)的流程 7076次閱讀
- 基于COM技術(shù)的SCADA系統(tǒng)數(shù)據(jù)庫設(shè)計 2343次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 1.06 MB | 532次下載 | 免費
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費
- 3TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費
- 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費
- 6迪文DGUS開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 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十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多