Mündəricat:

Bildirici: 17 addım
Bildirici: 17 addım

Video: Bildirici: 17 addım

Video: Bildirici: 17 addım
Video: kostromin — Моя голова винтом (My head is spinning like a screw) (Official Video) 2024, Noyabr
Anonim
Bildirici
Bildirici

Cihaz, məsələn, IFTTT sisteminə qoşula bilər və yeni bir poçt görünəndə reaksiya verə bilər. App.remoteme.org saytında zəng etdikdən sonra bir link yaradacağıq ki, hansı baytlar Arduinoya göndəriləcək və Arduino bəzi işıq effekti göstərəcək və SDcarddan mp3 səsləndirəcək.

Addım 1: Nə lazımdır

Nə Lazımdır
Nə Lazımdır
Nə Lazımdır
Nə Lazımdır
  • NodeMCU, WemOS və ya bənzər bir şey
  • WS2812B diodlu iki LED üzük (16 -cı led üzüklərdən istifadə etmişəm)
  • DFRobotDFPlayerMini - bu mp3 pleyerdir. SDcarddan mp3 çalır və Arduino ilə RX/TX ilə əlaqə qurur
  • Dinamik
  • SD kart
  • Məntiq çeviricisi -Bunu istifadə etdim, mp3 pleyer 5V və Arduino 3.3 istifadə edir, bu səbəbdən bu çeviriciyə ehtiyacımız var
  • Özümüz tərəfindən sadə bir PCB etmək üçün bilik və bacarıqlar

Qala:

  • karton - iki fərqli qalınlıq
  • İzləmə kağızı
  • alüminium folqa

Addım 2: Tower Building

Qüllə Binası
Qüllə Binası
Qüllə Binası
Qüllə Binası
Qüllə Binası
Qüllə Binası
Qüllə Binası
Qüllə Binası

Yan görünüşdə qüllənin planının üstündə (texniki rəsmlə macəram ibtidai məktəbdə başa çatdı), bütün ölçülər millimetrdə.

Əməliyyat prinsipi

  1. işıq saçan LED halqaları
  2. İzləmə kağızı
  3. Kartondan hazırlanmış və alüminium folqa ilə örtülmüş kəsilmiş konus, şəkil 3 ‘də kəsilmiş meshdə, üzüklərdən gələn işıqları əks etdirir.
  4. karton boru - qüllələri şaquli tutur, borunun içərisində ledlər üçün kabellər var
  5. Hündürlük məndən asılıdır 85 mm
  6. Bütün elektronik hissələrin içərisində dayaq

Bütün üfüqi elementlər daha qalın kartondan hazırlanmalıdır.

Addım 3: Bağlama Şeması

Kabel diaqramı
Kabel diaqramı
Kabel diaqramı
Kabel diaqramı
Kabel diaqramı
Kabel diaqramı
Kabel diaqramı
Kabel diaqramı

Mp3 pleyer 5V gərginliklə təmin edilir və Arduino ilə TX / RX vasitəsilə əlaqə qurur, Arduino özü 3.3V gərginlikdə işlədiyi üçün məntiq çeviriciyə ehtiyac var. Üzüklərin idarə edilməsi də məntiq çeviricisi vasitəsi ilə Arduino (D5, D6) ilə əlaqələndirilir.

Depoda PCB planları olan qartal faylları tapa bilərsiniz

Arduino və mp3 pleyerin daimi olaraq qızıl sancaqlar istifadə etməsi üçün lehimləməməyi təklif edirəm

Addım 4: Əməliyyat prinsipi

Arduino, WebSockets istifadə edərək app.remoteme.org sisteminə qoşulur (hazır kitabxanalar var), bu əlaqə vasitəsi ilə 5 baytlıq mesajlar göndərilir:

  • yuxarı LED halqası üçün işıq effektinin ilk baytı
  • alt LED halqası üçün ikinci bayt işıq effekti
  • çalınacaq mp3 faylının sayı
  • işıq effekti və mp3 nə qədər çalınacaq saniyə sayı
  • mp3 bir dəfə və ya bir döngədə çalınmalıdır

mənbə kodu

Bütün mənbə kodunu burada tapa bilərsiniz

SingleRing.cpp və SingleRing.h fayllarında LED halqalarının təsirlərini idarə etmək üçün bir sinif var. SetMode (int m) funksiyasına baxaraq başlamağı təklif edirəm:

vahid SingleRing:: setMode (int m) {switch (m) {case 0: setConfiguration (0, 0, 50, 0, 5, 1); break; // off = 0 halda 1: setConfiguration (6, 0, 50, 0, 0, 20); break; // bərk standart yaşıl qutu 2: setConfiguration (6, 0, 0, 50, 0, 20); break; // bərk standart mavi hal 3: setConfiguration (6, 50, 0, 0, 0, 20); break; // bərk standart qırmızı hal 4: setConfiguration (6, 50, 10, 0, 0, 20); break; // bərk standart narıncı hal 5: setConfiguration (1, 0, 100, 0, 5, 2); break; // polis saat yönünde yaşıl qutu 6: setConfiguration (1, 0, 100, 0, 5, -2); break; // polis yaşıl işi 7 -yə qaytarır: setConfiguration (1, 0, 0, 100, 5, 2); break; // polis saat yönünde mavi hal 8: setConfiguration (1, 0, 0, 100, 5, -2); break; // polis mavi iş 9 -u geri qaytardı: setConfiguration (1, 100, 0, 0, 5, 2); break; // polis standart qırmızı hal 10: setConfiguration (1, 100, 0, 0, 5, -2); break; // polis qırmızı işi 11 -ə qaytardı: setConfiguration (1, 100, 20, 0, 5, 2); break; // polis standart narıncı hal 12: setConfiguration (1, 100, 20, 0, 5, -2); break; // polis narıncı hal 13 -ü geri qaytardı: setConfiguration (2, 0, 0, 50, 8, 10); break; // cross blue blue case 14: setConfiguration (2, 0, 0, 50, 8, -10); break; // mavi qaydanın 15 -ə keçməsi: setConfiguration (5, 0, 50, 0, 0, 20); break; // yanıb -sönən standart yaşıl qutu 16: setConfiguration (5, 0, 50, 0, 0, -20); break; // odwyrtka yaşıl rəngli qutu 17: setConfiguration (5, 0, 0, 50, 0, 20); break; // standart mavi qutu 18 yanıb -sönür: setConfiguration (5, 0, 0, 50, 0, -20); fasilə; // mavi işığı geri qaytarmaq 19: setConfiguration (5, 50, 0, 0, 0, 20); break; // standart qırmızı qutu 20 yanıb -sönür: setConfiguration (5, 50, 0, 0, 0, -20); break; // qırmızı yanıb -sönən geri dönmə 21: setConfiguration (5, 50, 10, 0, 0, 20); break; // standart portağal qutusu 22: yanıb sönür setConfiguration (5, 50, 10, 0, 0, -20); break; // blink revert narıncı default: setConfiguration (0, 0, 50, 0, 5, 1); fasilə; // söndürmə = 0}}

verilən parametrdən asılı olaraq üzük effekti göstərəcək. Yeni bir rejim əlavə etməklə və ya tamamilə yeni bir effekt əlavə etməklə yeni parametrlər (rəng dəyişikliyi, ekran sürəti) ilə funksiya setConfiguration -a zəng edərək öz effektinizi əlavə edə bilərsiniz - və ya xoşuma gəlsə şərhlərdə mənə bildirin yeni effekt əlavə edəcəm

arduino.ino:

#"Arduino.h" daxil edin "" SoftwareSerial.h "daxil edin" "DFRobotDFPlayerMini.h" daxil edin

#daxil edin

#include #include #include "SingleRing.h"

#daxil edin

#daxil edin #daxil edin

#daxil edin

#"WIFI_NAME" "təyin edin

#WIFI_ŞİFRİNİ təyin et "" #DEVICE_ID 205 #DEVICE_NAME "sirenini" təyin et #TOKENi təyin et ""

#DIODES_COUNT təyin edin 16

SingleRing top = SingleRing (DIODES_COUNT, D5);

SingleRing alt=SingleRing (DIODES_COUNT, D6);

SoftwareSerial mySoftwareSerial (D4, D3); // RX, TX

DFRobotDFPlayerMini myDFPlayer; RemoteMe & remoteMe = RemoteMe:: getInstance (TOKEN, DEVICE_ID);

ESP8266WiFiMulti WiFiMulti;

boş quraşdırma () {mySoftwareSerial.begin (9600); Serial.begin (115200);

if (! myDFPlayer.begin (mySoftwareSerial)) {// mp3 ilə ünsiyyət qurmaq üçün softwareSerial istifadə edin.

Serial.println (F ("Başlamaq mümkün deyil:")); Serial.println (F ("1. Zəhmət olmasa əlaqəni yenidən yoxlayın!")); Serial.println (F ("2. Zəhmət olmasa SD kartı daxil edin!"))); while (doğru); } Serial.println (F ("DFPlayer Mini online."));

myDFPlayer.setTimeOut (500); // Serial kommunikasiya vaxtını 500 ms olaraq təyin edin

myDFPlayer.volume (30);

myDFPlayer. EQ (DFPLAYER_EQ_NORMAL);

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

remoteMe.setUserMessageListener (onUserMessage);

remoteMe.setupTwoWayCommunication ();

remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);

top.setup ();

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

boolean turnOff = doğru;

işarəsiz uzun turnOffMillis = 0;

etibarsız onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *data) {

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

bottom.setMode (bottomMode);

top.setMode (topMode); əgər (rejim == 1) {myDFPlayer.loop (trackNumber); } başqa {myDFPlayer.play (trackNumber); } turnOff = yalan; turnOffMillis = millis () + 1000 * vaxt; }

boşluq döngəsi ()

{remoteMe.loop (); top.loop (); alt.loop (); əgər (turnOffMillis

}

izahat:

#define WIFI_NAME "" #WIFI_ŞİFRƏSİNİ təyin et "" #DEVICE_ID 205 #DEVINE DEVICE_NAME "bildirişçisini təyin et # #TOKEN təyin et""

Yuxarıdakı məlumatları, ətraflı təlimatları buradakı linkdə təqdim etməliyik, eyni zamanda remoteme.org saytında necə qeydiyyatdan keçəcəyinizi və token yaratmağınızı göstərdim, etibarsız onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *data) {uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t time = RemoteMeMessagesUtils:: getUint8 (data, pos); uint8_t rejimi = RemoteMeMessagesUtils:: getUint8 (data, pos);

bottom.setMode (bottomMode);

top.setMode (topMode); əgər (rejim == 1) {myDFPlayer.loop (trackNumber); } başqa {myDFPlayer.play (trackNumber); } turnOff = yalan; turnOffMillis = millis () + 1000 * vaxt; }

Mesaj Arduinoya gəldikdə və bildirişi göstərəndə bu funksiya çağırılacaq. Kod o qədər aydındır ki, özünü təsvir edir. Buradakı və buradakı sənədlərə dərslərin təfərrüatlarına müraciət edirəm

boşluq döngəsi () {remoteMe.loop (); top.loop (); alt.loop (); if (turnOffMillis <millis ()) {

əgər (! çevrildi) {

top.clear ();

bottom.clear (); myDFPlayer.stop (); turnOff = doğru; }}

Döngüdə, obyektlərin döngə funksiyalarını çağırırıq və bildirişlərin göstərilmə müddəti keçərsə, diodları və səsi söndürürük.

Addım 5: Mp3 Pleyer

Mp3 çalar
Mp3 çalar

Arduino ilə TX / RX vasitəsilə əlaqə qurur - Oyunçunun özünün təfərrüatları və buradakı kitabxana

Mp3 fayllarını SD karta yükləyirik. Kartdakı fayllar əlifba sırası ilə sıralanır və sonra zəng edərək:

myDFPlayer.play (5);

SD kartdan beşinci faylı kök qovluğundan oynayırıq. Buna görə SD kartda 01, 02 və s. Faylları vermək yaxşıdır, mənim vəziyyətim yuxarıdakı çap ekranında olduğu kimi görünür.

Səs əmrləri yaratmaq üçün bu səhifədən istifadə edə bilərsiniz.

Addım 6: Proqramı Arduino -ya yükləyin

Proqram Arduino -ya yüklənir
Proqram Arduino -ya yüklənir
Proqram Arduino -ya yüklənir
Proqram Arduino -ya yüklənir

Arduino -ya eskiz yükləməzdən əvvəl, lazım olan kitabxanaları buradan yükləməlisiniz, burada ətraflı təlimatlar tapa bilərsiniz

əlavə olaraq, DFRobotDFPlayerMini kitabxanasını və Adafruit_NeoPixel qurmalıyıq.

Addım 7: Nəzarət

Nəzarət
Nəzarət
Nəzarət
Nəzarət

Arduino -ya beş bayt göndəririk

  • yuxarı LED halqası üçün işıq effektinin ilk baytı
  • alt LED halqası üçün ikinci bayt işıq effekti
  • çalınacaq mp3 faylının sayı
  • işıq effekti və mp3 nə qədər çalınacaq saniyə sayı
  • mp3 bir dəfə və ya döngədə çalınmalıdır (1 döngədə çalınırsa)

Bayt göndərməklə

07 0F 01 05 01

Üst üzükdə polis işıqları (6 -cı rejim) aşağıda bir yaşıl yanıb -sönən (15 -ci rejim) göstəriləcək (singleRing.cpp -də setMode funksiyasına və yanındakı şərhlərə baxın). SDcard formasından ilk fayl 5 saniyə ərzində çalınacaq. Və fayl döngədə oxunacaq (arduino.inoda onUserMessage funksiyasını yoxlayın)

Gəlin bu baytları göndərək. Yuxarıdakı ekrana baxın və 1, 2, 3 ilə yazılmış nişanları vurun. Pəncərə görünür

Sonra ikinci ekrana baxın və ikinci ekrandakı kimi pəncərəni doldurun

Görünən pəncərə cihaza mesaj göndərmək üçün istifadə olunur. 1 -ci sahədə göndərən cihazı seçin - yalnız bir cihazımız olduğu üçün onu seçirik (bu məcburi bir sahədir və mesaj göndərdiyimiz cihazın eyni olması önəmli deyil) 2 -ci sahədə bayt veririk. göndər (qırmızıda 2 -yə daxil etdiyimiz dəyər simli olaraq göstəriləcək) sonra Göndər düyməsini basın.

Mesajı göndərdikdən sonra xəbərdar edənimiz uyğun işıq effektlərini göstərərək və seçilmiş mp3 səsləndirərək reaksiya verməlidir. 0 ilə 22 arasında bir ədədin ilk iki baytını verərək fərqli effektləri sınamağı məsləhət görürəm (setMode funksiyasındakı təsvirə baxın).

Addım 8: URL -lərdən istifadə edərək mesaj göndərin

URL -lərdən istifadə edərək mesaj göndərmək
URL -lərdən istifadə edərək mesaj göndərmək
URL -lərdən istifadə edərək mesaj göndərmək
URL -lərdən istifadə edərək mesaj göndərmək
URL -lərdən istifadə edərək mesaj göndərmək
URL -lərdən istifadə edərək mesaj göndərmək
URL -lərdən istifadə edərək mesaj göndərmək
URL -lərdən istifadə edərək mesaj göndərmək

IFTTT ilə xarici bir tətbiqdən bildirişlər göstərmək istəyirsinizsə, əvvəlki addımdakı pəncərədə etdiyimiz kimi eyni şeyi edəcək bir URL -ə sahib olmalıyıq. remoteme.org, REST APi təmin edir. Solda (sonuncu) sürüşmə sekmesine tıklayarak gedin. Bir səhifə göstəriləcək, bu səhifədə URL -lərimizi də sınaya bilərik.

İlk ekranda genişləndirmək lazım olan funksiyaya sahibsiniz, sonra ikinci ekrandakı kimi məlumatları doldurun.

yuxarıdakı ekran görüntüsündə olduğu kimi məlumatları doldurun. İcra düyməsini basdıqdan sonra bir mesaj göndərəcəyik

070F010501

Alıcı 205 id olan cihazdır, eyni cihaz da göndəricidir. "No_RENEVAL" parametrləri olan MessageId əlaqəsizdir. Və sonra İcra et düyməsini basın. Tətbiq mesaj göndərərkən eyni şəkildə reaksiya verəcək. Aşağıdakı REST -ə zəng vurduqdan sonra URL - üçüncü ekrana baxın. Və kopyalayın və brauzer URL -sinə yapışdırın yaşıl haşiyə ilə qeyd edildi. Dördüncü ekranda URL yapışdırıldıqdan sonra xrom brauzerim

Mənim vəziyyətimdə, URL:

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

Addım 9: Mesaj Göndərmək üçün Animous URL

Mesaj göndərmək üçün bənzərsiz bir URL
Mesaj göndərmək üçün bənzərsiz bir URL

Əvvəlki addımda cihazınıza məlumat göndərən bir URL var. Təəssüf ki, app.remoteme.org saytından çıxdıqdan sonra işləmir. Bunun səbəbi, doğrulama nişanı vermədiyimiz və artıq daxil olmadığımızdır. Gəlin nişanımızı əldə edək (və ya yenisini yaradaq) və ulduz yerinə URL -ə yapışdıraq.

Ekrana baxın və URL -də * işarənizlə əvəz edin

mənim vəziyyətimdə simvol:

~ 267_ZxoWtJ) 0ph & 2c

buna görə son URL -ə bənzəyir:

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

İndi daxil olmasaq belə zəng edə bilərik. Çağırıldıqda cihazımıza 205 bir mesaj göndəriləcək.

Addım 10: IFTTT 1/7 ilə inteqrasiya

IFTTT 1/7 ilə inteqrasiya
IFTTT 1/7 ilə inteqrasiya

Yuxarıdakı addımda yaradılan URL, xarici tətbiqlər tərəfindən yerinə yetirmək üçün uyğundur. Necə istifadə edəcəyimi IFTTT -də göstərəcəyəm. E -poçt ünvanına bir e -poçt gəldikdə (Gmail hesabı) bildiricinin işə salınması üçün konfiqurasiya edəcəyəm.

IFTTT-ə daxil olun. Sonra Mənim Appletlərim sekmesine, sonra isə "Yeni Applet" ə gedin- ilk ekran

Addım 11: IFTTT 2/7 ilə inteqrasiya

IFTTT 2/7 ilə inteqrasiya
IFTTT 2/7 ilə inteqrasiya

Sonrakı "+bu" düyməsini basın

Addım 12: IFTTT 3/7 ilə inteqrasiya

IFTTT 3/7 ilə inteqrasiya
IFTTT 3/7 ilə inteqrasiya

Sonra "Axtarış xidmətləri" sahəsinə "Gmail" yazın

Sonra "gələn qutusuna yeni e -poçt" (Bəzi konfiqurasiya lazım ola bilər).

Addım 13: IFTTT 4/7 ilə inteqrasiya

IFTTT 4/7 ilə inteqrasiya
IFTTT 4/7 ilə inteqrasiya

İndi "+ o" düyməsini basın

Addım 14: IFTTT 5/7 ilə inteqrasiya

IFTTT 5/7 ilə inteqrasiya
IFTTT 5/7 ilə inteqrasiya

"Webhooks" tapın və üzərinə vurun

Addım 15: IFTTT 6/7 ilə inteqrasiya

IFTTT 6/7 ilə inteqrasiya
IFTTT 6/7 ilə inteqrasiya

sonra "Veb sorğusu göndərin"

Addım 16: IFTTT 7/7 ilə inteqrasiya

IFTTT 7/7 ilə inteqrasiya
IFTTT 7/7 ilə inteqrasiya

url -in URL -ni mö'cüzə ilə tamamlayırıq. Application / json -a məzmun yazın və "hərəkət et" düyməsini basın və Bitirin. İndi appletimiz var:

Addım 17: Xülasə

Bu təlimatda xarici sistemlərdən Arduino mesajlarımızı necə göndərəcəyimizi göstərdim. IFTTT -dən sonra başqa bir sistemi oxşar şəkildə inteqrasiya edirik. Bu nümunədə Arduino sistemimizə xarici sistemlərdən mesajların necə göndəriləcəyini göstərmək istədiyim bir "bildirişçi" olmaq məcburiyyətində deyil.

qaynaq kodlarıFanPage Facebook -da

Sağol Maciek

Tövsiyə: