Съдържание:

Нотификатор: 17 стъпки
Нотификатор: 17 стъпки

Видео: Нотификатор: 17 стъпки

Видео: Нотификатор: 17 стъпки
Видео: Начать продавать на Вайлдберриз за 3 дня! (Пошаговая инструкция) 2024, Ноември
Anonim
Нотификатор
Нотификатор

Устройството може да бъде свързано например към системата 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: Изграждане на кула

Сграда на кулата
Сграда на кулата
Сграда на кулата
Сграда на кулата
Сграда на кулата
Сграда на кулата
Сграда на кулата
Сграда на кулата

Над плана на кулата в страничен изглед (моето приключение с технически чертеж завърши в основно училище), всички размери в милиметри.

Принцип на действие

  1. пръстен от светодиоди свети
  2. Проследяваща хартия
  3. Пресеченият конус, изработен от картон и покрит с алуминиево фолио, така че отразява светлините от светодиодни пръстени, на фигура 3 ‘= изрязаната мрежа
  4. картонена тръба - държи кулите вертикално, вътре в тръбата има кабели за светодиоди
  5. Височината зависи от вас, имам 85 мм
  6. Стойката вътре във всички части на електрониката

Всички хоризонтални елементи трябва да бъдат направени от по -дебел картон.

Стъпка 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 плейър

Mp3 плейър
Mp3 плейър

Той комуникира с Arduino чрез TX / RX - Подробности за самия плейър тук и библиотеката тук

Качваме mp3 файлове на SD картата. Файловете на картата се сортират по азбучен ред и след това чрез извикване:

myDFPlayer.play (5);

Пускаме петия файл от SD картата от главната директория. Ето защо е добре да давате файлове на префиксите на SD картата 01, 02 и т.н.

За генериране на гласови команди Можете да използвате тази страница.

Стъпка 6: Качване на програмата в Arduino

Качване на програмата в Arduino
Качване на програмата в Arduino
Качване на програмата в Arduino
Качване на програмата в 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 адреси

Изпращане на съобщения чрез URL адреси
Изпращане на съобщения чрез URL адреси
Изпращане на съобщения чрез URL адреси
Изпращане на съобщения чрез URL адреси
Изпращане на съобщения чрез URL адреси
Изпращане на съобщения чрез URL адреси
Изпращане на съобщения чрез URL адреси
Изпращане на съобщения чрез 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 адрес за изпращане на съобщение
Невероятен 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

Интеграция с IFTTT 1/7
Интеграция с IFTTT 1/7

URL адресът, създаден в стъпка по -горе, е подходящ за изпълнение от външни приложения. Как да го използвам ще покажа на IFTTT. Ще го конфигурирам така, че нотификаторът да се включва, когато на имейл адреса дойде имейл (акаунт в Gmail).

Влезте в IFTTT, След това отидете в раздела Моите аплети и след това „Нов аплет“- първи екран

Стъпка 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

попълваме URL адреса на нашия url с маркера. Тип съдържание към application / json и щракнете върху „създаване на действие“и Край. Сега имаме нашия аплет:

Стъпка 17: Обобщение

В този урок показах как да изпращаме до нашите Arduino съобщения от външни системи. Ние също интегрираме друга система след IFTTT по подобен начин. Не е задължително да е „нотификатор“, който исках да покажа в този пример как да изпращам съобщения от външни системи към нашия Arduino.

sourcecodesFanPage във Facebook

Наздраве, Maciek

Препоръчано: