Мазмұны:

Хабарламашы: 17 қадам
Хабарламашы: 17 қадам

Бейне: Хабарламашы: 17 қадам

Бейне: Хабарламашы: 17 қадам
Бейне: Басқа тышты деген осы 😡 2024, Шілде
Anonim
Хабарландырушы
Хабарландырушы

Құрылғыны, мысалы, IFTTT жүйесіне қосуға болады және жаңа пошта пайда болған кезде әрекет етеді. App.remoteme.org сайтында біз қоңырау шалғаннан кейін сілтеме жасаймыз, оның байттары Arduino -ға жіберіледі, ал Arduino кейбір жарық эффектісін көрсетеді және SDcard -тан mp3 тыңдайды.

1 -қадам: не қажет

Не қажет
Не қажет
Не қажет
Не қажет
  • NodeMCU, WemOS немесе ұқсас нәрсе
  • WS2812B диодтары бар екі жарықдиодты сақина (мен 16 -шы светодиодты қолдандым)
  • DFRobotDFPlayerMini - бұл mp3 ойнатқыш. Ол SDcard -тен mp3 ойнатады және Arduino -мен RX/TX арқылы байланысады
  • Динамик
  • SD картасы
  • Логикалық түрлендіргіш -Мен мұны қолдандым, mp3 ойнатқыш 5V және Arduino 3.3 пайдаланады, сондықтан бізге бұл түрлендіргіш қажет
  • Қарапайым ПХД жасау бойынша білім мен дағды

Мұнара:

  • картон - қалыңдығы екі түрлі
  • Бақылау қағазы
  • алюминий фольга

2 -қадам: мұнара құрылысы

Мұнара ғимараты
Мұнара ғимараты
Мұнара ғимараты
Мұнара ғимараты
Мұнара ғимараты
Мұнара ғимараты
Мұнара ғимараты
Мұнара ғимараты

Мұнара жоспарының үстіңгі жағында (менің техникалық суретпен оқиғам бастауыш мектепте аяқталды), барлық өлшемдері миллиметрмен.

Жұмыс принципі

  1. жарықдиодты жарықдиодты сақина
  2. Бақылау қағазы
  3. Картоннан жасалған және алюминий фольгамен қапталған кесілген конус, осылайша ол жетекші сақиналардың шамдарын көрсетеді, 3 суретте '= қиылған тор
  4. картоннан жасалған түтік - мұнараларды тігінен ұстайды, түтіктің ішінде светодиодтарға арналған кабельдер бар
  5. Биіктігі сізге байланысты 85 мм
  6. Электрониканың барлық бөлшектерінің ішіндегі стенд

Барлық көлденең элементтер қалың картоннан жасалуы керек.

3 -қадам: Сымдардың диаграммасы

Сымдардың диаграммасы
Сымдардың диаграммасы
Сымдардың диаграммасы
Сымдардың диаграммасы
Сымдардың диаграммасы
Сымдардың диаграммасы
Сымдардың диаграммасы
Сымдардың диаграммасы

Mp3 ойнатқыш 5В кернеумен қамтамасыз етілген және Arduino -мен TX / RX арқылы байланысады, логикалық түрлендіргіш қажет, себебі Arduino өзі 3,3В кернеуде жұмыс істейді. Сақиналарды басқару сонымен қатар логикалық түрлендіргіш арқылы Arduino -ға (D5, D6) қосылады.

Репозиторийде сіз ПХД жоспарлары бар бүркіт файлдарын таба аласыз

Мен Arduino мен mp3 ойнатқышты біркелкі дәнекерлемеуді тек әйелдерге арналған алтын түйреуіштерді қолдану үшін ұсынбаймын

4 -қадам: жұмыс принципі

Біздің Arduino app.remoteme.org жүйесіне WebSockets көмегімен қосылады (дайын кітапханалар бар) осы байланыс арқылы 5 байтты хабарламалар жіберіледі:

  • жоғарғы жарықдиодты сақина үшін жарық әсерінің бірінші байты
  • төменгі жарықдиодты сақина үшін екінші байт жарық әсері
  • ойнатылатын mp3 файлының нөмірі
  • жарық эффектісі мен mp3 ойнатылатын секунд саны
  • mp3 бір рет немесе циклде ойнатылуы керек пе

бастапқы код

Толық бастапқы кодты мына жерден таба аласыз

SingleRing.cpp және SingleRing.h файлдарында жарықдиодты сақиналардың әсерін басқаратын класс бар. Мен setMode (int m) функциясына қарап бастауды ұсынамын:

void SingleRing:: setMode (int m) {switch (m) {case 0: setConfiguration (0, 0, 50, 0, 5, 1); break; // off = 0 1 жағдай: setConfiguration (6, 0, 50, 0, 0, 20); break; // қатты стандартты жасыл корпус 2: setConfiguration (6, 0, 0, 50, 0, 20); үзіліс; // қатты стандартты көк 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); 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; // blink odwyrtka green case 17: setConfiguration (5, 0, 0, 50, 0, 20); үзіліс; // жыпылықтау стандартты көк түсті 18 жағдай: setConfiguration (5, 0, 0, 50, 0, -20); break; // blink revert blue blue case 19: setConfiguration (5, 50, 0, 0, 0, 20); break; // жыпылықтау стандартты қызыл 20 жағдай: setConfiguration (5, 50, 0, 0, 0, -20); break; // blink revert red case 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}}

берілген параметрге байланысты сақина әсер көрсетеді. SetConfiguration функциясын жаңа параметрлермен (түсінің өзгеруі, дисплей жылдамдығы) жаңа режимді қосу арқылы немесе мүлде жаңа эффект қосу арқылы шақыру арқылы өз әсеріңізді қосуға болады - немесе маған ұнаса түсініктемелерде хабарлаңыз, мен жаңа әсер қосамын

arduino.ino:

#«Arduino.h» қосу #«SoftwareSerial.h» қосу #«DFRobotDFPlayerMini.h» қосу

#қосу

#қосу #қосу #қосу «SingleRing.h»

#қосу

#қосу #қосу

#қосу

#«WIFI_NAME» анықтаңыз

#WIFI_ПАРОЛЫН анықтаңыз «» #DEVICE_ID 205 анықтаңыз #DEVICE_NAME «сиренасын» анықтаңыз #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)) {// mp3 -мен байланысу үшін softwareSerial пайдаланыңыз.

Serial.println (F («Бастау мүмкін емес:»)); Serial.println (F («1. Қосылымды қайта тексеріңіз!»)); Serial.println (F («2. SD картасын салыңыз!»))); while (true); } Serial.println (F («DFPlayer Mini онлайн.»));

myDFPlayer.setTimeOut (500); // Сериялық байланыс уақытын 500 мс орнатыңыз

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 (); }

логикалық TurnOff = ақиқат;

белгісіз ұзақ turnOffMillis = 0;

жарамсыз onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *деректер) {

uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (деректер, пос); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (деректер, пос); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (деректер, пос); uint8_t time = RemoteMeMessagesUtils:: getUint8 (деректер, пос); uint8_t режимі = RemoteMeMessagesUtils:: getUint8 (деректер, пос);

bottom.setMode (bottomMode);

top.setMode (topMode); if (mode == 1) {myDFPlayer.loop (trackNumber); } басқа {myDFPlayer.play (trackNumber); } turnOff = жалған; turnOffMillis = millis () + 1000 * уақыт; }

бос цикл ()

{remoteMe.loop (); top.loop (); bottom.loop (); егер (turnOffMillis

}

түсіндіру:

#анықтаңыз WIFI_NAME «» #WIFI_ПАРОЛЫН анықтаңыз «» #DEVICE_ID 205 анықтаңыз #DEVICE_NAME «хабарландырушысын анықтаңыз» #TOKEN анықтаңыз «»

Біз жоғарыдағы деректерді, егжей -тегжейлі нұсқауларды сілтемеде беруіміз керек, сонымен қатар мен remoteme.org сайтында қалай тіркелу керектігін және токенді қалай жасау керектігін көрсеттім, жарамсыз onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *деректер) {uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (деректер, пос); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (деректер, пос); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (деректер, пос); uint8_t time = RemoteMeMessagesUtils:: getUint8 (деректер, пос); uint8_t режимі = RemoteMeMessagesUtils:: getUint8 (деректер, пос);

bottom.setMode (bottomMode);

top.setMode (topMode); if (mode == 1) {myDFPlayer.loop (trackNumber); } басқа {myDFPlayer.play (trackNumber); } turnOff = жалған; turnOffMillis = millis () + 1000 * уақыт; }

Бұл функция хабар Arduino -ға келіп, хабарландыруды көрсеткенде шақырылады. Код соншалықты түсінікті, ол өзін сипаттайды. Мен сабақтардың егжей -тегжейін осы жерде және осы жерде құжаттамаға сілтеме жасаймын

void loop () {remoteMe.loop (); top.loop (); bottom.loop (); if (turnOffMillis <millis ()) {

if (! turnOff) {

top.clear ();

bottom.clear (); myDFPlayer.stop (); turnOff = ақиқат; }}

Циклде біз объектілердің циклдық функцияларын атаймыз, сонымен қатар хабарландыруларды көрсету уақыты өтіп кетсе, біз диодтар мен дыбысты өшіреміз.

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 -ға бес байтты жібереміз

  • жоғарғы жарықдиодты сақина үшін жарық әсерінің бірінші байты
  • төменгі жарықдиодты сақина үшін екінші байт жарық әсері
  • ойнатылатын mp3 файлының нөмірі
  • жарық эффектісі мен mp3 ойнатылатын секунд саны
  • mp3 бір рет немесе циклде ойналуы керек пе (егер ол циклде ойналса, 1)

Байт жіберу арқылы

07 0F 01 05 01

Жоғарғы сақина полиция шамдарын көрсетеді (6 режим) төменгі жағы жасыл түспен жыпылықтайды (15 режим) (singleRing.cpp сайтындағы setMode функциясын және оның жанындағы түсініктемелерді қараңыз). SDcard форматындағы бірінші файл 5 секунд бойы ойнатылады. Файл циклде ойнатылады (arduino.ino сайтындағы OnUserMessage функциясын тексеріңіз)

Осы байттарды жіберейік. Жоғарыдағы экранға қараңыз және белгішелерді 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 идентификаторы бар құрылғы, сол құрылғы да жіберуші болып табылады. «No_RENEVAL» параметрлері бар MessageId маңызды емес. Содан кейін Execute түймешігін басыңыз. REST -ке қоңырау шалғаннан кейін төменде URL деп аталады - үшінші экранға қараңыз. Браузерге URL көшіру және қою жасыл жиекпен белгіленген. Төртінші экранда 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 мекен -жайын таңбалауышпен толтырамыз. Application / json үшін мазмұн түрін таңдап, «Әрекет жасау» және Аяқтау түймешігін басыңыз. Енді бізде апплет бар:

17 -қадам: Қорытынды

Бұл оқулықта мен Arduino -ға сыртқы жүйелерден хабарламаларды қалай жіберу керектігін көрсеттім. Біз сондай -ақ IFTTT басқа жүйені ұқсас түрде біріктіреміз. Міндетті түрде «хабарлаушы» болудың қажеті жоқ, мен осы мысалда сыртқы жүйелерден біздің Arduino -ға хабарларды қалай жіберу керектігін көрсеткім келді.

sourcececodesFanPage Facebook желісінде

Сәлем, Макиек

Ұсынылған: