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

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

在這個家庭自動化系統(tǒng)中,Raspberry Pi 沒有任何物理連接,除了 nRF SPI 通信鏈路 [不包括電源、以太網(wǎng)/WiFi 和 HDMI(可選)等基本連接]。所有的控制、監(jiān)控、決策、觸發(fā)和切換操作都在 Raspberry Pi 中完成。Raspberry Pi 使用雙工無線鏈路(非 WiFi 或藍牙標準)與從屬設備通信。整個C#程序可以從本文的軟件部分(GitHub)下載。
(注意:由于程序的硬件IO要求,編譯到x64/x86平臺可能無法正常工作。
注意:我為無線模塊編寫的 nRF 類沒有利用該模塊的真正潛力。一旦我有足夠的時間,我將更新 GitHub nRF 類文件。)

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

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

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

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

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

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

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

正如我所說,slave 設備以靈活性和更多控制擴展了 Raspberry Pi 的范圍。由用戶決定他/她應該分配給從屬設備的控制功能。就像模板一樣,我制作了 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 是一種交流功率器件,可用于電機速度控制、光強度控制等快速開關應用。適當?shù)挠|發(fā)是必要的,在設計 Triac 電路時還應考慮換向方法。從設備和 TRIAC 控制板的集成使系統(tǒng)更加有用和靈活。Triac 的觸發(fā)有點棘手。您需要一個過零檢測器來了解交流電 (LM358) 的過零點。從機內部的 PIC18F24K20 微控制器將識別過零點(來自 LM358 的方波)并根據(jù)我們從 Raspberry Pi 發(fā)送的觸發(fā)延遲觸發(fā)三端雙向可控硅開關。


B. 中繼裝置
作為中繼設備配置和連接從站非常容易。除了 5v 或 12v 繼電器、BC547 NPN 晶體管 1k 電阻器和 1N4001/1N4004/1N4007 二極管或 ULN2003 達林頓對 IC 之外,您不需要任何額外的大型電路。我建議使用現(xiàn)成的簡單繼電器板(它非常便宜且容易獲得,不會超過 2 美元[至少在我們地區(qū)])

C. 12v直流電機裝置
它是中繼設備的擴展。這里不是繼電器電路,從設備控制兩個 12v 直流電機。流行的電機驅動器 IC L293 或 L93D 可用于這些設備。

樹莓派從機無線通信
對于 Raspberry Pi 和從屬設備之間的無線通信,我使用了 nRF24L01+ 模塊并在 10 字節(jié)的有效載荷內創(chuàng)建了自定義數(shù)據(jù)包結構。

數(shù)據(jù)包類型和從設備 ID
來自從設備的“add_me_packet”將在 Raspberry Pi 的設備列表中注冊該從設備 ID。Raspberry Pi 將使用這個唯一的設備 ID 與特定的從設備進行進一步的通信。?
同樣,數(shù)據(jù)包通常由樹莓派下發(fā),用于控制操作。
從屬設備在收到來自樹莓派的更新數(shù)據(jù)包請求后,將以其傳感器讀數(shù)和連接設備的狀態(tài)作為數(shù)據(jù)包響應給樹莓派。如果您知道系統(tǒng)的工作原理,您可以輕松地將我的 10 字節(jié)數(shù)據(jù)包系統(tǒng)更改為 20 或 32(最大)數(shù)據(jù)包系統(tǒng)。
設備類型
我們已經(jīng)看到了 Triac 器件、繼電器和電機控制板。Raspberry Pi 如何知道或識別從設備將要執(zhí)行的操作類型(你已經(jīng)知道,每個從設備都有相同的固件和電路)。這由數(shù)據(jù)包的第 3 個字節(jié)定義。
要將從設備配置為電機設備,您需要更改給定嵌入式 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
?*/
對于可控硅設備
#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
對于繼電器設備?
//#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 移動服務Azure
-
(Pi 的 C# 僅使用第一個表條目)
?????1 / 4 ? hi world 或任何文本:Pi 將在網(wǎng)絡日志窗口中顯示此消息?
-
可以將不同的傳感器讀數(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 編程。我將解釋刻錄從屬設備的 .hex 文件所需的一些基本內容。
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設計中看到PicKit3的header。
..................................................... ..................................................... ......................
不可能在這里解釋整個程序。因此,請閱讀給定代碼文件的注釋。我在本文末尾添加了一些有用的代碼片段。
隨時發(fā)表您對這個項目的評論、意見和疑問。
謝謝 :)
阿南德。
- 基于Raspberry PI的應用程序的典型場景家庭自動化
- 基于諾基亞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)原理與應用教程之關系數(shù)據(jù)庫的詳細資料說明 4次下載
- 創(chuàng)建新的數(shù)據(jù)庫和更改SQL Server CE數(shù)據(jù)庫中的數(shù)據(jù)操作教程免費下載 5次下載
- 數(shù)據(jù)庫教程之數(shù)據(jù)庫的設計過程資料說明 10次下載
- 數(shù)據(jù)庫學習教程之數(shù)據(jù)庫的發(fā)展狀況如何數(shù)據(jù)庫有什么新發(fā)展 5次下載
- 數(shù)據(jù)庫教程之如何進行數(shù)據(jù)庫設計 21次下載
- 如何進行數(shù)據(jù)庫設計?數(shù)據(jù)庫設計介紹和需求分析及結構設計資料概述 0次下載
- 《愛上Raspberry Pi》中譯版-電子書籍.pdf 0次下載
- 無線家庭自動化IPv6和特 4次下載
- 現(xiàn)代家庭自動化遙控系統(tǒng)電路圖
- 無模式數(shù)據(jù)庫的利與弊 528次閱讀
- 一款數(shù)據(jù)庫自動化提權工具 733次閱讀
- 多平臺的關系數(shù)據(jù)庫管理和開發(fā)工具 937次閱讀
- 什么是數(shù)據(jù)庫 1474次閱讀
- Python-mysql數(shù)據(jù)庫基礎 740次閱讀
- 常見的數(shù)據(jù)庫管理 2110次閱讀
- 基于Raspberry Pi Pico開發(fā)先進的家庭自動化系統(tǒng) 3003次閱讀
- 云數(shù)據(jù)庫和自建數(shù)據(jù)庫的區(qū)別及應用 4669次閱讀
- 利用Raspberry Pi構建存儲和虛擬化時間序列數(shù)據(jù) 952次閱讀
- 自動駕駛技術虛擬場景數(shù)據(jù)庫的介紹和特點及仿真場景的詳細概述 1.1w次閱讀
- 一文看懂數(shù)據(jù)庫原理與應用 11.8w次閱讀
- 數(shù)據(jù)庫引擎是什么 1.1w次閱讀
- 什么是數(shù)據(jù)庫技術_數(shù)據(jù)庫技術的基礎知識 1.3w次閱讀
- 目前流行的數(shù)據(jù)庫_構建數(shù)據(jù)庫系統(tǒng)的流程 7166次閱讀
- 基于COM技術的SCADA系統(tǒng)數(shù)據(jù)庫設計 2460次閱讀
下載排行
本周
- 1DD3118電路圖紙資料
- 0.08 MB | 1次下載 | 免費
- 2AD庫封裝庫安裝教程
- 0.49 MB | 1次下載 | 免費
- 3PC6206 300mA低功耗低壓差線性穩(wěn)壓器中文資料
- 1.12 MB | 1次下載 | 免費
- 4網(wǎng)絡安全從業(yè)者入門指南
- 2.91 MB | 1次下載 | 免費
- 5DS-CS3A P00-CN-V3
- 618.05 KB | 1次下載 | 免費
- 6海川SM5701規(guī)格書
- 1.48 MB | 次下載 | 免費
- 7H20PR5電磁爐IGBT功率管規(guī)格書
- 1.68 MB | 次下載 | 1 積分
- 8IP防護等級說明
- 0.08 MB | 次下載 | 免費
本月
- 1貼片三極管上的印字與真實名稱的對照表詳細說明
- 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設計指南
- 2.47 MB | 16次下載 | 1 積分
- 6HC05藍牙原理圖加PCB
- 15.76 MB | 13次下載 | 1 積分
- 7802.11_Wireless_Networks
- 4.17 MB | 12次下載 | 免費
- 8蘋果iphone 11電路原理圖
- 4.98 MB | 6次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191390次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評論