תוכן עניינים:

תחנת מזג אוויר באמצעות Arduino UNO: 7 שלבים
תחנת מזג אוויר באמצעות Arduino UNO: 7 שלבים

וִידֵאוֹ: תחנת מזג אוויר באמצעות Arduino UNO: 7 שלבים

וִידֵאוֹ: תחנת מזג אוויר באמצעות Arduino UNO: 7 שלבים
וִידֵאוֹ: ELF/EMBARC Bronchiectasis conference 2023 with subtitles 2024, יולי
Anonim
תחנת מזג אוויר באמצעות Arduino UNO
תחנת מזג אוויר באמצעות Arduino UNO

נוצר על ידי: Hazel Yang

פרויקט זה הוא תחנת מזג אוויר המשתמשת בלוח UND של Arduino לשליטה על זרימת הנתונים, חיישן DHT22 לאיסוף הנתונים ומסך OLED להצגת הנתונים.

שלב 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. כבל USB, A עד B, M/M, 0.5M (1.5FT) ---- PID: 29862

או שאתה יכול להשתמש בזה כדי להפעיל את הלוח: 5V 2A מתאם AC/DC ---- PID: 10817.

שלב 2: מבוא יחסי

מבוא יחסי
מבוא יחסי
מבוא יחסי
מבוא יחסי

היכרות עם המסך: תצוגת OLED בגודל 1.3 אינץ 'לבן

1. תוכל למצוא את המסמך המציג את ההתקנה והתיאורים הבסיסיים:

מבוא חיישן: חיישן לחות וטמפרטורה DHT22 1. תוכל למצוא את המסמך המציג את התיאורים:

שלב 3: חבר את המעגל

חבר את המעגל
חבר את המעגל

חיישן DHT22 שולח נתונים סידוריים לפין 2. לכן, חבר את הסיכה השנייה משמאל, יש לחבר את סיכת "SDA" לסיכה 2.

עבור תצוגת SSH1106, היא משתמשת בסיכה האנלוגית לשדר. מעגל המסך יהיה פין "SCL" לסיכה "A5" של Arduino ו- "SDA" ל- "A4" של Arduino. בעוד נתוני מיקום הפיקסלים משדרים באופן רציף, פונקציית התצוגה בתוכנית מפעילה את הפקודה רק פעם אחת בכל פעם שהיא קוראת את הנתונים מהחיישן.

החיישן והמסך יכולים להשתמש ב- 3.3V כדי להפעיל את Arduino ככניסה לחשמל DC. לשלטון, עלינו לחבר את שני סיכות ה" VCC "ל-" 3.3V "של Arduino. וניתן לחבר את סיכות ה- "GND" לסיכה "GND" בלוח ה- Arduino.

השתמש בכבל USB A עד B, חבר את ה- Arudino למחשב.

שלב 4: היכונו לקומפילציה

"u8glib" למסך SSH1106 של Olikraus.

"ספריית חיישני DHT" לחיישן DHT22 מבית Adafruit. עליך להוריד את שתי הספריות: ספריית חיישני DHT22:

U8glib:

והשתמש ב"נהל ספריה "ב- IDE כדי להפוך אותם לפתוח. הדרכה מקוונת בניהול ספריות:

שלב 5: קוד בדיקה ליציאה טורית של חיישן DHT22

בדיקת כוס ליציאה טורית של חיישן DHT22 (הנמצאת בתוך ספריית DHT22 >> דוגמאות):

(אתה יכול לדלג על החלק הזה.)

זה רק כדי לבדוק את חיישן DHT22 קורא נתונים בדרך כלל

#לִכלוֹל

#לִכלוֹל

#לִכלוֹל

#לִכלוֹל

#לִכלוֹל

#define DHTPIN 2

#define DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

הגדרת בטל () {

Serial.begin (9600);

Serial.println (F ("בדיקת DHT22!"));

dht.begin ();

}

לולאת חלל () {

// המתן מספר שניות בין המדידות.

עיכוב (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!"));

לַחֲזוֹר;

}

// חישוב מדד החום בפרנהייט (ברירת המחדל)

float hif = dht.computeHeatIndex (f, h);

// חישוב מדד החום בצלזיוס (isFahreheit = false)

float hic = dht.computeHeatIndex (t, h, false);

Serial.print (F ("לחות:"));

Serial.print (ח);

Serial.print (F ("% טמפרטורה:"));

Serial.print (t);

Serial.print (F ("° C"));

Serial.print (f);

Serial.print (F ("° F מדד חום:"));

Serial.print (hic);

Serial.print (F ("° C"));

Serial.print (hif);

Serial.println (F ("° F"));

}

// לאחר עריכת התוכנית, לחץ על TOOLS >> SERIAL MONITOR לבדיקת הנתונים.

// סיום תוכנית הבדיקות.

שלב 6: קוד לפרויקט

#לִכלוֹל

#לִכלוֹל

#לִכלוֹל

#לִכלוֹל

#לִכלוֹל

#define DHTPIN 2

#define DHTTYPE DHT22

#כלול "U8glib.h"

U8GLIB_SH1106_128X64 u8g (U8G_I2C_OPT_NONE);

חיישן DHT (DHTPIN, DHTTYPE);

צייר חלל (חלל) {

u8g.setFont (u8g_font_unifont);

float h = sensor.readHumidity ();

// קרא את הטמפרטורה כצלסיוס (ברירת המחדל)

float t = sensor.readTemperature ();

// בדוק אם קריאה נכשלה וצאי מוקדם (כדי לנסות שוב).

אם (isnan (h) || isnan (t)) {

u8g.print ("שגיאה");

ל(;;);

לַחֲזוֹר;

}

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 (ח);

}

הגדרת void (void) {

u8g.setRot180 ();

Serial.begin (9600);

sensor.begin ();

}

לולאת חלל (void) {

// לולאת תמונות

u8g.firstPage ();

לעשות {

לצייר();

} while (u8g.nextPage ());

// לבנות מחדש את התמונה לאחר עיכוב כלשהו (2000);

}

// סוף התוכנית הראשית.

שלב 7: תיאור

תיאור
תיאור

לאחר מכן, אתחל את מעגל הסיכה ללוח הארדואינו. מכיוון שספריית החיישנים דורשת מהנתונים להכריז על האובייקט.

ותוכל לבדוק את נתוני החיישן על ידי ניטור נתוני הפלט באמצעות סיכה דיגיטלית 2 באמצעות הפונקציה הנקראת "Serial.print ()". מכיוון שתדירות העברת הנתונים היא בערך 1 קריאה כל 2 שניות (שזה 0.5 הרץ), כאשר הוא מתוכנת ב- Arduino IDE, עלינו להגדיר את העיכוב בתוך פונקציית הלולאה להיות יותר משתי שניות. אז יש "עיכוב (2000)" בתוך פונקציית הלולאה. זה מבטיח שהרענון של הנתונים יהיה לעתים קרובות. בפונקציה "צייר", קבל את הנתונים מיציאת הנתונים הטוריים והכניס אותם למספרים צפים באמצעות הפונקציות "readHumidity" ו- "readTemperature".

הדפס את הלחות והטמפרטורה באמצעות פונקציית ההדפסה בקובץ "u8glib". ניתן לשנות את המיקום על ידי שינוי המספר בפונקציה "setPrintPos". פונקציית ההדפסה יכולה להציג את הטקסט והמספרים ישירות.

כדי להגדיר את החומרה, העניק ליציאה הטורית עיכוב של 10 שניות. לאחר מכן התקשר לפונקציית ההתחלה של החיישן. על פי המעגל שלי, המסך שלי היה הפוך. אז כללתי גם פונקציה "setRot180" לסיבוב התצוגה.

פונקציית הלולאה של לוח Arduino היא הפונקציה העיקרית. הוא ממשיך לקרוא לפונקציית הציור כדי להציג את הטקסט והנתונים בכל פעם שהחיישן מתרענן.

המסך נראה כך:

אתה יכול לנתק את ה- Arduino UNO מהמחשב שלך ולהפעיל אותו באמצעות מתאם מתח DC 5V המתחבר לשקע החשמל של 2.1 מ מ. הוא מאחסן את התוכנית בתוך הכונן שלה ויכול להריץ שוב את התוכנית לאחר הפעלה.

מוּמלָץ: