Isi kandungan:

Pemberitahuan: 17 Langkah
Pemberitahuan: 17 Langkah

Video: Pemberitahuan: 17 Langkah

Video: Pemberitahuan: 17 Langkah
Video: cara mudah membuat brosur pengumuman perlombaan agustusan 2024, Julai
Anonim
Pemberitahuan
Pemberitahuan

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

Apa Yang Diperlukan
Apa Yang Diperlukan
Apa Yang Diperlukan
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

Bangunan Menara
Bangunan Menara
Bangunan Menara
Bangunan Menara
Bangunan Menara
Bangunan Menara
Bangunan Menara
Bangunan Menara

Di atas rancangan menara dalam pandangan sisi (pengembaraan saya dengan lukisan teknikal berakhir di sekolah rendah), semua dimensi dalam milimeter.

Prinsip operasi

  1. cincin LED menyala
  2. Kertas tekap
  3. Kerucut terpotong, terbuat dari kadbod dan ditutup dengan aluminium foil, sehingga memantulkan cahaya dari cincin yang dipimpin, dalam gambar 3 '= mesh yang dipotong
  4. tiub kadbod - menahan menara secara menegak, di dalam tiub terdapat kabel untuk led
  5. Ketinggian bergantung kepada anda, saya mempunyai 85mm
  6. Tempat di dalam semua bahagian elektronik

Semua elemen mendatar hendaklah diperbuat daripada kadbod yang lebih tebal.

Langkah 3: Diagram Pendawaian

Gambarajah pendawaian
Gambarajah pendawaian
Gambarajah pendawaian
Gambarajah pendawaian
Gambarajah pendawaian
Gambarajah pendawaian
Gambarajah pendawaian
Gambarajah 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

Pemain mp3
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

Memuat naik Program ke Arduino
Memuat naik Program ke Arduino
Memuat naik Program ke Arduino
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

Kawal
Kawal
Kawal
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

Menghantar Mesej Menggunakan URL
Menghantar Mesej Menggunakan URL
Menghantar Mesej Menggunakan URL
Menghantar Mesej Menggunakan URL
Menghantar Mesej Menggunakan URL
Menghantar Mesej Menggunakan URL
Menghantar Mesej Menggunakan URL
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

URL Anymous untuk Menghantar Mesej
URL Anymous 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

Integrasi Dengan IFTTT 1/7
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

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

Klik seterusnya "+ ini"

Langkah 12: Integrasi Dengan IFTTT 3/7

Integrasi Dengan IFTTT 3/7
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

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

sekarang kita klik pada "+ itu"

Langkah 14: Integrasi Dengan IFTTT 5/7

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

cari "Webhooks" dan klik

Langkah 15: Integrasi Dengan IFTTT 6/7

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

kemudian "Buat permintaan web"

Langkah 16: Integrasi Dengan IFTTT 7/7

Integrasi Dengan IFTTT 7/7
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: