Daftar Isi:

Notifikasi: 17 Langkah
Notifikasi: 17 Langkah

Video: Notifikasi: 17 Langkah

Video: Notifikasi: 17 Langkah
Video: Cara Menonaktifkan Notifikasi Di Layar Kunci HP Vivo Y17S 2024, Juli
Anonim
Notifikasi
Notifikasi

Perangkat dapat terhubung misalnya ke sistem IFTTT dan bereaksi ketika email baru muncul. Di app.remoteme.org kami akan membuat tautan setelah memanggil byte mana yang akan dikirim ke Arduino, dan Arduino akan menampilkan beberapa efek cahaya dan memutar beberapa mp3 dari SDcard

Langkah 1: Apa yang Dibutuhkan

Apa yang dibutuhkan
Apa yang dibutuhkan
Apa yang dibutuhkan
Apa yang dibutuhkan
  • NodeMCU, WemOS atau yang serupa
  • Dua cincin LED dengan dioda WS2812B (Saya telah menggunakan cincin led ke-16)
  • DFRobotDFPlayerMini – ini adalah pemutar mp3. Memutar mp3 dari SDcard, dan berkomunikasi dengan Arduino oleh RX/TX
  • Pembicara
  • Kartu SD
  • Konverter logika -Saya pernah menggunakan yang ini, pemutar mp3 menggunakan 5V dan Arduino 3.3 itu sebabnya kami membutuhkan konverter ini
  • Pengetahuan dan keterampilan membuat PCB sederhana sendiri

Menara:

  • karton – dua ketebalan berbeda
  • Menjiplak
  • alumunium foil

Langkah 2: Bangunan Menara

Gedung Menara
Gedung Menara
Gedung Menara
Gedung Menara
Gedung Menara
Gedung Menara
Gedung Menara
Gedung Menara

Di atas denah menara tampak samping (petualangan saya dengan gambar teknik berakhir di sekolah dasar), semua dimensi dalam milimeter.

Prinsip operasi

  1. cincin lampu LED menyala
  2. Menjiplak
  3. Kerucut terpotong, terbuat dari karton dan ditutup dengan aluminium foil, sehingga memantulkan cahaya dari cincin led, pada gambar 3 ' = jaring pemutus
  4. tabung karton - memegang menara secara vertikal, di dalam tabung ada kabel untuk led
  5. Tingginya tergantung pada Anda, saya punya 85mm
  6. Stand di dalam semua bagian elektronik

Semua elemen horizontal harus terbuat dari karton yang lebih tebal.

Langkah 3: Diagram Pengkabelan

Diagram pengkabelan
Diagram pengkabelan
Diagram pengkabelan
Diagram pengkabelan
Diagram pengkabelan
Diagram pengkabelan
Diagram pengkabelan
Diagram pengkabelan

Pemutar mp3 disuplai dengan tegangan 5V dan berkomunikasi dengan Arduino melalui TX / RX, diperlukan konverter logika karena Arduino sendiri bekerja pada tegangan 3,3V. Kontrol cincin juga terhubung ke Arduino (D5, D6) melalui konverter logika.

Di repositori, Anda akan menemukan file elang dengan paket PCB

Saya sarankan untuk tidak menyolder Arduino dan pemutar mp3 secara permanen hanya untuk menggunakan pin emas wanita

Langkah 4: Prinsip Operasi

Arduino kami terhubung ke sistem app.remoteme.org menggunakan WebSockets (ada perpustakaan siap pakai) melalui koneksi ini, pesan 5 byte dikirim:

  • byte pertama dari efek cahaya untuk cincin LED atas
  • efek cahaya byte kedua untuk cincin LED bawah
  • jumlah file mp3 yang akan diputar
  • jumlah detik berapa lama efek cahaya dan mp3 akan diputar
  • apakah mp3 harus diputar sekali atau dalam satu lingkaran

Kode sumber

Seluruh kode sumber Anda dapat menemukan di sini

di file SingleRing.cpp dan SingleRing.h ada kelas untuk mengontrol efek cincin LED. Saya sarankan Anda mulai dengan melihat fungsi setMode(int m):

void 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); break;//kasus hijau standar solid 2:setConfiguration(6, 0, 0, 50, 0, 20); break;//kasus biru standar solid 3:setConfiguration(6, 50, 0, 0, 0, 20); break;//kasus merah standar solid 4:setConfiguration(6, 50, 10, 0, 0, 20); break;//kasus oranye standar solid 5:setConfiguration(1, 0, 100, 0, 5, 2); break;//polisi hijau searah jarum jam 6:setConfiguration(1, 0, 100, 0, 5, -2); break;// polisi mengembalikan kasus hijau 7:setConfiguration(1, 0, 0, 100, 5, 2); break;//polisi searah jarum jam biru case 8:setConfiguration(1, 0, 0, 100, 5, -2); break;// polisi mengembalikan kasus biru 9:setConfiguration(1, 100, 0, 0, 5, 2); break;//kasus merah standar polisi 10:setConfiguration(1, 100, 0, 0, 5, -2); break;// polisi mengembalikan kasus merah 11:setConfiguration(1, 100, 20, 0, 5, 2); break;//kasus oranye standar polisi 12:setConfiguration(1, 100, 20, 0, 5, -2); break;// polisi mengembalikan kasus oranye 13:setConfiguration(2, 0, 0, 50, 8, 10); break;//cross standard blue case 14:setConfiguration(2, 0, 0, 50, 8, -10); break;// cross revert case biru 15:setConfiguration(5, 0, 50, 0, 0, 20); break;//blink kotak hijau standar 16:setConfiguration(5, 0, 50, 0, 0, -20); break;// blink odwyrtka green case 17:setConfiguration(5, 0, 0, 50, 0, 20); break;//blink kotak biru standar 18:setConfiguration(5, 0, 0, 50, 0, -20); break;// blink mengembalikan huruf biru 19:setConfiguration(5, 50, 0, 0, 0, 20); break;//blink standar merah case 20:setConfiguration(5, 50, 0, 0, 0, -20); break;// blink mengembalikan huruf merah 21:setConfiguration(5, 50, 10, 0, 0, 20); break;//blink case oranye standar 22:setConfiguration(5, 50, 10, 0, 0, -20); break;// blink mengembalikan oranye default: setConfiguration(0, 0, 50, 0, 5, 1); istirahat;//mati =0 } }

tergantung pada parameter yang diberikan, cincin akan menampilkan efeknya. Anda dapat menambahkan efek Anda sendiri dengan memanggil fungsi setConfiguration dengan parameter baru (perubahan warna, kecepatan tampilan) dengan menambahkan mode baru, atau menambahkan efek yang sama sekali baru – atau beri tahu saya di komentar jika saya suka, saya akan menambahkan efek baru

arduino.ino:

#sertakan "Arduino.h"#sertakan "SoftwareSerial.h" #sertakan "DFRobotDFPlayerMini.h"

#termasuk

#include #include #include "SingleRing.h"

#termasuk

#sertakan #sertakan

#termasuk

#tentukan WIFI_NAME ""

#define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "sirene" #define TOKEN ""

#tentukan DIODES_COUNT 16

SingleRing atas = SingleRing(DIODES_COUNT, D5);

SingleRing bawah = 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)) { //Gunakan softwareSerial untuk berkomunikasi dengan mp3.

Serial.println(F("Tidak dapat memulai:")); Serial.println(F("1. Silakan periksa kembali koneksi!")); Serial.println(F("2. Silakan masukkan kartu SD!")); sementara (benar); } Serial.println(F("DFPlayer Mini online."));

myDFPlayer.setTimeOut(500); //Tetapkan waktu komunikasi serial 500ms

myDFPlayer.volume(30);

myDFPlayer. EQ(DFPLAYER_EQ_NORMAL);

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

remoteMe.setUserMessageListener(onUserMessage);

remoteMe.setupTwoWayCommunication();

remoteMe.sendRegisterDeviceMessage(DEVICE_NAME);

top.setup();

bawah.setup(); atas.bersih(); bawah.bersih(); }

boolean dimatikan = benar;

turnOffMillis panjang yang tidak ditandatangani = 0;

void 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 waktu = RemoteMeMessagesUtils::getUint8(data, pos); mode uint8_t = RemoteMeMessagesUtils::getUint8(data, pos);

bottom.setMode(Mode bawah);

top.setMode(Mode atas); if (mode == 1) { myDFPlayer.loop(trackNumber); } else { myDFPlayer.play(trackNumber); } dimatikan = salah; turnOffMillis = milis() + 1000 * waktu; }

lingkaran kosong()

{ remoteMe.loop(); atas.loop(); bawah.loop(); jika (matikanMillis

}

penjelasan:

#define WIFI_NAME ""#define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "notificator" #define TOKEN ""

Kami perlu memberikan data di atas, instruksi terperinci di sini di tautan juga saya telah menunjukkan cara mendaftar di remoteme.org dan menghasilkan token, void 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 waktu = RemoteMeMessagesUtils::getUint8(data, pos); mode uint8_t = RemoteMeMessagesUtils::getUint8(data, pos);

bottom.setMode(Mode bawah);

top.setMode(Mode atas); if (mode == 1) { myDFPlayer.loop(trackNumber); } else { myDFPlayer.play(trackNumber); } dimatikan = salah; turnOffMillis = milis() + 1000 * waktu; }

Fungsi ini akan dipanggil ketika pesan masuk ke Arduino dan menampilkan notifikasi. Kodenya sangat jelas sehingga menggambarkan dirinya sendiri. Saya merujuk ke detail kelas ke dokumentasi di sini dan di sini

void loop(){ remoteMe.loop(); atas.loop(); bawah.loop(); if (turnOffMillis<millis()){

jika (!dimatikan) {

atas.bersih();

bawah.bersih(); myDFPlayer.stop(); dimatikan = benar; } }

Dalam loop, kami memanggil fungsi loop objek, dan juga jika waktu tampilan notifikasi telah berlalu, kami mematikan dioda dan suara.

Langkah 5: Pemutar Mp3

Pemutar mp3
Pemutar mp3

Ini berkomunikasi dengan Arduino melalui TX / RX – Detail pemain itu sendiri di sini, dan perpustakaan di sini

Kami mengunggah file mp3 ke kartu SD. File pada kartu diurutkan menurut abjad dan kemudian dengan memanggil:

myDFPlayer.play(5);

Kami memainkan file kelima dari kartu SD dari direktori root. Itu sebabnya ada baiknya memberikan file pada awalan kartu SD 01, 02 dll. Dalam kasus saya, tampilannya seperti pada layar cetak di atas

Untuk menghasilkan perintah suara Anda dapat menggunakan halaman ini.

Langkah 6: Mengunggah Program ke Arduino

Mengunggah Program ke Arduino
Mengunggah Program ke Arduino
Mengunggah Program ke Arduino
Mengunggah Program ke Arduino

Sebelum mengunggah sketsa ke Arduino, Anda harus mengunduh perpustakaan yang diperlukan di sini Anda akan menemukan instruksi detail

selain itu, kita perlu menginstal perpustakaan DFRobotDFPlayerMini dan Adafruit_NeoPixel

Langkah 7: Kontrol

Kontrol
Kontrol
Kontrol
Kontrol

Kami mengirim ke Arduino kami lima byte

  • byte pertama dari efek cahaya untuk cincin LED atas
  • efek cahaya byte kedua untuk cincin LED bawah
  • jumlah file mp3 yang akan diputar
  • jumlah detik berapa lama efek cahaya dan mp3 akan diputar
  • apakah mp3 harus dimainkan sekali atau dalam satu lingkaran (1 jika harus diputar dalam satu lingkaran)

Dengan mengirimkan byte

07 0F 01 05 01

Dering atas akan menunjukkan lampu polisi (mode 6) hijau satu kedipan bawah (mode 15) (lihat fungsi setMode di singleRing.cpp dan komentar di sebelahnya). File pertama dari SDcard akan diputar selama 5 detik. Dan file tersebut akan diputar secara looping (cek fungsi onUserMessage di arduino.ino)

Mari kita kirim byte ini. Lihat layar di atas, dan klik ikon dalam urutan yang ditulis oleh 1, 2, 3. Jendela muncul

Kemudian lihat layar kedua - dan isi jendela seperti pada layar kedua

Jendela yang muncul digunakan untuk mengirim pesan ke perangkat. Di bidang 1, pilih perangkat pengirim – karena kami hanya memiliki satu perangkat, kami memilihnya (ini adalah bidang wajib dan tidak masalah bahwa itu adalah perangkat yang sama dengan yang kami kirimi pesan) Di bidang 2 kami memberikan byte ke kirim (berwarna merah nilai yang kita masukkan di 2 akan direpresentasikan sebagai string) lalu klik tombol Kirim.

Setelah mengirim pesan, pemberi tahu kami akan bereaksi dengan menampilkan efek pencahayaan yang sesuai dan memutar mp3 yang dipilih. Saya mendorong Anda untuk mencoba efek yang berbeda dengan memberikan dua byte pertama dari angka antara 0 dan 22 (lihat deskripsi dalam fungsi setMode).

Langkah 8: Mengirim Pesan Menggunakan URL

Mengirim Pesan Menggunakan URL
Mengirim Pesan Menggunakan URL
Mengirim Pesan Menggunakan URL
Mengirim Pesan Menggunakan URL
Mengirim Pesan Menggunakan URL
Mengirim Pesan Menggunakan URL
Mengirim Pesan Menggunakan URL
Mengirim Pesan Menggunakan URL

Jika kita ingin menampilkan notifikasi dari aplikasi eksternal, misalnya dengan IFTTT, kita perlu memiliki URL yang akan melakukan hal yang persis sama seperti yang kita lakukan di jendela pada langkah sebelumnya. remoteme.org menyediakan REST API. Pergi ke sana dengan mengklik tab angkuh di sebelah kiri (yang terakhir). Sebuah halaman akan ditampilkan, di halaman ini kita juga dapat mencoba URL kita.

Pada layar pertama Anda memiliki fungsi Anda perlu memperluas, lalu mengisi data seperti pada layar kedua.

isi data seperti pada gambar di atas. Setelah mengklik eksekusi, kami akan mengirim pesan

070F010501

Penerima adalah perangkat dengan 205 id, perangkat yang sama juga merupakan pengirim. MessageId dengan pengaturan “No_RENEVAL” tidak relevan. Dan kemudian klik Execute. Notificator akan bereaksi dengan cara yang sama seperti saat mengirim pesan dari aplikasi. Setelah memanggil REST di bawah ini adalah URL yang dipanggil - lihat layar ketiga. Dan salin dan tempel ke URL browser ditandai dengan batas hijau. Di layar keempat browser chrome saya setelah URL ditempelkan

Dalam kasus saya, URL-nya adalah:

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

Langkah 9: URL Anymous untuk Mengirim Pesan

URL Anymous untuk Mengirim Pesan
URL Anymous untuk Mengirim Pesan

Pada langkah sebelumnya Anda memiliki URL yang mengirimkan data ke perangkat Anda. Sayangnya, setelah keluar dari app.remoteme.org, itu berhenti berfungsi. Ini karena kami tidak menyediakan token autentikasi, dan kami tidak lagi masuk. Mari ambil token kami (atau buat yang baru) dan tempelkan ke URL alih-alih bintang.

Lihat layar dan ganti * di URL dengan token Anda

dalam kasus saya token adalah:

~267_ZxoWtJ)0ph&2c

jadi URL final saya terlihat seperti:

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

Sekarang kita dapat memanggilnya bahkan jika kita tidak masuk. Dan ketika dipanggil, sebuah pesan akan dikirim ke perangkat kita 205

Langkah 10: Integrasi Dengan IFTTT 1/7

Integrasi Dengan IFTTT 1/7
Integrasi Dengan IFTTT 1/7

Url yang dibuat pada langkah di atas cocok untuk dieksekusi oleh aplikasi eksternal. Cara menggunakannya akan saya tunjukkan di IFTTT. Saya akan mengkonfigurasinya agar notifier menyala ketika email masuk ke alamat email (akun Gmail).

Masuk ke IFTTT. Kemudian buka tab Applet Saya dan kemudian "Applet Baru" - layar pertama

Langkah 11: Integrasi Dengan IFTTT 2/7

Integrasi Dengan IFTTT 2/7
Integrasi Dengan IFTTT 2/7

Selanjutnya klik “+ini”

Langkah 12: Integrasi Dengan IFTTT 3/7

Integrasi Dengan IFTTT 3/7
Integrasi Dengan IFTTT 3/7

Kemudian di bidang "Layanan pencarian" tulis "Gmail"

Kemudian "email baru di kotak masuk" (Beberapa konfigurasi mungkin diperlukan).

Langkah 13: Integrasi Dengan IFTTT 4/7

Integrasi Dengan IFTTT 4/7
Integrasi Dengan IFTTT 4/7

sekarang kita klik "+ itu"

Langkah 14: Integrasi Dengan IFTTT 5/7

Integrasi Dengan IFTTT 5/7
Integrasi Dengan IFTTT 5/7

temukan "Webhook" dan klik itu

Langkah 15: Integrasi Dengan IFTTT 6/7

Integrasi Dengan IFTTT 6/7
Integrasi Dengan IFTTT 6/7

lalu "Buat permintaan web"

Langkah 16: Integrasi Dengan IFTTT 7/7

Integrasi Dengan IFTTT 7/7
Integrasi Dengan IFTTT 7/7

kami melengkapi URL url kami dengan token. Jenis konten ke aplikasi / json dan klik "buat tindakan" dan Selesai. Sekarang kita memiliki applet kita:

Langkah 17: Ringkasan

Dalam tutorial ini, saya menunjukkan cara mengirim pesan ke Arduino dari sistem eksternal. Kami juga mengintegrasikan beberapa sistem lain kemudian IFTTT dengan cara yang sama. Itu tidak harus menjadi "pemberitahu" yang ingin saya tunjukkan dalam contoh ini bagaimana mengirim pesan dari sistem luar ke Arduino kami.

sourcecodesFanPage di Facebook

Salam, Maciek

Direkomendasikan: