電子發(fā)燒友App

硬聲App

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>具有Azure數(shù)據(jù)庫支持的Raspberry Pi無線家庭自動化

具有Azure數(shù)據(jù)庫支持的Raspberry Pi無線家庭自動化

2022-12-23 | zip | 0.30 MB | 次下載 | 免費

資料介紹

描述

項目級別:中級到高級

軟件先決條件

  • 視窗 10
  • 視覺工作室 2015
  • 安卓工作室
  • MPLAB X IDE(帶 XC8 編譯器)

介紹

Windows IoT 新的 Windows IoT 為開發(fā)人員提供了一些功能,可以在更短的時間內(nèi)創(chuàng)建強大而高效的應(yīng)用程序。Windows IoT 驅(qū)動的 Raspberry Pi 是這個家庭自動化項目的關(guān)鍵要素。 ??

?
poYBAGOkEAyAW2aQAAF4CxAVQX8466.png
整體系統(tǒng)表示
?

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è)備。?

特征

1. 智能手機/電腦可用于控制家電。

2. Raspberry Pi 通過 ISM 頻段 2.4GHz 無線鏈路連接到一個或多個從設(shè)備。

3. 這些從屬設(shè)備允許Raspberry Pi 遠(yuǎn)程控制家用電器/電子設(shè)備。

4. 可以進(jìn)行不同級別的控制。

一種。基于繼電器的控制(簡單的開/關(guān)功能)。

b. 基于 Triac 的控制(可以控制光強度或平均功率)

C。電機控制(基于三端雙向可控硅或直流電機驅(qū)動)

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)行控制。

樹莓派連接?

?
pYYBAGOkEA-AaCkMAAMOZwXAQw4983.jpg
樹莓派nRF模塊連接
?

在這個家庭自動化系統(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 類文件。)

?
?
?
?
pYYBAGOkEB6AC25JAASw23glHHE098.jpg
?
1 / 2
?

?

? ?C# 應(yīng)用程序支持 3 種方式來控制家用電器甚至工業(yè)系統(tǒng)。

1. RPi 的 GUI。在 Raspberry Pi 中運行的漂亮 C# GUI 將允許您監(jiān)視網(wǎng)絡(luò)命令、不同的傳感器讀數(shù)、控制家用電器和自動控制以及其他后臺任務(wù),如 Azure DB 讀/寫、計時器等。

?
?
?
?
poYBAGOkECOARWDQAACyoldkKn8130.jpg
?
1 / 4 ? 7 個從設(shè)備已連接,Triac 控制頁面
?

設(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ù)庫傳輸消息。

?
poYBAGOkEFKAHY2cAA4rxFG2fig930.jpg
Raspberry Pi GUI 的網(wǎng)絡(luò)日志窗口
?

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ā)送命令 ? ?

?
?
?
?
poYBAGOkEFWAaFDaAACM9_MRkEE396.png
?
1 / 2 ? Windows 通用應(yīng)用程序(通過互聯(lián)網(wǎng)的數(shù)據(jù)包支持基于云的控制)
?

(注意:我制作這些應(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è)備。

?
?
?
?
pYYBAGOkEGqATXKwAAVPZ2cmjT0997.jpg
?
1 / 4 ?從設(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)

?
pYYBAGOkEG-ANARjAABmQfAsF14651.png
傳感器數(shù)據(jù)(Raspberry Pi 的 GUI)
?

從設(shè)備原理圖和 PCB 設(shè)計

您可以從本文的硬件部分下載 Eagle CAD 文件。

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

?
?
?
?
poYBAGOkEHuAAwmLAAGLP02aIvs258.png
?
1 / 2 ?從設(shè)備電路圖
?

從設(shè)備如何工作

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

?
poYBAGOkEJWAZ8JhAAOFmbZJseo158.png
從設(shè)備工作
?

正如我所說,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)。

?
?
?
?
poYBAGOkEJqAARwbAAEnuh0Wzek791.png
?
1 / 4 ? Triac 電路板 PCB 布局(鏡像) [如果您使用墨粉轉(zhuǎn)移法制作 PCB,則需要非鏡像布局。從本文的硬件部分下載完整的 CAD 文件。]
?
?
?
pYYBAGOkEKyASpRWAAPVRdBtqoo879.jpg
Triac 板的頂視圖(一些組件位于底層)。有關(guān)從設(shè)備連接的詳細(xì)信息,請參閱原理圖和 PCB 布局。
?

B. 中繼裝置

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

?
?
?
?
pYYBAGOkEK6AWnsiAAA5vxqgSBU412.png
?
1 / 3 ?簡單的晶體管繼電器驅(qū)動電路
?

C. 12v直流電機裝置

它是中繼設(shè)備的擴展。這里不是繼電器電路,從設(shè)備控制兩個 12v 直流電機。流行的電機驅(qū)動器 IC L293 或 L93D 可用于這些設(shè)備。

?
?
?
?
pYYBAGOkELGAQkITAABzHqOByFk242.jpg
?
1 / 2 ? L293 電機接口(L293D 不需要任何外部二極管)[VCC1= VCC2]
?

樹莓派從機無線通信

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

?
poYBAGOkELOAAp8rAAD9kzPg9rQ227.png
數(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

?一些溝通情況

?
pYYBAGOkELeAddzkAACuNpFE-bM579.png
可能的 AddMeScenarios
?
?
poYBAGOkELmAAMJqAAC_Kj5q_8g868.png
開/關(guān)/Triac/PWM/電機命令(尚未制造 PWM 設(shè)備)
?
?
poYBAGOkELyAJTwiAACmDLmw3uU262.png
讀取傳感器數(shù)據(jù)(自動更新) 此循環(huán)無限期重復(fù),除非用戶停止自動更新。
?
?
poYBAGOkEL-AWQuOAACfBoaGzOM152.png
刪除我的數(shù)據(jù)包
?
?

---------------------------------------------- -

其他有用的鏈接和注釋

  • 要啟用 Internet 控制,您需要注冊 Azure 帳戶并使用 Azure 數(shù)據(jù)庫。此鏈接將為您簡要介紹 Azure 數(shù)據(jù)庫和 Azure 移動服務(wù)Azure
  • (Pi 的 C# 僅使用第一個表條目)
    ?
    ?
    ?
    ?
    poYBAGOkEMGAN3tlAABRvOFBG_0981.png
    ?
    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";

  • 如果您不擅長 PCB 制作和電路設(shè)計,我推薦 Arduino 或其他現(xiàn)成的電路板。對于更小的外形和低成本,請選擇定制設(shè)計。

//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)

?
Windows IoT 家庭自動化與其他系統(tǒng)
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 引腳)。

?
?
?
?
pYYBAGOkEMyALuA7AAOLz5BETv8224.jpg
?
1 / 2 ? PicKit3 和從設(shè)備??
?

3. 你可以在PCB設(shè)計中看到PicKit3的header。

如何在樹莓派上安裝 Windows IoT

PIC18F24K20 數(shù)據(jù)表

Nrf24l01 數(shù)據(jù)表

BT136 數(shù)據(jù)表

..................................................... ..................................................... ......................

不可能在這里解釋整個程序。因此,請閱讀給定代碼文件的注釋。我在本文末尾添加了一些有用的代碼片段。

隨時發(fā)表您對這個項目的評論、意見和疑問。

謝謝 :)

阿南德。


下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風(fēng)口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應(yīng)用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應(yīng)用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關(guān)電源設(shè)計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎(chǔ)pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設(shè)計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學(xué)會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費