在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發燒友App

硬聲App

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

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

3天內不再提示
電子發燒友網>電子資料下載>電子資料>使用ESP8266的基礎知識

使用ESP8266的基礎知識

2023-02-07 | zip | 0.12 MB | 次下載 | 2積分

資料介紹

描述

介紹

以下項目使用土壤濕度傳感器、DHT11 溫度傳感器ESP8266 來收集溫度、濕度和水分讀數并將它們發送到 ThingSpeak。本文將幫助您學習使用 ESP8266 的基礎知識,并通過 ThingSpeak 等 API傳感器數據發送到網站。

傳感器簡介

?
DHT11傳感器
?

DHT11溫濕度傳感器模塊是一款基本型、低成本的數字溫濕度傳感器。它使用電容式濕度傳感器和熱敏電阻來測量周圍的空氣,并在數據引腳上輸出數字信號(不需要模擬輸入引腳)。

?
土壤水分傳感器
?

土壤濕度傳感器模塊對環境濕度最為敏感,一般用于檢測土壤的含水量;模塊在土壤濕度小于設定閾值時DO口輸出高電平,當土壤濕度超過設定閾值時,模塊D0輸出低電平;小板數字輸出D0可直接與單片機相連,單片機檢測高低,從而檢測土壤水分;小板數字量輸出DO店繼電器模塊可直接驅動蜂鳴器模塊,可組成土壤水分報警設備;小板模擬量輸出AO和AD模塊通過AD轉換器相連,可以得到更準確的土壤水分值。

編程 ESP8266

為了通過互聯網發送數據,我們需要先將 ESP8266 連接到 WI-FI 網絡,然后對其進行編程以收集值并將其發送到 ThingSpeak API。

其代碼解釋如下:

首先你需要下載 ESP8266 和 ThingSpeak 的庫,你可以在這里找到:

ThingSpeak 庫:https ://github.com/mathworks/thingspeak-arduino

要下載 ESP8266 庫,請按照以下步驟操作:

  • 現在打開 Arduino IDE 并單擊File > Preferences 。
  • 一個窗口會打開這樣
image_wQa1gdd233.png?auto=compress%2Cformat&w=740&h=555&fit=max
窗口彈出
?
  • 將 URL 粘貼到框中,然后單擊“確定”。
  • 現在轉到工具 > 板 > 板管理器。
image_UNI8MqqBsv.png?auto=compress%2Cformat&w=740&h=555&fit=max
董事經理
?
  • 如圖所示在方框上輸入“ESP8266”,您將獲得安裝選項,選擇最新版并單擊安裝。

現在,為了使用ESP8266,首先配置如下電路。此外,確保在繼續之前從 Arduino UNO 中移除微控制器,

esp01_bb_kbz54maVw8.png?auto=compress%2Cformat&w=740&h=555&fit=max
閃爍的 ESP 設置
?

現在,我們首先需要將 ESP8266 設置為編程模式,我們使用以下步驟執行此操作:

  • 打開電路電源。
  • 按住閃光燈開關。
  • 在按住閃光燈開關的同時,一次復位開關。
  • 現在,松開閃光燈開關

如果正確執行此過程,您可能會看到 ESP8266 中的藍色 LED 閃爍。完成這些步驟后,我們可以繼續上傳實際程序

下面簡單了解一下程序:

#include "ThingSpeak.h"
#include 
//------- WI-FI details ----------//
char ssid[] = " "; //SSID here
char pass[] = " "; // Passowrd here
//--------------------------------//
//----------- Channel details ----------------//
unsigned long Channel_ID =  ; // Your Channel ID
const char * myWriteAPIKey = " "; //Your write API key
//-------------------------------------------//
const int Field_Number_1 = 1;
const int Field_Number_2 = 2;
const int Field_Number_3 = 3;
String value = "";
int value_1 = 0, value_2 = 0, value_3 = 0;
int x, y, z;
WiFiClient  client;

首先,我們包含庫并設置所需的變量。在 ssid 和 pass 下提供您的 Wi-Fi 憑據(名稱和密碼)。分別給出通道 ID 和寫入 API 密鑰。如果你想知道如何設置 thingspeak,你可以參考這個網站:Thingspeak 設置和基礎 - Robo India || 教程 || 學習阿杜諾 || 機器人。由于我們的項目中將包含三個字段(濕度、溫度、水分),因此我們使用三個變量作為字段編號,三個變量作為值。

void setup()
{
 Serial.begin(115200);
 WiFi.mode(WIFI_STA);
 ThingSpeak.begin(client);
 internet();
}

在設置下,我們只需將波特率設置為 115200 并初始化 Wi-Fi 和 ThingSpeak 客戶端模式。

void internet()
{
 if (WiFi.status() != WL_CONNECTED)
 {
   while (WiFi.status() != WL_CONNECTED)
   {
     WiFi.begin(ssid, pass);
     delay(5000);
   }
 }
}
void upload()
{
 ThingSpeak.writeField(Channel_ID, Field_Number_1, value_1, myWriteAPIKey);
 delay(15000);
 ThingSpeak.writeField(Channel_ID, Field_Number_2, value_2, myWriteAPIKey);
 delay(15000);
 ThingSpeak.writeField(Channel_ID, Field_Number_3, value_3, myWriteAPIKey);
 delay(15000);
 value = "";
}

互聯網和上傳功能被定義為將 ESP8266 連接到 Wi-Fi 并將接收到的數據上傳到 Thingspeak。

現在,這是核心部分:

void loop()
{
 internet();
 if (Serial.available() > 0)
 {
   delay(100);
   while (Serial.available() > 0)
   {
     value = Serial.readString();
     if (value[0] == '*')
     {
       if (value[7] == '#')
       {
         value_1 = ((value[1] - 0x30) * 10 + (value[2] - 0x30));
         value_2 = ((value[3] - 0x30) * 10 + (value[4] - 0x30));
         value_3 = ((value[5] - 0x30) * 10 + (value[6] - 0x30));
       }
     }
   }
 }
 upload();
}

為了發送數據,我們首先將其對齊到所需的流中,然后添加開始和停止符號。這可以用一個例子來解釋:

假設在給定時間,溫度、濕度和濕度的值分別為30C、71% 和 62% 這些值中的每一個最大值都可以是 2 位整數。如果所有這些值都以相同的順序寫在一起,那就是30-71-62 。或者在程序中我們會將其視為字符串“ 307162 ”。通過這種方式,我們將傳感器值發送到串行端口,隨后由 ESP8266 中的程序分離。但是,我們必須定義一個開始和停止符號來區分兩組值。這是使用作為“*”(星號)的起始符號和作為“#”(散列)的終止符號來完成的。

因此,為此我們聲明空字符串類型變量。在Arduino程序中你會看到,當我們要向這個變量寫入數據時,首先向串口發送開始符號,然后發送數據流,最后發送停止符號。

在程序中,這些值使用索引簡單地分開。

value_1 保存溫度,value_2 保存濕度,value_3 保存水分值。

請注意,您不能發送小數值。根據我們用來發送數據的方法,這是可以理解的。

所以,現在如果您已按照描述將 ESP8266 設置為編程模式,您就可以通過 ESP8266 上傳代碼了。再次確保所有連接正確,不要ESP8266任何引腳連接5V ,否則燒毀IC 。_ 此外,記住上傳代碼之前從Arduino板上移除控制器。還要確保選擇_ 作為GENERICESP8266模塊”。

完成這些步驟后,您可以按上傳按鈕。

Arduino編程

現在您已經完成了 ESP8266 的編程。我們可以繼續上傳 Arduino 程序。確保移除 ESP8266 連接,然后繼續。另外,將開發板更改為 'Arduino UNO' 。

該電路中使用的傳感器需要一個模擬引腳和一個數字引腳。DHT11 通過數字引腳讀取,該數字引腳在程序中設置為引腳 5。土壤濕度傳感器引腳設置為 A0 模擬引腳。

現在,如前所述,我們不能使用十進制數。這在發送溫度和濕度值時成為一個問題。因此,我們使用 round() 函數形式的“math.h”庫來解決這個問題。此函數只是將十進制數近似為最接近的整數。

編程的工作簡要說明如下:

DHT11

為了使用 DHT11,我們需要安裝它的庫:https ://drive.google.com/open?id=1aWuF115pMaZbySQS2CIHBxJiPSM1ezhE

現在為了獲得讀數,我們只需使用函數dht.humiditydht.temperature ,這會為我們提供相應的十進制值。為了發送使用這些數據,我們通過簡單地將值傳遞為 round(DHT.humidity) 和 round(DHT.temperature) 來四舍五入。

mySerial.print('*'); // Starting char
mySerial.print(round(DHT.temperature)); //2 digit data
mySerial.print(round(DHT.humidity)); //2 digit data

您還可以參考 DHT11 的示例程序以更好地理解代碼

這是 DHT11 的連接:

image_4AIWpLfgtx.png?auto=compress%2Cformat&w=740&h=555&fit=max
DHT11連接器
?

請注意,此數據引腳連接到引腳 2。您可以通過更改示例程序中的引腳值來連接到所需的引腳。

土壤濕度

土壤濕度傳感器值在模擬引腳上讀取。首先,您需要知道在您的濕潤土壤樣本中使用時土壤水分的最大模擬輸出是多少。只需按照此處所示進行連接,并上傳以下代碼:(觀察串行繪圖儀)

void setup() {
 // put your setup code here, to run once:
 Serial.begin(9600); delay(2000);
}
void loop() {
 // put your main code here, to run repeatedly:
 Serial.print("Start");
 Serial.println(analogRead(A0));
}
soil_moisture_bb_7isN9NtboI.png?auto=compress%2Cformat&w=740&h=555&fit=max
土壤水分連接
?

現在將傳感器放入土壤中,查看達到的最大讀數。該值將代表 100% 的濕度。在我的例子中,這是 550?,F在為了獲得相應的整數百分比值,我們使用 map() 函數。模擬讀數是在 op_value 變量中獲取的,所以我們所做的就是:

op_value = map(op_value, 550, 0, 0, 100);

這樣寫意味著 550 是 100%,0 是 0%。

這就是循環語句現在的樣子

ack = 0;
 int chk = DHT.read11(DHTxxPIN);
 switch (chk)
 {
   case DHTLIB_ERROR_CONNECT:
     ack = 1;
     break;
 }
 if (ack == 0)
 {
   Serial.print("Temperature(*C) = ");
   Serial.println(DHT.temperature);
   Serial.print("Humidity(%) = ");
   Serial.println(DHT.humidity);
   op_value = analogRead(A0);
   op_value = map(op_value,550,0,0,100);
   Serial.print("Moisture(%): ");
   Serial.print(op_value);
   Serial.print("%");
   Serial.println("\n ------------------------- \n");
   //------Sending Data to ESP8266--------//
   mySerial.print('*'); // Starting char
   mySerial.print(round(DHT.temperature)); //2 digit data
   mySerial.print(round(DHT.humidity)); //2 digit data
   mySerial.print(op_value); //2 digit data
   mySerial.println('#'); // Ending char
   //------------------------------------//
   delay(2000);
 }
 if (ack == 1)
 {
   Serial.print("NO DATA");
   Serial.print("\n\n");
   delay(2000);
 }

我們使用 ack 變量來簡單地檢查 DHT 是否正確連接。請注意,不需要對土壤水分值使用 round() 函數,因為它已經是一個 2 位整數。

將電路配置為與顯示的各個部分相同。上傳 Arduino 代碼時,確保 ESP8266 的 GPIO0 和 RST 沒有接地。

電路

連接最終應該是這樣的:

DHT11

數據引腳-->pin5

Vcc------>5V

地線------>地線

土壤水分傳感器

A0-------->A0

Vcc-------->5V

地線------>地線

ESP8266

3.3V------>3.3V

EN---------->3.3V

地線------>地線

Rx-------->pin10

Tx---------->pin11

RST------>斷開連接

GPIO0----->斷開連接

GPIO2------>斷開連接

最后電路可能看起來像這樣:

?
?
?
20210710_202504_dmcKMRi7sz.jpg?auto=compress%2Cformat&w=740&h=555&fit=max
?
1 / 2
?

物語

您將收到的第一組數據全為零。這可確保您的 Wi-Fi 連接和 ThingSpeak 連接都正常運行。現在,請記住我們在發送每個字段的讀數之前添加了 15 秒的延遲。因此,將所有數據發送到各自的字段總共需要 45 秒。閱讀圖表可能如下所示:

?
?
?
grap1_CI3iHYpgqg.PNG?auto=compress%2Cformat&w=740&h=555&fit=max
?
1 / 3
?

您可以進一步通過簡單的 Matlab 代碼將數據相互比較。在使用 thingSpeakRead() 函數時,我們使用參數 NumMinutes 來檢索指定持續時間內的數據。所以,寫 10 意味著檢索 10 分鐘前的數據。

此外,由于 15 秒的延遲,在每個字段中的新讀數之前,它們將始終是兩個 NaN 值。因此,我們使用 ~isnan() 從變量中刪除這些值。

確保填寫通道 ID 和讀取 API 密鑰變量:

grap4_tBfRxCd8Eg.PNG?auto=compress%2Cformat&w=740&h=555&fit=max
濕度與水分
?
readID =  ;
readkey = ' ';
hum =  thingSpeakRead(readID, 'Field', 2, 'NumPoints', 10, 'ReadKey', readkey);
moist= thingSpeakRead(readID, 'Field', 3, 'NumPoints', 10, 'ReadKey', readkey);
hum = hum(~isnan(hum));
moist = moist(~isnan(moist));
stem(moist(end-10:end),hum(end-10:end)')
xlabel('Moisture(%)')
ylabel('Humidity(%)')
grap5_HCdjVN6kD5.PNG?auto=compress%2Cformat&w=740&h=555&fit=max
溫度與濕度
?
readID =  ;
readkey = ' ';
temp =  thingSpeakRead(readID, 'Field', 1, 'NumMinutes', 10, 'ReadKey', readkey);
moist= thingSpeakRead(readID, 'Field', 3, 'NumMinutes', 10, 'ReadKey', readkey);
temp = temp(~isnan(temp));
moist = moist(~isnan(moist));
stem(moist(end-10:end),temp(end-10:end)')
xlabel('Moisture (%)');
ylabel('Temperature (C)');

錯誤

以下是您可能會遇到的錯誤:

  • ESP8266錯誤:

如果您遇到此錯誤,則表示您上傳代碼時 ESP8266 未處于編程模式。所以,首先要確保你的連接是正確的。特別檢查接地引腳連接到 GPIO0 和 RST 。此外,請確保您使用與本文中相同的 esp 和 thingspeak 庫,以避免任何進一步的錯誤。

image_IR36LHlWAu.png?auto=compress%2Cformat&w=740&h=555&fit=max
?
  • ThingSpeak 錯誤:

發送到 ThingSpeak 的第一個讀數將全部為零。這表明 ESP8266 和 ThingSpeak 之間已成功建立連接。現在,如果您只收到零,那么您可能需要檢查是否正在傳遞來自 Arduino 的數據。我們這樣做如下,

打開您的串行監視器并以*XXXXXX# 格式鍵入任何隨機值,這類似于我們發送傳感器值的方式。如果您在圖表中看到結果,則表示正在傳遞值。但是,傳感器值不是我們需要的正確整數格式。查看您是否可以找到在串行端口中發送的整數類型,確保在 myserial.print() 函數中傳遞的值使用 round() 函數或基于您的程序的任何其他方法四舍五入。唯一的要求是值必須是 2 位整數。

?

這是因為變量沒有足夠的值來制作繪圖。正如代碼中提到的,它需要10 個值來制作 plot 。此外,它從過去 10 分鐘的操作中獲取這 10 個值。因此,如果您在那么長的時間內沒有使用該系統,那么您將沒有足夠的價值。您可以隨時根據需要更改繪制圖形的持續時間。但請記住,第一次運行系統時,您將需要等待 10-15 分鐘才能獲得繪圖。您可以將程序更改為較短的持續時間,但請記住,無論您選擇什么持續時間,它都必須足以讓 10 個值準備好在現場使用。您可以進行的最短持續時間為 5 分鐘。


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

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  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開發指南
  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數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  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次下載  |  免費
主站蜘蛛池模板: 免费视频一级片 | 四虎在线精品 | 欧美爽妇| 亚洲三级电影在线播放 | 亚洲精品视频在线 | 亚洲视频在线一区二区三区 | 久久www免费人成高清 | 国产巨大bbbb俄罗斯 | 高清一级毛片一本到免费观看 | 波多野结衣在线视频免费观看 | 4455永久在线毛片观看 | 欧美最猛黑人xxxx黑人猛交69 | 一级aaaaa毛片免费视频 | 四虎tv在线观看884aa | 丁香伊人五月综合激激激 | 99久久精品国产免费 | 国产自在自线午夜精品视频在 | www亚洲免费 | 国产毛片久久久久久国产毛片 | 中文字幕第13亚洲另类 | 欧洲乱码专区一区二区三区四区 | 亚洲国产成人久久99精品 | 开心丁香婷婷深爱五月 | 一区二区三区视频观看 | 黄色毛片免费进入 | 欧美日韩在线成人免费 | 波多野结衣在线网址 | 亚洲国产午夜精品理论片的软件 | 色综合成人网 | 四虎永久免费网站入口2020 | 深夜在线观看大尺度 | 日本免费黄色片 | 国产香蕉视频在线观看 | 人人干网 | 伊人久久亚洲综合天堂 | 永久看免费bbbbb视频 | 成人中文字幕一区二区三区 | 男女交黄| 国产农村一一级特黄毛片 | 激情综合视频 | 中文字幕一区二区三区在线观看 |