資料介紹
描述
項(xiàng)目級別:中級到高級
軟件先決條件
- 視窗 10
- 視覺工作室 2015
- 安卓工作室
- MPLAB X IDE(帶 XC8 編譯器)
介紹
Windows IoT 新的 Windows IoT 為開發(fā)人員提供了一些功能,可以在更短的時(shí)間內(nèi)創(chuàng)建強(qiáng)大而高效的應(yīng)用程序。Windows IoT 驅(qū)動的 Raspberry Pi 是這個(gè)家庭自動化項(xiàng)目的關(guān)鍵要素。 ??

Raspberry Pi 充當(dāng)系統(tǒng)的主人。Raspberry Pi 通過 2.4GHz ISM Band RF Link 連接到許多從屬設(shè)備。從設(shè)備是一個(gè)基于 PIC18F 微控制器的電路板,具有與 Raspberry Pi 建立雙工無線鏈路所需的電路和程序。除了不同的設(shè)備 ID/地址(應(yīng)該是唯一的)和設(shè)備類型編號外,每個(gè)從設(shè)備都具有相同的電路和 PCB 設(shè)計(jì)。Windows IoT 上的 C# 程序能夠同時(shí)處理任意數(shù)量的從屬設(shè)備。?
特征
2. Raspberry Pi 通過 ISM 頻段 2.4GHz 無線鏈路連接到一個(gè)或多個(gè)從設(shè)備。
3. 這些從屬設(shè)備允許Raspberry Pi 遠(yuǎn)程控制家用電器/電子設(shè)備。
4. 可以進(jìn)行不同級別的控制。
一種。基于繼電器的控制(簡單的開/關(guān)功能)。
b. 基于 Triac 的控制(可以控制光強(qiáng)度或平均功率)
C。電機(jī)控制(基于三端雙向可控硅或直流電機(jī)驅(qū)動)
d. 用戶可以毫不費(fèi)力地添加其他控制方法,如 PWM、反饋系統(tǒng)等。
5. 我已經(jīng)編寫了一個(gè)移動應(yīng)用程序來啟用基于 Internet 和本地網(wǎng)絡(luò)(數(shù)據(jù)報(bào)套接字)的控制。
6. 樹莓派添加新的從設(shè)備無需更改程序。只需點(diǎn)擊奴隸的“添加我”按鈕。Raspberry Pi 會自動將設(shè)備添加到網(wǎng)絡(luò)(自動掃描選項(xiàng)也可用)。
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í)器的控制選項(xiàng)。設(shè)置您想要關(guān)閉/打開特定設(shè)備的時(shí)間,Raspberry Pi 將完成剩下的工作。
10.無需太多修改即可輕松引入語音檢測/語音命令。
11. 傳感器讀數(shù)可以寫入帶有時(shí)間戳的 Azure 數(shù)據(jù)庫。電氣設(shè)備也可以通過 Azure 云數(shù)據(jù)庫進(jìn)行控制。
樹莓派連接?

在這個(gè)家庭自動化系統(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è)備通信。整個(gè)C#程序可以從本文的軟件部分(GitHub)下載。
(注意:由于程序的硬件IO要求,編譯到x64/x86平臺可能無法正常工作。
注意:我為無線模塊編寫的 nRF 類沒有利用該模塊的真正潛力。一旦我有足夠的時(shí)間,我將更新 GitHub nRF 類文件。)

?
? ?C# 應(yīng)用程序支持 3 種方式來控制家用電器甚至工業(yè)系統(tǒng)。
1. RPi 的 GUI。在 Raspberry Pi 中運(yùn)行的漂亮 C# GUI 將允許您監(jiān)視網(wǎng)絡(luò)命令、不同的傳感器讀數(shù)、控制家用電器和自動控制以及其他后臺任務(wù),如 Azure DB 讀/寫、計(jì)時(shí)器等。

設(shè)備框列出了所有可用的從屬設(shè)備。您可以隨時(shí)刪除或添加從屬設(shè)備。?
在 GUI 的頂部,您可以看到通過 nRF 無線鏈接從從屬設(shè)備提取的不同傳感器讀數(shù)。C# 應(yīng)用程序使用這些傳感器讀數(shù)來自動控制電氣設(shè)備。
在底部,“網(wǎng)絡(luò)日志”框顯示通過 Azure 云數(shù)據(jù)庫或 LAN 從移動設(shè)備/計(jì)算機(jī)接收到的所有命令以及連接設(shè)備的 IP 地址和名稱。在其下方,放置了一個(gè)狀態(tài)欄。它向用戶顯示所有必要的信息和通知。通過打開“自動更新”按鈕,您將從選定的從屬設(shè)備的傳感器數(shù)據(jù)中獲得實(shí)時(shí)更新(可以將這些傳感器數(shù)據(jù)寫入帶有時(shí)間戳的 Azure DB 中)。此按鈕還可用于檢查從設(shè)備是否在 nRF24 的 RF 鏈接的無線范圍內(nèi)。“自動控制”復(fù)選框用于啟用“自動控制”模式,該模式可以根據(jù)光強(qiáng)度傳感器讀數(shù)調(diào)整光強(qiáng)度。在 PIR 傳感器的幫助下,還可以對人員存在發(fā)出警報(bào)。
除了控制之外,還可以通過 LAN 或 Azure 云數(shù)據(jù)庫傳輸消息。

2.本地?cái)?shù)據(jù)報(bào)包。
?我開發(fā)了一個(gè)簡單的 Android 和 Windows 通用應(yīng)用程序,用于通過本地網(wǎng)絡(luò) (LAN) 控制設(shè)備。
3. 基于Azure 云數(shù)據(jù)庫的控制。?
上面說的同一個(gè)應(yīng)用程序有一個(gè)特殊的模式通過互聯(lián)網(wǎng)(通過 Azure 云)向 Raspberry Pi 發(fā)送命令 ? ?

(注意:我制作這些應(yīng)用程序只是為了測試功能。如果你擅長 GUI 設(shè)計(jì),你可以做得更好
注意:如果沒有運(yùn)行 Windows IoT 的強(qiáng)大 Raspberry Pi 和上述 C# 應(yīng)用程序,則無法使用此應(yīng)用程序。
注意:所有網(wǎng)絡(luò)命令都以一個(gè)字符開頭,?'!'
您可以在 Pi 的 C# 程序的 MainPage.cs 文件中看到完整的命令。)
?
?
從機(jī)
從設(shè)備是一塊基于 PIC18F24K20 的板,帶有 nRF24 無線模塊。除了單獨(dú)的設(shè)備類型代碼和唯一的 ID/地址編號外,所有從屬設(shè)備都具有相同的電路和固件程序。因此,不費(fèi)吹灰之力就可以輕松制作任意數(shù)量的從屬設(shè)備。

每個(gè)從屬設(shè)備都有一個(gè)“AddMe”和“RemoveMe”按鈕,用于將該從屬設(shè)備注冊到 Raspberry Pi 或刪除從屬設(shè)備。?
更新 (15/09/2015)
我添加了一個(gè)“自動掃描”選項(xiàng)。現(xiàn)在,連同“AddMe”按鈕,您可以掃描其無線范圍內(nèi)的從屬設(shè)備。此選項(xiàng)將允許您添加樹莓派無線范圍內(nèi)的所有從屬設(shè)備,而無需按從屬設(shè)備的“AddMe”按鈕。您所需要的只是“掃描”并等待可用設(shè)備列出。>
傳感器可用
1.溫度傳感器(LM35)
2.光強(qiáng)度傳感器(LDR)
3. PIR傳感器(HC-SR601)

從設(shè)備原理圖和 PCB 設(shè)計(jì)
您可以從本文的硬件部分下載 Eagle CAD 文件。
(我沒有在互聯(lián)網(wǎng)上找到任何好的 nRF Eagle 庫。所以我自己制作了一個(gè)。您可以在本文的自定義部件和外殼部分找到這個(gè) nRF24L01+ 庫)

從設(shè)備如何工作
Slave Devices類似于無線擴(kuò)展樹莓派的IO口。盡管無線通信系統(tǒng)有點(diǎn)復(fù)雜,但使用起來非常方便。永遠(yuǎn)不可能僅僅為了實(shí)施自動化系統(tǒng)而為整個(gè)家庭布線。所以,我決定選擇無線系統(tǒng)。另一個(gè)附加優(yōu)勢是,您可以隨時(shí)將家庭自動化系統(tǒng)擴(kuò)展到任何房間,而無需添加或更新一行代碼。您所需要的只是奴隸的“點(diǎn)擊添加我”按鈕。想象一下用有線系統(tǒng)做同樣的事情??!

正如我所說,slave 設(shè)備以靈活性和更多控制擴(kuò)展了 Raspberry Pi 的范圍。由用戶決定他/她應(yīng)該分配給從屬設(shè)備的控制功能。就像模板一樣,我制作了 5 種不同類型的從屬控件。您可以毫不費(fèi)力地將它擴(kuò)展到任何類型的任何數(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 是一種交流功率器件,可用于電機(jī)速度控制、光強(qiáng)度控制等快速開關(guān)應(yīng)用。適當(dāng)?shù)挠|發(fā)是必要的,在設(shè)計(jì) Triac 電路時(shí)還應(yīng)考慮換向方法。從設(shè)備和 TRIAC 控制板的集成使系統(tǒng)更加有用和靈活。Triac 的觸發(fā)有點(diǎn)棘手。您需要一個(gè)過零檢測器來了解交流電 (LM358) 的過零點(diǎn)。從機(jī)內(nèi)部的 PIC18F24K20 微控制器將識別過零點(diǎn)(來自 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直流電機(jī)裝置
它是中繼設(shè)備的擴(kuò)展。這里不是繼電器電路,從設(shè)備控制兩個(gè) 12v 直流電機(jī)。流行的電機(jī)驅(qū)動器 IC L293 或 L93D 可用于這些設(shè)備。

樹莓派從機(jī)無線通信
對于 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 將使用這個(gè)唯一的設(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 器件、繼電器和電機(jī)控制板。Raspberry Pi 如何知道或識別從設(shè)備將要執(zhí)行的操作類型(你已經(jīng)知道,每個(gè)從設(shè)備都有相同的固件和電路)。這由數(shù)據(jù)包的第 3 個(gè)字節(jié)定義。
要將從設(shè)備配置為電機(jī)設(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# 僅使用第一個(gè)表?xiàng)l目)
?????1 / 4 ? hi world 或任何文本:Pi 將在網(wǎng)絡(luò)日志窗口中顯示此消息?
-
可以將不同的傳感器讀數(shù)插入到 Azure 數(shù)據(jù)庫中。我沒有在我的系統(tǒng)中使用它,但你只需要 2 行代碼就可以做到這一點(diǎn)。只需將更新代碼放置在?
azureMonitor_tick
計(jì)時(shí)器滴答事件中。
//Note free Azure Subscription has 20MB database size limit.
- 您必須輸入自己的 Azure 訂閱密鑰、表?xiàng)l目 ID 和其他信息,才能在您的計(jì)算機(jī)/樹莓派/手機(jī)上運(yùn)行我的程序。
? ? ?public static MobileServiceClient MobileService = new ? ? ? ? ? ? ? ? ? ? ? ? MobileServiceClient(
? ? ? ? ? ? ? ? ? "https://myandroid.azure-mobile.net/",
? ? ? ? ? ? ? ? ? "Replace this string");
和
? ? ?item_default.Id = "xxxxxxxxxxxxxxxxxxxxxxxxxx";
- 如果您不擅長 PCB 制作和電路設(shè)計(jì),我推薦 Arduino 或其他現(xiàn)成的電路板。對于更小的外形和低成本,請選擇定制設(shè)計(jì)。
//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);
}
.......
}
最后一點(diǎn)
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è)計(jì)中看到PicKit3的header。
..................................................... ..................................................... ......................
不可能在這里解釋整個(gè)程序。因此,請閱讀給定代碼文件的注釋。我在本文末尾添加了一些有用的代碼片段。
隨時(shí)發(fā)表您對這個(gè)項(xiàng)目的評論、意見和疑問。
謝謝 :)
阿南德。
- 基于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ù)庫比較研究
- 數(shù)據(jù)庫系統(tǒng)原理與應(yīng)用教程之關(guān)系數(shù)據(jù)庫的詳細(xì)資料說明 4次下載
- 創(chuàng)建新的數(shù)據(jù)庫和更改SQL Server CE數(shù)據(jù)庫中的數(shù)據(jù)操作教程免費(fèi)下載 5次下載
- 數(shù)據(jù)庫教程之數(shù)據(jù)庫的設(shè)計(jì)過程資料說明 10次下載
- 數(shù)據(jù)庫學(xué)習(xí)教程之數(shù)據(jù)庫的發(fā)展?fàn)顩r如何數(shù)據(jù)庫有什么新發(fā)展 5次下載
- 數(shù)據(jù)庫教程之如何進(jìn)行數(shù)據(jù)庫設(shè)計(jì) 21次下載
- 如何進(jìn)行數(shù)據(jù)庫設(shè)計(jì)?數(shù)據(jù)庫設(shè)計(jì)介紹和需求分析及結(jié)構(gòu)設(shè)計(jì)資料概述 0次下載
- 《愛上Raspberry Pi》中譯版-電子書籍.pdf 0次下載
- 無線家庭自動化IPv6和特 4次下載
- 現(xiàn)代家庭自動化遙控系統(tǒng)電路圖
- 無模式數(shù)據(jù)庫的利與弊 528次閱讀
- 一款數(shù)據(jù)庫自動化提權(quán)工具 733次閱讀
- 多平臺的關(guān)系數(shù)據(jù)庫管理和開發(fā)工具 937次閱讀
- 什么是數(shù)據(jù)庫 1474次閱讀
- Python-mysql數(shù)據(jù)庫基礎(chǔ) 740次閱讀
- 常見的數(shù)據(jù)庫管理 2110次閱讀
- 基于Raspberry Pi Pico開發(fā)先進(jìn)的家庭自動化系統(tǒng) 3003次閱讀
- 云數(shù)據(jù)庫和自建數(shù)據(jù)庫的區(qū)別及應(yīng)用 4669次閱讀
- 利用Raspberry Pi構(gòu)建存儲和虛擬化時(shí)間序列數(shù)據(jù) 952次閱讀
- 自動駕駛技術(shù)虛擬場景數(shù)據(jù)庫的介紹和特點(diǎn)及仿真場景的詳細(xì)概述 1.1w次閱讀
- 一文看懂數(shù)據(jù)庫原理與應(yīng)用 11.8w次閱讀
- 數(shù)據(jù)庫引擎是什么 1.1w次閱讀
- 什么是數(shù)據(jù)庫技術(shù)_數(shù)據(jù)庫技術(shù)的基礎(chǔ)知識 1.3w次閱讀
- 目前流行的數(shù)據(jù)庫_構(gòu)建數(shù)據(jù)庫系統(tǒng)的流程 7166次閱讀
- 基于COM技術(shù)的SCADA系統(tǒng)數(shù)據(jù)庫設(shè)計(jì) 2460次閱讀
下載排行
本周
- 1DD3118電路圖紙資料
- 0.08 MB | 1次下載 | 免費(fèi)
- 2AD庫封裝庫安裝教程
- 0.49 MB | 1次下載 | 免費(fèi)
- 3PC6206 300mA低功耗低壓差線性穩(wěn)壓器中文資料
- 1.12 MB | 1次下載 | 免費(fèi)
- 4網(wǎng)絡(luò)安全從業(yè)者入門指南
- 2.91 MB | 1次下載 | 免費(fèi)
- 5DS-CS3A P00-CN-V3
- 618.05 KB | 1次下載 | 免費(fèi)
- 6海川SM5701規(guī)格書
- 1.48 MB | 次下載 | 免費(fèi)
- 7H20PR5電磁爐IGBT功率管規(guī)格書
- 1.68 MB | 次下載 | 1 積分
- 8IP防護(hù)等級說明
- 0.08 MB | 次下載 | 免費(fèi)
本月
- 1貼片三極管上的印字與真實(shí)名稱的對照表詳細(xì)說明
- 0.50 MB | 103次下載 | 1 積分
- 2涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 89次下載 | 1 積分
- 3錦銳科技CA51F2 SDK開發(fā)包
- 24.06 MB | 43次下載 | 1 積分
- 4錦銳CA51F005 SDK開發(fā)包
- 19.47 MB | 19次下載 | 1 積分
- 5PCB的EMC設(shè)計(jì)指南
- 2.47 MB | 16次下載 | 1 積分
- 6HC05藍(lán)牙原理圖加PCB
- 15.76 MB | 13次下載 | 1 積分
- 7802.11_Wireless_Networks
- 4.17 MB | 12次下載 | 免費(fèi)
- 8蘋果iphone 11電路原理圖
- 4.98 MB | 6次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191390次下載 | 10 積分
- 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評論