資料介紹
描述
我喜歡密切關(guān)注我的工作空間的狀況。是熱還是濕?這對(duì)我來(lái)說(shuō)很重要,因?yàn)槲业氖孢m度取決于房間的濕度水平。
我可以遠(yuǎn)程打開(kāi)和關(guān)閉空調(diào),但我需要知道房間的狀態(tài)。我決定編寫一個(gè)程序,使用 Arduino Opla IoT 套件提供此信息。當(dāng)我靠近設(shè)備時(shí),設(shè)備會(huì)顯示此信息,當(dāng)我不靠近時(shí),設(shè)備會(huì)關(guān)閉屏幕。它還會(huì)將溫度和濕度記錄到 Arduino IoT Cloud,我可以遠(yuǎn)程監(jiān)控它。按照以下步驟重新創(chuàng)建此項(xiàng)目。
項(xiàng)目計(jì)劃
我想知道我的學(xué)習(xí)情況,無(wú)論是在家還是在外。當(dāng)我在房間里時(shí),我想看一眼屏幕。當(dāng)我不在的時(shí)候,我想通過(guò)查看手機(jī)上的儀表盤來(lái)了解情況。還有一件事,我希望書房里的屏幕在沒(méi)有人的時(shí)候熄滅。我有一個(gè) Arduino Opla 物聯(lián)網(wǎng)套件,其中包含我需要的一切。MKR IoT Carrier 配有溫度和濕度傳感器以及 OLED 屏幕。我將使用的具體組件是:
- Arduino MKR WiFi 1010
- Arduino MKR 物聯(lián)網(wǎng)載體
- PIR 運(yùn)動(dòng)傳感器和 Grove 連接器
- 微型 USB 數(shù)據(jù)線
組件組裝
。作為指南,將載體放入透明外殼中。
- 將托架擰入外殼
- 將 Grove 電纜的一端連接到載體的 A5 端口
- 將 Grove 電纜的另一端連接到 PIR 運(yùn)動(dòng)傳感器
- 將 MKR 板連接到 Micro-USB 電纜
- 關(guān)閉箱子的背面
- 將 Micro-USB 數(shù)據(jù)線的另一端連接到電腦
云設(shè)置
如果您在 Arduino IoT Cloud 上沒(méi)有帳戶,請(qǐng)繼續(xù)創(chuàng)建一個(gè)。
接下來(lái),轉(zhuǎn)到“設(shè)備”選項(xiàng)卡并注冊(cè)您的微控制器。這最多可能需要五分鐘,所以請(qǐng)耐心等待。
將 MKR WiFi 1010 連接到 Arduino IoT Cloud
瀏覽到https://create.arduino.cc/iot/開(kāi)始。
從創(chuàng)建一個(gè)新事物開(kāi)始。您可以將事物視為項(xiàng)目的等同物。你可以給它任何你喜歡的名字。我的叫做 MKR ENV。
接下來(lái),關(guān)聯(lián)屏幕右側(cè)的設(shè)備。這將配置設(shè)備,以便您可以將草圖上傳到它上面。完成后,通過(guò)提供您的 WiFi 憑據(jù)來(lái)配置您的網(wǎng)絡(luò)。如果您的設(shè)備允許您同時(shí)配置私有和公共(或來(lái)賓)網(wǎng)絡(luò),則最好為您的 IoT 設(shè)備使用來(lái)賓網(wǎng)絡(luò)。這樣,您就可以避免任何安全漏洞。
最后,添加兩個(gè)云變量。這些是您有興趣在儀表板上遠(yuǎn)程跟蹤的內(nèi)容。要添加的兩個(gè)變量是:
- 溫度,float類型,只讀,60s周期更新
- 濕度,float 類型,只讀,60 秒周期更新
這是其中一個(gè)變量的配置屏幕的樣子。
完成后,您可以進(jìn)入“草圖”選項(xiàng)卡。
云代碼
此時(shí),您已準(zhǔn)備好編寫更新兩個(gè)云變量的代碼。為此,我引入了一個(gè)函數(shù)。代碼如下。
void updateEnv() {
temperature = carrier.Env.readTemperature();
humidity = carrier.Env.readHumidity();
}
我只希望這個(gè)函數(shù)每分鐘運(yùn)行一次,所以我引入了一個(gè)變量來(lái)跟蹤我上次讀取讀數(shù)的時(shí)間,以及一個(gè)定義讀數(shù)間隔的常量。這些如下所示:
unsigned long lastRead = millis();
const int myDelay = 60000;
然后,在 loop() 函數(shù)內(nèi),我根據(jù)需要調(diào)用 updateEnv() 函數(shù)。這是下面的代碼:
void loop() {
ArduinoCloud.update();
// Your code here
if (millis() - lastRead > myDelay) {
lastRead = millis();
updateEnv();
}
}
這就是將讀數(shù)發(fā)送到 Arduino 物聯(lián)網(wǎng)云所需的全部?jī)?nèi)容。接下來(lái),讓我們創(chuàng)建一個(gè)儀表板。
儀表板
要?jiǎng)?chuàng)建儀表板,您可以單擊屏幕頂部的儀表板選項(xiàng)卡,或?qū)Ш街?/font>https://create.arduino.cc/iot/dashboards
接下來(lái),單擊“創(chuàng)建”按鈕。在下一頁(yè)上,為您的儀表板命名,然后繼續(xù)添加小部件。
我喜歡使用 Gauge 和 Percentage 小部件來(lái)跟蹤溫度和壓力的當(dāng)前狀態(tài),而我使用圖表來(lái)跟蹤歷史狀態(tài)或趨勢(shì)。在下圖中,您可以看到添加儀表的示例。
您可以為新小部件命名。您需要將它鏈接到一個(gè)變量,這就是您將它鏈接到溫度變量的地方。您還可以為儀表設(shè)置最小值和最大值。
下圖是從計(jì)算機(jī)上看到的我的工作儀表板的屏幕截圖。我既可以看到當(dāng)前值,也可以看到歷史值。
我還可以使用 Arduino IoT Remote 應(yīng)用程序從我的手機(jī)查看儀表板。
本地代碼
下一組代碼旨在讓我在屏幕上看到溫度和濕度。結(jié)果如下圖所示。
此時(shí),您需要返回 Sketch 編輯器,然后單擊“打開(kāi)完整編輯器”。
屏幕上的圖標(biāo)需要作為代碼引入。最簡(jiǎn)單的方法是將大小合適的圖像轉(zhuǎn)換為字符數(shù)組。您可以在以下 URL 執(zhí)行此操作:https ://javl.github.io/image2cpp/
然后您需要添加一個(gè)名為 logos.h 的文件,然后將您的字符數(shù)組復(fù)制到其中。下圖說(shuō)明了此文件的外觀。
回到 .ino 文件,我定義了一個(gè)函數(shù),用于在屏幕上呈現(xiàn)所有信息。
void displayReadings(String t, float temp, float humid) {
carrier.display.fillScreen(0x0000);
carrier.display.setCursor(60, 30);
carrier.display.setTextSize(3);
carrier.display.print(t);
carrier.display.setCursor(25, 60);
carrier.display.setTextSize(3);
carrier.display.drawBitmap(25, 70, m_thermostat, 48, 48, 0xDAC9);
carrier.display.setCursor(75, 80);
carrier.display.print(temp);
carrier.display.print(" C");
carrier.display.drawBitmap(25, 130, m_humidity, 48, 48, 0x0D14);
carrier.display.setCursor(75, 140);
carrier.display.print(humidity);
carrier.display.print(" %");
}
這個(gè)函數(shù)需要幾個(gè)參數(shù):當(dāng)前時(shí)間、溫度和壓力。注意承運(yùn)人。這是控制 MKR IoT Carrier 的類的實(shí)例。我們?cè)诓輬D的頂部聲明它。
MKRIoTCarrier carrier;
載體需要初始化。該代碼出現(xiàn)在 setup() 函數(shù)中。
//Initialize the MKR IoT Carrier
delay(1500);
CARRIER_CASE = false;
carrier.begin();
carrier.display.setRotation(0);
display("Starting ..");
注意 display() 函數(shù)。這也在草圖中定義。display() 的實(shí)現(xiàn)如下:
void display(String text) {
carrier.display.fillScreen(0x0000);
carrier.display.setCursor(25, 100);
carrier.display.setTextSize(3);
carrier.display.print(text);
}
為了獲得當(dāng)前時(shí)間,我選擇了一種避免每次都從云端讀取的方法。相反,我設(shè)置了一個(gè)實(shí)時(shí)時(shí)鐘的實(shí)例,并通過(guò)從 Arduino Cloud 獲取 Unix 時(shí)間來(lái)設(shè)置一次時(shí)間。變量定義如下。
unsigned long epochs;
RTCZero myRtc;
RTC 在以下代碼塊中初始化。
//Initialize the clock
myRtc.begin();
epochs = ArduinoCloud.getLocalTime();
initializeClock(epochs, &myRtc);
函數(shù) initializeClock() 使用所需時(shí)間更新 RTC 實(shí)例。函數(shù)實(shí)現(xiàn)如下:
void initializeClock(unsigned long epochs, RTCZero* rtc) {
UnixTime t(0);
t.getDateTime(epochs);
uint8_t y = t.year - 2000;
rtc->setDate(t.day, t.month, y);;
rtc->setTime(t.hour, t.minute, t.second);
}
要讀取時(shí)間,需要以下功能:
String getRTCTime(RTCZero* rtc) {
String t = zeroPad(rtc->getHours());
t.concat(":");
t.concat(zeroPad(rtc->getMinutes()));
t.concat(":");
t.concat(zeroPad(rtc->getSeconds()));
return t;
}
String zeroPad(int n) {
if (n > 9) {
return String(n);
}
String s = String(0);
s.concat(n);
return s;
}
最后,我們可以將所有這些結(jié)合起來(lái),根據(jù) PIR 傳感器觀察到的內(nèi)容,在屏幕上顯示或不顯示內(nèi)容。該草圖可在此處獲得:https://create.arduino.cc/editor/johnthas/399971c3-9ed7-48de-8cf9-a0955d60c08c/preview
- 使用HARDWARIO IoT套件測(cè)量土壤水分
- 房間燈光監(jiān)控系統(tǒng)開(kāi)源分享
- 使用Opla套件記錄加速度計(jì)數(shù)據(jù)
- Arduino IoT套件活動(dòng)01教程
- HARDWARIO IoT套件指紋傳感器
- 帶有HARDWARIO IoT套件的池監(jiān)視器
- 如何使用Opla庫(kù)
- 監(jiān)控兩個(gè)溫度和濕度敏感的房間的應(yīng)用程序
- 關(guān)于監(jiān)控房間內(nèi)的溫度開(kāi)源分享
- 為Deep Dive Coding、IoT Cohort 2而制作的智能房間控制器
- 電磁兼容市場(chǎng)狀況及未來(lái)發(fā)展.pdf 19次下載
- asp+ACCESS酒店房間預(yù)約系統(tǒng)設(shè)計(jì)(源代碼+論文)
- 基于NB-IoT的電力設(shè)備電量監(jiān)控系統(tǒng) 31次下載
- 基于MicroChip的阿里云IOT連接開(kāi)發(fā)套件方案 30次下載
- PROFIBUS網(wǎng)絡(luò)診斷與監(jiān)控套件
- 網(wǎng)絡(luò)監(jiān)控工具有哪些 網(wǎng)絡(luò)監(jiān)控用幾芯網(wǎng)線 802次閱讀
- 如何為IoT項(xiàng)目選擇最佳硬件 2747次閱讀
- CSA如何監(jiān)控衛(wèi)星健康狀況和功能 2441次閱讀
- 圖像傳感器為視頻監(jiān)控帶來(lái)了新趨勢(shì) 8.3w次閱讀
- 什么是物聯(lián)網(wǎng)開(kāi)發(fā)套件?如何挑選物聯(lián)網(wǎng)開(kāi)發(fā)套件 5048次閱讀
- 微雪電子人工智能物聯(lián)網(wǎng)開(kāi)發(fā)套件介紹 2560次閱讀
- 微雪電子Maix Go AIoT 人工智能物聯(lián)網(wǎng)開(kāi)發(fā)套件介紹 3008次閱讀
- 淺談人工智能物聯(lián)網(wǎng)設(shè)計(jì)的AIoT開(kāi)發(fā)套件特點(diǎn)及參數(shù) 4468次閱讀
- 賽普拉斯推出微型無(wú)電池傳感器Beacon套件,可適用各種物聯(lián)網(wǎng)IoT應(yīng)用 1169次閱讀
- SmartBond? DA14585 IoT多傳感器開(kāi)發(fā)套件的優(yōu)勢(shì)及應(yīng)用 5364次閱讀
- IoT能帶來(lái)的益處產(chǎn)生迷思,整理常見(jiàn)的五大IoT迷思 6754次閱讀
- 豪威科技和Jungo合作開(kāi)發(fā)的評(píng)估套件 使人更容易開(kāi)發(fā)駕乘人員監(jiān)控系統(tǒng) 5544次閱讀
- 芯科推出新一代Thunderboard Sense 2 IoT傳感器至云物聯(lián)網(wǎng)開(kāi)發(fā)套件 5892次閱讀
- 賽普拉斯與富昌電子及村田公司推出Nebula IoT開(kāi)發(fā)套件 8306次閱讀
- 基于Android智能家居遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì) 5428次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊(cè)
- 1.06 MB | 532次下載 | 免費(fèi)
- 2RK3399完整板原理圖(支持平板,盒子VR)
- 3.28 MB | 339次下載 | 免費(fèi)
- 3TC358743XBG評(píng)估板參考手冊(cè)
- 1.36 MB | 330次下載 | 免費(fèi)
- 4DFM軟件使用教程
- 0.84 MB | 295次下載 | 免費(fèi)
- 5元宇宙深度解析—未來(lái)的未來(lái)-風(fēng)口還是泡沫
- 6.40 MB | 227次下載 | 免費(fèi)
- 6迪文DGUS開(kāi)發(fā)指南
- 31.67 MB | 194次下載 | 免費(fèi)
- 7元宇宙底層硬件系列報(bào)告
- 13.42 MB | 182次下載 | 免費(fèi)
- 8FP5207XR-G1中文應(yīng)用手冊(cè)
- 1.09 MB | 178次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開(kāi)關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊(cè)免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德?tīng)栔?/a>
- 0.00 MB | 6656次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537798次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420027次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191187次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多