אצלנו בכיתה, כל פעם שתלמיד מסיים פעילות, הוא מנצח את המשחק. וכמו בכל ניצחון, כל שלב שעלינו הוא סוג של חגיגה קטנה. אפשר היה להשתמש בגונג כזה של מנזרים טיבטיים, אבל תוך כדי שבחנתי אפשרויות וראיתי כמה יקר זה גונג אמיתי, עלה במוחי שבשיעור שבו לומדים ליצור בעצמנו באמצעות כלים דיגיטליים, ראוי שגם הגונג יהיה כזה. וכך נולד הגונג האלקטרוני.
אז מה עושה רעש מחריש אוזניים כמו גונג אבל אלקטרוני? סירנה. אז רכשתי ארבע סירנות עם תאורה צבעונית בעלי אקספרס והתחלתי לתכנן בזמן שאני מחכה שהן יגיעו.
את גודלן ודרישות החשמל שלהן כבר ידעתי, כי פורסמו בדף המוצר בעליאקספרס, אז יכולתי להתחיל לתכנן. בתחילת הדרך דמיינתי עמוד באמצע הכיתה, שדמיינתי שיהיה משולב בו כפתור אדום גדול, כזה כמו של הסרטים המצויירים, ושהסירנות יהיו מחוברות בגובה העמוד לארבעה כיוונים. בתכנון הזה היו שני ליקויים רציניים: האחד, לשים עמוד קבוע באמצע כיתה זה סיכון בטיחותי, וסביר להניח שיועצי בטיחות לא יאהבו כאלו. הליקוי השני היה שהעמוד הזה ידרוש חיבור לחשמל, כיוון שהסירנות עובדות על 230V ולא ממש התחשק לי למתוח קו חשמל מרחף באוויר למרכז הכיתה. לכן ירדתי מהגישה הזו, והלכתי לכיוון אחר.
הבנתי שאם אפריד את הכפתור מהסירנות, אז אוכל לתלות את הסירנות על הקיר, בארבע קצוות החדר, והכפתור יאכל להיות בכל מקום אחר בצורה אלחוטית. אז רק צריך למצוא דרך לכפתור לדבר עם הסירנות. אז זה מה שעשיתי.
חשוב! אני אינני חשמלאי, ומדריך זה אינו מעניק לכם את הזכות לעשות עבודת חשמל כשלהי לפיו או אחרת. אנא קחו לתשומת לבכם, ודעו שכל התעסקות עם חשמל במתחים גבוהים (230v למשל). בבית שלכם אני לא יכול להתערב, אבל בבית הספר ובוסדות ציבור – השאירו עבודות חשמל לחשמלאים. כך גם אני עשיתי.
רכיבים
כאן אפרט את רשימת הרכיבים ואת התפקיד של כל אחד מהם:
- נתחיל בפשוט: ארבע סירנות, 230V, זרם ולכן גם הספק מזערי.
- בקר NodeMCU ESP-12, שזהו בקר שבעיקרון דומה לארדואינו. היתרון הגדול בבקר הספציפי הזה, הוא שקיים בו WiFi מובנה, כך אפשר לתקשר איתו בקלות ממחשב או מnodeMCU אחר. שזה מה שעשיתי כאן, אז צריך שניים כאלו.
- ממסר 5v-230v (תואם ארדואינו), ממסר הוא רכיב שכאשר אני נותן לו אות (מתח של 5v) דרך הכניסה, הוא סוגר מעגל אחר, במקרה שלנו המעגל של הסירנות, שהן 230V.
- לחצן חירום גדול – זהו כפתור שמיועד בדרך כלל לכבות בבת אחת מכשירים מסוכנים. זה אומר שהוא NC – שזה Normally closed, מעגל סגור בברירת מחדל – הפוך מכפתור בדרך כלל. בנוסף הייתי צריך לבצע בו שינוי מכאני כי הלחצן הזה אחרי שלוחצים אותו הוא נשאר לחוץ עד שמסובבים אותו רבע סיבוב לאחד הכיוונים.
- סוללה חיצונית נטענת – שהעמדה של הכפתור תוכל להיות ניידת בלי חשמל.
- שנאי 230v ל-micro usb, כדי להפעיל את הnodeMCU הנייח.
- ושלל קישוטים, שעליהם ערן שעובד איתי היה אחראי – סטנד צבעוני סטייל מרכז בקרה, קופסה שמדמה את קופסת הבטיחות של הכפתור וכן הלאה.
סרטוט סכמטי של המעגל
כמו שניתן לראות בשרטוט, מדובר בשני מעגלים נפרדים פשוטים מאוד מבחינה חשמלית. באחד יש בסה”כ כפתור בודד ובקר, והוא ישלח בWiFi את המידע לבקר השני שם באמצעות ממסר יועבר מתח של 230v לסירנות לזמן קצוב.
מעגל הכפתור האדום
סה”כ לא מאוד מסובך. מדובר בבקר מסוג NodeMCU כמו שאמרנו כבר, שברגע שבו הכפתור האדום שמחובר אליו נלחץ, שולח הודעה בWiFi לNodeMCU השני שהכפתור נלחץ. בסרטון הבא אפשר לראות את הבדיקה הראשונית של הכפתור.
בין שני NodeMCU שצריכים להעביר ביניהם מידע, אחד יצטרך להיות השרת, והשני יהיה הלקוח. אני החלטתי שהבקר של הכפתור יהיה השרת. אבל בפרויקט מסוג זה אני לא מאמין שיש השפעה על איזה מהבקרים הוא השרת WiFi ומי הוא הלקוח.
הסיבה שהחלטתי שהיחידה הזו תופעל על ידי סוללה, נובעת מהעובדה שרציתי שהעמוד יעמוד במרכז החדר, וכדי לעמוד במרכז החדר בלי להריץ חוטים מסוכנים על הרצפה או בתקרה, צריך שלבקר הכפתור תסופק אנרגיה ללא חוטים, קרי סוללה.
הגדלת הכפתור האדום
הכפתורים האדומים שאני מצאתי היו קטנים מדי בשביל חווית הכפתור האדום כמו שרציתי שהגונג יעביר למי שלוחץ עליו. לכן מידלתי פלסטיקה חדשה שתתלבש על הכפתור האדום שהשתמשתי בו כמו שהיא.
הכפתור החדש הודבק לפלסטיק של הכפתור המקורי בעזרת דבק חם (יש סיכון קל שהדבק החם יעוות את ההדפסה, אם אתם בוחרים לעשות כזה דבר, תשתדלו לשים כמה שפחות דבק חם שניתן. או פשוט להשתמש בדבק אחר).
את הקובץ להדפסה (צריך לשמור אותו כstl מתוך Onshape) אפשר למצוא כאן
הקוד לשרת - מחובר לכפתור האדום
#include <ESP8266WiFi.h> WiFiServer server(80); IPAddress IP(192,168,4,15); IPAddress mask = (255, 255, 255, 0); const int buttonPin = 5; // the number of the pushbutton pin int buttonState = 0; // variable for reading the pushbutton status byte ledPin = 2; void setup() { Serial.begin(115200); pinMode(buttonPin, INPUT); WiFi.mode(WIFI_AP); WiFi.softAP("Wemos_AP", "Wemos_comm"); WiFi.softAPConfig(IP, IP, mask); server.begin(); pinMode(ledPin, OUTPUT); Serial.println(); Serial.println("accesspoint_bare_01.ino"); Serial.println("Server started."); Serial.print("IP: "); Serial.println(WiFi.softAPIP()); Serial.print("MAC:"); Serial.println(WiFi.softAPmacAddress()); } void loop() { buttonState = digitalRead(buttonPin); WiFiClient client = server.available(); if (!client) {return;} digitalWrite(ledPin, LOW); if (buttonState == LOW) { client.println("Pressed"); client.flush(); } digitalWrite(ledPin, HIGH); }
הקוד, למי שמכיר, די מסביר את עצמו. מוזמנים לשאול שאלות בתגובות אם משהו לא מובן.
מעגל הצ'קלאקות
כמו שראינו בשרטוט גם הוא לא יותר מדי מורכב חשמלית.
הבקר מחובר באמצעות ספק 5V רגיל למדי (החיבור של הNodeMCU הוא של מיקרוUSB, אפילו מטען של טלפון יכול להספיק כאן), והכניסה של מתח הרשת 230v מועבר לסירנות על ידי הממסר.
הממסר הזה הוא מתג כפול – ז”א אפשר לדאוג שכשהוא דולק הוא יעביר מתח או שכשהוא דולק הוא לא יעביר (נתק). בשפת האלקטרוניקה זה נקרא NO – שזה בקיצור Normaly Open, או NC – שזה קיצור של Normaly closed. במקרה שלנו הוא מחובר בNC, מה שאומר שרק כאשר הממסר עובד מעגל המתח 230v נסגר.
הקוד ללקוח - מחובר לצ'קלאקות
#include <ESP8266WiFi.h> const int relay = 5; byte ledPin = 2; char ssid[] = "Wemos_AP"; // SSID of your AP char pass[] = "Wemos_comm"; // password of your AP IPAddress server(192,168,4,15); // IP address of the AP WiFiClient client; void setup() { Serial.begin(115200); pinMode(relay, OUTPUT); WiFi.mode(WIFI_STA); WiFi.begin(ssid, pass); // connects to the WiFi AP Serial.println(); Serial.println("Connection to the AP"); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(); Serial.println("Connected"); Serial.println("station_bare_01.ino"); Serial.print("LocalIP:"); Serial.println(WiFi.localIP()); Serial.println("MAC:" + WiFi.macAddress()); Serial.print("Gateway:"); Serial.println(WiFi.gatewayIP()); Serial.print("AP MAC:"); Serial.println(WiFi.BSSIDstr()); pinMode(ledPin, OUTPUT); } void loop() { client.connect(server, 80); digitalWrite(ledPin, LOW); client.setTimeout(10); String answer = client.readStringUntil('\r'); if (answer == "Pressed") { digitalWrite(relay, HIGH); client.flush(); client.stop(); delay(7000); digitalWrite(relay, LOW); } digitalWrite(ledPin, HIGH); }
המערכת עובדת
אז זהו זה. הכל מוכן ועובד.
מפאת צניעות לא צילמתי את זה עובד בשיעור, אבל לפחות חלק מהתלמידים מתרגשים מזה לפחות כמוני, וחוגגים בעזרת הגונג את ההצלחה שלהם. אז זו גם הצלחה שלי (:
לתוכן זה נכתבו 0 תגובות