קטגוריות: אוטומציה ביתית, מעגלי מיקרו-בקר
מספר צפיות: 17351
הערות לכתבה: 0

שלט רחוק מיקרו-בקר: IR Remote, Arduino, ESP8266, 433 MHz

 

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

שלט רחוק של מיקרו

מינים

ישנם שני סוגים עיקריים של תקשורת מרחוק:


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


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

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

  • באמצעות אות רדיו. יש כבר מספר אפשרויות: Bluetooth, ZigBee, Wi-Fi, מקלטים משדרים 433 מגה הרץ וריאציות אחרות בנושא זה.

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



IR מרחוק

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

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

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

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

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

חיישן IR

להלן המפרט של אחד מחיישני ה- IR:

  • תדר נשא: 38 קילו הרץ;

  • מתח אספקה: 2.7 - 5.5 וולט;

  • צריכה שוטפת: 50 μA.

ותרשים החיבור שלה:

תרשים חיבור חיישן IR

השלט יכול לשמש כל אחד עם עיקרון פעולה דומה, שלט רחוק מ:

  • טלוויזיות

  • נגני DVD

  • מקליטי רדיו;

  • ממכשירי תאורה מודרניים, כמו נברשות חכמות ופסי LED ועוד.

לוח בקרה

הנה דוגמא לשימוש בחיישן כזה עם ארדואינו

דוגמא לחיישן IR של Arduino

על מנת שבקר המיקרו, במקרה שלנו ארדואין, יבין את האות מהחיישן, עליכם להשתמש בספריה IRremote.h. לדוגמא כיצד לקרוא אות מחיישן, אנו נותנים קוד לזהות אותם על ידי קריאת היציאה הסדרתית של בקר המיקרו מ- IDE Arduino:

# כלול "IRremote.h" // חבר את הספריה לעבודה עם אות ה- IR.

IRrecv irrecv (2); // ציין את הפלט שאליו מחובר המקלט

decode_results תוצאות;

הגדרת ביטול () {

Serial.begin (9600); // הגדר את מהירות יציאת ה- COM

irrecv.enableIRIn (); // התחל את הקבלה

}

לולאת חלל () {

if (irrecv.decode (& תוצאות)) {// אם הנתונים הגיעו

Serial.println (תוצאות. ערך, HEX); // הדפס נתונים

irrecv.resume (); // קבל את הפקודה הבאה

  }

}

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

צג יציאה טורית

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

ועם קוד זה, אתה יכול לזהות אותות ולנהל את העומס:

# כלול את "IRremote.h"

IRrecv irrecv (2); // ציין את הפלט שאליו מחובר המקלט

decode_results תוצאות;

הגדרת ביטול () {

irrecv.enableIRIn (); // התחל את הקבלה

}

לולאת חלל () {

if (irrecv.decode (& תוצאות)) {// אם הנתונים הגיעו

לעבור (תוצאות. ערך) {

מקרה 0xFFA857:

digitalWrite (13, HIGH);

שבירה;

מקרה 0xFFE01F:

digitalWrite (13, נמוך);

שבירה;

    }   

irrecv.resume (); // קבל את הפקודה הבאה

  }

}

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

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


קליטה ושידור של אותות רדיו

לשימוש במיקרו-בקרים, משדרים עם תדרי הפעלה של 433 מגה הרץ או 315 מגה הרץ נפוצים, יתכנו תדרים אחרים, תלוי בלוח הספציפי, אך אלה הנפוצים ביותר. המערכת מורכבת משני צמתים - מקלט ומשדר, וזה הגיוני.

קליטה ושידור של אותות רדיו

בתמונה, המשדר מוצג בצד ימין למעלה, והמקלט משמאל למטה. שמם לחיפוש: מודול רדיו 433MHz, MX-05V / XD-RF-5V (מקלט ומשדר).

ההדק, כמו שקורה לעתים קרובות במודולים, נצבע על הלוח, כמו המשדר:

משדר רדיו

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

מקלט רדיו

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

המקלט והמשדר בלוחות

מכשיר

מודול

סיכות ארדואינו

מקלט

Vcc

GND

נתונים

+ 5V

GND

2

משדר

Vcc

GND

נתונים

+ 5V

GND

2 

בשלב הבא עליכם לחבר את ספריית RCswitch.h ל- IDE של Arduino

כדי להתחיל, אנו כותבים את תוכנית המשדר:

# כלול

RCSwitch mySwitch = RCSwitch(); // ליצור אובייקט לעבודה עם הקצה הקדמי

הגדרת ביטול () {

    mySwitch.enable העבר(2); // ספר לתוכנית לאיזה סיכה מחובר ערוץ המידע

}

לולאת חלל () {

mySwitch.send (B0100,4);

עיכוב (1000);

mySwitch.send (B1000, 4);

    עיכוב (1000);

} 

המשדר יכול להעביר קוד בינארי, אך ניתן לכתוב את ערכיו בצורה עשרונית.

mySwitch.send (B0100,4);

ו

mySwitch.send (B1000, 4);

אלה פקודות ההעברה, mySwitch הוא שם המשדר שציינו בתחילת הקוד, ושליחה היא פקודת ההעברה. הטיעונים לפונקציה זו הם:

שם המשדר. שלח (ערך, גודל מנות של קטניות שנשלחו לאוויר);

B1000 - הסמל B - פירושו בינארי, אפשר לכתוב אותו כמספר 8, כלומר בסימון עשרוני. אפשרות נוספת הייתה לכתוב "1000" כמחרוזת (במירכאות).

בשלב הבא אנו כותבים את הקוד למקלט (הוא מהבהב ללוח שאליו מחובר המקלט):

# כלול

RCSwitch mySwitch = RCSwitch ();

הגדרת ביטול () {

pinMode (3, פלט);

mySwitch.enableReceive (0);

}

לולאת חלל () {

if (mySwitch.available ()) {

ערך int = mySwitch.getReceivedValue ();

אם (ערך == B1000)

digitalWrite (3, HIGH);

אחרת אם (ערך == B0100)

digitalWrite (3, נמוך);

mySwitch.resetAvailable ();

    }

}

כאן אנו מצהירים כי הערך המקובל מאוחסן במשתנה הערך במחרוזת mySwitch.getReceivedValue (). ואת העובדה שהמקלט מחובר לפין השני מתואר כאן על ידי mySwiitch.enableReceive (0).

אחרת, הקוד הוא אלמנטרי, אם יתקבל אות 0100, הסיכה מספר 3 מוגדרת לגובה (יחידת יומן), ואם 1000, אז לנמוך (יומן אפס).

מעניין:

בשורה mySwitch.enableTransmit (0) אנו אומרים לתוכנית שהמקלט מחובר לפין השני ומצב הקבלה מופעל. הקשובים ביותר שמו לב שהטיעון של שיטה זו אינו מספר סיכה "2", אלא "0", העובדה היא ששיטת enableTransmit (מספר) אינה מקבלת את מספר הסיכה, אלא את מספר ההפרעה, אלא ב- atmega328, שמונח עליו ארדואינו אונו, ננו, פרמיני ועוד כמה אחרים, על הסיכה השנייה (סיכת פורט PD2) תלויה הפרעה עם המספר אפס. אתה יכול לראות זאת בפינאט אטמגה החל על לוח ארדואינו, מספרי הסיכה כתובים בתיבות ורודות.

אטמת אטמגה

שיטה זו להעברה וקבלה היא פשוטה וזולה מאוד: זוג מקלט ומשדר עולה בערך $ 1.5 ברגע הכתיבה.


Wi-Fi, Adruino ו- ESP8266

מלכתחילה, ESP8266 הוא בקר מיקרו עם תמיכה בחומרה עבור Wi-Fi, הוא נמכר כשבב נפרד, ומולחן ללוח, כמו ארדואינו. יש לו גרעין של 32 סיביות, הוא מתוכנת דרך יציאה טורית (UART).

ללוחות בדרך כלל 2 סיכות GPIO בחינם או יותר ותמיד יש סיכות לקושחה, זה חייב להיעשות באמצעות מתאם USB לטורי. מנוהל על ידי צוותי AT, רשימה מלאה של פקודות ניתן למצוא באתר הרשמי ESP8266 וב- github.

ESP8266

יש אפשרות מעניינת יותר, לוחות NodeMCU, יש להם את היכולת להבהב באמצעות USB, מכיוון ממיר USB-UART כבר נמצא על הלוח, מיוצר בדרך כלל בשבב CP2102. הצומת MCU הוא קושחה, כמו מערכת הפעלה, פרויקט המבוסס על שפת התסריטים של לואה.

לוח NodeMCU

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

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

הלוח עובד עם ממשקים:

  • 1-חוט;

  • I2C;

  • SPI

  • UART.

יש לו שורה שלמה של פונקציות:

  • מודול הצפנה;

  • מתזמן משימות;

  • שעון בזמן אמת;

  • פרוטוקול סנכרון שעון באמצעות SNTP באינטרנט;

  • טיימרים;

  • ערוץ ADC (אחד);

  • השמעת קבצי שמע;

  • להפיק ביציאות אות PWM (עד 6);

  • השתמש בשקעים, יש תמיכה ב- FatFS, כלומר אתה יכול לחבר כרטיסי SD וכן הלאה.

ESP-12E

והנה רשימה קצרה של מה יכול הלוח לעבוד איתם:

  • מדי תאוצה ADXL345;

  • HMC5883L מגנטומטרים

  • גירוסקופים L3G4200D;

  • חיישני טמפרטורה ולחות AM2320, DHT11, DHT21, DHT22, DHT33, DHT44;

  • חיישנים לטמפרטורה, לחות, לחץ אטמוספרי BME280;

  • חיישני טמפרטורה ולחץ אטמוספרי BMP085;

  • תצוגות רבות העובדות על אוטובוסים I2C, SPI. עם יכולת לעבוד עם גופנים שונים;

  • TFT מציג ILI9163, ILI9341, PCF8833, SEPS225, SSD1331, SSD1351, ST7735;

  • נוריות LED חכמות ובקרי LED - WS2812, tm1829, WS2801, WS2812.

בנוסף לשימוש בשפת ה- Lua, באפשרותך לתכנת את הלוח מתחת ל- IDE Arduino.

ESP8266 יכול לשמש כמכשיר עצמאי או כמודול לתקשורת אלחוטית עם ארדואינו.

מודול לתקשורת אלחוטית עם ארדואינו

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

אז הלוח הזה הוא אפשרות נהדרת לשליטה מרחוק באמצעות Wi-Fi. ההיקף עצום, למשל, להשתמש בסמארטפון בלוח בקרה למכונה נשלטת רדיו מאולתרת או quadrocopter, שליטת תאורה מרחוק, עד לסידור רשתות לכל הבית ולניהול כל שקע, מנורה וכו '. אם רק היו מספיק סיכות.

הדרך הפשוטה ביותר לעבוד עם המיקרו-בקר היא להשתמש בלוח ESP8266 יחיד. להלן תרשים של שקע Wi-Fi פשוט.

ערכת שקע ה- wifi הפשוט ביותר

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

ב- ESP אנו טוענים את הקושחה הבאה, דרך תוכנית ESPlorer (תוכנית לעבודה עם הלוח)

- יישום AP של WiFi

wifi.setmode (wifi.STATIONAP)

cfg = {}

cfg.ssid = "ESPTEST"

cfg.pwd = "1234567890"

wifi.ap.config (CFG)

- הגדר מצב סיכה

my_pin_nummber = 1

--gpio.mode (my_pin_nummber, gpio.OUTPUT)

gpio.mode (my_pin_nummber, gpio.OPENDRAIN)

- צור שרת

sv = net.createServer (net.TCP)

מקלט פונקציה (sck, נתונים)

אם string.sub (נתונים, 0, 1) == "1" אז

- gpio.write (my_pin_nummber, gpio.HIGH)

gpio.write (my_pin_nummber, gpio.LOW)

אחר

אם string.sub (נתונים, 0, 1) == "0" אז

- gpio.write (my_pin_nummber, gpio.LOW)

gpio.write (my_pin_nummber, gpio.HIGH)

סוף

סוף

הדפס (נתונים)

סוף

אם sv אז

sv: האזנה (333, פונקציה (conn)

conn: on ("לקבל", מקלט)

conn: שלח ("שלום!")

סוף)

סוף

- צור שרת HTTP

http = net.createServer (net.TCP)

פונקציה קבל_הטפ (sck, נתונים)

הדפס (נתונים)

בקשה מקומית = string.match (נתונים, "([^ \ r, \ n] *) [\ r, \ n]", 1)

אם בקשה == 'GET / on HTTP / 1.1' אז

- gpio.write (my_pin_nummber, gpio.HIGH)

gpio.write (my_pin_nummber, gpio.LOW)

סוף

אם בקשה == 'GET / off HTTP / 1.1' אז

- gpio.write (my_pin_nummber, gpio.LOW)

gpio.write (my_pin_nummber, gpio.HIGH)

סוף

sck: על ("נשלח", פונקציה (sck) sck: סגור () collectgarbage () סוף)

תגובה מקומית = "HTTP / 1.0 200 אישור \ r \ n שרת: NodeMCU ב- ESP8266 \ r \ n סוג תוכן: text / html \ r \ n \ r \ n" ..

" NodeMCU ב- ESP8266 " ..

"

NodeMCU ב- ESP8266

" ..

"


" ..

" מופעל כבוי " ..

" "

sck: שלח (תגובה)

סוף

אם http אז

http: האזנה (80, פונקציה (חיבור))

conn: on ("לקבל", לקבל_http)

סוף)

סוף

הדפס ("התחיל.")

כעת תוכלו לשלוט בתוכנית מתוכנית Roboremo, או דרך כל דפדפן אינטרנט, לשם כך עליכם להקליד את כתובת ה- ip של הלוח בסרגל הכתובות במצב נקודת ה- Wi-Fi 192.168.4.1.

יש קטע בקוד:

" NodeMCU ב- ESP8266 " ..

"

NodeMCU ב- ESP8266

" ..

"


" ..

" מופעל כבוי " ..

" "

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

העמוד בדפדפן הסמארטפון שמריץ מערכת ההפעלה אנדרואיד

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

ראה גם באתר elektrohomepro.com:

  • חיבור ותכנות של ארדואינו למתחילים
  • שיטות לקריאה וניהול של יציאות קלט / פלט של Arduino
  • מהן תצוגות Nextion וכיצד לעבוד איתן?
  • בקרי מיקרו ניתנים לתכנות ב- JavaScript: איזה מהם לבחור, מאפיינים ...
  • סוגים וסידור מבקרי מיקרו AVR

  •