תוכן עניינים:

מודיע: 17 שלבים
מודיע: 17 שלבים

וִידֵאוֹ: מודיע: 17 שלבים

וִידֵאוֹ: מודיע: 17 שלבים
וִידֵאוֹ: סרטון מס' 17 - החותם (רצים למשנה-קיץ תשע"ח) 2024, יולי
Anonim
מודיע
מודיע

ניתן לחבר את המכשיר למשל למערכת IFTTT ולהגיב כאשר מופיעה הודעה חדשה. ב- app.remoteme.org ניצור קישור לאחר קריאה אשר בתים יישלחו לארדואינו, וארדואינו יציג קצת אפקט אור וינגן קצת mp3 מכרטיס SD

שלב 1: מה נחוץ

מה שצריך
מה שצריך
מה שצריך
מה שצריך
  • NodeMCU, WemOS או משהו דומה
  • שתי טבעות LED עם דיודות WS2812B (השתמשתי בטבעות LED 16)
  • DFRobot DFPlayerMini - זהו נגן MP3. הוא מנגן mp3 מכרטיס SD ומתקשר עם Arduino על ידי RX/TX
  • רַמקוֹל
  • כרטיס זיכרון
  • ממיר לוגי -השתמשתי במחשב הזה, נגן ה- MP3 משתמש ב- 5V וב- Arduino 3.3 בגלל זה אנחנו צריכים את הממיר הזה
  • ידע ומיומנויות להכין PCB פשוט מעצמנו

המגדל:

  • קרטון - שני עוביים שונים
  • ניר שקוף
  • נייר אלומיניום

שלב 2: בניית מגדל

בניין מגדל
בניין מגדל
בניין מגדל
בניין מגדל
בניין מגדל
בניין מגדל
בניין מגדל
בניין מגדל

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

עקרון הפעולה

  1. טבעת נוריות שמדליקה אור
  2. ניר שקוף
  3. החרוט החתוך, עשוי מקרטון ומכוסה בנייר אלומיניום, כך שהוא מחזיר אורות מטבעות לד, באיור 3 '= הרשת החתוכה
  4. צינור קרטון - מחזיק את המגדלים במאונך, בתוך הצינור יש כבלים עבור נוריות
  5. הגובה תלוי בך יש לי 85 מ"מ
  6. המעמד בתוך כל חלקי האלקטרוניקה

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

שלב 3: תרשים חיווט

תרשים חיווט
תרשים חיווט
תרשים חיווט
תרשים חיווט
תרשים חיווט
תרשים חיווט
תרשים חיווט
תרשים חיווט

נגן ה- mp3 מסופק עם מתח 5V ומתקשר עם Arduino באמצעות TX / RX, יש צורך בממיר לוגי מכיוון שהארדואינו עצמו עובד על מתח 3.3V. השליטה על הטבעות מחוברת גם ל- Arduino (D5, D6) באמצעות ממיר הלוגיקה.

במאגר תמצאו קבצי נשר עם תוכניות PCB

אני מציע לא להלחם לצמיתות את ארדואינו ואת נגן ה- mp3 רק כדי להשתמש בסיכות זהב נקבות

שלב 4: עקרון הפעולה

Arduino שלנו מתחבר למערכת app.remoteme.org באמצעות WebSockets (יש ספריות מוכנות) באמצעות חיבור זה נשלחות הודעות של 5 בתים:

  • הבייט הראשון של אפקט האור עבור טבעת ה- LED העליונה
  • אפקט אור בייט שני לטבעת ה- LED התחתונה
  • מספר קובץ ה- mp3 שיש לנגן
  • מספר השניות כמה זמן יופעל אפקט האור ו- mp3
  • האם יש לנגן mp3 פעם אחת או בלופ

קוד מקור

קוד מקור שלם תוכל למצוא כאן

בקבצי SingleRing.cpp ו- SingleRing.h יש מחלקה לשליטה בהשפעות טבעות LED. אני מציע שתתחיל להסתכל על הפונקציה setMode (int m):

void SingleRing:: setMode (int m) {switch (m) {case 0: setConfiguration (0, 0, 50, 0, 5, 1); break; // off = 0 case 1: setConfiguration (6, 0, 50, 0, 0, 20); break; // מארז ירוק סטנדרטי מוצק 2: setConfiguration (6, 0, 0, 50, 0, 20); break; // מארז כחול סטנדרטי מוצק 3: setConfiguration (6, 50, 0, 0, 0, 20); break; // מארז רגיל אדום סטנדרטי 4: setConfiguration (6, 50, 10, 0, 0, 20); break; // מארז כתום סטנדרטי מוצק 5: setConfiguration (1, 0, 100, 0, 5, 2); break; // המשטרה ירוקה עם כיוון השעון 6: setConfiguration (1, 0, 100, 0, 5, -2); break; // המשטרה מבקשת תיק ירוק 7: setConfiguration (1, 0, 0, 100, 5, 2); שבירה; // המשטרה מארז כחול 8 עם כיוון השעון: setConfiguration (1, 0, 0, 100, 5, -2); break; // המשטרה מחזירה מקרה כחול 9: setConfiguration (1, 100, 0, 0, 5, 2); break; // מקרה רגיל אדום של המשטרה 10: setConfiguration (1, 100, 0, 0, 5, -2); break; // המשטרה מחזירה את מקרה אדום 11: setConfiguration (1, 100, 20, 0, 5, 2); שבירה; // תיק כתום סטנדרטי של המשטרה 12: setConfiguration (1, 100, 20, 0, 5, -2); break; // המשטרה מחזירה תיק כתום 13: setConfiguration (2, 0, 0, 50, 8, 10); break; // חוצה מארז כחול סטנדרטי 14: setConfiguration (2, 0, 0, 50, 8, -10); break; // cross revert blue case 15: setConfiguration (5, 0, 50, 0, 0, 20); break; // למצמץ מקרה ירוק סטנדרטי 16: setConfiguration (5, 0, 50, 0, 0, -20); break; // למצמץ מקרה odwyrtka ירוק 17: setConfiguration (5, 0, 0, 50, 0, 20); break; // למצמץ מקרה כחול סטנדרטי 18: setConfiguration (5, 0, 0, 50, 0, -20); break; // מצמצם retvert blue case 19: setConfiguration (5, 50, 0, 0, 0, 20); break; // מצמצם מקרה אדום רגיל 20: setConfiguration (5, 50, 0, 0, 0, -20); break; // למצמץ להפוך את האריזה האדומה 21: setConfiguration (5, 50, 10, 0, 0, 20); break; // מצמצם מארז כתום סטנדרטי 22: setConfiguration (5, 50, 10, 0, 0, -20); break; // מצמצם שחזור ברירת מחדל כתום: setConfiguration (0, 0, 50, 0, 5, 1); הפסקה; // כבוי = 0}}

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

arduino.ino:

#include "Arduino.h" #include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h"

#לִכלוֹל

#include #include #include "SingleRing.h"

#לִכלוֹל

#כלול #כלול

#לִכלוֹל

#define WIFI_NAME ""

#הגדר WIFI_PASSWORD "" #define DEVICE_ID 205 #הגדר DEVICE_NAME "צפירה" #define TOKEN ""

#הגדר DIODES_COUNT 16

SingleRing למעלה = SingleRing (DIODES_COUNT, D5);

SingleRing תחתון = SingleRing (DIODES_COUNT, D6);

SoftwareSerial mySoftwareSerial (D4, D3); // RX, TX

DFRobotDFPlayerMini myDFPlayer; RemoteMe & remoteMe = RemoteMe:: getInstance (TOKEN, DEVICE_ID);

ESP8266WiFiMulti WiFiMulti;

הגדרת void () {mySoftwareSerial.begin (9600); Serial.begin (115200);

if (! myDFPlayer.begin (mySoftwareSerial)) {// השתמשו ב- softwareSerial כדי לתקשר עם mp3.

Serial.println (F ("לא ניתן להתחיל:")); Serial.println (F ("1. בדוק שוב את החיבור!")); Serial.println (F ("2. אנא הכנס את כרטיס ה- SD!")); בעוד (נכון); } Serial.println (F ("DFPlayer Mini מקוון."));

myDFPlayer.setTimeOut (500); // הגדר פסק זמן תקשורת סדרתי 500ms

myDFPlayer.volume (30);

myDFPlayer. EQ (DFPLAYER_EQ_NORMAL);

myDFPlayer.outputDevice (DFPLAYER_DEVICE_SD); WiFiMulti.addAP (WIFI_NAME, WIFI_PASSWORD); בעוד (WiFiMulti.run ()! = WL_CONNECTED) {עיכוב (100); }

remoteMe.setUserMessageListener (onUserMessage);

remoteMe.setupTwoWayCommunication ();

remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);

top.setup ();

bottom.setup (); top.clear (); bottom.clear (); }

בוליאני TurnOff = true;

turnOffMillis ארוך ללא חתימה = 0;

void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *data) {

uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (נתונים, pos); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (נתונים, pos); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (נתונים, pos); uint8_t time = RemoteMeMessagesUtils:: getUint8 (נתונים, pos); uint8_t mode = RemoteMeMessagesUtils:: getUint8 (נתונים, pos);

bottom.setMode (bottomMode);

top.setMode (topMode); if (mode == 1) {myDFPlayer.loop (trackNumber); } אחר {myDFPlayer.play (trackNumber); } TurnOff = false; turnOffMillis = מיליס () + 1000 * זמן; }

לולאת חלל ()

{remoteMe.loop (); top.loop (); bottom.loop (); אם (turnOffMillis

}

הֶסבֵּר:

#define WIFI_NAME "" #define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "notificator" #define TOKEN ""

עלינו לספק נתונים לעיל, הוראות מפורטות כאן בקישור גם הראתי כיצד להירשם ל- remoteme.org ולייצר את האסימון, void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *data) {uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (נתונים, pos); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (נתונים, pos); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (נתונים, pos); uint8_t time = RemoteMeMessagesUtils:: getUint8 (נתונים, pos); uint8_t mode = RemoteMeMessagesUtils:: getUint8 (נתונים, pos);

bottom.setMode (bottomMode);

top.setMode (topMode); if (mode == 1) {myDFPlayer.loop (trackNumber); } אחר {myDFPlayer.play (trackNumber); } TurnOff = false; turnOffMillis = מיליס () + 1000 * זמן; }

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

לולאת חלל () {remoteMe.loop (); top.loop (); bottom.loop (); if (turnOffMillis <millis ()) {

אם (! TurnOff) {

top.clear ();

bottom.clear (); myDFPlayer.stop (); TurnOff = true; }}

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

שלב 5: נגן MP3

נגן אמ פי 3
נגן אמ פי 3

הוא מתקשר עם Arduino באמצעות TX / RX - פרטים על השחקן עצמו כאן והספרייה כאן

אנו מעלים קבצי mp3 לכרטיס ה- SD. הקבצים בכרטיס ממוינים לפי סדר האלף -בית ולאחר מכן מתקשרים:

myDFPlayer.play (5);

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

ליצירת פקודות קוליות תוכל להשתמש בדף זה.

שלב 6: העלאת התוכנית ל- Arduino

העלאת התוכנית ל- Arduino
העלאת התוכנית ל- Arduino
העלאת התוכנית ל- Arduino
העלאת התוכנית ל- Arduino

לפני העלאת סקיצה לארדואינו, עליך להוריד את הספריות הדרושות כאן תמצא הוראות מפורטות

בנוסף, עלינו להתקין את ספריית DFRobotDFPlayerMini ו- Adafruit_NeoPixel

שלב 7: שליטה

לִשְׁלוֹט
לִשְׁלוֹט
לִשְׁלוֹט
לִשְׁלוֹט

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

  • הבייט הראשון של אפקט האור עבור טבעת ה- LED העליונה
  • אפקט אור בייט שני לטבעת ה- LED התחתונה
  • מספר קובץ ה- mp3 שיש לנגן
  • מספר השניות כמה זמן יופעל אפקט האור ו- mp3
  • האם יש לנגן mp3 פעם אחת או בלופ (1 אם לנגן אותו בלולאה)

על ידי שליחת בתים

07 0F 01 05 01

הטבעת העליונה תציג את נורות המשטרה (מצב 6) התחתון מהבהב ירוק (מצב 15) (בדוק את הפונקציה setMode ב- singleRing.cpp והערות לידו). הקובץ הראשון של כרטיס ה- SD יופעל במשך 5 שניות. והקובץ יופעל בלולאה (בדוק את הפונקציה onUserMessage בכתובת arduino.ino)

בוא נשלח את הבייטים האלה. תסתכל על המסך למעלה ולחץ על הסמלים לפי הסדר שנכתב על ידי 1, 2, 3. החלון מופיע

לאחר מכן התבונן במסך השני - ומלא חלון כמו במסך השני

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

לאחר שליחת ההודעה, על המודיע שלנו להגיב על ידי הצגת אפקטי התאורה המתאימים והפעלת ה- mp3 שנבחר. אני ממליץ לך לנסות אפקטים שונים על ידי מתן שני הבייטים הראשונים של מספר בין 0 ל -22 (ראה תיאור בפונקציית setMode).

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

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

אם ברצוננו להציג התראות מאפליקציה חיצונית למשל עם IFTTT, עלינו לקבל כתובת אתר שתעשה בדיוק את אותו הדבר כפי שעשינו בחלון בשלב הקודם. remoteme.org מספק REST APi. עבור אליו על ידי לחיצה על לשונית הסוואגר בצד שמאל (האחרונה). יוצג דף, בדף זה נוכל גם לנסות את כתובות האתרים שלנו.

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

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

070F010501

המקלט הוא המכשיר עם מזהה 205, אותו מכשיר הוא גם שולח. MessageId עם ההגדרות "No_RENEVAL" אינו רלוונטי. ולאחר מכן לחץ על Execute. Notificator יגיב באותו אופן כמו בעת שליחת הודעות מהיישום. לאחר קריאת REST להלן כתובת ה- URL שנקראה - הסתכל על המסך השלישי. והעתק והדבק לכתובת האתר של הדפדפן מסומן בגבול ירוק. במסך הרביעי דפדפן הכרום שלי לאחר הדבקת כתובת URL

במקרה שלי, כתובת האתר היא:

app.remoteme.org/api/*/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/

שלב 9: כתובת URL כללית לשליחת הודעה

כתובת URL אנימית לשליחת הודעה
כתובת URL אנימית לשליחת הודעה

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

תסתכל על המסך והחלף את * כתובת האתר באסימון שלך

במקרה שלי אסימון הוא:

~ 267_ZxoWtJ) 0ph & 2c

כך שהכתובת הסופית שלי נראית כך:

app.remoteme.org/api/~267_ZxoWtJ)0ph&2c/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/

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

שלב 10: שילוב עם IFTTT 1/7

אינטגרציה עם IFTTT 1/7
אינטגרציה עם IFTTT 1/7

כתובת ה- URL שנוצרה בשלב למעלה מתאימה לביצוע על ידי יישומים חיצוניים. כיצד להשתמש בו אראה ב- IFTTT. אני אגדיר את זה כך שהמודיע יופעל כאשר הודעת דוא"ל מגיעה לכתובת הדוא"ל (חשבון Gmail).

היכנס ל- IFTTT. לאחר מכן עבור לכרטיסייה My Applets ולאחר מכן "Applet חדש"- מסך ראשון

שלב 11: אינטגרציה עם IFTTT 2/7

אינטגרציה עם IFTTT 2/7
אינטגרציה עם IFTTT 2/7

לחץ הבא "+זה"

שלב 12: שילוב עם IFTTT 3/7

אינטגרציה עם IFTTT 3/7
אינטגרציה עם IFTTT 3/7

ואז בשדה "שירותי חיפוש" כתוב "Gmail"

ואז "דוא"ל חדש בתיבת הדואר הנכנס" (ייתכן שיהיה צורך בתצורה מסוימת).

שלב 13: אינטגרציה עם IFTTT 4/7

אינטגרציה עם IFTTT 4/7
אינטגרציה עם IFTTT 4/7

עכשיו אנחנו לוחצים על "+ זה"

שלב 14: אינטגרציה עם IFTTT 5/7

אינטגרציה עם IFTTT 5/7
אינטגרציה עם IFTTT 5/7

מצא את "Webhooks" ולחץ עליו

שלב 15: אינטגרציה עם IFTTT 6/7

אינטגרציה עם IFTTT 6/7
אינטגרציה עם IFTTT 6/7

ואז "בקש אינטרנט"

שלב 16: אינטגרציה עם IFTTT 7/7

אינטגרציה עם IFTTT 7/7
אינטגרציה עם IFTTT 7/7

אנו משלימים את כתובת האתר של כתובת האתר שלנו עם האסימון. סוג תוכן ליישום / json ולחץ על "צור פעולה" וסיים. עכשיו יש לנו את היישומון שלנו:

שלב 17: סיכום

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

קוד המקור FanPage בפייסבוק

לחיים, מאסיאק

מוּמלָץ: