步驟1:項目列表
1。屏幕:OLED,1.3英寸顯示屏SH1106,I2C白色– PID:18283
2.傳感器:數(shù)字濕度和溫度傳感器DHT22 ---- PID:7375
3.連接:跳線---- PID:10316或10318或10312(取決于長度),也可以使用22 AWG實心線---- PID:22490
面包板---- PID:10686或10698或103142(取決于大小)
4。電源:此電纜只能與計算機USB端口連接,該電纜還用于IDE和Arduino板之間的數(shù)據(jù)傳輸。電纜,A到B,M/M,0.5M(1.5FT)---- PID:29862
或者您可以用它為板子供電:5V 2A AC/DC適配器---- PID:10817。
步驟2:相對介紹
屏幕介紹:1.3英寸OLED顯示屏白
1。您可以找到顯示基本設(shè)置和說明的文檔:http://www.ett.co.th/prod2017/OLED%201.3%20I2C%20ENG.pdf
傳感器簡介:濕度和溫度傳感器DHT22 1.您可以找到顯示說明的文檔:https://www.sparkfun.com/datasheets/Sensors/Temperature/DHT22.pdf
步驟3:連接電路
DHT22傳感器將串行數(shù)據(jù)發(fā)送到引腳2。因此,從左側(cè)連接第二個引腳,“ SDA”引腳應(yīng)連接到引腳2。
對于SSH1106顯示屏,它使用模擬引腳進行傳輸。屏幕的電路將是Arduino的“ A5”的“ SCL”引腳,而Arduino的“ A4”的“ SDA”引腳。當像素位置數(shù)據(jù)連續(xù)傳輸時,程序中的顯示功能每次在每次從傳感器讀取數(shù)據(jù)時都會觸發(fā)一次命令。
傳感器和屏幕均可使用3.3V通電Arduino作為直流電源輸入。要供電,我們需要將兩個“ VCC”引腳都連接到Arduino的“ 3.3V”。并且“ GND”引腳可以簡單地連接到Arduino板上的“ GND”引腳。
使用USB A到B電纜,將Arudino連接到計算機。
步驟4:為Olikraus的SSH1106屏幕準備編譯
“ u8glib”。
為Adafruit的DHT22傳感器準備“ DHT傳感器庫”。您應(yīng)該下載兩個庫:DHT22傳感器庫:https://github.com/adafruit/DHT-sensor-library
U8glib:https://github.com/adafruit/DHT-sensor-library
并在IDE中使用“管理庫”將其解壓縮。在線管理庫的說明:https://github.com/adafruit/DHT-sensor-library
第5步:DHT22傳感器串行端口的測試代碼
DHT22傳感器串行端口的測試代碼(位于DHT22庫中》》示例):
(您可以跳過這一部分。)
這只是為了測試DHT22傳感器是否正常讀取數(shù)據(jù)。
#include
#include
#include
#include
#include
#define DHTPIN 2
#define DHTTYPE DHT22
DHT dht(DHTPIN,DHTTYPE);
void setup(){
Serial.begin(9600);
Serial.println(F(“ DHT22測試!”));
dht.begin();
}
無效循環(huán)(){
///在兩次測量之間等待幾秒鐘。
delay(2000);
///讀取溫度或濕度大約需要250毫秒!
//傳感器的讀數(shù)也可能長達2秒“過時”(它的傳感器非常慢)
float h = dht.readHumidity();
//以攝氏度(默認)讀取溫度
float t = dht.readTemperature();
//以華氏溫度(isFahrenheit = true)讀取溫度
float f = dht.readTemperature(true);
//檢查是否有任何讀取失敗并且提早退出(重試)。
如果(isnan(h)|| isnan(t)|| isnan(f)){
Serial.println(F( “無法從DHT傳感器讀取!”));
return;
}
//計算華氏熱指數(shù)(默認值)
float hif = dht.computeHeatIndex(f,h);
//以攝氏度計算熱量指數(shù)(isFahreheit = false)
float hic = dht.computeHeatIndex(t,h,false);
Serial.print (F(“濕度:”));
Serial.print(H);
Serial.print(F(“%Temperature:”));;
Serial.print(T);
Serial.print(F(“°C”));
Serial.print(F);
Serial.print(F(“°F Heat index:”));
Serial.print(HIC);
Serial.print(F(“°C”));
Serial.print(HIF);
Serial.println(F( “°F”));
}
//編譯程序后,單擊工具》》串行監(jiān)視器以檢查數(shù)據(jù)。
//測試程序結(jié)束。
步驟6:項目代碼
#include
#include
#include
#include
#include
#define DHTPIN 2
#define DHTTYPE DHT22
#include“ U8glib。 h“
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);
DHT傳感器(DHTPIN,DHTTYPE);
void draw(void){
u8g.setFont(u8g_font_unifont);
float h = sensor.readHumidity();
//以攝氏度(默認)讀取溫度
浮點t = sensor.readTemperature();
//檢查是否有任何讀取失敗并提早退出(重試)。
if(isnan(h)|| isnan(t)){
u8g.print(“ Error。”);
for(;;) ;
return;
}
u8g.setPrintPos(4,10);
u8g.print( “溫度(C):”);
u8g.setPrintPos(4,25);
u8g.print(t);
u8g.setPrintPos(4,40);
u8g.print( “濕度(%):”);
u8g.setPrintPos(4,55);
u8g.print(h);
}
無效設(shè)置(void){
u8g.setRot180();
Serial.begin(9600);
sensor.begin();
}
無效循環(huán)(void){
//圖片循環(huán)
u8g.firstPage();
do {
draw();
} while(u8g.nextPage());
//經(jīng)過一段時間的延遲后重新生成圖片(2000年);
}
//主程序結(jié)束。
步驟7:說明
然后,初始化Arduino板的引腳電路。因為傳感器庫需要數(shù)據(jù)來聲明對象。
而且,您可以使用稱為“ Serial.print()”的功能通過數(shù)字引腳2監(jiān)視輸出數(shù)據(jù)來測試傳感器的數(shù)據(jù)。由于數(shù)據(jù)傳輸?shù)念l率大約每2秒讀取一次(0.5 Hz),因此在Arduino IDE中進行編程時,我們需要將循環(huán)函數(shù)內(nèi)部的延遲設(shè)置為大于2秒。因此,循環(huán)函數(shù)內(nèi)部有一個“ delay(2000)”。這樣可以確保數(shù)據(jù)經(jīng)常刷新。在“繪制”功能中,從串行數(shù)據(jù)端口獲取數(shù)據(jù),然后使用“ readHumidity”和“ readTemperature”功能將它們放入浮點數(shù)。
使用打印功能打印出濕度和溫度在“ u8glib”文件中。您可以通過更改“ setPrintPos”功能中的數(shù)字來調(diào)整位置。打印功能可以直接顯示文本和數(shù)字。
要設(shè)置硬件,請給串行端口10秒鐘的延遲。然后調(diào)用傳感器的begin函數(shù)。根據(jù)我的電路,我的屏幕是顛倒的。因此,我還包括了“ setRot180”功能來旋轉(zhuǎn)顯示。
Arduino開發(fā)板的循環(huán)功能是主要功能。每次刷新傳感器時,它都會不斷調(diào)用draw函數(shù)以顯示文本和數(shù)據(jù)。
屏幕如下所示:
您可以從計算機和電源上斷開Arduino UNO的連接。它使用5V DC電源適配器連接到其2.1mm電源插孔。它將程序存儲在其驅(qū)動器中,并在通電后可以再次連續(xù)運行該程序。
-
Arduino
+關(guān)注
關(guān)注
188文章
6478瀏覽量
188277 -
氣象站
+關(guān)注
關(guān)注
1文章
762瀏覽量
15778
發(fā)布評論請先 登錄
相關(guān)推薦
自動氣象站的工作原理與應(yīng)用
自動超聲波氣象站:智慧氣象的重要組成部分

校園氣象站高校科普論文氣象站多功能氣象站





什么是自動氣象站?

評論