Raspberry Pi 是最著名的低成本計算機之一,也是用于對不同類型的物聯網和嵌入式項目進行原型設計的強大工具。隨著樹莓派在物聯網領域的普及,粒子云開始在其平臺上支持該板。
Particle Cloud是一個非常流行的物聯網平臺,它可以幫助您從您想要在物聯網設備中執行的所有操作開始。Particle 是一個可靠、可擴展且安全的物聯網設備平臺。有許多支持物聯網的粒子設備,如 Xenon、Photon、Electron 等,它們根據我們的需要具有不同的功能。
有許多物聯網平臺,如Blynk、ThingSpeak 等,您可以使用它們將 Raspberry Pi 連接到物聯網云,但粒子云平臺有一些很棒的功能,使其與眾不同。就像您可以使用粒子云 IDE 在您的 Raspberry Pi 中運行您的 Arduino 代碼一樣,并且可以在世界任何地方對您的 Pi 進行編程,現在這很酷!此外,您可以輕松集成 IFTTT、Google Cloud 或 Microsoft Azure。
讓我們通過使用 Particle Mobile 應用程序和來自世界任何地方的在線 Particle IDE 制作簡單的 Raspberry Pi 應用程序來控制家用 AC 設備,開始探索 Particle 云平臺。
所需組件
安裝了 Raspbian 的 Raspberry PI
繼電器模塊
220v 燈泡
跳線
假設您的 Raspberry Pi 已經刷入了操作系統。如果沒有,請 在繼續之前遵循Raspberry Pi 入門教程。這里我們使用 Rasbian Jessie 安裝 Raspberry Pi 3。
電路原理圖
這個Raspberry Pi Home Automaton 項目的電路圖很簡單:
我們必須在 Raspberry Pi 中安裝Particle 代理才能將其與 Particle Cloud 連接。Particle Agent 是一個在后臺運行的軟件服務,用于與 Raspberry pi 的 GPIO 引腳進行交互。在安裝代理之前,您必須在 Particle.io 上創建一個帳戶。
我們將從在粒子云上創建一個帳戶并了解粒子平臺的界面開始。
設置粒子云帳戶和樹莓派
1. 前往Particle.io并點擊右上角的控制臺。現在,單擊創建帳戶。填寫所有信息,然后單擊注冊。
2. 現在,在樹莓派終端中運行以下命令來安裝粒子代理。
bash 《( curl -sL https://particle.io/install-pi )
輸入您在第一步中創建的粒子云電子郵件和密碼。
3. 粒子代理成功安裝在 Pi 中并在后臺運行。它也在聽粒子云。您可以使用以下命令獲取更多信息代理。
現在,讓我們跳到編碼部分并探索粒子平臺。
使用 Raspberry Pi 和 Particle Cloud 控制 AC 設備
如果您已在 Pi 上成功安裝了 Particle 代理,那么您可以在Particle 控制臺上找到您的設備。如下所示
如您所見,屏幕左側有許多選項,包括添加新設備、創建網狀網絡、與 IFTTT、Microsoft Azure 和 Web IDE 集成。
1.首先,點擊Web IDE選項。將使用在線 IDE 打開一個新選項卡,如下所示。
2. 現在,您可以在 Raspberry Pi 中使用您的 Arduino 代碼。還給出了一些示例代碼。我們將在線控制 AC 燈泡,因此,單擊 Web-Connected LED 示例并連接您的繼電器模塊,如電路圖所示。代碼中使用的引腳是 D7。引腳映射如下所示。
3. 現在,編譯代碼并點擊 Flash。確保您的 Raspberry Pi 已連接到互聯網。此外,您可以根據需要更改代碼,但您必須分叉要使用的示例代碼。
4. 正如您在代碼中看到的那樣,無論何時發送“on”,燈泡都會發光,而無論何時發送“off”,燈泡都會熄滅。要發出命令,請返回控制臺選項卡并單擊設備。單擊刷新按鈕,您將看到一個需要參數來執行函數調用的 led 函數。在這里你必須寫“on”和“off”來打開和關閉燈泡。編寫參數后單擊調用。
5. 現在,使用移動應用程序控制燈泡。
在應用程序中,您將看到您的樹莓派已列出,單擊它。
6. 單擊數據。您會在這里找到相同的 LED 功能。只需輸入參數并單擊發送。通過這種方式,您也可以使用智能手機控制您的設備。
7. Web IDE 中有一個特殊的代碼示例,稱為Tinker。在 Raspberry Pi 中上傳此代碼后,您可以一次控制多個引腳,而無需對其進行硬編碼。此外,您無需在代碼中指定引腳即可獲得傳感器讀數。
8. 只要您 Flash 修補程序示例代碼,您將在應用程序中的設備前面看到修補程序選項。點擊它。
9. 現在,選擇要在其上獲得輸出或輸入的引腳。單擊時,系統會要求您單擊digitalWrite、digitalRead、analogRead和analogWrite。在我們的例子中,單擊引腳 D7上的digitalWrite 。
分配功能后,只需單擊引腳 D7。你會看到燈泡在發光。再次按下 D7 時,燈泡將關閉。同樣,您可以獲取不同引腳上的傳感器數據,并可以同時控制電器。
// ------------------------------------
// 通過 Internet 控制 LED
// ---- -------------------------------------------
// 首先,讓我們為引腳創建“速記”
// 與閃爍 LED 示例相同:
// led1 是 D0,led2 是 D7
詮釋 led2 = D7;
// 上次,我們只需要在 setup 函數中聲明引腳。
// 這一次,我們也要注冊我們的粒子函數
void setup()
{
// 這是引腳配置,和上次一樣
pinMode(led1, OUTPUT);
pinMode(led2,輸出);
// 我們還將聲明一個 Particle.function,以便我們可以在云端打開和關閉 LED。
Particle.function("led",ledToggle);
// 這就是說,當我們向云請求函數“led”時,它將使用此應用程序中的函數 ledToggle()。
// 為了更好地衡量,我們還要確保在啟動時兩個 LED 都熄滅:
digitalWrite(led1, LOW);
數字寫入(led2,低);
}
// 上次,我們希望 LED 持續閃爍,
// 因為這次我們正在等待通過云輸入,
// 我們實際上不需要在循環中放入任何東西
void loop()
{
// 此處無事可做
}
// 現在我們將擁有一個超級酷的函數,當發送匹配的 API 請求時調用它
// 這是我們之前注冊到“led”Particle.function 的 ledToggle 函數。
int ledToggle(String command) {
/* Particle.functions 總是將字符串作為參數并返回一個整數。
由于我們可以傳遞一個字符串,這意味著我們可以給程序命令如何使用該函數。
在這種情況下,告訴函數“on”將打開 LED,告訴它“off”將關閉 LED。
然后,該函數返回一個值給我們,讓我們知道發生了什么。
在這種情況下,它將返回 1 表示 LED 亮起,0 表示 LED 關閉,
如果我們收到一個完全虛假的命令,它沒有對 LED 做任何事情,則返回 -1。
*/
if (command=="on") {
digitalWrite(led1,HIGH);
數字寫入(led2,高);
返回 1;
}
else if (command=="off") {
digitalWrite(led1,LOW);
數字寫入(led2,低);
返回0;
}
其他 {
返回 -1;
}
}
-
物聯網
+關注
關注
2927文章
45887瀏覽量
388060 -
家庭自動化
+關注
關注
2文章
64瀏覽量
21818
發布評論請先 登錄
安裝Raspberry Pi Clock Hat的教程分享
基于Raspberry Pi Pico開發先進的家庭自動化系統
具有Azure數據庫支持的Raspberry Pi無線家庭自動化

基于Raspberry PI的應用程序的典型場景家庭自動化

評論