Isi kandungan:
- Langkah 1: Apa Yang Diperlukan
- Langkah 2: Bangunan Menara
- Langkah 3: Diagram Pendawaian
- Langkah 4: Prinsip Operasi
- Langkah 5: Pemain Mp3
- Langkah 6: Memuat naik Program ke Arduino
- Langkah 7: Kawal
- Langkah 8: Menghantar Mesej Menggunakan URL
- Langkah 9: URL Beranak untuk Menghantar Mesej
- Langkah 10: Integrasi Dengan IFTTT 1/7
- Langkah 11: Integrasi Dengan IFTTT 2/7
- Langkah 12: Integrasi Dengan IFTTT 3/7
- Langkah 13: Integrasi Dengan IFTTT 4/7
- Langkah 14: Integrasi Dengan IFTTT 5/7
- Langkah 15: Integrasi Dengan IFTTT 6/7
- Langkah 16: Integrasi Dengan IFTTT 7/7
- Langkah 17: Ringkasan
Video: Pemberitahuan: 17 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
Peranti boleh dihubungkan misalnya ke sistem IFTTT dan bertindak balas apabila surat baru muncul. Di app.remoteme.org kami akan menghasilkan pautan setelah memanggil bait mana yang akan dikirim ke Arduino, dan Arduino akan memaparkan beberapa kesan cahaya dan memainkan beberapa mp3 dari SDcard
Langkah 1: Apa Yang Diperlukan
- NodeMCU, WemOS atau yang serupa
- Dua cincin LED dengan dioda WS2812B (saya telah menggunakan cincin led 16)
- DFRobotDFPlayerMini - ini adalah pemain mp3. Ia memainkan mp3 dari SDcard, dan berkomunikasi dengan Arduino oleh RX / TX
- Penceramah
- Kad SD
- Logic converter -Saya telah menggunakan ini, pemain mp3 menggunakan 5V dan Arduino 3.3 sebab itulah kami memerlukan penukar ini
- Pengetahuan dan kemahiran untuk membuat PCB sederhana oleh diri kita sendiri
Menara:
- kadbod - dua ketebalan yang berbeza
- Kertas tekap
- kertas aluminium
Langkah 2: Bangunan Menara
Di atas rancangan menara dalam pandangan sisi (pengembaraan saya dengan lukisan teknikal berakhir di sekolah rendah), semua dimensi dalam milimeter.
Prinsip operasi
- cincin LED menyala
- Kertas tekap
- Kerucut terpotong, terbuat dari kadbod dan ditutup dengan aluminium foil, sehingga memantulkan cahaya dari cincin yang dipimpin, dalam gambar 3 '= mesh yang dipotong
- tiub kadbod - menahan menara secara menegak, di dalam tiub terdapat kabel untuk led
- Ketinggian bergantung kepada anda, saya mempunyai 85mm
- Tempat di dalam semua bahagian elektronik
Semua elemen mendatar hendaklah diperbuat daripada kadbod yang lebih tebal.
Langkah 3: Diagram Pendawaian
Pemain mp3 dibekalkan dengan voltan 5V dan berkomunikasi dengan Arduino melalui TX / RX, penukar logik diperlukan kerana Arduino itu sendiri berfungsi pada voltan 3.3V. Kawalan cincin juga disambungkan ke Arduino (D5, D6) melalui penukar logik.
Di repositori, anda akan menemui fail helang dengan rancangan PCB
Saya mencadangkan agar tidak menyolder Arduino dan pemain mp3 secara kekal hanya menggunakan pin emas wanita
Langkah 4: Prinsip Operasi
Arduino kami menghubungkan ke sistem app.remoteme.org menggunakan WebSockets (ada perpustakaan siap) melalui sambungan ini 5-byte mesej dihantar:
- bait pertama kesan cahaya untuk cincin LED atas
- kesan cahaya bait kedua untuk cincin LED bawah
- bilangan fail mp3 yang akan dimainkan
- bilangan saat berapa lama kesan cahaya dan mp3 akan dimainkan
- sama ada mp3 harus dimainkan sekali atau dalam satu gelung
kod sumber
Kod sumber keseluruhan Anda boleh dapatkan di sini
dalam fail SingleRing.cpp dan SingleRing.h terdapat kelas untuk mengawal kesan cincin LED. Saya cadangkan anda memulakan dengan melihat fungsi setMode (int m):
batal SingleRing:: setMode (int m) {switch (m) {case 0: setConfiguration (0, 0, 50, 0, 5, 1); break; // off = 0 case 1: setConfiguration (6, 0, 50, 0, 0, 20); rehat; // kes hijau standard pepejal 2: setConfiguration (6, 0, 0, 50, 0, 20); rehat; // kes biru standard padat 3: setConfiguration (6, 50, 0, 0, 0, 20); pecah; // kes merah standard padat 4: setConfiguration (6, 50, 10, 0, 0, 20); rehat; // kes oren standard padat 5: setConfiguration (1, 0, 100, 0, 5, 2); pecah; // kes hijau polis mengikut arah jam 6: setConfiguration (1, 0, 100, 0, 5, -2); rehat; // polis mengembalikan kes hijau 7: setConfiguration (1, 0, 0, 100, 5, 2); rehat; // kes biru polis mengikut arah jam 8: setConfiguration (1, 0, 0, 100, 5, -2); rehat; // polis mengembalikan kes biru 9: setConfiguration (1, 100, 0, 0, 5, 2); pecah; // kes merah standard polis 10: setConfiguration (1, 100, 0, 0, 5, -2); pecah; // polis mengembalikan kes merah 11: setConfiguration (1, 100, 20, 0, 5, 2); rehat; // kes oren standard polis 12: setConfiguration (1, 100, 20, 0, 5, -2); rehat; // polis mengembalikan kes oren 13: setConfiguration (2, 0, 0, 50, 8, 10); rehat; // kes biru standard silang 14: setConfiguration (2, 0, 0, 50, 8, -10); rehat; // kes biru silang balik 15: setConfiguration (5, 0, 50, 0, 0, 20); break; // sekejap hijau standard 16: setConfiguration (5, 0, 50, 0, 0, -20); rehat; // blink odwyrtka green case 17: setConfiguration (5, 0, 0, 50, 0, 20); break; // kes biru standard berkelip 18: setConfiguration (5, 0, 0, 50, 0, -20); rehat; // kes biru balik mata berkedip 19: setConfiguration (5, 50, 0, 0, 0, 20); break; // sekejap merah standard 20: setConfiguration (5, 50, 0, 0, 0, -20); pecah; // sekelip mata balik merah 21: setConfiguration (5, 50, 10, 0, 0, 20); rehat; // sekelip mata oren standard 22: setConfiguration (5, 50, 10, 0, 0, -20); rehat; // berkelip mengembalikan warna jingga lalai: setConfiguration (0, 0, 50, 0, 5, 1); rehat; // mati = 0}}
bergantung pada parameter yang diberikan, cincin akan menunjukkan kesannya. Anda boleh menambahkan kesan anda sendiri dengan memanggil set fungsi Konfigurasi dengan parameter baru (perubahan warna, kelajuan paparan) dengan menambahkan mod baru, atau menambahkan kesan yang sama sekali baru - atau beritahu saya dalam komen jika saya suka, saya akan menambah kesan baru
arduino.ino:
#include "Arduino.h" #include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h"
#sertakan
#include #include #include "SingleRing.h"
#sertakan
#sertakan #sertakan
#sertakan
#tentukan WIFI_NAME ""
#define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "siren" #define TOKEN ""
#tentukan DIODES_COUNT 16
SingleRing atas = SingleRing (DIODES_COUNT, D5);
SingleRing bawah = SingleRing (DIODES_COUNT, D6);
PerisianSerial mySoftwareSerial (D4, D3); // RX, TX
DFRobotDFPlayerMini myDFPlayer; RemoteMe & remoteMe = RemoteMe:: getInstance (TOKEN, DEVICE_ID);
ESP8266WiFiMulti WiFiMulti;
batal persediaan () {mySoftwareSerial.begin (9600); Serial.begin (115200);
if (! myDFPlayer.begin (mySoftwareSerial)) {// Gunakan softwareSerial untuk berkomunikasi dengan mp3.
Serial.println (F ("Tidak dapat bermula:")); Serial.println (F ("1. Sila semak semula sambungan!")); Serial.println (F ("2. Sila masukkan kad SD!")); sementara (benar); } Serial.println (F ("DFPlayer Mini dalam talian."));
myDFPlayer.setTimeOut (500); // Tetapkan masa komunikasi bersiri 500ms
myDFPlayer.volume (30);
myDFPlayer. EQ (DFPLAYER_EQ_NORMAL);
myDFPlayer.outputDevice (DFPLAYER_DEVICE_SD); WiFiMulti.addAP (WIFI_NAME, WIFI_PASSWORD); sementara (WiFiMulti.run ()! = WL_CONNECTED) {kelewatan (100); }
remoteMe.setUserMessageListener (onUserMessage);
remoteMe.setupTwoWayCommunication ();
remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);
top.setup ();
bottom.setup (); atas.kelas (); bottom.clear (); }
boolean TurnOff = benar;
turnOffMillis panjang yang tidak ditandatangani = 0;
batal 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); mod uint8_t = RemoteMeMessagesUtils:: getUint8 (data, pos);
bottom.setMode (bottomMode);
top.setMode (topMode); jika (mod == 1) {myDFPlayer.loop (trackNumber); } lain {myDFPlayer.play (trackNumber); } TurnOff = palsu; turnOffMillis = milis () + 1000 * masa; }
gelung kosong ()
{remoteMe.loop (); top.loop (); bawah.loop (); jika (turnOffMillis
}
penjelasan:
#define WIFI_NAME "" #define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "pemberitahuan" #define TOKEN ""
Kita perlu memberikan data di atas, arahan terperinci di sini di pautan juga saya telah menunjukkan cara mendaftar di remoteme.org dan menghasilkan token, batal 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); mod uint8_t = RemoteMeMessagesUtils:: getUint8 (data, pos);
bottom.setMode (bottomMode);
top.setMode (topMode); jika (mod == 1) {myDFPlayer.loop (trackNumber); } lain {myDFPlayer.play (trackNumber); } TurnOff = palsu; turnOffMillis = milis () + 1000 * masa; }
Fungsi ini akan dipanggil ketika pesan sampai ke Arduino dan memaparkan pemberitahuan. Kodnya begitu jelas sehingga menerangkan dirinya sendiri. Saya merujuk kepada perincian kelas untuk dokumentasi di sini dan di sini
gelung kosong () {remoteMe.loop (); top.loop (); bawah.loop (); jika (turnOffMillis <millis ()) {
jika (! TurnOff) {
atas.kelas ();
bottom.clear (); myDFPlayer.stop (); TurnOff = benar; }}
Dalam gelung, kita memanggil fungsi gelung objek, dan juga jika waktu paparan pemberitahuan telah berlalu, kita mematikan dioda dan suara.
Langkah 5: Pemain Mp3
Ia berkomunikasi dengan Arduino melalui TX / RX - Perincian pemain itu sendiri di sini, dan perpustakaan di sini
Kami memuat naik fail mp3 ke kad SD. Fail pada kad disusun mengikut abjad dan kemudian dengan memanggil:
myDFPlayer.play (5);
Kami memainkan fail kelima dari kad SD dari direktori root. Itulah sebabnya bagus untuk memberikan fail pada awalan kad SD 01, 02 dan lain-lain. Dalam kes saya, ia kelihatan seperti pada skrin cetak di atas
Untuk menghasilkan arahan suara Anda boleh menggunakan halaman ini.
Langkah 6: Memuat naik Program ke Arduino
Sebelum memuat naik lakaran ke Arduino, Anda harus memuat turun perpustakaan yang diperlukan di sini, anda akan menemui petunjuk terperinci
Selain itu, kita perlu memasang perpustakaan DFRobotDFPlayerMini dan Adafruit_NeoPixel
Langkah 7: Kawal
Kami menghantar ke Arduino kami lima bait
- bait pertama kesan cahaya untuk cincin LED atas
- kesan cahaya bait kedua untuk cincin LED bawah
- bilangan fail mp3 yang akan dimainkan
- bilangan saat berapa lama kesan cahaya dan mp3 akan dimainkan
- sama ada mp3 harus dimainkan sekali atau dalam satu gelung (1 jika harus dimainkan dalam satu gelung)
Dengan menghantar bait
07 0F 01 05 01
Cincin atas akan menunjukkan lampu polis (mod 6) bawah satu berkedip hijau (mod 15) (lihat fungsi setMode di singleRing.cpp dan komen di sebelahnya). Fail pertama dari kad SD akan dimainkan selama 5 saat. Dan fail akan dimainkan dalam gelung (periksa fungsi onUserMessage di arduino.ino)
Mari hantar bait ini. Lihat pada skrin di atas, dan klik ikon mengikut tertulis oleh 1, 2, 3. Tetingkap muncul
Kemudian lihat pada skrin kedua - dan isi tetingkap seperti pada skrin kedua
Tingkap yang muncul digunakan untuk mengirim mesej ke peranti. Di medan 1, pilih peranti pengirim - kerana kami hanya mempunyai satu peranti, kami memilihnya (ini adalah medan wajib dan tidak masalah ia adalah peranti yang sama dengan yang kami kirimkan pesan) Di medan 2, kami memberikan bait kepada kirim (dengan warna merah nilai yang kami masukkan dalam 2 akan ditunjukkan sebagai rentetan) kemudian klik butang Kirim.
Setelah menghantar mesej, pemberitahuan kami harus bertindak balas dengan menampilkan kesan pencahayaan yang sesuai dan memainkan mp3 yang dipilih. Saya mendorong anda untuk mencuba kesan yang berbeza dengan memberikan dua bait pertama nombor antara 0 dan 22 (lihat keterangan dalam fungsi setMode).
Langkah 8: Menghantar Mesej Menggunakan URL
Sekiranya kita ingin memaparkan pemberitahuan dari aplikasi luaran misalnya dengan IFTTT, kita perlu memiliki URL yang akan melakukan perkara yang sama seperti yang kita lakukan di jendela pada langkah sebelumnya. remoteme.org menyediakan REST APi. Pergi ke sana dengan mengklik pada tab swagger di sebelah kiri (yang terakhir). Halaman akan dipaparkan, di halaman ini kita juga dapat mencuba URL kita.
Pada layar pertama Anda mempunyai fungsi Anda perlu mengembangkan, kemudian isi data seperti pada layar kedua.
isikan data seperti pada tangkapan skrin di atas. Setelah mengklik eksekusi, kami akan menghantar mesej
070F010501
Penerima adalah peranti dengan 205 id, peranti yang sama juga pengirim. MessageId dengan tetapan "No_RENEVAL" tidak relevan. Dan kemudian klik Execute. Notificator akan bertindak balas dengan cara yang sama seperti ketika menghantar mesej dari aplikasi. Setelah memanggil REST di bawah ini adalah URL yang dipanggil - lihat pada skrin ketiga. Dan salin dan tampal ke URL penyemak imbas ditandai dengan sempadan hijau. Pada skrin keempat penyemak imbas krom saya setelah URL ditampal
Bagi saya, URL adalah:
app.remoteme.org/api/*/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/
Langkah 9: URL Beranak untuk Menghantar Mesej
Pada langkah sebelumnya Anda mempunyai URL yang mengirimkan data ke peranti anda. Malangnya, setelah log keluar dari app.remoteme.org, ia berhenti berfungsi. Ini kerana kami tidak memberikan token pengesahan, dan kami tidak lagi log masuk. Mari dapatkan token kami (atau buat yang baru) dan tampalkannya ke URL dan bukannya bintang.
Lihat skrin dan ganti * di URL dengan token anda
dalam token kes saya adalah:
~ 267_ZxoWtJ) 0ph & 2c
jadi URL akhir saya kelihatan seperti:
app.remoteme.org/api/~267_ZxoWtJ)0ph&2c/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/
Sekarang kita boleh memanggilnya walaupun kita tidak log masuk. Dan apabila dipanggil, mesej akan dihantar ke peranti kita 205
Langkah 10: Integrasi Dengan IFTTT 1/7
Url yang dibuat pada langkah di atas sesuai untuk dilaksanakan oleh aplikasi luaran. Cara menggunakannya saya akan tunjukkan di IFTTT. Saya akan mengkonfigurasinya supaya pemberitahuan menyala apabila e-mel masuk ke alamat e-mel (akaun Gmail).
Log masuk ke IFTTT. Kemudian pergi ke tab My Applets dan kemudian "Applet Baru" - skrin pertama
Langkah 11: Integrasi Dengan IFTTT 2/7
Klik seterusnya "+ ini"
Langkah 12: Integrasi Dengan IFTTT 3/7
Kemudian di bidang "Perkhidmatan carian" tulis "Gmail"
Kemudian "e-mel baru dalam peti masuk" (Beberapa konfigurasi mungkin diperlukan).
Langkah 13: Integrasi Dengan IFTTT 4/7
sekarang kita klik pada "+ itu"
Langkah 14: Integrasi Dengan IFTTT 5/7
cari "Webhooks" dan klik
Langkah 15: Integrasi Dengan IFTTT 6/7
kemudian "Buat permintaan web"
Langkah 16: Integrasi Dengan IFTTT 7/7
kami melengkapkan URL url kami dengan token. Jenis kandungan ke aplikasi / json dan klik "buat tindakan" dan Selesai. Sekarang kami mempunyai applet kami:
Langkah 17: Ringkasan
Dalam tutorial ini, saya menunjukkan cara menghantar ke mesej Arduino kami dari sistem luaran. Kami juga mengintegrasikan beberapa sistem lain kemudian IFTTT dengan cara yang serupa. Tidak semestinya menjadi "pemberi maklumat" yang ingin saya tunjukkan dalam contoh ini bagaimana cara menghantar mesej dari sistem luar ke Arduino kami.
sourcecodesFanPage di Facebook
Ceria, Maciek
Disyorkan:
Menerima E-mel Pemberitahuan Apabila Saluran di ThingSpeak Tidak Dikemas kini untuk sementara waktu: 16 Langkah
Menerima E-mel Pemberitahuan Apabila Saluran di ThingSpeak Tidak Dikemas kini untuk sementara waktu: Kisah latar belakang Saya mempunyai enam rumah hijau automatik yang tersebar di Dublin, Ireland. Dengan menggunakan aplikasi telefon bimbit yang dibuat khas, saya dapat memantau dan berinteraksi dari jauh dengan ciri automatik di setiap rumah hijau. Saya boleh membuka / menutup kemenangan secara manual
Pemberitahuan Panggilan Bluetooth: 5 Langkah (dengan Gambar)
Pemberitahuan Panggilan Bluetooth: PengenalanSaya melayari suapan berita arahan beberapa hari yang lalu ketika saya menjumpai Projek ini. Ia adalah projek yang menarik. Tetapi saya fikir Mengapa tidak membinanya dengan Bluetooth dan bukannya barang wifi yang rumit. Spesifikasi Pemberitahuan Panggilan Bluetooth ini
Hantarkan Pemberitahuan ThingSpeak ke Langkah Mi Band 4: 6
Kirim Pemberitahuan ThingSpeak ke Mi Band 4: Sejak membeli Xiaomi Mi Band 4 saya, saya memikirkan kemungkinan untuk melacak beberapa data dari Stesen Cuaca saya yang tersedia di ThingSpeak melalui Mi Band 4. Namun, setelah beberapa penyelidikan, saya mendapati bahawa kemampuan Mi Band 4 ar
R.O.B. Pembantu Pemberitahuan Telefon: 13 Langkah
R.O.B. Pembantu Pemberitahuan Telefon: Pembantu Pemberitahuan Telefon Desktop yang Menampilkan (R.O.B.) Rakan Operasi Robotik
Pemberitahuan Pencucian Tangan Automatik: 5 Langkah
Pemberitahuan Pencucian Tangan Automatik: Ini adalah mesin yang dapat memberitahu seseorang ketika mereka berjalan melalui pintu. Tujuannya adalah untuk mengingatkan seseorang untuk mencuci tangannya ketika dia pulang ke rumah. Terdapat sensor ultrasonik di bahagian depan kotak pengesan untuk seseorang yang masuk