İçindekiler:
- Adım 1: Gerekenler
- 2. Adım: Kule İnşası
- Adım 3: Kablo Şeması
- Adım 4: Çalışma Prensibi
- Adım 5: Mp3 Çalar
- Adım 6: Programı Arduino'ya Yükleme
- 7. Adım: Kontrol
- 8. Adım: URL'leri Kullanarak Mesaj Gönderme
- 9. Adım: Mesaj Gönderilecek Herhangi Bir URL
- Adım 10: IFTTT 1/7 ile Entegrasyon
- Adım 11: IFTTT 2/7 ile Entegrasyon
- Adım 12: IFTTT 3/7 ile Entegrasyon
- Adım 13: IFTTT 4/7 ile Entegrasyon
- Adım 14: IFTTT 5/7 ile Entegrasyon
- Adım 15: IFTTT 6/7 ile Entegrasyon
- Adım 16: IFTTT 7/7 ile Entegrasyon
- Adım 17: Özet
Video: Bildirici: 17 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Cihaz örneğin IFTTT sistemine bağlanabilir ve yeni bir posta göründüğünde tepki verebilir. app.remoteme.org'da Arduino'ya hangi baytların gönderileceğini aradıktan sonra bir bağlantı oluşturacağız ve Arduino biraz ışık efekti gösterecek ve SDcard'dan biraz mp3 çalacak.
Adım 1: Gerekenler
- NodeMCU, WemOS veya benzeri bir şey
- WS2812B diyotlu iki LED halkası (16. led halkalarını kullandım)
- DFRobotDFPlayerMini – bu mp3 çalar. SDcard'dan mp3 çalar ve RX/TX ile Arduino ile iletişim kurar.
- hoparlör
- Hafıza kartı
- Mantık dönüştürücü -Bunu kullandım, mp3 çalar 5V ve Arduino 3.3 kullanıyor, bu yüzden bu dönüştürücüye ihtiyacımız var
- Kendi kendimize basit PCB yapmak için bilgi ve beceriler
Kule:
- karton – iki farklı kalınlık
- Kopya kâğıdı
- aliminyum folyo
2. Adım: Kule İnşası
Kulenin planının yandan görünüşü (ilkokulda biten teknik çizim maceram), tüm boyutlar milimetre cinsinden.
Çalışma prensibi
- ışık saçan LED'lerin halkası
- Kopya kâğıdı
- Kartondan yapılmış ve alüminyum folyo ile kaplanmış, led halkalardan gelen ışıkları yansıtması için kesik koni, şekil 3' = kesik ağ
- karton boru - kuleleri dikey olarak tutar, borunun içinde ledler için kablolar bulunur
- Boy sana bağlı 85mm
- Tüm elektronik parçaların içindeki Stand
Tüm yatay elemanlar daha kalın kartondan yapılmalıdır.
Adım 3: Kablo Şeması
Mp3 çalar 5V voltaj ile beslenir ve Arduino ile TX/RX üzerinden haberleşir, Arduino'nun kendisi 3.3V voltajda çalıştığı için bir mantık dönüştürücüye ihtiyaç vardır. Halkaların kontrolü de mantık dönüştürücü aracılığıyla Arduino'ya (D5, D6) bağlıdır.
Depoda, PCB planlı kartal dosyalarını bulacaksınız.
Arduino ve mp3 çaları sadece dişi altın pinleri kullanmak için kalıcı olarak lehimlememenizi öneririm.
Adım 4: Çalışma Prensibi
Arduino'muz WebSockets kullanarak app.remoteme.org sistemine bağlanır (hazır kütüphaneler vardır) bu bağlantı üzerinden 5 baytlık mesajlar gönderilir:
- üst LED halkası için ışık efektinin ilk baytı
- alt LED halkası için ikinci bayt ışık efekti
- çalınacak mp3 dosyasının numarası
- ışık efektinin ve mp3'ün ne kadar süreyle oynatılacağı saniye sayısı
- mp3'ün bir kez mi yoksa bir döngü içinde mi çalınması gerektiği
kaynak kodu
Tüm kaynak kodu burada bulabilirsiniz
SingleRing.cpp ve SingleRing.h dosyalarında LED halkalarının etkilerini kontrol eden bir sınıf vardır. setMode(int m) işlevine bakarak başlamanızı öneririm:
void SingleRing::setMode(int m) { switch (m) { case 0:setConfiguration(0, 0, 50, 0, 5, 1); break;//off =0 durum 1:setConfiguration(6, 0, 50, 0, 0, 20); break;//solid standart yeşil durum 2:setConfiguration(6, 0, 0, 50, 0, 20); break;//sürekli standart mavi durum 3:setConfiguration(6, 50, 0, 0, 0, 20); break;//katı standart kırmızı büyük harf 4:setConfiguration(6, 50, 10, 0, 0, 20); break;//katı standart turuncu kasa 5:setConfiguration(1, 0, 100, 0, 5, 2); break;//polis saat yönünde yeşil durumda 6:setConfiguration(1, 0, 100, 0, 5, -2); break;// polis yeşil vakayı geri döndür 7:setConfiguration(1, 0, 0, 100, 5, 2); break;//polis saat yönünde mavi durum 8:setConfiguration(1, 0, 0, 100, 5, -2); break;// polis mavi vakayı geri döndür 9:setConfiguration(1, 100, 0, 0, 5, 2); break;//polis standardı kırmızı durum 10:setConfiguration(1, 100, 0, 0, 5, -2); break;// polis kırmızı vakayı geri aldı 11:setConfiguration(1, 100, 20, 0, 5, 2); break;//polis standart turuncu vaka 12:setConfiguration(1, 100, 20, 0, 5, -2); break;// polis turuncu vakayı geri aldı 13:setConfiguration(2, 0, 0, 50, 8, 10); break;//çapraz standart mavi durum 14:setConfiguration(2, 0, 0, 50, 8, -10); break;// çapraz dönüş mavi durum 15:setConfiguration(5, 0, 50, 0, 0, 20); break;//yanıp sönen standart yeşil durum 16:setConfiguration(5, 0, 50, 0, 0, -20); break;// yanıp sönen odwyrtka yeşil durum 17:setConfiguration(5, 0, 0, 50, 0, 20); break;//standart mavi durum 18:setConfiguration(5, 0, 0, 50, 0, -20); break;// mavi yanıp sönme durumu geri al 19:setConfiguration(5, 50, 0, 0, 0, 20); break;//yanıp sönen standart kırmızı durum 20:setConfiguration(5, 50, 0, 0, 0, -20); break;// yanıp sönme kırmızı durum 21:setConfiguration(5, 50, 10, 0, 0, 20); break;//standart turuncu durum 22:setConfiguration(5, 50, 10, 0, 0, -20); break;// yanıp sönme turuncuya dön varsayılan: setConfiguration(0, 0, 50, 0, 5, 1); ara;//kapalı =0 } }
verilen parametreye bağlı olarak, halka efekti gösterecektir. Yeni bir mod ekleyerek veya tamamen yeni bir efekt ekleyerek setConfiguration işlevini yeni parametrelerle (renk değişikliği, görüntü hızı) çağırarak kendi efektinizi ekleyebilirsiniz - veya beğenirsem yorumlarda bana bildirin yeni efekt ekleyeceğim
arduino.ino:
#include "Arduino.h"#include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h"
#Dahil etmek
#include #include #include "SingleRing.h"
#Dahil etmek
#include #include
#Dahil etmek
#define WIFI_NAME ""
#define WIFI_PASSWORD "" #DEVICE_ID 205 #define DEVICE_NAME "siren" #define TOKEN ""
#define DIODES_COUNT 16
SingleRing üst = 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);
ESP8266WiFiÇoklu WiFiÇoklu;
geçersiz kurulum() { mySoftwareSerial.begin(9600); Seri.başla(115200);
if (!myDFPlayer.begin(mySoftwareSerial)) { //mp3 ile iletişim kurmak için softwareSerial kullanın.
Serial.println(F("Başlanamıyor:")); Serial.println(F("1. Lütfen bağlantıyı tekrar kontrol edin!")); Serial.println(F("2. Lütfen SD kartı takın!")); while (doğru); } Serial.println(F("DFPlayer Mini çevrimiçi."));
myDFPlayer.setTimeOut(500); //Seri iletişim zaman aşımını 500ms ayarla
myDFPlayer.volume(30);
myDFPlayer. EQ(DFPLAYER_EQ_NORMAL);
myDFPlayer.outputDevice(DFPLAYER_DEVICE_SD); WiFiMulti.addAP(WIFI_NAME, WIFI_PASSWORD); while (WiFiMulti.run() != WL_CONNECTED) { gecikme(100); }
remoteMe.setUserMessageListener(onUserMessage);
remoteMe.setupTwoWayCommunication();
remoteMe.sendRegisterDeviceMessage(DEVICE_NAME);
top.setup();
alt.setup(); top.clear(); alt.clear(); }
boole açıkKapalı = doğru;
imzasız uzun turnOffMillis = 0;
void onUserMessage(uint16_t senderDeviceId, uint16_t dataSize, uint8_t *veri) {
uint16_t konum = 0; uint8_t bottomMode = RemoteMeMessagesUtils::getUint8(veri, konum); uint8_t topMode = RemoteMeMessagesUtils::getUint8(veri, konum); uint8_t trackNumber = RemoteMeMessagesUtils::getUint8(veri, konum); uint8_t zaman = RemoteMeMessagesUtils::getUint8(veri, konum); uint8_t modu = RemoteMeMessagesUtils::getUint8(veri, konum);
alt.setMode(bottomMode);
top.setMode(topMode); if (mod == 1) { myDFPlayer.loop(trackNumber); } else { myDFPlayer.play(trackNumber); } kapatıldı = yanlış; turnOffMillis = millis() + 1000 * zaman; }
boşluk döngüsü()
{ remoteMe.loop(); top.loop(); alt.döngü(); if (turnOffMillis
}
açıklama:
#define WIFI_NAME ""#define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "bildirici" #define TOKEN ""
Yukarıdaki verileri sağlamamız gerekiyor, buradaki bağlantıda ayrıntılı talimatlar ayrıca remoteme.org'a nasıl kayıt olunacağını ve belirtecin nasıl oluşturulacağını da gösterdim, void onUserMessage(uint16_t senderDeviceId, uint16_t dataSize, uint8_t *veri) { uint16_t konum = 0; uint8_t bottomMode = RemoteMeMessagesUtils::getUint8(veri, konum); uint8_t topMode = RemoteMeMessagesUtils::getUint8(veri, konum); uint8_t trackNumber = RemoteMeMessagesUtils::getUint8(veri, konum); uint8_t zaman = RemoteMeMessagesUtils::getUint8(veri, konum); uint8_t modu = RemoteMeMessagesUtils::getUint8(veri, konum);
alt.setMode(bottomMode);
top.setMode(topMode); if (mod == 1) { myDFPlayer.loop(trackNumber); } else { myDFPlayer.play(trackNumber); } kapatıldı = yanlış; turnOffMillis = millis() + 1000 * zaman; }
Arduino'ya mesaj geldiğinde ve bildirimi görüntülediğinde bu fonksiyon çağrılır. Kod o kadar açık ki kendini anlatıyor. Sınıfların ayrıntılarını buradaki ve buradaki belgelere atıfta bulunuyorum
void loop(){ remoteMe.loop(); top.loop(); alt.döngü(); if (turnOffMillis<millis()){
if (!kapalı) {
top.clear();
alt.clear(); myDFPlayer.stop(); kapatıldı = doğru; } }
Döngüde nesnelerin döngü işlevlerini çağırıyoruz ve ayrıca bildirimlerin görüntülenme süresi geçtiyse diyotları ve sesi kapatıyoruz.
Adım 5: Mp3 Çalar
Arduino ile TX / RX üzerinden iletişim kurar - Oyuncunun detayları burada ve kütüphane burada
SD karta mp3 dosyaları yüklüyoruz. Karttaki dosyalar alfabetik olarak sıralanır ve ardından şu numara aranır:
myDFPlayer.play(5);
SD karttaki beşinci dosyayı kök dizinden oynatıyoruz. Bu yüzden SD kart önekleri 01, 02 vs.'de dosya vermek iyidir. Benim durumumda yukarıdaki baskı ekranındaki gibi görünüyor.
Sesli komutlar oluşturmak için bu sayfayı kullanabilirsiniz.
Adım 6: Programı Arduino'ya Yükleme
Arduino'ya taslak yüklemeden önce, gerekli kütüphaneleri indirmeniz gerekiyor, burada ayrıntılı talimatları bulacaksınız.
ayrıca DFRobotDFPlayerMini kütüphanesini ve Adafruit_NeoPixel'i kurmamız gerekiyor.
7. Adım: Kontrol
Arduino'muza beş bayt gönderiyoruz
- üst LED halkası için ışık efektinin ilk baytı
- alt LED halkası için ikinci bayt ışık efekti
- çalınacak mp3 dosyasının numarası
- ışık efektinin ve mp3'ün ne kadar süre oynatılacağı saniye sayısı
- mp3'ün bir kez mi yoksa bir döngüde mi çalınması gerektiği (bir döngüde çalınması gerekiyorsa 1)
bayt göndererek
07 0F 01 05 01
Üst halka polis ışıklarını gösterecektir (mod 6) altta bir yeşil yanıp sönme (mod 15) (singleRing.cpp adresindeki setMode işlevini ve yanındaki yorumları kontrol edin). SD karttan ilk dosya 5 saniye boyunca oynatılacaktır. Ve dosya döngüde oynatılacaktır (arduino.ino'da onUserMessage işlevini kontrol edin)
Bu baytları gönderelim. Yukarıdaki ekrana bakın ve 1, 2, 3 ile yazılan sırayla simgeleri tıklayın. Pencere belirir.
Ardından ikinci ekrana bakın - ve pencereyi ikinci ekrandaki gibi doldurun
Görüntülenen pencere cihaza mesaj göndermek için kullanılır. Alan 1'de gönderen cihazı seçin – sadece bir cihazımız olduğu için onu seçiyoruz (bu zorunlu bir alandır ve mesaj gönderdiğimiz cihazla aynı olması önemli değil) Alan 2'de bayt veriyoruz gönder (kırmızı ile 2'ye girdiğimiz değer bir dize olarak gösterilecektir) ardından Gönder düğmesine tıklayın.
Mesajı gönderdikten sonra, bildirimcimiz uygun ışık efektlerini görüntüleyerek ve seçilen mp3'ü çalarak tepki vermelidir. 0 ile 22 arasında bir sayının ilk iki baytını vererek farklı efektler denemenizi tavsiye ederim (setMode işlevindeki açıklamaya bakın).
8. Adım: URL'leri Kullanarak Mesaj Gönderme
IFTTT gibi harici bir uygulamadan gelen bildirimleri görüntülemek istiyorsak, önceki adımda pencerede yaptığımızın tam olarak aynısını yapacak bir URL'ye ihtiyacımız var. remoteme.org, REST APi'yi sağlar. Soldaki (sonuncusu) swagger sekmesine tıklayarak ona gidin. Bir sayfa görüntülenecek, bu sayfada URL'lerimizi de deneyebiliriz.
İlk ekranda, ikinci ekrandaki gibi genişletmeniz, ardından verileri doldurmanız gereken fonksiyona sahipsiniz.
verileri yukarıdaki ekran görüntüsündeki gibi doldurun. Yürüt'ü tıkladıktan sonra bir mesaj göndereceğiz
070F010501
Alıcı 205 id'li cihazdır, aynı cihaz aynı zamanda göndericidir. “No_RENEVAL” ayarlarına sahip MessageId önemsizdir. Ardından Execute'a tıklayın. Notificator, uygulamadan mesaj gönderirken olduğu gibi tepki verecektir. Aşağıdaki REST'i çağırdıktan sonra, çağrılan URL'dir - üçüncü ekrana bakın. Ve tarayıcı URL'sine kopyalayıp yapıştırın yeşil kenarlıkla işaretlenmiştir. Dördüncü ekranda, URL yapıştırıldıktan sonra krom tarayıcım
Benim durumumda, URL:
app.remoteme.org/api/*/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/
9. Adım: Mesaj Gönderilecek Herhangi Bir URL
Önceki adımda, cihazınıza veri gönderen bir URL'niz var. Ne yazık ki, app.remoteme.org'dan çıkış yaptıktan sonra çalışmayı durduruyor. Bunun nedeni, kimlik doğrulama jetonunu sağlamamış olmamız ve artık oturum açmış olmamamızdır. Jetonumuzu alalım (veya yeni bir tane oluşturalım) ve bunu yıldız yerine URL'ye yapıştıralım.
Ekrana bakın ve URL'deki * kodunu jetonunuzla değiştirin
benim durumumda belirteç:
~267_ZxoWtJ)0ph&2c
bu yüzden nihai URL'm şöyle görünüyor:
app.remoteme.org/api/~267_ZxoWtJ)0ph&2c/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/
Artık giriş yapmasak bile arayabiliriz. Ve arandığında cihazımıza mesaj gelecek 205
Adım 10: IFTTT 1/7 ile Entegrasyon
Yukarıdaki adımda oluşturulan URL, harici uygulamalar tarafından yürütülmeye uygundur. Nasıl kullanılacağını IFTTT'de göstereceğim. Bunu, e-posta adresine (Gmail hesabı) bir e-posta geldiğinde bildirimin açılması için yapılandıracağım.
IFTTT'de oturum açın. Ardından Uygulamalarım sekmesine gidin ve ardından “Yeni Uygulama” - ilk ekran
Adım 11: IFTTT 2/7 ile Entegrasyon
Sonraki “+bu”yu tıklayın
Adım 12: IFTTT 3/7 ile Entegrasyon
Ardından “Arama hizmetleri” alanına “Gmail” yazın.
Ardından "gelen kutusunda yeni e-posta" (Bazı yapılandırma gerekebilir).
Adım 13: IFTTT 4/7 ile Entegrasyon
şimdi “+ buna” tıklıyoruz
Adım 14: IFTTT 5/7 ile Entegrasyon
“Web kancaları”nı bulun ve tıklayın
Adım 15: IFTTT 6/7 ile Entegrasyon
ardından “Bir web isteği yapın”
Adım 16: IFTTT 7/7 ile Entegrasyon
url'mizin URL'sini belirteçle tamamlıyoruz. Uygulama / json'a içerik yazın ve “eylem oluştur” ve Bitir'e tıklayın. Şimdi uygulamamız var:
Adım 17: Özet
Bu derste Arduino mesajlarımıza harici sistemlerden nasıl gönderileceğini gösterdim. IFTTT'den sonra başka bir sistemi de benzer şekilde entegre ediyoruz. Bu örnekte Arduino'muza dış sistemlerden nasıl mesaj gönderileceğini göstermek istediğim bir “bildirici” olmak zorunda değil.
Facebook'ta kaynak kodlarıFanPage
Şerefe, Maciek
Önerilen:
Akıllı Motosiklet HUD Prototipi (adım adım Navigasyon ve Çok Daha Fazlası): 9 Adım
Akıllı Motosiklet HUD Prototipi (adım adım Navigasyon ve Çok Daha Fazlası): Merhaba !Bu Talimatlar, motosiklet kasklarına monte edilmek üzere tasarlanmış bir HUD (Heads-Up Display) platformunu nasıl tasarladığımın ve inşa ettiğimin hikayesidir. "Haritalar" yarışması bağlamında yazılmıştır. Maalesef tamamen bitiremedim
Arduino Araba Geri Geri Park Uyarı Sistemi - Adım Adım: 4 Adım
Arduino Araba Geri Geri Park Uyarı Sistemi | Adım Adım: Bu projede Arduino UNO ve HC-SR04 Ultrasonik Sensör kullanarak basit bir Arduino Araba Geri Park Sensörü Devresi tasarlayacağım. Bu Arduino tabanlı Araba Ters uyarı sistemi, Otonom Navigasyon, Robot Mesafesi ve diğer menzil r
Adım Adım PC Oluşturma: 9 Adım
Adım Adım Bilgisayar Oluşturma: Sarf Malzemeleri: Donanım: AnakartCPU & CPU soğutucusuPSU (Güç kaynağı ünitesi)Depolama (HDD/SSD)RAMGPU (gerekli değil)CaseTools: TornavidaESD bilezik/aplikatörlü matstermal macun
Adım Adım Arduino Uno ile Akustik Kaldırma (8 adım): 8 Adım
Arduino Uno ile Akustik Kaldırma Adım Adım (8 adım): ultrasonik ses dönüştürücüler L298N erkek dc pinli Dc dişi adaptör güç kaynağı Arduino UNOBreadboardBu nasıl çalışır: İlk olarak, Arduino Uno'ya kod yüklersiniz (dijital ile donatılmış bir mikrodenetleyicidir) ve kodu dönüştürmek için analog bağlantı noktaları (C++)
Arduino + GPS Modülü - Hedef Bildirici: 6 Adım
Arduino + GPS Modülü - Destination Notifier: Trafik sıkışıklığında ne kadar zaman harcıyoruz? Bu zamanı verimli bir şekilde kullanmak için Arduino destekli bir hedef bildirici yaptım. Trafik sıkışıklığının büyük bir zaman kaybı olabileceğini herkes biliyor. Ve ne kadar süreceğini tahmin etmek imkansız