تتعلّم ما هو إنترنت الأشياء، تبرمج Arduino، تربط مستشعرات وLEDs، وتخرج بمشروع نهائي — مصباح مكتب ذكي أو تنبيه حرارة — على لوحة حقيقية أو محاكي Wokwi.
كيف تدرس هذا المسار؟
افتح Wokwi.com إن لم تملك لوحة Arduino بعد.
انسخ كود كل درس وشغّله في المحاكي.
نفّذ المهمة — توصيلات آمنة أولاً.
أكمل الاختبار — التقدّم يُحفظ على جهازك.
محتوى أصلي من Mesue Learn — عملي ومناسب لسن +12 وما فوق.
1. ما هو IoT؟ — عندما «تتكلّم» الأشياء
الهدف: تفهم فكرة إنترنت الأشياء قبل لمس أي لوحة إلكترونية.
IoT = Internet of Things = إنترنت الأشياء.
تخيّل ثلاجة ترسل لك رسالة: «الحليب ينفد». أو مزرعة تراقب رطوبة التربة وتفتح الريّ تلقائياً. هذا IoT: أجهزة حقيقية + مستشعرات + قرارات + أحياناً إنترنت.
المكوّنات الأساسية:
• **الجهاز (Thing):** Arduino، ESP32، Raspberry Pi...
• **المستشعر (Sensor):** يقيس — حرارة، ضوء، حركة...
• **المُفعّل (Actuator):** يفعل — LED، محرّك، ريليه، buzzer
• **البرمجة:** «إذا الحرارة > 30° → شغّل المروحة»
• **(اختياري) السحابة:** إرسال البيانات لتطبيق أو لوحة تحكم
في هذا المسار نبدأ بـ Arduino — لوحة تعليمية رائعة للمبتدئين. لا تحتاج لوحة حقيقية من اليوم الأول: محاكي **Wokwi** (wokwi.com) يشغّل دوائر افتراضية في المتصفح.
Mesue نصيحة: IoT ليس «سحراً» — هو منطق (if/else) + أسلاك + صبر.
IoT = أجهزة + مستشعرات + قرارات (+ أحياناً إنترنت)
امشِ 10 دقائق في البيت أو المدرسة — اكتب 5 أشياء «ذكية» (كاميرا، ترموستات، ساعة...) — أيها sensor وأيها actuator؟
مهمة عملية
اشرح لصديق في 4 جمل: ما الفرق بين مستشعر ومُفعّل؟
اختبر فهمك
في مشروع IoT، مستشعر الحرارة هو...
2. لوحة Arduino — «دماغ» الدائرة الصغيرة
الهدف: تتعرّف على Arduino Uno ومنافذها وبرنامج Arduino IDE.
**Arduino Uno** (الأشهر للتعلّم) لوحة صغيرة فيها متحكّك دقيق (Microcontroller) — «كمبيوتر مصغّر» بدون شاشة ولوحة مفاتيح.
أجزاء مهمة:
• **Digital pins 0–13:** ON/OFF (0 أو 1) — LEDs، أزرار
• **Analog pins A0–A5:** قراءات متدرجة (0–1023) — مستشعرات
• **5V و GND:** تغذية ومأرضة — مثل «+» و «−» في البطارية
• **USB:** برمجة اللوحة وتغذية من الحاسوب
**Arduino IDE** (desktop أو web editor): تكتب فيه **Sketch** (ملف .ino)، تضغط Upload، اللوحة تنفّذ.
بدون hardware:
1) افتح wokwi.com
2) New Project → Arduino Uno
3) أضف LED من القائمة — جرّب مثال Blink
```cpp
void setup() {
pinMode(13, OUTPUT); // مرة واحدة عند التشغيل
}
void loop() {
digitalWrite(13, HIGH); // LED ON
delay(1000);
digitalWrite(13, LOW); // LED OFF
delay(1000);
}
```
setup() = الإعداد. loop() = يتكرّر للأبد.
Digital = 0/1 — Analog = قيم متدرجة
5V/GND ضروريان لكل مكوّن
setup() مرة — loop() بلا توقف
Wokwi = Arduino Uno افتراضي
صورة ذهنية
[USB] → [Arduino Uno]
|
Digital 0-13
Analog A0-A5
5V · GND
مختبر: Blink
في Wokwi شغّل Blink — غيّر delay إلى 200ms — هل LED يرمش أسرع؟
مهمة عملية
ارسم على ورقة Arduino Uno مع تسمية Digital و Analog و 5V و GND — أو شغّل Blink على Wokwi.
اختبر فهمك
أي دالة في Arduino تتكرّر باستمرار؟
3. رقمي وتناظري — ON/OFF مقابل «كم؟»
الهدف: تميّز بين digitalWrite/digitalRead و analogRead.
**رقمي (Digital):** حالتان فقط — HIGH (1) أو LOW (0).
• LED: يشتعل أو يطفأ
• زر: مضغوط أو غير مضغوط (مع pull-up)
```cpp
digitalWrite(8, HIGH);
int btn = digitalRead(2); // 0 أو 1
```
**تناظري (Analog):** قيم بين min و max.
• Arduino Uno: analogRead(A0) يعطي **0–1023** (10 bits)
• مستشعر ضوء LDR: ظلام ≈ قيمة عالية، ضوء قوي ≈ قيمة منخفضة (حسب التوصيل)
```cpp
int light = analogRead(A0);
// light من 0 إلى 1023
```
**PWM** (على بعض Digital pins ~): يُحاكي شدّة — مثل dimmer للـ LED عبر analogWrite(pin, 0–255).
في Wokwi: أضف Potentiometer إلى A0 — راقب القيمة تتغيّر في Serial Monitor (الدرس 6).
Wokwi: Uno + Potentiometer على A0 + Serial Monitor — حرّك المقبض — هل الأرقام تتغيّر؟
مهمة عملية
اكتب جملة: متى تستخدم digital ومتى analog في مشروع «ضوء يشتعل عند الظلام»؟
اختبر فهمك
analogRead على Arduino Uno يعطي نطاقاً تقريبياً...
4. المستشعرات — حرارة وضوء
الهدف: تربط LDR (ضوء) و TMP36 أو محاكي حرارة وتقرأ القيم.
**مستشعر الضوء LDR** (Light Dependent Resistor):
• مقاومته تتغيّر مع الضوء
• غالباً في **Voltage Divider** مع مقاومة ثابتة → قراءة على A0
**مستشعر الحرارة TMP36** (أو LM35):
• Analog out — كل 10mV ≈ 1°C (TMP36: offset 500mV عند 0°C)
• صيغة تقريبية:
```cpp
int raw = analogRead(A1);
float volts = raw * (5.0 / 1023.0);
float tempC = (volts - 0.5) * 100.0; // TMP36
```
**على Wokwi بدون TMP36:**
• استخدم **Temperature Sensor** أو Potentiometer كـ «حرارة وهمية» للتدريب
• المهم: تفهم أن raw → volts → وحدة حقيقية (°C أو %)
**معايرة (Calibration):** «عند الظلام raw > 800» — سجّل قيمتك أنت، لا تنسخ أرقاماً عشوائية.
Mesue: دوّن 5 قراءات في ظروف مختلفة (ضوء الغرفة، مصباح، ظلام) — جدول بسيط.
Wokwi: LDR + TMP36 (أو بدائل) — اطبع light و temp كل ثانية — غطِّ LDR بيدك — ماذا حصل؟
مهمة عملية
أنشئ جدولاً: 3 حالات ضوء + 3 قراءات raw — و2 حالات «حرارة» (Potentiometer) مع القيم.
اختبر فهمك
لماذا نحوّل analogRead إلى volts قبل °C؟
5. LEDs — ضوء، ألوان، ومقاومة
الهدف: توصّل LED بأمان (مع مقاومة) وتتحكم بعدة LEDs أو PWM.
**LED** (Light Emitting Diode):
• يمرّ التيار في اتجاه واحد فقط (+ طويل = Anode → 5V عبر مقاومة، − قصير = Cathode → GND)
• **بدون مقاومة (220Ω–330Ω)** قد يحرق LED أو يتلف Pin!
```cpp
pinMode(9, OUTPUT);
digitalWrite(9, HIGH); // ON
```
**PWM dimming:**
```cpp
analogWrite(9, 128); // نصف السطوع (0–255)
```
```cpp
void setup() {
Serial.begin(9600); // سرعة — 9600 baud شائعة
Serial.println("Mesue IoT ready!");
}
void loop() {
int x = analogRead(A0);
Serial.print("Light raw: ");
Serial.println(x);
delay(500);
}
```
**في Arduino IDE:** Tools → Serial Monitor (9600 baud)
**في Wokwi:** نافذة Serial أسفل المحاكاة
**نصائح debug:**
• println() سطر جديد — print() بدون
• «Marker»: Serial.println("--- loop start ---");
• إذا لا شيء يظهر: تحقق baud، كابل USB، أو نسيت Serial.begin
**Serial Plotter** (IDE): رسم بياني للقيم — رائع لمراقبة حرارة أو ضوء عبر الزمن.
Mesue: قبل إصلاح bug — **اقرأ** ماذا يطبع Serial. نصف الأخطاء «القيمة غريبة» = توصيل أو pin خاطئ.
Serial.begin(9600) في setup
print / println للنص والأرقام
Serial Plotter لرسم القيم
Baud rate يجب أن يطابق Monitor
صورة ذهنية
[Arduino] --USB--> [PC]
Serial Monitor
9600 baud
مختبر: Serial Plotter
اطبع analogRead(A0) كل 100ms — افتح Plotter — حرّك LDR — هل المنحنى منطقي؟
مهمة عملية
أضف رسائل Serial لـ sketch Blink توضّح ON/OFF — التقط لقطة Serial Monitor.
اختبر فهمك
Serial.begin(9600) يجب أن يُستدعى عادةً في...
7. أتمتة بسيطة — إذا... فافعل...
الهدف: تبني منطق if/else يربط مستشعراً بمُفعّل — قلب IoT.
أتمتة = قواعد تلقائية بدون تدخّل يدوي كل ثانية.
**مثال 1 — ضوء تلقائي:**
```cpp
int light = analogRead(A0);
if (light > 700) { // ظلام (عاير!)
digitalWrite(9, HIGH); // LED ON
} else {
digitalWrite(9, LOW);
}
```
**مثال 2 — تنبيه حرارة:**
```cpp
float t = readTempC();
if (t > 28.0) {
digitalWrite(8, HIGH); // LED تحذير
Serial.println(F("Hot!"));
} else {
digitalWrite(8, LOW);
}
```
**Hysteresis** (متقدّم بسيط): لا تطفئ عند 27.9 وتشعل عند 28.0 — استخدم هامشاً (28 ON، 26 OFF) لتجنب الوميض.
**map():** تحويل 0–1023 إلى 0–255:
`int pwm = map(analogRead(A0), 0, 1023, 0, 255);`
**Wokwi:** جرّب تغيير temp/light — هل LED يستجيب فوراً؟
Mesue: اكتب **3 قواعد** لمشروعك النهائي قبل الكود.
if/else = منطق الأتمتة
عاير عتبات (thresholds) على مكانك
Hysteresis يمنع الوميض عند الحد
map() لربط sensor بـ PWM
صورة ذهنية
read sensor
|
v
[if threshold?]
/ \
YES NO
| |
actuate idle
مختبر: قانونان
اجمع LDR + LED — قانون للظلام + قانون للضوء القوي — سجّل العتبات في تعليق.
مهمة عملية
اكتب pseudocode (عربي/إنجليزي) لمصباح مكتب: «إذا ظلام > X AND بعد 18:00 → ON» (الوقت اختياري لاحقاً).
اختبر فهمك
لماذا نستخدم hysteresis في تنبيه الحرارة؟
8. السلامة — كهرباء، حرارة، وأسلاك
الهدف: تتبع قواعد السلامة قبل توصيل hardware حقيقي أو مشروع نهائي.
**قواعد Mesue — لا تتخطّاها:**
1) **لا 230V mains** — هذا المسار 5V/3.3V فقط. الريليه للمبتدئين بإشراف بالغ.
2) **افصل USB** قبل تعديل الأسلاك — لا hot-plug للمكوّنات.
3) **مقاومة مع LED** — تحقق من التوصيل على Wokwi أولاً.
4) **قصر/دائرة:** إن سخنت لوحة أو رائحة احتراق → **أوقف فوراً**، افصل USB.
5) **تيار المحرّكات:** Uno لا يشغّل محرّكاً كبيراً مباشرة — استخدم transistor/Motor driver.
6) **Batteries:** راقب القطبية (+/−) — لا عكس.
7) **مكتب نظيف:** ماء بعيداً عن اللوحة.
**ESD:** لمس معدن قبل لمس chips حساسة (اختياري).
**محاكاة أولاً:** Wokwi يختبر المنطق — hardware يختبر العالم الحقيقي.
**بالغ/معلّم:** مطلوب عند لحام، أدوات حادة، أو أي جهد > 5V.
السلامة مهارة IoT — ليس «درساً ثانوياً».
5V تعليمي فقط — لا شبكة 230V
افصل USB قبل تعديل الدائرة
رائحة/حرارة = أوقف فوراً
Wokwi أولاً — hardware بإشراف
صورة ذهنية
Plan (Wokwi)
|
v
Check wires OFF
|
v
Power ON · Monitor
مختبر: تدقيق دائرة
راجع sketch + wiring (Wokwi أو رسم يدوي) — هل يوجد مسار مباشر من 5V إلى GND بدون load؟
مهمة عملية
اكتب 5 قواعد سلامة بخطك — شاركها مع زميل.
اختبر فهمك
قبل تغيير الأسلاك على Arduino موصول بـ USB...
9. Wokwi والتوصيل — جرّب قبل الشراء
الهدف: تبني دائرة كاملة في Wokwi وتجهّز مخططاً لمشروعك النهائي.
**Wokwi** (wokwi.com) محاكي:
• Arduino Uno، ESP32، مستشعرات، LEDs
• تشغيل فوري — مشاركة رابط المشروع
• مجاني للتعلّم
**خطوات مشروع Wokwi:**
1) New → Arduino Uno
2) + component: LED، Resistor، LDR، TMP36، Button
3) توصيل: 5V/GND، A0 للـ LDR، pin 9 للـ LED
4) الصق sketch من الدروس السابقة
5) Run — Serial + Plotter
6) Share → انسخ الرابط لـ Mesue Learn
[Wokwi Editor]
Uno + sensors + LED
|
v
Run · Share link
مختبر: دائرة كاملة
ابنِ في Wokwi: Uno + LDR + LED + 220Ω — sketch أتمتة من الدرس 7 — شغّل 2 دقيقة بلا أخطاء.
مهمة عملية
سلّم رابط Wokwi تجريبي (أو screenshot) + اختيار A أو B للمشروع النهائي.
اختبر فهمك
Wokwi مفيد أساساً لـ...
10. المشروع النهائي — مصباح ذكي أو تنبيه حرارة
الهدف: تسلّم مشروع IoT يعمل بمنطق مستشعر → قرار → مُفعّل.
**المطلوب (اختر A أو B):**
**A — مصباح مكتب ذكي:**
• LDR يقيس الضوء
• LED (PWM) يضيء في الظلام — سطوع أعلى كلما زاد الظلام
• Serial يطبع raw + حالة «LAMP ON/OFF»
• hysteresis بسيط
**B — تنبيه حرارة:**
• TMP36 أو Potentiometer كمحاكاة
• LED يرمش (أو buzzer) فوق 28°C (عاير!)
• Serial: درجة الحرارة كل ثانية
• رسالة «OK» تحت العتبة
**معايير النجاح:**
✓ يعمل على Wokwi **أو** Arduino حقيقي
✓ sketch منظّم: setup / دوال readTemp readLight / loop
✓ تعليقات عربية للعتبات
✓ README.md: عنوان، صورة/رابط، wiring، سلامة
✓ (اختياري) فيديو 30–60 ثانية
**مثال README:**
```
# مصباح مكتب Mesue
- LDR على A0، LED على 9
- ON إذا raw > 650
- Wokwi: https://wokwi.com/...
```