資料介紹
描述
我喜歡密切關(guān)注我的工作空間的狀況。是熱還是濕?這對我來說很重要,因為我的舒適度取決于房間的濕度水平。
我可以遠(yuǎn)程打開和關(guān)閉空調(diào),但我需要知道房間的狀態(tài)。我決定編寫一個程序,使用 Arduino Opla IoT 套件提供此信息。當(dāng)我靠近設(shè)備時,設(shè)備會顯示此信息,當(dāng)我不靠近時,設(shè)備會關(guān)閉屏幕。它還會將溫度和濕度記錄到 Arduino IoT Cloud,我可以遠(yuǎn)程監(jiān)控它。按照以下步驟重新創(chuàng)建此項目。
項目計劃
我想知道我的學(xué)習(xí)情況,無論是在家還是在外。當(dāng)我在房間里時,我想看一眼屏幕。當(dāng)我不在的時候,我想通過查看手機(jī)上的儀表盤來了解情況。還有一件事,我希望書房里的屏幕在沒有人的時候熄滅。我有一個 Arduino Opla 物聯(lián)網(wǎng)套件,其中包含我需要的一切。MKR IoT Carrier 配有溫度和濕度傳感器以及 OLED 屏幕。我將使用的具體組件是:
組件組裝

。作為指南,將載體放入透明外殼中。
- 將托架擰入外殼
 - 將 Grove 電纜的一端連接到載體的 A5 端口
 - 將 Grove 電纜的另一端連接到 PIR 運動傳感器
 - 將 MKR 板連接到 Micro-USB 電纜
 - 關(guān)閉箱子的背面
 - 將 Micro-USB 數(shù)據(jù)線的另一端連接到電腦
 
云設(shè)置
如果您在 Arduino IoT Cloud 上沒有帳戶,請繼續(xù)創(chuàng)建一個。
接下來,轉(zhuǎn)到“設(shè)備”選項卡并注冊您的微控制器。這最多可能需要五分鐘,所以請耐心等待。
將 MKR WiFi 1010 連接到 Arduino IoT Cloud
瀏覽到https://create.arduino.cc/iot/開始。

從創(chuàng)建一個新事物開始。您可以將事物視為項目的等同物。你可以給它任何你喜歡的名字。我的叫做 MKR ENV。

接下來,關(guān)聯(lián)屏幕右側(cè)的設(shè)備。這將配置設(shè)備,以便您可以將草圖上傳到它上面。完成后,通過提供您的 WiFi 憑據(jù)來配置您的網(wǎng)絡(luò)。如果您的設(shè)備允許您同時配置私有和公共(或來賓)網(wǎng)絡(luò),則最好為您的 IoT 設(shè)備使用來賓網(wǎng)絡(luò)。這樣,您就可以避免任何安全漏洞。
最后,添加兩個云變量。這些是您有興趣在儀表板上遠(yuǎn)程跟蹤的內(nèi)容。要添加的兩個變量是:
- 溫度,float類型,只讀,60s周期更新
 - 濕度,float 類型,只讀,60 秒周期更新
 
這是其中一個變量的配置屏幕的樣子。

完成后,您可以進(jìn)入“草圖”選項卡。
云代碼
此時,您已準(zhǔn)備好編寫更新兩個云變量的代碼。為此,我引入了一個函數(shù)。代碼如下。
void updateEnv() {
  temperature = carrier.Env.readTemperature();
  humidity = carrier.Env.readHumidity();
}
		我只希望這個函數(shù)每分鐘運行一次,所以我引入了一個變量來跟蹤我上次讀取讀數(shù)的時間,以及一個定義讀數(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)云所需的全部內(nèi)容。接下來,讓我們創(chuàng)建一個儀表板。
儀表板
要創(chuàng)建儀表板,您可以單擊屏幕頂部的儀表板選項卡,或?qū)Ш街?/font>https://create.arduino.cc/iot/dashboards
接下來,單擊“創(chuàng)建”按鈕。在下一頁上,為您的儀表板命名,然后繼續(xù)添加小部件。

我喜歡使用 Gauge 和 Percentage 小部件來跟蹤溫度和壓力的當(dāng)前狀態(tài),而我使用圖表來跟蹤歷史狀態(tài)或趨勢。在下圖中,您可以看到添加儀表的示例。

您可以為新小部件命名。您需要將它鏈接到一個變量,這就是您將它鏈接到溫度變量的地方。您還可以為儀表設(shè)置最小值和最大值。
下圖是從計算機(jī)上看到的我的工作儀表板的屏幕截圖。我既可以看到當(dāng)前值,也可以看到歷史值。

我還可以使用 Arduino IoT Remote 應(yīng)用程序從我的手機(jī)查看儀表板。

本地代碼
下一組代碼旨在讓我在屏幕上看到溫度和濕度。結(jié)果如下圖所示。

此時,您需要返回 Sketch 編輯器,然后單擊“打開完整編輯器”。
屏幕上的圖標(biāo)需要作為代碼引入。最簡單的方法是將大小合適的圖像轉(zhuǎn)換為字符數(shù)組。您可以在以下 URL 執(zhí)行此操作:https ://javl.github.io/image2cpp/
然后您需要添加一個名為 logos.h 的文件,然后將您的字符數(shù)組復(fù)制到其中。下圖說明了此文件的外觀。

回到 .ino 文件,我定義了一個函數(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(" %");
}
		這個函數(shù)需要幾個參數(shù):當(dāng)前時間、溫度和壓力。注意承運人。這是控制 MKR IoT Carrier 的類的實例。我們在草圖的頂部聲明它。
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() 的實現(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è)置了一個實時時鐘的實例,并通過從 Arduino Cloud 獲取 Unix 時間來設(shè)置一次時間。變量定義如下。
unsigned long epochs;
RTCZero myRtc;
		RTC 在以下代碼塊中初始化。
  //Initialize the clock
  myRtc.begin();
  epochs = ArduinoCloud.getLocalTime();
  initializeClock(epochs, &myRtc);
		函數(shù) initializeClock() 使用所需時間更新 RTC 實例。函數(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);
}
		要讀取時間,需要以下功能:
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é)合起來,根據(jù) PIR 傳感器觀察到的內(nèi)容,在屏幕上顯示或不顯示內(nèi)容。該草圖可在此處獲得:https://create.arduino.cc/editor/johnthas/399971c3-9ed7-48de-8cf9-a0955d60c08c/preview
- 支持 Quick-Connect IoT Wi-Fi 的云解決方案套件快速入門指南
 - 使用HARDWARIO IoT套件測量土壤水分
 - 房間燈光監(jiān)控系統(tǒng)開源分享
 - 使用Opla套件記錄加速度計數(shù)據(jù)
 - Arduino IoT套件活動01教程
 - HARDWARIO IoT套件指紋傳感器
 - 帶有HARDWARIO IoT套件的池監(jiān)視器
 - 如何使用Opla庫
 - 監(jiān)控兩個溫度和濕度敏感的房間的應(yīng)用程序
 - 關(guān)于監(jiān)控房間內(nèi)的溫度開源分享
 - 為Deep Dive Coding、IoT Cohort 2而制作的智能房間控制器
 - asp+ACCESS酒店房間預(yù)約系統(tǒng)設(shè)計(源代碼+論文)
 - 基于NB-IoT的電力設(shè)備電量監(jiān)控系統(tǒng) 31次下載
 - 基于MicroChip的阿里云IOT連接開發(fā)套件方案 30次下載
 - PROFIBUS網(wǎng)絡(luò)診斷與監(jiān)控套件
 
- 網(wǎng)絡(luò)監(jiān)控工具有哪些 網(wǎng)絡(luò)監(jiān)控用幾芯網(wǎng)線 1174次閱讀
 - 如何為IoT項目選擇最佳硬件 2942次閱讀
 - CSA如何監(jiān)控衛(wèi)星健康狀況和功能 2661次閱讀
 - 圖像傳感器為視頻監(jiān)控帶來了新趨勢 8.3w次閱讀
 - 什么是物聯(lián)網(wǎng)開發(fā)套件?如何挑選物聯(lián)網(wǎng)開發(fā)套件 5261次閱讀
 - 微雪電子人工智能物聯(lián)網(wǎng)開發(fā)套件介紹 2740次閱讀
 - 微雪電子Maix Go AIoT 人工智能物聯(lián)網(wǎng)開發(fā)套件介紹 3205次閱讀
 - 淺談人工智能物聯(lián)網(wǎng)設(shè)計的AIoT開發(fā)套件特點及參數(shù) 4742次閱讀
 - 賽普拉斯推出微型無電池傳感器Beacon套件,可適用各種物聯(lián)網(wǎng)IoT應(yīng)用 1238次閱讀
 - SmartBond? DA14585 IoT多傳感器開發(fā)套件的優(yōu)勢及應(yīng)用 5559次閱讀
 - IoT能帶來的益處產(chǎn)生迷思,整理常見的五大IoT迷思 6858次閱讀
 - 豪威科技和Jungo合作開發(fā)的評估套件 使人更容易開發(fā)駕乘人員監(jiān)控系統(tǒng) 5676次閱讀
 - 芯科推出新一代Thunderboard Sense 2 IoT傳感器至云物聯(lián)網(wǎng)開發(fā)套件 6005次閱讀
 - 賽普拉斯與富昌電子及村田公司推出Nebula IoT開發(fā)套件 8458次閱讀
 - 基于Android智能家居遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計 5582次閱讀
 
下載排行
本周
- 1PFC電路與BOOST電路設(shè)計實例分享
 - 1.83 MB | 12次下載 | 4 積分
 - 2世平基于靈動微 SPIN560C 的低壓無刷電機(jī)應(yīng)用方案
 - 10.93 MB | 11次下載 | 免費
 - 3電源測試報告-基于 國民技術(shù) N32L406 和杰華特 JW3376+3330 的 BMS 方案
 - 6.47 MB | 11次下載 | 免費
 - 4PWM控制器的控制方法
 - 0.39 MB | 3次下載 | 4 積分
 - 5電流檢測芯片F(xiàn)P135應(yīng)用說明
 - 1.24 MB | 3次下載 | 免費
 - 6全面解讀被動式與主動式PFC電路
 - 1.27 MB | 1次下載 | 4 積分
 - 7HC88L051F4低功耗芯片規(guī)格書
 - 4.76 MB | 1次下載 | 免費
 - 8CIU32D655x5數(shù)據(jù)手冊
 - 2.14 MB | 1次下載 | 免費
 
本月
- 1常用電子元器件使用手冊
 - 2.40 MB | 52次下載 | 免費
 - 2高功率密度碳化硅MOSFET軟開關(guān)三相逆變器損耗分析
 - 2.27 MB | 33次下載 | 10 積分
 - 3PFC電路與BOOST電路設(shè)計實例分享
 - 1.83 MB | 12次下載 | 4 積分
 - 4世平基于靈動微 SPIN560C 的低壓無刷電機(jī)應(yīng)用方案
 - 10.93 MB | 11次下載 | 免費
 - 5電源測試報告-基于 國民技術(shù) N32L406 和杰華特 JW3376+3330 的 BMS 方案
 - 6.47 MB | 11次下載 | 免費
 - 6USB拓展塢PCB圖資料
 - 0.57 MB | 11次下載 | 免費
 - 7MS1826 HDMI 多功能視頻處理器數(shù)據(jù)手冊
 - 4.51 MB | 9次下載 | 免費
 - 8HAL9303線性霍爾效應(yīng)傳感器技術(shù)手冊
 - 0.70 MB | 9次下載 | 免費
 
總榜
- 1matlab軟件下載入口
 - 未知 | 935134次下載 | 10 積分
 - 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計
 - 1.48MB | 420064次下載 | 10 積分
 - 3Altium DXP2002下載入口
 - 未知 | 233089次下載 | 10 積分
 - 4電路仿真軟件multisim 10.0免費下載
 - 340992 | 191424次下載 | 10 積分
 - 5十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
 - 158M | 183352次下載 | 10 積分
 - 6labview8.5下載
 - 未知 | 81600次下載 | 10 積分
 - 7Keil工具M(jìn)DK-Arm免費下載
 - 0.02 MB | 73818次下載 | 10 積分
 - 8LabVIEW 8.6下載
 - 未知 | 65991次下載 | 10 積分
 
	                電子發(fā)燒友App
	            
	        
	        
          
        
        
	                    
                        
                        
                        
                        
                        


創(chuàng)作
發(fā)文章
發(fā)帖  
提問  
發(fā)資料
發(fā)視頻
上傳資料賺積分
           
            
            
                
            
評論