Turinys:
- 1 žingsnis: ko reikia
- 2 žingsnis: bokšto statyba
- 3 žingsnis: laidų schema
- 4 žingsnis: veikimo principas
- 5 žingsnis: Mp3 grotuvas
- 6 veiksmas: įkelkite programą į „Arduino“
- 7 žingsnis: valdymas
- 8 veiksmas: pranešimų siuntimas naudojant URL
- 9 veiksmas: bet koks URL, skirtas siųsti pranešimą
- 10 veiksmas: integracija su IFTTT 1/7
- 11 veiksmas: integracija su IFTTT 2/7
- 12 žingsnis: integracija su IFTTT 3/7
- 13 žingsnis: integracija su IFTTT 4/7
- 14 žingsnis: integracija su IFTTT 5/7
- 15 veiksmas: integracija su IFTTT 6/7
- 16 žingsnis: integracija su IFTTT 7/7
- 17 žingsnis: Santrauka
Video: Pranešėjas: 17 žingsnių
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Prietaisą galima prijungti, pavyzdžiui, prie IFTTT sistemos ir reaguoti, kai pasirodo naujas laiškas. Programoje app.remoteme.org po skambučio sugeneruosime nuorodą, kuri baitai bus siunčiami į „Arduino“, o „Arduino“parodys tam tikrą šviesos efektą ir paleis mp3 iš SDcard
1 žingsnis: ko reikia
- „NodeMCU“, „WemOS“ar kažkas panašaus
- Du LED žiedai su WS2812B diodais (naudojau 16 -osios lemputės žiedus)
- DFRobotDFPlayerMini - tai mp3 grotuvas. Jis groja mp3 iš SD kortelės ir bendrauja su „Arduino by RX/TX“
- Pranešėjas
- SD kortelė
- Loginis keitiklis -aš naudoju šį, mp3 grotuvas naudoja 5 V ir „Arduino 3.3“, todėl mums reikia šio keitiklio
- Žinios ir įgūdžiai, kaip patys pasidaryti paprastą PCB
Bokštas:
- kartonas - dviejų skirtingų storių
- Kalkė
- aliuminio folija
2 žingsnis: bokšto statyba
Virš bokšto plano iš šono (mano nuotykis su techniniu piešiniu baigėsi pradinėje mokykloje), visi matmenys milimetrais.
Veikimo principas
- šviečia šviesos diodų žiedas
- Kalkė
- Sutrumpintas kūgis, pagamintas iš kartono ir padengtas aliuminio folija, todėl atspindi šviesas iš LED žiedų, 3 pav.
- kartoninis vamzdis - bokštus laiko vertikaliai, vamzdžio viduje yra kabeliai, skirti šviesos diodams
- Aukštis priklauso nuo jūsų, aš turiu 85 mm
- Stovas visų elektronikos dalių viduje
Visi horizontalūs elementai turi būti pagaminti iš storesnio kartono.
3 žingsnis: laidų schema
MP3 grotuvas tiekiamas su 5 V įtampa ir bendrauja su „Arduino“per TX / RX, reikalingas loginis keitiklis, nes pats „Arduino“veikia 3,3 V įtampa. Žiedų valdymas taip pat prijungtas prie „Arduino“(D5, D6) per loginį keitiklį.
Saugykloje rasite erelio failus su PCB planais
Aš siūlau ne lituoti visam laikui „Arduino“ir mp3 grotuvo, kad būtų galima naudoti tik auksines smeigtukus
4 žingsnis: veikimo principas
Mūsų „Arduino“prisijungia prie sistemos app.remoteme.org naudodami „WebSockets“(yra paruoštos bibliotekos) per šį ryšį siunčiami 5 baitų pranešimai:
- pirmasis šviesos efekto baitas viršutiniam LED žiedui
- antrojo baito šviesos efektas apatiniam LED žiedui
- grojamo mp3 failo numeris
- sekundžių skaičius, kiek laiko bus leidžiamas šviesos efektas ir mp3
- ar mp3 reikia leisti vieną kartą, ar ciklu
pirminis kodas
Visą šaltinio kodą galite rasti čia
failuose „SingleRing.cpp“ir „SingleRing.h“yra klasė, skirta valdyti LED žiedų poveikį. Siūlau pradėti žiūrint į funkciją 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; // kietas standartinis žalias dėklas 2: setConfiguration (6, 0, 0, 50, 0, 20); break; // kietas standartinis mėlynas dėklas 3: setConfiguration (6, 50, 0, 0, 0, 20); pertrauka; // kietas standartinis raudonas dėklas 4: setConfiguration (6, 50, 10, 0, 0, 20); pertrauka; // kietas standartinis oranžinis dėklas 5: setConfiguration (1, 0, 100, 0, 5, 2); break; // policija pagal laikrodžio rodyklę žalia dėžutė 6: setConfiguration (1, 0, 100, 0, 5, -2); break; // policija grąžina žalią atvejį 7: setConfiguration (1, 0, 0, 100, 5, 2); pertrauka; // policija pagal laikrodžio rodyklę mėlyna dėklas 8: setConfiguration (1, 0, 0, 100, 5, -2); break; // policija grąžina mėlyną 9 atvejį: setConfiguration (1, 100, 0, 0, 5, 2); break; // policijos standartinis raudonasis dėklas 10: setConfiguration (1, 100, 0, 0, 5, -2); break; // policija grąžina raudoną atvejį 11: setConfiguration (1, 100, 20, 0, 5, 2); break; // policijos standartinis oranžinis dėklas 12: setConfiguration (1, 100, 20, 0, 5, -2); break; // policija grąžina oranžinį dėklą 13: setConfiguration (2, 0, 0, 50, 8, 10); pertrauka; // kryžminis standartinis mėlynas dėklas 14: setConfiguration (2, 0, 0, 50, 8, -10); break; // cross revert blue case 15: setConfiguration (5, 0, 50, 0, 0, 20); break; // mirksėti standartinis žalias dėklas 16: setConfiguration (5, 0, 50, 0, 0, -20); break; // blink odwyrtka green case 17: setConfiguration (5, 0, 0, 50, 0, 20); break; // blink standartinis mėlynas dėklas 18: setConfiguration (5, 0, 0, 50, 0, -20); pertrauka; // mirksėti sugrąžinti mėlyną dėklą 19: setConfiguration (5, 50, 0, 0, 0, 20); pertrauka; // mirksėti standartinis raudonas dėklas 20: setConfiguration (5, 50, 0, 0, 0, -20); pertrauka; // mirksėti grąžinti raudoną dėklą 21: setConfiguration (5, 50, 10, 0, 0, 20); break; // mirksi standartinis oranžinis dėklas 22: setConfiguration (5, 50, 10, 0, 0, -20); break; // blink revert oranžinė numatytoji: setConfiguration (0, 0, 50, 0, 5, 1); pertrauka; // išjungta = 0}}
priklausomai nuo nurodyto parametro, žiedas parodys efektą. Galite pridėti savo efektą paskambinę funkcijai setConfiguration su naujais parametrais (spalvos pasikeitimas, ekrano greitis), pridedant naują režimą arba visiškai naują efektą - arba praneškite man komentaruose, jei man patinka, pridėsiu naują efektą
arduino.ino:
#įtraukti „Arduino.h“#įtraukti „SoftwareSerial.h“#įtraukti „DFRobotDFPlayerMini.h“
#įtraukti
#include #include #include "SingleRing.h"
#įtraukti
#įtraukti #įtraukti
#įtraukti
#define WIFI_NAME ""
#define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "siren" #define TOKEN ""
#define DIODES_COUNT 16
„SingleRing“viršuje = „SingleRing“(DIODES_COUNT, D5);
„SingleRing“apačia = „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)) {// Naudokite softwareSerial, kad galėtumėte bendrauti su mp3.
Serial.println (F ("Nepavyko pradėti:")); Serial.println (F ("1. Prašome dar kartą patikrinti ryšį!")); Serial.println (F ("2. Įdėkite SD kortelę!")); o (tiesa); } Serial.println (F ("DFPlayer Mini internete"));
myDFPlayer.setTimeOut (500); // Nustatykite serijinio ryšio laiką 500 ms
myDFPlayer.tomas (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 ();
bottom.setup (); top.clear (); apačioje.išvalytas (); }
boolean turnOff = tiesa;
nepasirašytas ilgas turnOffMillis = 0;
void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *duomenys) {
uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (duomenys, poz.); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (duomenys, poz.); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (duomenys, poz.); uint8_t time = RemoteMeMessagesUtils:: getUint8 (duomenys, poz.); uint8_t mode = RemoteMeMessagesUtils:: getUint8 (duomenys, poz.);
bottom.setMode (bottomMode);
top.setMode (topMode); if (režimas == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } išjungta = klaidinga; turnOffMillis = milis () + 1000 * laikas; }
tuštumos kilpa ()
{remoteMe.loop (); top.loop (); bottom.loop (); jei (turnOffMillis
}
paaiškinimas:
#define WIFI_NAME "" #define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "notificator" #define TOKEN ""
Turime pateikti aukščiau pateiktus duomenis, išsamias instrukcijas čia, taip pat parodžiau, kaip užsiregistruoti remoteme.org ir sugeneruoti prieigos raktą, void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t *duomenys) {uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (duomenys, poz.); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (duomenys, poz.); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (duomenys, poz.); uint8_t time = RemoteMeMessagesUtils:: getUint8 (duomenys, poz.); uint8_t mode = RemoteMeMessagesUtils:: getUint8 (duomenys, poz.);
bottom.setMode (bottomMode);
top.setMode (topMode); if (režimas == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } išjungta = klaidinga; turnOffMillis = milis () + 1000 * laikas; }
Ši funkcija bus iškviesta, kai pranešimas ateis į „Arduino“ir bus parodytas pranešimas. Kodas yra toks aiškus, kad apibūdina save. Išsamią klasių informaciją nurodau čia ir čia esančioje dokumentacijoje
void loop () {remoteMe.loop (); top.loop (); bottom.loop (); if (turnOffMillis <millis ()) {
jei (! išjungta) {
top.clear ();
apačioje.išvalytas (); myDFPlayer.stop (); TurnOff = tiesa; }}
Cikle mes vadiname objektų ciklo funkcijas, taip pat, jei praėjo pranešimų rodymo laikas, išjungiame diodus ir garsą.
5 žingsnis: Mp3 grotuvas
Jis bendrauja su „Arduino“per TX / RX - čia pateikiama informacija apie patį grotuvą, o čia - biblioteka
Į SD kortelę įkeliame mp3 failus. Failai kortelėje surūšiuoti abėcėlės tvarka ir paskambinus:
myDFPlayer.play (5);
Paleidžiame penktąjį failą iš SD kortelės iš šakninio katalogo. Štai kodėl gerai duoti failus SD kortelės priešdėliais 01, 02 ir tt. Mano atveju tai atrodo kaip aukščiau esančiame spausdinimo ekrane
Norėdami generuoti balso komandas Galite naudoti šį puslapį.
6 veiksmas: įkelkite programą į „Arduino“
Prieš įkeldami eskizą į „Arduino“, turite atsisiųsti reikalingas bibliotekas, čia rasite išsamias instrukcijas
Be to, turime įdiegti „DFRobotDFPlayerMini“biblioteką ir „Adafruit_NeoPixel“
7 žingsnis: valdymas
Mes siunčiame į mūsų „Arduino“penkis baitus
- pirmasis šviesos efekto baitas viršutiniam LED žiedui
- antrojo baito šviesos efektas apatiniam LED žiedui
- grojamo mp3 failo numeris
- sekundžių skaičius, kiek laiko bus leidžiamas šviesos efektas ir mp3
- ar mp3 turėtų būti leidžiamas vieną kartą, ar ciklu (1, jei jis turėtų būti leidžiamas ciklu)
Siunčiant baitus
07 0F 01 05 01
Viršutiniame žiede bus rodomi policijos žibintai (6 režimas), apačioje mirksi žalia spalva (15 režimas) (patikrinkite „setMode“funkciją „singleRing.cpp“ir komentarus šalia jo). Pirmasis SD kortelės failas bus paleistas 5 sekundes. Ir failas bus paleistas cikle (patikrinkite funkciją onUserMessage adresu arduino.ino)
Siųskime šiuos baitus. Pažvelkite į aukščiau esantį ekraną ir spustelėkite piktogramas eilės tvarka 1, 2, 3. Rodomas langas
Tada pažvelkite į antrą ekraną ir užpildykite langą kaip antrame ekrane
Rodomas langas naudojamas pranešimams siųsti į įrenginį. 1 laukelyje pasirinkite siuntėjo įrenginį - kadangi turime tik vieną įrenginį, jį pasirenkame (tai yra privalomas laukas ir nesvarbu, kad tai tas pats įrenginys, kuriam siunčiame pranešimą) 2 laukelyje nurodome baitus siųsti (raudonai reikšmė, kurią įvedėme 2, bus pavaizduota kaip eilutė), tada spustelėkite mygtuką Siųsti.
Išsiuntęs pranešimą, mūsų pranešėjas turėtų reaguoti parodydamas atitinkamus apšvietimo efektus ir paleisdamas pasirinktą mp3. Rekomenduoju išbandyti skirtingus efektus, duodamas pirmuosius du baitus nuo 0 iki 22 (žr. Funkcijos „setMode“aprašymą).
8 veiksmas: pranešimų siuntimas naudojant URL
Jei norime rodyti pranešimus iš išorinės programos, pvz., Naudojant IFTTT, turime turėti URL, kuris veiks lygiai taip pat, kaip ir ankstesnio veiksmo lange. remoteme.org teikia REST APi. Eikite į jį spustelėdami skirtuką kairėje (paskutinis). Bus rodomas puslapis, šiame puslapyje taip pat galime išbandyti savo URL.
Pirmajame ekrane turite funkciją, kurią turite išplėsti, tada užpildykite duomenis kaip antrame ekrane.
užpildykite duomenis, kaip parodyta aukščiau esančioje ekrano kopijoje. Spustelėję „Vykdyti“, mes atsiųsime pranešimą
070F010501
Imtuvas yra įrenginys, turintis 205 ID, tas pats įrenginys taip pat yra siuntėjas. „MessageId“su „No_RENEVAL“nustatymais nesvarbus. Tada spustelėkite Vykdyti. Pranešėjas reaguos taip pat, kaip siunčiant pranešimus iš programos. Žemiau paskambinus REST yra URL, kuris buvo vadinamas - pažvelkite į trečiąjį ekraną. Nukopijuoti ir įklijuoti į naršyklės URL buvo pažymėtas žaliu kraštu. Ketvirtajame ekrane mano „Chrome“naršyklė po URL įklijavimo
Mano atveju URL yra:
app.remoteme.org/api/*/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/
9 veiksmas: bet koks URL, skirtas siųsti pranešimą
Ankstesniame žingsnyje turite URL, kuris siunčia duomenis į jūsų įrenginį. Deja, atsijungus nuo app.remoteme.org jis nustoja veikti. Taip yra todėl, kad nepateikėme autentifikavimo žetono ir nebesame prisijungę. Paimkime savo žetoną (arba sukurkite naują) ir įklijuokite jį į URL, o ne žvaigždutę.
Pažvelkite į ekraną ir pakeiskite * URL savo žetonu
mano atveju ženklas yra:
~ 267_ZxoWtJ) 0ph & 2c
taigi mano galutinis URL atrodo taip:
app.remoteme.org/api/~267_ZxoWtJ)0ph&2c/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/
Dabar mes galime tai paskambinti, net jei nesame prisijungę. O kai jis bus iškviestas, į mūsų įrenginį bus išsiųstas pranešimas 205
10 veiksmas: integracija su IFTTT 1/7
URL, sukurtas aukščiau, tinka vykdyti išorinėms programoms. Kaip juo naudotis, parodysiu IFTTT. Aš sukonfigūruosiu jį taip, kad pranešėjas įsijungtų, kai el. Laiškas ateina į el. Pašto adresą („Gmail“paskyrą).
Prisijunkite prie IFTTT. Tada eikite į skirtuką „Mano programėlės“, tada- „Nauja programėlė“- pirmasis ekranas
11 veiksmas: integracija su IFTTT 2/7
Toliau spustelėkite „+tai“
12 žingsnis: integracija su IFTTT 3/7
Tada lauke „Paieškos paslaugos“parašykite „Gmail“
Tada „naujas el. Laiškas gautuosiuose“(gali prireikti tam tikros konfigūracijos).
13 žingsnis: integracija su IFTTT 4/7
Dabar mes spustelime „+ tai“
14 žingsnis: integracija su IFTTT 5/7
suraskite „Webhooks“ir spustelėkite jį
15 veiksmas: integracija su IFTTT 6/7
tada „Pateikite žiniatinklio užklausą“
16 žingsnis: integracija su IFTTT 7/7
užpildome savo URL URL su žetonu. Turinio tipą į programą / json ir spustelėkite „sukurti veiksmą“ir Baigti. Dabar mes turime savo programėlę:
17 žingsnis: Santrauka
Šioje pamokoje aš parodžiau, kaip siųsti žinutes į mūsų „Arduino“iš išorinių sistemų. Taip pat panašiai integruojame ir kitą IFTTT sistemą. Tai nebūtinai turi būti „pranešėjas“, kurį norėjau parodyti šiame pavyzdyje, kaip siųsti pranešimus iš išorinių sistemų į mūsų „Arduino“.
sourcecodesFanPage „Facebook“
Sveikinu, Maciek
Rekomenduojamas:
„Bluetooth“skambučių pranešėjas: 5 žingsniai (su paveikslėliais)
„Bluetooth“skambučių pranešėjas: įvadas Prieš kelias dienas naršydamas nurodymų naujienų kanalą, kai susidūriau su šiuo projektu. Tai buvo šaunus projektas. Bet aš maniau, kodėl gi ne sukurti jį naudojant „Bluetooth“, o ne sudėtingus „wifi“dalykus. Šio „Bluetooth“skambučių pranešėjo specifikacija
Automatinis rankų plovimo pranešėjas: 5 žingsniai
Automatinis rankų plovimo pranešėjas: tai mašina, kuri gali kam nors pranešti, kai jie išeina pro duris. Jo tikslas - priminti kam nors nusiplauti rankas grįžus namo. Dėžutės priekyje yra ultragarsinis jutiklis, skirtas tiems, kurie įeina
Lengvas neskaitytas el. Pašto pranešėjas: 7 žingsniai
Lengvas neskaitytas el. Pašto pranešėjas: Sveiki visi, sveiki atvykę į dar vieną „Instructable“. Esant dabartinei situacijai dirbant iš namų, susiduriu su tam tikrais iššūkiais, nes laikas nuo laiko gavau el. Laiškus iš savo įmonės. Tada galvojau sukurti „Desk Notifier“, kuris praneškite man apie savo
Pranešėjas: 4 žingsniai
Pranešėjas: Ar kada nors turėjote patirties liepdamas kitiems nedėti savo asmeninių daiktų į jūsų vietą? Dažniausiai visi susidūrė su tokia situacija ir dažnai ši problema neišsprendžiama, nes kiti dažnai neklauso įspėjimo. Šis įrenginys ir
„YouTube“darbalaukio pranešėjas: 11 žingsnių (su paveikslėliais)
„YouTube“darbalaukio pranešėjas: ar sapnuojate košmarus praradę „YouTube“prenumeratorius? Jei tai padarysite, nesate vienintelis. Laimei, sukūriau šį „YouTube“darbalaukio pranešėją “. kad galėčiau nuolat atnaujinti savo kanalų prenumeratorių ir peržiūrų skaičių. Šis labai paprastas „pasidaryk pats“projektas