步驟1:項目列表
1。屏幕:OLED,1.3英寸顯示屏SH1106,I2C白色– PID:18283
2.傳感器:數字濕度和溫度傳感器DHT22 ---- PID:7375
3.連接:跳線---- PID:10316或10318或10312(取決于長度),也可以使用22 AWG實心線---- PID:22490
面包板---- PID:10686或10698或103142(取決于大小)
4。電源:此電纜只能與計算機USB端口連接,該電纜還用于IDE和Arduino板之間的數據傳輸。電纜,A到B,M/M,0.5M(1.5FT)---- PID:29862
或者您可以用它為板子供電:5V 2A AC/DC適配器---- PID:10817。
步驟2:相對介紹
屏幕介紹:1.3英寸OLED顯示屏白
1。您可以找到顯示基本設置和說明的文檔: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傳感器將串行數據發送到引腳2。因此,從左側連接第二個引腳,“ SDA”引腳應連接到引腳2。
對于SSH1106顯示屏,它使用模擬引腳進行傳輸。屏幕的電路將是Arduino的“ A5”的“ SCL”引腳,而Arduino的“ A4”的“ SDA”引腳。當像素位置數據連續傳輸時,程序中的顯示功能每次在每次從傳感器讀取數據時都會觸發一次命令。
傳感器和屏幕均可使用3.3V通電Arduino作為直流電源輸入。要供電,我們需要將兩個“ VCC”引腳都連接到Arduino的“ 3.3V”。并且“ GND”引腳可以簡單地連接到Arduino板上的“ GND”引腳。
使用USB A到B電纜,將Arudino連接到計算機。
步驟4:為Olikraus的SSH1106屏幕準備編譯
“ u8glib”。
為Adafruit的DHT22傳感器準備“ DHT傳感器庫”。您應該下載兩個庫: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傳感器是否正常讀取數據。
#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();
}
無效循環(){
///在兩次測量之間等待幾秒鐘。
delay(2000);
///讀取溫度或濕度大約需要250毫秒!
//傳感器的讀數也可能長達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;
}
//計算華氏熱指數(默認值)
float hif = dht.computeHeatIndex(f,h);
//以攝氏度計算熱量指數(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”));
}
//編譯程序后,單擊工具》》串行監視器以檢查數據。
//測試程序結束。
步驟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);
}
無效設置(void){
u8g.setRot180();
Serial.begin(9600);
sensor.begin();
}
無效循環(void){
//圖片循環
u8g.firstPage();
do {
draw();
} while(u8g.nextPage());
//經過一段時間的延遲后重新生成圖片(2000年);
}
//主程序結束。
步驟7:說明
然后,初始化Arduino板的引腳電路。因為傳感器庫需要數據來聲明對象。
而且,您可以使用稱為“ Serial.print()”的功能通過數字引腳2監視輸出數據來測試傳感器的數據。由于數據傳輸的頻率大約每2秒讀取一次(0.5 Hz),因此在Arduino IDE中進行編程時,我們需要將循環函數內部的延遲設置為大于2秒。因此,循環函數內部有一個“ delay(2000)”。這樣可以確保數據經常刷新。在“繪制”功能中,從串行數據端口獲取數據,然后使用“ readHumidity”和“ readTemperature”功能將它們放入浮點數。
使用打印功能打印出濕度和溫度在“ u8glib”文件中。您可以通過更改“ setPrintPos”功能中的數字來調整位置。打印功能可以直接顯示文本和數字。
要設置硬件,請給串行端口10秒鐘的延遲。然后調用傳感器的begin函數。根據我的電路,我的屏幕是顛倒的。因此,我還包括了“ setRot180”功能來旋轉顯示。
Arduino開發板的循環功能是主要功能。每次刷新傳感器時,它都會不斷調用draw函數以顯示文本和數據。
屏幕如下所示:
您可以從計算機和電源上斷開Arduino UNO的連接。它使用5V DC電源適配器連接到其2.1mm電源插孔。它將程序存儲在其驅動器中,并在通電后可以再次連續運行該程序。
-
Arduino
+關注
關注
188文章
6471瀏覽量
187244 -
氣象站
+關注
關注
1文章
753瀏覽量
15692
發布評論請先 登錄
相關推薦
評論