תוכן עניינים:
- שלב 1: מה נחוץ
- שלב 2: בניית מגדל
- שלב 3: תרשים חיווט
- שלב 4: עקרון הפעולה
- שלב 5: נגן MP3
- שלב 6: העלאת התוכנית ל- Arduino
- שלב 7: שליטה
- שלב 8: שליחת הודעות באמצעות כתובות אתרים
- שלב 9: כתובת URL כללית לשליחת הודעה
- שלב 10: שילוב עם IFTTT 1/7
- שלב 11: אינטגרציה עם IFTTT 2/7
- שלב 12: שילוב עם IFTTT 3/7
- שלב 13: אינטגרציה עם IFTTT 4/7
- שלב 14: אינטגרציה עם IFTTT 5/7
- שלב 15: אינטגרציה עם IFTTT 6/7
- שלב 16: אינטגרציה עם IFTTT 7/7
- שלב 17: סיכום
וִידֵאוֹ: מודיע: 17 שלבים
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:16
ניתן לחבר את המכשיר למשל למערכת 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: בניית מגדל
מעל תכנית המגדל במבט צדדי (ההרפתקה שלי עם הציור הטכני הסתיימה בבית הספר היסודי), כל הממדים במילימטרים.
עקרון הפעולה
- טבעת נוריות שמדליקה אור
- ניר שקוף
- החרוט החתוך, עשוי מקרטון ומכוסה בנייר אלומיניום, כך שהוא מחזיר אורות מטבעות לד, באיור 3 '= הרשת החתוכה
- צינור קרטון - מחזיק את המגדלים במאונך, בתוך הצינור יש כבלים עבור נוריות
- הגובה תלוי בך יש לי 85 מ"מ
- המעמד בתוך כל חלקי האלקטרוניקה
כל האלמנטים האופקיים צריכים להיות עשויים מקרטון עבה יותר.
שלב 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
הוא מתקשר עם Arduino באמצעות TX / RX - פרטים על השחקן עצמו כאן והספרייה כאן
אנו מעלים קבצי mp3 לכרטיס ה- SD. הקבצים בכרטיס ממוינים לפי סדר האלף -בית ולאחר מכן מתקשרים:
myDFPlayer.play (5);
אנו מנגנים את הקובץ החמישי מכרטיס ה- SD מספריית השורש. לכן טוב לתת קבצים על הקידומות 01, 02 וכו 'בכרטיס SD במקרה שלי זה נראה במסך ההדפסה למעלה
ליצירת פקודות קוליות תוכל להשתמש בדף זה.
שלב 6: העלאת התוכנית ל- 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 כללית לשליחת הודעה
בשלב הקודם יש לך כתובת אתר ששולחת נתונים למכשיר שלך. לרוע המזל, לאחר יציאה מ- 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
כתובת ה- URL שנוצרה בשלב למעלה מתאימה לביצוע על ידי יישומים חיצוניים. כיצד להשתמש בו אראה ב- IFTTT. אני אגדיר את זה כך שהמודיע יופעל כאשר הודעת דוא"ל מגיעה לכתובת הדוא"ל (חשבון Gmail).
היכנס ל- IFTTT. לאחר מכן עבור לכרטיסייה My Applets ולאחר מכן "Applet חדש"- מסך ראשון
שלב 11: אינטגרציה עם IFTTT 2/7
לחץ הבא "+זה"
שלב 12: שילוב עם IFTTT 3/7
ואז בשדה "שירותי חיפוש" כתוב "Gmail"
ואז "דוא"ל חדש בתיבת הדואר הנכנס" (ייתכן שיהיה צורך בתצורה מסוימת).
שלב 13: אינטגרציה עם IFTTT 4/7
עכשיו אנחנו לוחצים על "+ זה"
שלב 14: אינטגרציה עם IFTTT 5/7
מצא את "Webhooks" ולחץ עליו
שלב 15: אינטגרציה עם IFTTT 6/7
ואז "בקש אינטרנט"
שלב 16: אינטגרציה עם IFTTT 7/7
אנו משלימים את כתובת האתר של כתובת האתר שלנו עם האסימון. סוג תוכן ליישום / json ולחץ על "צור פעולה" וסיים. עכשיו יש לנו את היישומון שלנו:
שלב 17: סיכום
במדריך זה הראיתי כיצד לשלוח לארדואינו הודעות ממערכות חיצוניות. אנו גם משלבים מערכת אחרת אחר IFTTT באופן דומה. זה לא בהכרח חייב להיות "מודיע" שרציתי להראות בדוגמה זו כיצד לשלוח הודעות ממערכות חיצוניות לארדואינו שלנו.
קוד המקור FanPage בפייסבוק
לחיים, מאסיאק
מוּמלָץ:
כיצד לבצע אנטנת BiQuade כפולה 4G LTE שלבים פשוטים: 3 שלבים
כיצד להפוך אנטנת 4G LTE BiQuade כפולה לשלבים קלים: לרוב לא עמדתי בפני, אין לי עוצמת אות טובה לעבודות היום-יומיות שלי. לכן. אני מחפש ומנסה סוגים שונים של אנטנות אבל לא עובד. לאחר בזבוז זמן מצאתי אנטנה שאני מקווה לייצר ולבדוק, כי זה עקרון הבנייה לא
עיצוב משחק בקפיצה ב -5 שלבים: 5 שלבים
עיצוב משחק בקפיצה ב -5 שלבים: פליק הוא דרך פשוטה מאוד ליצור משחק, במיוחד משהו כמו פאזל, רומן חזותי או משחק הרפתקאות
זיהוי פנים ב- Raspberry Pi 4B בשלושה שלבים: 3 שלבים
זיהוי פנים ב- Raspberry Pi 4B בשלושה שלבים: במדריך זה אנו הולכים לבצע זיהוי פנים ב- Raspberry Pi 4 עם Shunya O/S באמצעות ספריית Shunyaface. Shunyaface היא ספריית זיהוי/זיהוי פנים. הפרויקט שואף להשיג את מהירות הזיהוי והזיהוי המהירה ביותר עם
מהדורת ליל כל הקדושים של Arduino - מסך קופץ זומבים (שלבים עם תמונות): 6 שלבים
מהדורת ליל כל הקדושים של Arduino - מסך פופ -אאוט של זומבים (צעדים עם תמונות): רוצה להפחיד את החברים שלך ולעשות רעש צורח בהלווין? או סתם רוצה לעשות מתיחה טובה? המסך הקופץ הזה של זומבים יכול לעשות זאת! במדריך זה אלמד אותך כיצד ליצור זומבים קופצים בקלות באמצעות Arduino. ה- HC-SR0
מודיע הבית: 4 שלבים
מודיע הבית: מי רוצה לצאת החוצה כדי לבדוק אם הדואר הגיע? בחורף הקר או בגשם לא הייתי צריך ללבוש מעיל ונעליים, רק כדי לגלות שאין דואר. פרויקט זה יודיע לך על הביקור של חברת הדואר, וכ