Съдържание:
- Стъпка 1: Какво е необходимо
- Стъпка 2: Изграждане на кула
- Стъпка 3: Схема на свързване
- Стъпка 4: Принцип на работа
- Стъпка 5: Mp3 плейър
- Стъпка 6: Качване на програмата в Arduino
- Стъпка 7: Контрол
- Стъпка 8: Изпращане на съобщения чрез URL адреси
- Стъпка 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 07:53
Устройството може да бъде свързано например към системата IFTTT и да реагира, когато се появи нова поща. На app.remoteme.org ще генерираме връзка след извикване, които байтове ще бъдат изпратени на Arduino, а Arduino ще покаже някакъв светлинен ефект и ще възпроизведе малко mp3 от SDcard
Стъпка 1: Какво е необходимо
- NodeMCU, WemOS или нещо подобно
- Два светодиодни пръстена с диоди WS2812B (използвал съм 16 -ти светодиодни пръстени)
- DFRobotDFPlayerMini - това е mp3 плейър. Той възпроизвежда mp3 от SDcard и комуникира с Arduino чрез RX/TX
- Говорителят
- SD карта
- Логичен конвертор -Използвах този, mp3 плейърът използва 5V и Arduino 3.3, затова се нуждаем от този конвертор
- Знания и умения за създаване на проста печатна платка от нас
Кулата:
- картон - две различни дебелини
- Проследяваща хартия
- алуминиево фолио
Стъпка 2: Изграждане на кула
Над плана на кулата в страничен изглед (моето приключение с технически чертеж завърши в основно училище), всички размери в милиметри.
Принцип на действие
- пръстен от светодиоди свети
- Проследяваща хартия
- Пресеченият конус, изработен от картон и покрит с алуминиево фолио, така че отразява светлините от светодиодни пръстени, на фигура 3 ‘= изрязаната мрежа
- картонена тръба - държи кулите вертикално, вътре в тръбата има кабели за светодиоди
- Височината зависи от вас, имам 85 мм
- Стойката вътре във всички части на електрониката
Всички хоризонтални елементи трябва да бъдат направени от по -дебел картон.
Стъпка 3: Схема на свързване
MP3 плейърът се захранва с 5V напрежение и комуникира с Arduino чрез TX / RX, необходим е логически преобразувател, тъй като самият Arduino работи на 3.3V напрежение. Управлението на пръстените също е свързано към Arduino (D5, D6) чрез логическия преобразувател.
В хранилището ще намерите орел файлове с планове за печатни платки
Предлагам да не запоявате постоянно Arduino и 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) {случай 0: setConfiguration (0, 0, 50, 0, 5, 1); break; // изключено = 0 случай 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); break; // полиция по посока на часовниковата стрелка син случай 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); break; // полицейски стандартен оранжев случай 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; // кръстосано връщане на син случай 15: setConfiguration (5, 0, 50, 0, 0, 20); break; // мига стандартен зелен регистър 16: setConfiguration (5, 0, 50, 0, 0, -20); break; // мига odwyrtka green case 17: setConfiguration (5, 0, 0, 50, 0, 20); break; // мига стандартен син случай 18: setConfiguration (5, 0, 0, 50, 0, -20); прекъсване; // мигане връщане син случай 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); break; // изключено = 0}}
в зависимост от дадения параметър, пръстенът ще покаже ефекта. Можете да добавите свой собствен ефект, като извикате функцията setConfiguration с нови параметри (промяна на цвета, скоростта на показване), като добавите нов режим или добавите напълно нов ефект - или ме уведомете в коментарите, ако ми хареса, ще добавя нов ефект
arduino.ino:
#include "Arduino.h" #include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h"
#включва
#include #include #include "SingleRing.h"
#включва
#включи #включи
#включва
#define WIFI_NAME ""
#define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "siren" #define TOKEN ""
#дефинирайте DIODES_COUNT 16
SingleRing top = 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 setup () {mySoftwareSerial.begin (9600); Serial.begin (115200);
if (! myDFPlayer.begin (mySoftwareSerial)) {// Използвайте softwareSerial за комуникация с mp3.
Serial.println (F ("Не може да започне:")); Serial.println (F ("1. Моля, проверете отново връзката!")); Serial.println (F ("2. Моля, поставете SD картата!")); while (вярно); } 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); while (WiFiMulti.run ()! = WL_CONNECTED) {забавяне (100); }
remoteMe.setUserMessageListener (onUserMessage);
remoteMe.setupTwoWayCommunication ();
remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);
top.setup ();
bottom.setup (); top.clear (); bottom.clear (); }
boolean turnOff = true;
unsigned long turnOffMillis = 0;
void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *данни) {
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); } else {myDFPlayer.play (trackNumber); } turnOff = false; turnOffMillis = millis () + 1000 * време; }
void loop ()
{remoteMe.loop (); top.loop (); bottom.loop (); if (turnOffMillis
}
обяснение:
#define WIFI_NAME "" #define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "notifierator" #define TOKEN ""
Трябва да предоставим горепосочени данни, подробни инструкции тук на връзката. Също така съм показал как да се регистрирам в remoteme.org и да генерирам маркера, void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *данни) {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); } else {myDFPlayer.play (trackNumber); } turnOff = false; turnOffMillis = millis () + 1000 * време; }
Тази функция ще бъде извикана, когато съобщението дойде в Arduino и покаже известието. Кодът е толкова ясен, че описва себе си. Позовавам се на подробностите за класовете към документацията тук и тук
void loop () {remoteMe.loop (); top.loop (); bottom.loop (); if (turnOffMillis <millis ()) {
if (! turnOff) {
top.clear ();
bottom.clear (); myDFPlayer.stop (); turnOff = true; }}
В цикъла извикваме цикличните функции на обектите, а също и ако времето за показване на известията е изтекло, изключваме диодите и звука.
Стъпка 5: Mp3 плейър
Той комуникира с Arduino чрез TX / RX - Подробности за самия плейър тук и библиотеката тук
Качваме mp3 файлове на SD картата. Файловете на картата се сортират по азбучен ред и след това чрез извикване:
myDFPlayer.play (5);
Пускаме петия файл от SD картата от главната директория. Ето защо е добре да давате файлове на префиксите на SD картата 01, 02 и т.н.
За генериране на гласови команди Можете да използвате тази страница.
Стъпка 6: Качване на програмата в Arduino
Преди да качите скица в Arduino, трябва да изтеглите необходимите библиотеки тук ще намерите подробни инструкции
освен това трябва да инсталираме библиотеката DFRobotDFPlayerMini и Adafruit_NeoPixel
Стъпка 7: Контрол
Изпращаме на нашия Arduino пет байта
- първият байт от светлинния ефект за горния 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: Изпращане на съобщения чрез URL адреси
Ако искаме да показваме известия от външно приложение, например с IFTTT, трябва да имаме URL, който ще направи точно същото, което направихме в прозореца в предишната стъпка. remoteme.org предоставя REST APi. Отидете до него, като щракнете върху раздела за хващане вляво (последният). Ще се покаже страница, на която също можем да изпробваме нашите URL адреси.
На първия екран имате функцията, която трябва да разширите, след което попълнете данни, както на втория екран.
попълнете данните, както на горната снимка на екрана. След щракване върху изпълнението ще изпратим съобщение
070F010501
Получателят е устройството с 205 идентификатор, същото устройство е и изпращач. MessageId с настройките „No_RENEVAL“е без значение. След това щракнете върху Изпълни. Notificator ще реагира по същия начин, както при изпращане на съобщения от приложението. След извикване на REST по -долу е URL адресът, който е извикан - погледнете третия екран. И копирането и поставянето в URL адреса на браузъра е маркирано със зелена рамка. На четвъртия екран браузърът ми chrome след поставяне на URL
В моя случай URL адресът е:
app.remoteme.org/api/*/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/
Стъпка 9: Невероятен URL адрес за изпращане на съобщение
В предишната стъпка имате URL адрес, който изпраща данни до вашето устройство. За съжаление, след като излезете от app.remoteme.org, той спира да работи. Това е така, защото не предоставихме маркера за удостоверяване и вече не сме влезли. Нека вземем нашия токен (или да създадем нов) и да го поставим в URL вместо вместо звездата.
Погледнете екрана и заменете * в URL адреса с вашия жетон
в моя случай жетонът е:
~ 267_ZxoWtJ) 0ph & 2c
така че крайният ми URL изглежда така:
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, След това отидете в раздела Моите аплети и след това „Нов аплет“- първи екран
Стъпка 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
попълваме URL адреса на нашия url с маркера. Тип съдържание към application / json и щракнете върху „създаване на действие“и Край. Сега имаме нашия аплет:
Стъпка 17: Обобщение
В този урок показах как да изпращаме до нашите Arduino съобщения от външни системи. Ние също интегрираме друга система след IFTTT по подобен начин. Не е задължително да е „нотификатор“, който исках да покажа в този пример как да изпращам съобщения от външни системи към нашия Arduino.
sourcecodesFanPage във Facebook
Наздраве, Maciek
Препоръчано:
Първи стъпки с безжични сензори за температура и вибрации на дълги разстояния: 7 стъпки
Първи стъпки с безжични сензори за температура и вибрации на дълги разстояния: Понякога вибрациите са причина за сериозни проблеми в много приложения. От валове и лагери на машината до работа на твърдия диск, вибрациите причиняват повреда на машината, ранна подмяна, ниска производителност и нанасят сериозен удар върху точността. Мониторинг
Първи стъпки с STM32f767zi Cube IDE и качване на персонализирана скица: 3 стъпки
Първи стъпки с STM32f767zi Cube IDE и качване на персонализирана скица: КУПЕТЕ (щракнете върху теста, за да закупите/посетете уеб страницата) STM32F767ZISUPPORTED SOFTWARE · STM32CUBE IDE · KEIL MDK ARM µVISION · EWARM IAR EMBEDDED WORKBENCH използва се за програмиране на STM микроконтролери
Как да направите 4G LTE двойна BiQuade антена Лесни стъпки: 3 стъпки
Как да направя 4G LTE двойна BiQuade антена лесни стъпки: През повечето време, с което се сблъсквах, нямам добра сила на сигнала за ежедневните ми работи. Така. Търся и опитвам различни видове антени, но не работи. След загубено време намерих антена, която се надявам да направя и изпробвам, защото тя не градивен принцип
Дизайн на играта с бързо движение в 5 стъпки: 5 стъпки
Дизайн на игра с Flick в 5 стъпки: Flick е наистина прост начин да направите игра, особено нещо като пъзел, визуален роман или приключенска игра
Система за предупреждение за паркиране на автомобил Arduino - Стъпки по стъпка: 4 стъпки
Система за предупреждение за паркиране на автомобил Arduino | Стъпки по стъпка: В този проект ще проектирам обикновена верига за сензори за паркиране на автомобил Arduino, използвайки Arduino UNO и HC-SR04 ултразвуков сензор. Тази базирана на Arduino система за предупреждение за автомобил за заден ход може да се използва за автономна навигация, измерване на роботи и други обхвати