דלגו לתוכן המרכזי
KitLab
שיעור קודם
תחנת ניטור סביבתי — שלושה רכיבים יחד· 33 / 41
תחנת ניטור סביבתי — שלושה רכיבים יחד
🎬

הסרטון בדרך אלינו

בינתיים — התמלול המלא של השיעור מחכה לכם למטה

תחנת ניטור סביבתי — שלושה רכיבים יחד

מה בשיעור?

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

מה נלמד כאן

  • מערכת ניטור סביבתי
  • ארבעת שלבי זרימת הנתונים
  • לחבר שני חיישנים למסך אחד

לדעת מה קורה

בחקלאות חכמה, בבית חכם ובחממות — ניטור נתוני סביבה בזמן אמת הוא קריטי.

ניטור סביבתי

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

בשיעור הזה נבנה מערכת הניטור עצמה: חיישנים שאוספים, ומסך שמציג.


הידע שצריך

ארבעת שלבי זרימת הנתונים

זו התבנית שקיימת בכל מערכת ניטור בעולם, מהפשוטה ועד לתעשייתית:

1. איסוף — הפוטו-רזיסטור משנה התנגדות לפי האור ומוציא מתח אנלוגי. ה-DHT11 מודד טמפרטורה ולחות ומוציא אות דיגיטלי.

2. המרה וקריאה — ה-ADC ממיר את האות האנלוגי למספר, והבקר קורא את שניהם.

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

4. תצוגה — הנתונים מוצגים בזמן אמת על המסך.

זרימת הנתונים

שימו לב לשלב 3 — הוא זה שמבדיל בין צעצוע למערכת. בלי סינון, קריאה אחת כושלת תופיע על המסך כמספר שטותי. בקוד שלנו זה ה-isnan שכבר מכירים.

מה מיוחד בשיעור הזה

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

הרכיב איך קוראים אותו
פוטו-רזיסטור analogRead — אנלוגי
DHT11 ספרייה — פרוטוקול דיגיטלי ייעודי
LCD1602 ספרייה — תקשורת I2C

שלוש שפות שונות, תוכנית אחת.


הניסוי

המטרה: להציג אור, טמפרטורה ולחות על המסך בזמן אמת.

רשימת רכיבים

הרכיב כמות
לוח ESP32 1
לוח ניסוי 400 נקודות 1
מסך LCD1602 1
חיישן DHT11 1
פוטו-רזיסטור 1
נגד 10kΩ 1

התרשים החשמלי

התרשים החשמלי

החיבור

חיבור הרכיבים


מבנה התוכנית

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <DHT.h>

#define LDR_PIN 32
#define DHTPIN  18
#define DHTTYPE DHT11

LiquidCrystal_I2C lcd(0x27, 16, 2);
DHT dht(DHTPIN, DHTTYPE);

void setup() {
  Serial.begin(115200);
  lcd.init();
  lcd.backlight();
  dht.begin();
}

void loop() {
  delay(2000);

  float t = dht.readTemperature();
  float h = dht.readHumidity();
  int   light = analogRead(LDR_PIN);

  if (isnan(t) || isnan(h)) return;      // סינון קריאה כושלת

  lcd.clear();
  lcd.setCursor(0, 0);
  lcd.print("T:");  lcd.print(t);
  lcd.print(" H:"); lcd.print(h);

  lcd.setCursor(0, 1);
  lcd.print("Light:"); lcd.print(light);
}

lcd.clear() בכל סיבוב חשוב. בלעדיו, אם המספר מתקצר (מ-1234 ל-99), הספרות הישנות יישארו על המסך ותראו "9934".

מה אמור לקרות

המסך מציג את הנתונים

השורה העליונה: טמפרטורה ולחות. התחתונה: עוצמת אור.


נסו בעצמכם

  • כסו את הפוטו-רזיסטור ונשפו על ה-DHT11. שני הערכים משתנים בו-זמנית?
  • הוסיפו התרעה: אם חם מדי או חשוך מדי — נורית או זמזם.
  • הוסיפו תיעוד מקסימום ומינימום מאז ההפעלה.
  • החליפו תצוגה כל כמה שניות בין נתונים שונים, כדי להציג יותר מ-32 תווים.
  • הסירו את lcd.clear() ונסו. עכשיו הבנתם למה הוא שם.

🧰 הרכיבים לשיעור הזה

רוצים את חומרי הקורס והעדכונים?

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