Mundarija:

Xabar beruvchi: 17 qadam
Xabar beruvchi: 17 qadam

Video: Xabar beruvchi: 17 qadam

Video: Xabar beruvchi: 17 qadam
Video: TEKIN WIFI ISH BERADIMA ISH BERMAYDIMA SINAB KO'RAMIZ 2024, Iyul
Anonim
Xabar beruvchi
Xabar beruvchi

Qurilma, masalan, IFTTT tizimiga ulanishi va yangi pochta paydo bo'lganda javob berishi mumkin. App.remoteme.org saytida biz qo'ng'iroqdan so'ng havola yaratamiz, qaysi baytlar Arduino -ga yuboriladi va Arduino yorug'lik effektini ko'rsatadi va SDcard -dan mp3 o'ynaydi.

1 -qadam: nima kerak

Nima kerak
Nima kerak
Nima kerak
Nima kerak
  • NodeMCU, WemOS yoki shunga o'xshash narsa
  • WS2812B diodli ikkita LED uzuk (men 16 -chi LED halqalarni ishlatganman)
  • DFRobotDFPlayerMini - bu mp3 pleer. U SDcard -dan mp3 ijro etadi va Arduino bilan RX/TX orqali muloqot qiladi
  • Karnay
  • SD karta
  • Mantiqiy konvertor -Men buni ishlatganman, mp3 pleerda 5V va Arduino 3.3 ishlatiladi, shuning uchun bizga bu konvertor kerak.
  • O'zimiz tomonidan oddiy PCB yaratish bo'yicha bilim va ko'nikmalar

Minora:

  • karton - ikki xil qalinlik
  • Kuzatuv qog'ozi
  • alyumin folga

2 -qadam: Minora binosi

Minora binosi
Minora binosi
Minora binosi
Minora binosi
Minora binosi
Minora binosi
Minora binosi
Minora binosi

Minora rejasining tepasida (texnik rasm bilan sarguzashtim boshlang'ich maktabda tugagan), barcha o'lchamlar millimetrda.

Ishlash printsipi

  1. yorug'lik chiqaradigan LEDlar halqasi
  2. Kuzatuv qog'ozi
  3. Kesilgan konus, kartondan yasalgan va alyumin folga bilan qoplangan, shuning uchun u halqalarning chiroqlarini aks ettiradi, 3-rasmda "kesilgan to'r".
  4. karton naycha - minoralarni vertikal holda ushlab turadi, trubaning ichida LEDlar uchun kabellar bor
  5. Balandligi sizga bog'liq, menda 85 mm
  6. Stend elektronikaning barcha qismlarida joylashgan

Barcha gorizontal elementlar qalin kartondan yasalgan bo'lishi kerak.

3 -qadam: ulanish sxemasi

Ulanish diagrammasi
Ulanish diagrammasi
Ulanish diagrammasi
Ulanish diagrammasi
Ulanish diagrammasi
Ulanish diagrammasi
Ulanish diagrammasi
Ulanish diagrammasi

Mp3 pleer 5V kuchlanish bilan ta'minlangan va Arduino bilan TX / RX orqali aloqa o'rnatadi, mantiqiy konvertor kerak, chunki Arduino o'zi 3.3V kuchlanishda ishlaydi. Uzuklarni boshqarish ham mantiqiy konvertor orqali Arduino (D5, D6) ga ulangan.

Ma'lumotlar omborida siz PCB rejalari bo'lgan burgut fayllarini topasiz

Men Arduino va mp3 pleerni doimiy ravishda lehimlamaslikni taklif qilaman, faqat ayol oltin pimlardan foydalaning

4 -qadam: ishlash printsipi

Bizning Arduino WebSockets yordamida app.remoteme.org tizimiga ulanadi (tayyor kutubxonalar mavjud), bu ulanish orqali 5 baytli xabarlar yuboriladi:

  • yuqori LED halqasi uchun yorug'lik effektining birinchi bayti
  • pastki LED halqa uchun ikkinchi baytli yorug'lik effekti
  • ijro etiladigan mp3 fayl raqami
  • yorug'lik effekti va mp3 qancha vaqt ijro etilishi sekundlar soni
  • mp3 bir marta yoki pastadirda ijro etilishi kerak

manba kodi

Butun manba kodini bu erda topishingiz mumkin

SingleRing.cpp va SingleRing.h fayllarida LED halqalarining ta'sirini boshqarish uchun sinf mavjud. Men sizga setMode (int m) funktsiyasini ko'rib chiqishni taklif qilaman:

void SingleRing:: setMode (int m) {switch (m) {0 holat: setConfiguration (0, 0, 50, 0, 5, 1); break; // off = 0 holat 1: setConfiguration (6, 0, 50, 0, 0, 20); break; // qattiq standart yashil korpus 2: setConfiguration (6, 0, 0, 50, 0, 20); break; // qattiq standart ko'k korpus 3: setConfiguration (6, 50, 0, 0, 0, 20); break; // qattiq standart qizil korpus 4: setConfiguration (6, 50, 10, 0, 0, 20); break; // qattiq standart to'q sariq rangli korpus 5: setConfiguration (1, 0, 100, 0, 5, 2); tanaffus; // militsiya soat yo'nalishi bo'yicha yashil quti 6: setConfiguration (1, 0, 100, 0, 5, -2); tanaffus; // politsiya 7 -yashil holatni qaytaradi: setConfiguration (1, 0, 0, 100, 5, 2); tanaffus; // militsiya soat yo'nalishi bo'yicha ko'k korpus 8: setConfiguration (1, 0, 0, 100, 5, -2); tanaffus; // politsiya 9 -ko'k rang holatini qaytaradi: setConfiguration (1, 100, 0, 0, 5, 2); tanaffus; // politsiya standart qizil sumkasi 10: setConfiguration (1, 100, 0, 0, 5, -2); tanaffus; // politsiya 11 -holatni qaytaradi: setConfiguration (1, 100, 20, 0, 5, 2); break; // politsiya standart apelsin sumkasi 12: setConfiguration (1, 100, 20, 0, 5, -2); tanaffus; // politsiya to'q sariq rangli 13 -holatni qaytaradi: setConfiguration (2, 0, 0, 50, 8, 10); break; // o'zaro faoliyat standart ko'k rangli korpus 14: setConfiguration (2, 0, 0, 50, 8, -10); tanaffus; // ko'k rangli korpusni qaytarish 15: setConfiguration (5, 0, 50, 0, 0, 20); break; // miltillovchi standart yashil korpus 16: setConfiguration (5, 0, 50, 0, 0, -20); break; // miltillovchi odwyrtka yashil sumkasi 17: setConfiguration (5, 0, 0, 50, 0, 20); break; // miltillovchi standart ko'k rangli korpus 18: setConfiguration (5, 0, 0, 50, 0, -20); tanaffus; // milt -milt qaytish ko'k rangli holat 19: setConfiguration (5, 50, 0, 0, 0, 20); tanaffus; // miltillovchi standart qizil korpus 20: setConfiguration (5, 50, 0, 0, 0, -20); tanaffus; // milt -milt qaytarish qizil holat 21: setConfiguration (5, 50, 10, 0, 0, 20); break; // standart apelsin sumkasi 22 miltillash: setConfiguration (5, 50, 10, 0, 0, -20); break; // blink revert apelsin standarti: setConfiguration (0, 0, 50, 0, 5, 1); tanaffus; // o'chirish = 0}}

berilgan parametrga qarab, uzuk effektni ko'rsatadi. Siz yangi effekt qo'shish yoki yangi effekt qo'shish orqali setConfiguration funktsiyasini yangi parametrlar bilan chaqirish orqali o'z effektingizni qo'shishingiz mumkin - agar menga yoqsa, men yangi effekt qo'shaman.

arduino.ino:

#"Arduino.h" ni qo'shish #"SoftwareSerial.h" ni qo'shish #"DFRobotDFPlayerMini.h" ni qo'shish

#qo'shing

#qo'shish #qo'shish #qo'shish "SingleRing.h"

#qo'shing

#qo'shing #qo'shing

#qo'shing

#"WIFI_NAME" ni aniqlang

#WIFI_PASSWORD "ni belgilang" " #DEVICE_ID 205ni belgilang #DEVICE_NAME" sirenini "belgilang #TOKENni belgilang""

#DIODES_COUNT ni aniqlang 16

SingleRing top = SingleRing (DIODES_COUNT, D5);

SingleRing tubi = 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 bilan muloqot qilish uchun softwareSerial -dan foydalaning.

Serial.println (F ("Boshlash mumkin emas:")); Serial.println (F ("1. Iltimos, ulanishni qayta tekshiring!")); Serial.println (F ("2. Iltimos, SD -kartani joylashtiring!"))); while (rost); } Serial.println (F ("DFPlayer Mini onlayn."));

myDFPlayer.setTimeOut (500); // Kommunikativ ketma -ket 500ms vaqtni belgilang

myDFPlayer.volume (30);

myDFPlayer. EQ (DFPLAYER_EQ_NORMAL);

myDFPlayer.outputDevice (DFPLAYER_DEVICE_SD); WiFiMulti.addAP (WIFI_NAME, WIFI_PASSWORD); while (WiFiMulti.run ()! = WL_CONNECTED) {kechiktirish (100); }

remoteMe.setUserMessageListener (onUserMessage);

remoteMe.setupTwoWayCommunication ();

remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);

top.setup ();

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

boolean turnOff = rost;

imzosiz uzun turnOffMillis = 0;

void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *ma'lumotlar) {

uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (ma'lumotlar, pos); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (ma'lumotlar, pos); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (ma'lumotlar, pos); uint8_t time = RemoteMeMessagesUtils:: getUint8 (ma'lumotlar, pos); uint8_t rejimi = RemoteMeMessagesUtils:: getUint8 (ma'lumotlar, pos);

bottom.setMode (bottomMode);

top.setMode (topMode); agar (rejim == 1) {myDFPlayer.loop (trackNumber); } boshqa {myDFPlayer.play (trackNumber); } turnOff = noto'g'ri; turnOffMillis = millis () + 1000 * vaqt; }

bo'sh halqa ()

{remoteMe.loop (); top.loop (); pastki.loop (); agar (turnOffMillis

}

tushuntirish:

#WIFI_NAME "" ni belgilang " #WIFI_PASSWORDni aniqlang" " #DEVICE_ID 205ni belgilang #DEVICE_NAME" xabarnomasini belgilang " #TOKENni belgilang""

Biz yuqoridagi ma'lumotlarni, batafsil ko'rsatmalarni bu erda havola orqali taqdim etishimiz kerak, shuningdek men remoteme.org saytida qanday ro'yxatdan o'tish va token yaratish kerakligini ko'rsatdim.

void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *ma'lumotlar) {uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (ma'lumotlar, pos); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (ma'lumotlar, pos); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (ma'lumotlar, pos); uint8_t time = RemoteMeMessagesUtils:: getUint8 (ma'lumotlar, pos); uint8_t rejimi = RemoteMeMessagesUtils:: getUint8 (ma'lumotlar, pos);

bottom.setMode (bottomMode);

top.setMode (topMode); agar (rejim == 1) {myDFPlayer.loop (trackNumber); } boshqa {myDFPlayer.play (trackNumber); } turnOff = noto'g'ri; turnOffMillis = millis () + 1000 * vaqt; }

Xabar Arduino -ga kelganida va bildirishnomani ko'rsatganda bu funksiya chaqiriladi. Kod shu qadar aniqki, u o'zini tasvirlaydi. Men darslarning tafsilotlarini bu erdagi va bu erdagi hujjatlarga havola qilaman

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

agar (! turnOff) {

top.clear ();

bottom.clear (); myDFPlayer.stop (); turnOff = rost; }}

Loopda biz ob'ektlarning pastadir funktsiyalarini chaqiramiz, shuningdek, agar bildirishnomalarni ko'rsatish vaqti o'tgan bo'lsa, biz diodlar va ovozni o'chirib qo'yamiz.

5 -qadam: Mp3 pleer

Mp3 pleer
Mp3 pleer

U Arduino bilan TX / RX orqali muloqot qiladi - bu erda o'yinchining o'zi va kutubxona tafsilotlari

Biz mp3 fayllarni SD -kartaga yuklaymiz. Kartadagi fayllar alifbo tartibida saralanadi va keyin qo'ng'iroq qilinadi:

myDFPlayer.play (5);

Biz SD kartadagi beshinchi faylni ildiz katalogidan o'ynaymiz. Shuning uchun SD -kartada 01, 02 va hokazo prefiksli fayllarni berish yaxshidir. Mening holimda u yuqoridagi bosma ekranga o'xshaydi.

Ovozli buyruqlarni yaratish uchun siz ushbu sahifadan foydalanishingiz mumkin.

6 -qadam: Dasturni Arduino -ga yuklash

Dastur Arduino -ga yuklanadi
Dastur Arduino -ga yuklanadi
Dastur Arduino -ga yuklanadi
Dastur Arduino -ga yuklanadi

Eskizni Arduino -ga yuklamasdan oldin, kerakli kutubxonalarni yuklab olishingiz kerak, bu erda batafsil ko'rsatmalarni topasiz

Bundan tashqari, biz DFRobotDFPlayerMini kutubxonasini va Adafruit_NeoPixel -ni o'rnatishimiz kerak.

7 -qadam: nazorat

Boshqaruv
Boshqaruv
Boshqaruv
Boshqaruv

Biz Arduino -ga besh bayt yuboramiz

  • yuqori LED halqasi uchun yorug'lik effektining birinchi bayti
  • pastki LED halqa uchun ikkinchi baytli yorug'lik effekti
  • ijro etiladigan mp3 fayl raqami
  • yorug'lik effekti va mp3 qancha vaqt ijro etilishi sekundlar soni
  • mp3 bir marta yoki pastadirda ijro etilishi kerakmi (agar loopda ijro etilsa 1)

Bayt yuborish orqali

07 0F 01 05 01

Yuqori halqada politsiya chiroqlari (6 -rejim), pastki qismi yashil (15 -rejim) yonib turadi (singleRing.cpp -da setMode funktsiyasini va uning yonidagi izohlarni ko'ring). SDcard shaklidagi birinchi fayl 5 soniya davomida ijro etiladi. Va fayl loopda o'ynaladi (arduino.ino saytidagi OnUserMessage funksiyasini tekshiring)

Keling, bu baytlarni yuboramiz. Yuqoridagi ekranga qarang va piktogramma ustiga 1, 2, 3 yozilgan tartibda bosing. Oyna paydo bo'ladi

Keyin ikkinchi ekranga qarang va ikkinchi oynadagidek oynani to'ldiring

Ko'rsatilgan oyna qurilmaga xabar yuborish uchun ishlatiladi. 1 -maydonda jo'natuvchi qurilmani tanlang - chunki bizda faqat bitta qurilma bor, biz uni tanlaymiz (bu majburiy maydon va bu xabar yuboradigan qurilmaning bir xil bo'lishi muhim emas) 2 -maydonda biz baytlarni beramiz. yuborish (qizil rangda biz kiritgan qiymat 2 satr sifatida ko'rsatiladi) va keyin Yuborish tugmasini bosing.

Xabar yuborilgandan so'ng, bizning xabardorimiz tegishli yorug'lik effektlarini ko'rsatish va tanlangan mp3 ijro etish orqali javob berishi kerak. Men sizga 0 dan 22 gacha bo'lgan sonning birinchi ikki baytini berib, turli effektlarni sinab ko'rishni taklif qilaman (setMode funktsiyasidagi tavsifga qarang).

8 -qadam: URL -lar yordamida xabar yuborish

URL -lar yordamida xabarlar yuborish
URL -lar yordamida xabarlar yuborish
URL -lar yordamida xabarlar yuborish
URL -lar yordamida xabarlar yuborish
URL -lar yordamida xabarlar yuborish
URL -lar yordamida xabarlar yuborish
URL -lar yordamida xabarlar yuborish
URL -lar yordamida xabarlar yuborish

Agar biz tashqi ilovadan bildirishnomalarni ko'rsatishni xohlasak, masalan, IFTTT bilan, bizda oldingi qadamda oynada bo'lgani kabi, xuddi shu narsani bajaradigan URL bo'lishi kerak. remoteme.org REST APi -ni taqdim etadi. Chapdagi (oxirgi) slayder yorlig'ini bosish orqali unga o'ting. Sahifa ko'rsatiladi, bu sahifada biz o'z URL manzilimizni sinab ko'rishimiz mumkin.

Birinchi ekranda siz kengaytirmoqchi bo'lgan funktsiyaga egasiz, so'ngra ma'lumotlarni ikkinchi ekrandagidek to'ldiring.

ma'lumotlarni yuqoridagi skrinshotda bo'lgani kabi to'ldiring. Ishni bosgandan so'ng, biz xabar yuboramiz

070F010501

Qabul qilgich 205 identifikatorli qurilma, xuddi shu qurilma ham yuboruvchi. "No_RENEVAL" sozlamalari bo'lgan MessageId ahamiyatsiz. Keyin Execute tugmasini bosing. RESTga qo'ng'iroq qilgandan so'ng, quyida URL deb nomlangan - uchinchi ekranga qarang. Brauzer URL manziliga nusxa ko'chirish yashil chegara bilan belgilanadi. To'rtinchi ekranda URL joylashtirilganidan keyin mening xrom brauzerim

Mening vaziyatimda, URL:

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

9 -qadam: Xabar yuborish uchun noaniq URL

Xabar yuborish uchun noaniq URL
Xabar yuborish uchun noaniq URL

Oldingi bosqichda sizning qurilmangizga ma'lumotlarni yuboradigan URL manzilingiz bor. Afsuski, app.remoteme.org saytidan chiqqandan so'ng, u ishlamay qoladi. Buning sababi shundaki, biz autentifikatsiya tokenini taqdim etmaganmiz va endi tizimga kirmaymiz. Keling, tokenimizni olaylik (yoki yangisini yaratamiz) va uni yulduz o'rniga URL manziliga joylashtiramiz.

Ekranga qarang va URL manzilidagi * belgisini belgi bilan almashtiring

mening holatimda token:

~ 267_ZxoWtJ) 0ph va 2c

shuning uchun mening oxirgi URL manzilim shunday ko'rinadi:

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

Endi biz tizimga kirmagan bo'lsak ham qo'ng'iroq qila olamiz. Qachon chaqirilsa, bizning qurilmamizga 205 xabar yuboriladi.

10 -qadam: IFTTT 1/7 bilan integratsiya

IFTTT 1/7 bilan integratsiya
IFTTT 1/7 bilan integratsiya

Yuqoridagi bosqichda yaratilgan url tashqi ilovalar tomonidan bajarilishi mumkin. Buni qanday ishlatishni IFTTTda ko'rsataman. Men uni elektron pochta manziliga (Gmail hisobi) kelganida, xabar beruvchi yoqilishi uchun sozlayman.

IFTTT-ga kiring, so'ng "Mening ilovalarim" yorlig'iga, so'ng "Yangi Applet"- birinchi ekranga o'ting

11 -qadam: IFTTT 2/7 bilan integratsiya

IFTTT 2/7 bilan integratsiya
IFTTT 2/7 bilan integratsiya

Keyingi "+bu" ni bosing

12 -qadam: IFTTT 3/7 bilan integratsiya

IFTTT 3/7 bilan integratsiya
IFTTT 3/7 bilan integratsiya

Keyin "Qidiruv xizmatlari" maydoniga "Gmail" ni yozing.

Keyin "pochta qutisiga yangi elektron pochta" (ba'zi konfiguratsiya kerak bo'lishi mumkin).

13 -qadam: IFTTT 4/7 bilan integratsiya

IFTTT 4/7 bilan integratsiya
IFTTT 4/7 bilan integratsiya

Endi biz "+" belgisini bosamiz

14 -qadam: IFTTT 5/7 bilan integratsiya

IFTTT 5/7 bilan integratsiya
IFTTT 5/7 bilan integratsiya

"Webhooks" ni toping va ustiga bosing

15 -qadam: IFTTT 6/7 bilan integratsiya

IFTTT 6/7 bilan integratsiya
IFTTT 6/7 bilan integratsiya

keyin "veb -so'rov yuboring"

16 -qadam: IFTTT 7/7 bilan integratsiya

IFTTT 7/7 bilan integratsiya
IFTTT 7/7 bilan integratsiya

biz url URL manzilini token bilan to'ldiramiz. Application / json -ga kontent turini kiriting va "Amal yaratish" va "Finish" tugmasini bosing. Endi bizda applet bor:

17 -qadam: Xulosa

Ushbu qo'llanmada men Arduino -ga tashqi tizimlardan qanday xabar yuborish kerakligini ko'rsatdim. Biz boshqa tizimni, keyin IFTTTni shunga o'xshash tarzda birlashtiramiz. Bu "xabardor" bo'lishi shart emas, men bu misolda tashqi tizimlardan bizning Arduino -ga qanday xabar yuborish kerakligini ko'rsatmoqchi edim.

manba kodlariFanPage Facebook -da

Salom, Macek

Tavsiya: