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

צמח זקוק לאור, לטמפרטורה ולחות מתאימים; חום קיצוני פוגע ביבול. בבית חכם, כשחם מדי המזגן נדלק לבד; כשחשוך, התאורה מתגברת.
בשיעור הזה נבנה מערכת הניטור עצמה: חיישנים שאוספים, ומסך שמציג.
הידע שצריך
ארבעת שלבי זרימת הנתונים
זו התבנית שקיימת בכל מערכת ניטור בעולם, מהפשוטה ועד לתעשייתית:
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()ונסו. עכשיו הבנתם למה הוא שם.


