電子發(fā)燒友App

硬聲App

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>帶有MKR WiFi 1010的植物通訊器

帶有MKR WiFi 1010的植物通訊器

2022-11-01 | zip | 0.14 MB | 次下載 | 免費

資料介紹

介紹

正如英國詩人威廉·華茲華斯曾經(jīng)說過的:

“你的思想是花園,你的思想是種子,收獲可以是花朵或雜草。

“讓你的植物保持活力可能是一個相當大的挑戰(zhàn),因為它們非常不善于溝通。讓它們開心的一種方法是把你的植物帶在身邊,但也許你不想帶著那個大仙人掌到處走走,或者蕨類植物從你的冬季夾克口袋里伸出來。

此外,大多數(shù)植物不喜歡寒冷。在花了幾個月的時間嘗試與我們的蜘蛛植物進行通信后,我們放棄并使用 MKR IoT Bundle 組件創(chuàng)建了一個可以遠程調(diào)查任何植物健康狀況的設備。

簡而言之

在這個實驗中,您將學習如何保護您的植物并確保它們能夠生存以及如何使用 Arduino 魔法。

通過監(jiān)測濕度、溫度和光照,您可以確保您的植物生長良好。

它可以每天發(fā)送電子郵件和圖表,并通知您它的需求。

成分

學習目標

  • 介紹 Zapier 互聯(lián)網(wǎng)服務
  • 發(fā)送 HTTP 請求
  • 構(gòu)建一個 DIY 濕度傳感器
  • 使用 thingSpeak #ProTips繪制值
  • 使用 HTML 和 CSS #ProTips為您的電子郵件設置樣式
  • 使用 PostMan #ProTips測試 API

想知道更多?

教程是讓您熟悉 MKR WiFI 1010 和 IoT 的一系列實驗的一部分。所有實驗都可以使用 MKR IoT Bundle 中包含的組件構(gòu)建。

  • 帶有 MKR WiFi 1010 的植物通訊器

設置 Zapier

Zapier是一款在線自動化工具,可以方便地為我們管理其他應用的 API。它是組合多個任務的好工具,或者如果我們要使用的應用程序具有無法由 Arduino 管理的復雜 API。

在我們的例子中,我們將使用它發(fā)送一封電子郵件,其中包含從 Arduino 檢索到的數(shù)據(jù)。

按照這幾個簡單的步驟來創(chuàng)建自己的 zap!

?
?
?
pYYBAGNgtciAdCVKAABXMXl2YG4208.png
?
1 / 4 ?創(chuàng)建您的 Zapier 帳戶或登錄并創(chuàng)建一個新的 Zap
?

為了繼續(xù),我們需要先復制給定的 URL 來測試我們的鉤子,然后選擇按下 Continue 時出現(xiàn)的 Test and Review 按鈕。將這些參數(shù)添加到 URL:

Custom_Webhook_URL?temperature=0&moisture=0&light=0&warning=0 

現(xiàn)在只需將此 URL 復制并粘貼到新的瀏覽器頁面上。您應該會看到如下響應:

?
?
?
poYBAGNgtc-ADJFUAABgm9kaB0U902.png
?
1 / 2 ?將使用我們的附加參數(shù)形成的 URL 粘貼到 Web 瀏覽器中應該會產(chǎn)生上述結(jié)果。
?

恭喜!您剛剛發(fā)送了一個http 請求!

這正是我們將使用我們的 Arduino 板做的事情。但是,我們不會將該 URL 粘貼到瀏覽器頁面中,而是將其直接發(fā)送到 Zapier 服務器。此外,我們將使用我們的傳感器值修改現(xiàn)在設置為零的參數(shù)值。

有關測試和使用 API 的更高級方法,請查看頁面底部的#ProTip 。

測試您的請求后,您可以繼續(xù)創(chuàng)建 Zap。

繼續(xù)編輯執(zhí)行此操作...

?
?
?
poYBAGNgtdSAH9_tAABuyCIxZuE612.png
?
1 / 8 ?我們創(chuàng)建 Zap,從應用程序中選擇 Gmail
?

檢查您的郵箱以查看 Zapier 生成的電子郵件。它將來自您在 gmail 配置的第一步中使用的帳戶。

設立董事會

為了實現(xiàn)所有功能,我們將使用以下庫:

  • WiFiNINA // 連接到互聯(lián)網(wǎng)并掃描網(wǎng)絡
  • RTCZero // 管理時間觸發(fā)事件

您可以按照本指南中的說明從庫管理器下載它們。

發(fā)送 HTTP 請求

我們現(xiàn)在準備從 Arduino 板發(fā)送 HTTP 請求。現(xiàn)在我們將為我們的參數(shù)設置一個任意值,稍后將用真實的傳感器值替換。

float temperature = 22;
int moisture = 150;
int light = 40;  
String warning = "This is a warning message";
warning.replace(" ", "%20");  

請注意,必須對字符串進行編碼,因為不能在 HTTP 請求中發(fā)送空格。所有空格都替換為編碼的等價物%20

設置好參數(shù)后,我們將調(diào)用該send_email()函數(shù),它將所有參數(shù)轉(zhuǎn)換為字符串,并重建我們之前使用的相同 URL,然后將其發(fā)布到 Zapier 服務器。

使用您的 WiFi 憑據(jù)和您從 Zapier 收到并上傳的 URL 填寫此草圖。

#include 
#include
const char* ssid = SECRET_SSID;    //  your network SSID (name)
const char* password = SECRET_PSWD;  // your network password
String httpsRequest = SECRET_REQUEST; // your Zapier URL
const char* host = "hooks.zapier.com";
WiFiSSLClient client;
void setup() {
 Serial.begin(9600);
 while (!Serial);
 delay(2000);
 Serial.print("Connecting Wifi: ");
 Serial.println(ssid);
 while (WiFi.begin(ssid, password) != WL_CONNECTED) {
   Serial.print(".");
   delay(500);
 }
 Serial.println("");
 Serial.println("WiFi connected");
}
void loop() {
 float temperature = 22;
 int moisture = 150;
 int light = 40;
 String warning = "This is a warning message";
 warning.replace(" ", "%20");
 send_email(temperature, moistue, light, warning );
 delay(20000)
}
void send_email(float temperature, int moisture, int light, String warning) {
 // convert values to String
 String _temperature = String(temperature);
 String _moisture = String(moisture);
 String _light = String(light);
 String _warning = warning;
 if (client.connect(host, 443)) {
   client.println("POST " + httpsRequest + "?temperature=" + _temperature + "&moisture=" + _moisture + "&light=" + _light + "&warning=" + _warning + " HTTP/1.1");
   client.println("Host: " + String(host));
   client.println("Connection: close");
   client.println();
   delay(1000);
   while (client.available()) { // Print on the console the answer of the server
     char c = client.read();
     Serial.write(c);
   }
   client.stop();  // Disconnect from the server
 }
 else {
   Serial.println("Failed to connect to client");
 }
}

它會每 20 秒向您選擇的地址發(fā)送一封電子郵件。

請注意請求,Zapier 每月只允許您 100 個免費請求。

RTC 和警報

我們可以使用 MKR WiFi 1010 的實時時鐘在每天的某個時間發(fā)送一封電子郵件。

此草圖將時間和日期設置為 2017 年 12 月 4 日 16:00,然后在每天 16:01 觸發(fā)警報。

請注意,由于警報附加到中斷函數(shù),我們不能包含任何延遲,但我們可以使用布爾變量來觸發(fā)循環(huán)()中的動作

#include 
RTCZero rtc; // create RTC object
/* Change these values to set the current initial time */
const byte seconds = 0;
const byte minutes = 0;
const byte hours = 16;
/* Change these values to set the current initial date */
const byte day = 4;
const byte month = 12;
const byte year = 17;
bool email_already_sent = false;
void setup() {
 Serial.begin(9600);
 while (!Serial);
 delay(2000);
 rtc.begin(); // initialize RTC 24H format
 rtc.setTime(hours, minutes, seconds);
 rtc.setDate(day, month, year);
 rtc.setAlarmTime(16, 1, 0);  // Set the time for the Arduino to send the email
 rtc.enableAlarm(rtc.MATCH_HHMMSS);
 rtc.attachInterrupt(alarmMatch);
}
void loop() {
 if (!email_already_sent) {
   // send_email();
   email_already_sent = true;
 }
}
void alarmMatch() { // triggered when the alarm goes on
 Serial.println("Alarm Match!");
 email_already_sent = false;
}

DIY土壤濕度傳感器

放置在土壤盆中的兩根電線形成一個可變電阻器,電阻根據(jù)土壤濕度而變化。該可變電阻器以分壓器配置連接,Arduino 收集與 2 根導線之間的電阻成比例的電壓。這意味著土壤越潮濕,Arduino 測量的電壓越小。使用1 兆歐電阻和兩根電線,我們可以創(chuàng)建自己的 DIY 土壤濕度傳感器!

?
poYBAGNgtdeAN1zMAAF0d254r7w452.png
?

上傳以下草圖,您可以開始讀取傳感器的值,我們建議您先在干燥的土壤中開始測試,并記下您讀取的值。

該值將用于設置閾值,以便 Arduino 知道您的植物何時需要水并向您發(fā)送緊急電子郵件。

int moisturePin = A2;
// Set this threeshold accordingly to the resistance you used
// The easiest way to calibrate this value is to test the sensor in both dry and wet soil
int threeshold = 800;
void setup() {
 Serial.begin(9600);
 while (!Serial);
 delay(2000);
}
void loop() {
 Serial.println(get_average_moisture());
 delay(5000);
}
int get_average_moisture() { // make an average of 10 values to be more accurate
 int tempValue = 0; // variable to temporarly store moisture value
 for (int a = 0; a < 10; a++) {
   tempValue += analogRead(moisturePin);
   delay(100);
 }
 return tempValue / 10;
}

添加溫度和光傳感器

請參閱下面的示意圖來連接兩個傳感器。我們將使用這兩個函數(shù)從傳感器讀取值:

float get_temperature() {
 int reading = analogRead(A1);
 float voltage = reading * 3.3;
 voltage /= 1024.0;
 // Print tempeature in Celsius
 float temperatureC = (voltage - 0.5) * 100 ; //converting from 10 mv per degree wit 500 mV offset
 // Convert to Fahrenheit
 float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
 return temperatureC;
}
int get_light() {
 int light_value = analogRead(A0);
 return light_value;
} 

請注意,您可以通過返回temperatureF而不是使用華氏單位temperatureC

#ProTip:使用 ThingSpeak 繪制值

對于你們所有的控制狂來說,這里是把收集到的所有數(shù)據(jù)繪制成一個漂亮的圖表的說明,如下所示:

?
pYYBAGNgteCAPXPYAAAkVaQr33M540.png
溫度圖
?

我們將使用 ThingSpeak 平臺繪制圖表,按照以下步驟開始。

?
?
?
?
pYYBAGNgteOAUOFeAAGNk-mrDRk895.png
?
1 / 3 ?連接到 ThingSpeak 并創(chuàng)建一個帳戶
?

下載ThingSpeak庫,讓我們開始吧。下面的這個草圖將每分鐘將傳感器值上傳到云端,只需填寫您的 WiFi 憑據(jù)和您的頻道的 API 密鑰并上傳。

#include 
#include
#include "ThingSpeak.h"
const char* ssid = SECRET_SSID;    //  your network SSID (name)
const char* password = SECRET_PSWD;  // your network password
WiFiClient  ThingSpeakClient;
unsigned long myChannelNumber = 356392;
const char * myWriteAPIKey = SECRET_WRITE_API;
int lightPin = A0; //the analog pin the light sensor is connected to
int tempPin = A1; //the analog pin the TMP36's Vout (sense) pin is connected to
int moisturePin = A2;
void setup() {
 Serial.begin(9600);
 while (!Serial);
 delay(2000);
 Serial.print("Connecting Wifi: ");
 Serial.println(ssid);
 while (WiFi.begin(ssid, password) != WL_CONNECTED) {
   Serial.print(".");
   delay(500);
 }
 Serial.println("");
 Serial.println("WiFi connected");
 ThingSpeak.begin(ThingSpeakClient);
}
void loop() {
 ThingSpeak.setField(1, get_light());
 ThingSpeak.setField(2, get_temperature());
 ThingSpeak.setField(3, get_average_moisture());
 ThingSpeak.writeFields(myChannelNumber, myWriteAPIKey);
 Serial.println("message sent to cloud");
 delay(60000); // send values every 1 minute
}
float get_temperature() {
 int reading = analogRead(tempPin);
 float voltage = reading * 3.3;
 voltage /= 1024.0;
 // Print tempeature in Celsius
 float temperatureC = (voltage - 0.5) * 100 ; //converting from 10 mv per degree wit 500 mV offset
 // Convert to Fahrenheit
 float temperatureF = (temperatureC * 9.0 / 5.0) + 32.0;
 return temperatureC;
}
int get_average_moisture() { // make an average of 10 values to be more accurate
 int tempValue = 0; // variable to temporarly store moisture value
 for (int a = 0; a < 10; a++) {
   tempValue += analogRead(moisturePin);
   delay(10);
 }
 return tempValue / 10;
}
int get_light() {
 int light_value = analogRead(A0);
 return light_value;
}

在下面的完整 Pro 草圖中,您可以看到如何將此上傳附加到每分鐘觸發(fā)的 RTC 警報。

不幸的是,Gmail 不允許我們在電子郵件正文中嵌入圖表iframe,但我們可以通過電子郵件以漂亮的按鈕發(fā)送鏈接,請參閱下面的提示。

我們選擇了 ThingSpeak,但還有很多選擇!Dweet.iofreeboard.io為例。

#ProTip:樣式化您的電子郵件

Zapier 允許我們在電子郵件正文中嵌入一些 html 和 css 代碼。我們可以使用它來發(fā)送非常風格化的電子郵件,如下所示:

?
pYYBAGNgteeAQ4WVAAA7acv1tQg930.png
程式化的電子郵件正文
?

要實現(xiàn)這個結(jié)果,只需在 Zapier 界面上將正文類型更改為 html并添加您的自定義 HTML 和 CSS。

?
?
?
poYBAGNgteqAHWptAABlQt_DjsE416.png
?
1 / 2 ?要獲得精美的電子郵件,請粘貼下面的 hTML 代碼,并將正文類型更改為 Html
?

復制并粘貼此模板:

html> 
<html> 
<head> 
<meta name="viewport" content="width=device-width, initial-scale=1.0"> 
<style> 
.container{ 
margin-left: 10%; 
margin-right: 10%; 
background-color: #ECF1F1; 
min-height: 100%; 
padding-top: 5%; 
padding-bottom: 10%; 
font-family: monospace; 
letter-spacing: 2px; 
} 
.title{ 
text-align: center; 
color: #0CA1A6; 
font-size: 1.5em; 
padding-top: 0.2vh; 
} 
.subtitle{ 
text-align: center; 
color: #0CA1A6; 
font-size: 1.1em; 
padding-bottom: 4%; 
padding-left: 4%; 
padding-right: 4%; 
} 
.data{ 
padding-bottom: 2%; 
padding-top: 2%; 
padding-left: 5%; 
margin-left: 15%; 
margin-right: 15%; 
background-color: #F7F9F9; 
text-align: left; 
color: #4E5B61; 
font-size: 1em; 
font-weight: bold; 
} 
.bttn{ 
padding-bottom: 3%; 
padding-top: 3%; 
margin-left: 25%; 
margin-right: 25%; 
margin-top: 10%; 
background-color: #00979D; 
text-align: center; 
color: #F7F9F9; 
font-size: 1.4em; 
} 
.disclaimer{ 
text-align:center; 
color:#DA5B4A; 
font-size: 1.1em; 
font-weight: bold; 
margin-top: 10%; 
} 
.bttn:hover{ 
background-color: #008184; 
} 
a{ 
text-decoration: none; 
} 
style> 
head> 
<body> 
<div class="container"> 
<h2 class="title">HELLO !h2> 
<h4 class="subtitle">Here's your daily update about your garden h4> 
<div class="data">      Temperature: {{querystring__temperature}} C div> 
<div id="humidity" class="data">     Moisture: {{_querystring__moisture}}div> 
<div  class="data">     Light: {{querystring__light}}div> 
<div  class="disclaimer">{{querystring__warning}}div> 
<a href="your_link_to_thingSpeak"> 
<div class="bttn">SEE THE GRAPHdiv> 
a> 
div> 
body> 
html> 

#ProTip:使用 PostMan 測試 API

處理 HTTP 請求可能很困難,幸運的是有很多工具可以幫助我們構(gòu)建所需的 URL。Postman 就是一個很好的例子:

?
pYYBAGNgteyAG6sYAAB9srEO69s376.png
?

只需粘貼 Zapier 給出的初始 URL,添加參數(shù)并發(fā)送即可。它將打印出服務器的響應并為您編寫 URL。


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

評論

查看更多

下載排行

本周

  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元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發(fā)指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數(shù)字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅(qū)動電路設計》 溫德爾著
  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十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費