Turinys:

„Arduino“belaidė signalizacijos sistema naudojant esamus jutiklius: 9 žingsniai (su nuotraukomis)
„Arduino“belaidė signalizacijos sistema naudojant esamus jutiklius: 9 žingsniai (su nuotraukomis)

Video: „Arduino“belaidė signalizacijos sistema naudojant esamus jutiklius: 9 žingsniai (su nuotraukomis)

Video: „Arduino“belaidė signalizacijos sistema naudojant esamus jutiklius: 9 žingsniai (su nuotraukomis)
Video: 7 projects Build LED LCD Alarm Clock using DS1307 with Arduino | Lesson 105 2024, Liepa
Anonim
„Arduino“belaidė signalizacijos sistema naudojant esamus jutiklius
„Arduino“belaidė signalizacijos sistema naudojant esamus jutiklius
„Arduino“belaidė signalizacijos sistema naudojant esamus jutiklius
„Arduino“belaidė signalizacijos sistema naudojant esamus jutiklius
„Arduino“belaidė signalizacijos sistema naudojant esamus jutiklius
„Arduino“belaidė signalizacijos sistema naudojant esamus jutiklius
„Arduino“belaidė signalizacijos sistema naudojant esamus jutiklius
„Arduino“belaidė signalizacijos sistema naudojant esamus jutiklius

Šis projektas gali būti pastatytas maždaug per pusvalandį ir kainuoja apie 20,00 USD, jei turite esamų 433Mhz arba 315Mhz belaidžių signalizacijos jutiklių.

Tai taip pat gali būti visiškai naujas projektas su belaidžiais signalizacijos jutikliais, tokiais kaip infraraudonųjų spindulių judesio detektoriai ir nendrių jungikliai, lengvai ir pigiai prieinami internete. Tiesiog ieškokite 433Mhz arba 315Mhz jutiklių, naudojančių PT2262 arba EV1527 kodavimą.

Esu tikras, kad yra daug tokių žmonių kaip aš, kurie įsigijo GSM/2G signalizacijos sistemą su belaidžiais jutikliais ir buvo ja patenkinti, tačiau kai 2G/GSM tinklas buvo išjungtas ten, kur aš gyvenu, man liko signalizacija, kurią galėjau nebeprogramuokite ir net nenustatykite laiko. Vieną dieną galvodama, ką galėčiau padaryti, kad mano žadintuvas vėl veiktų, man į galvą atėjo patikrinti, ar „Arduino“gali priimti signalus iš jutiklių. Aš atsitiktinai susidūriau su nesuderinamu https://www.instructables.com/id/Decoding-and-sending-433MHz-RF-codes-with-Arduino-/ ir po tam tikrų eksperimentų nusprendžiau, kad galiu priimti signalus iš esamų jutiklių. Pradėjau kurti signalizacijos sistemą, kuri galėtų pakeisti esamą signalizaciją ir taip pat suteiktų daugiau funkcijų. Viena iš senojo pavojaus signalo problemų niekada nebuvo tiksliai žinoti, kuris iš 25 jutiklių suveikė, pridėdamas LCD ekraną prie naujos signalizacijos sistemos, dabar LCD ekrane gaunu tekstą, nurodantį, kuris jutiklis buvo aktyvuotas. Naujasis žadintuvas vis dar gali būti rankiniu būdu įjungtas mano esamais belaidžiais nuotolinio valdymo pultais ir turi realaus laiko laikrodį, leidžiantį automatiškai įjungti ir išjungti nustatytą paros laiką.

Prekės

Pabaigoje žiūrėkite papildomas pastabas, kad įsitikintumėte, jog naudojate teisingą šių dalių versiją.

„Arduino Uno“ar panašiai

433 arba 315 MHz imtuvo modulis, skirtas „Arduino“

DS3231 „Arduino“realaus laiko laikrodžio modulis

I2C 16x2 LDC modulis, skirtas „Arduino“

Belaidžiai aliarmo jungikliai, judesio jutikliai ir nuotolinio valdymo pulteliai pagal pageidavimą

Pjezo garsinis signalas

LED ir 220 omų rezistorius

Duonos lenta (neprivaloma, bet rekomenduojama)

Tinkamas „Arduino“maitinimo šaltinis

Perjungimo laidai ir kt

Kompiuteris su įdiegta „Arduino IDE“

Pagrindinės žinios apie Arduino

1 žingsnis: reikmenys

Prekės
Prekės
Prekės
Prekės
Prekės
Prekės

Keletas vaizdų apie reikmenis, kurių jums reikės šiam projektui

2 veiksmas: prijunkite „Ardunio“ir modulius, kaip parodyta paveikslėlyje

Prijunkite „Ardunio“ir modulius, kaip parodyta paveikslėlyje
Prijunkite „Ardunio“ir modulius, kaip parodyta paveikslėlyje

Pjezo tarp 5 „Arduino“kaiščio ir žemės

Šviesos diodas tarp „Arduino“8 kaiščio ir 220 omų rezistoriaus, tada į žemę

433 arba 315 Mhz imtuvas, VCC - 5 V, GND prie žemės ir vienas iš 2 duomenų kaiščių prie „Arduino“kaiščio 2

I2C 16X2 LCD modulis VCC į 5V, GND prie žemės, SCL SDA kaiščiai prie „Arduino“SCL SDA (A5 kaištis yra SCL, A4 kaištis yra SDA)

DS3231 RTC modulis VCC į 5V, GND į žemę, SCL SDA kaiščiai prie „Arduino“SCL SDA (yra antrasis rinkinys, esantis virš daugumos „Arduino“GND ir AREF kaiščių)

Žinau, kad kai kuriems iš jūsų nebereikės daugiau informacijos nei šis ir eskizas, pridėtas žemiau, bet aš išsamiau papasakosiu visiems, kurie norėtų šiek tiek daugiau pagalbos.

3 veiksmas: pridėkite būtinas bibliotekas prie „Arduino IDE“

Pridėkite būtinas bibliotekas prie „Arduino IDE“
Pridėkite būtinas bibliotekas prie „Arduino IDE“
Pridėkite būtinas bibliotekas prie „Arduino IDE“
Pridėkite būtinas bibliotekas prie „Arduino IDE“
Pridėkite būtinas bibliotekas prie „Arduino IDE“
Pridėkite būtinas bibliotekas prie „Arduino IDE“

„Arduino Sketch“signalui paleisti naudoja kai kurias bibliotekas, kurios pagal numatytuosius nustatymus dar nėra įdiegtos „Arduino IDE“.

Norėdami pridėti „RCSwitch“biblioteką prie „Arduino IDE“. Viršutiniame meniu atidarykite „Arduino IDE“, pasirinkite „Eskizas“, tada išskleidžiamajame meniu pasirinkite „Įtraukti biblioteką“, o kitame išskleidžiamajame meniu pasirinkite „Tvarkyti bibliotekas“. Tada lauke „Filtruoti paiešką“įveskite „RCSW“, tada spustelėkite „įdiegti“, kad gautumėte „rc-switch by sui77“

Išsamios bibliotekų pridėjimo instrukcijos

Kol mes tai darome, taip pat turime pridėti bibliotekų, pavadintų „Time“, „TimeAlarms“, DS1307RTC ir „LiquidCrystal_I2C“, ta pati procedūra, kaip aprašyta aukščiau, tačiau ieškant kiekvienos naujos bibliotekos pavadinimo ir diegiant. Jei nežinote, kurias bibliotekas naudoti, žiūrėkite ekrano kopijas aukščiau.

DS3231 realaus laiko laikrodis yra suderinamas su DS1307RTC biblioteka ir naudoja ją.

4 žingsnis: Toliau turime gauti jūsų jutiklių kodus

Toliau turime gauti jūsų jutiklių kodus
Toliau turime gauti jūsų jutiklių kodus
Toliau turime gauti jūsų jutiklių kodus
Toliau turime gauti jūsų jutiklių kodus

Žemiau pateikiau „Arduino“kodo šabloną, tačiau turėsite rasti kiekvieno jutiklio reikšmes ir įklijuoti jas į kodą.

Abiejose svetainėse yra daug informacijos apie tai, kaip gauti šiuos kodus;

www.instructables.com/id/Decoding-and-sending-433MHz-RF-codes-with-Arduino-/

github.com/sui77/rc-switch/wiki

Tačiau čia yra mano sutrumpinta versija;

Norėdami gauti kodus, kuriuos siunčia jūsų jutikliai ir nuotolinio valdymo pulteliai, USB kabeliu prie kompiuterio prijunkite „Arduino“, surinktą atlikdami 1 veiksmą, ir atidarykite „Arduino IDE“. Tada „Arduino IDE“eikite į išskleidžiamąjį meniu „Failas“, tada eikite į „Pavyzdžiai“, slinkite žemyn pavyzdžių eskizų sąrašu, kol rasite „RCSWITCH“, tada pasirinkite eskizą „ReceiveDemo_Advanced“ir įkelkite jį į „Arduino“. Kai eskizas sėkmingai įkeliamas, atidarykite „Arduino IDE“nuoseklųjį monitorių, kuris vis dar prijungtas prie kompiuterio per USB. Dabar suaktyvinkite pirmąjį jutiklį, kurio kodą norite gauti, „RCSwitch“išvestis bus rodoma serijinio monitoriaus lange. Šiam projektui mes ieškome dešimtainių kodų, kaip parodyta 2 ekrano kopijoje. Jums reikės kelis kartus paleisti jutiklį, ieškant dažniausiai rodomos dešimtainės vertės, kartais skirtingos vertės bus sumaišytos su tikra verte, todėl atsitiktinių radijo bangų ar kitų tuo pačiu dažniu veikiančių prietaisų trukdžių.

Atkreipkite dėmesį į jutiklio dešimtainį kodą, kurį naudosite kitame žingsnyje. Pakartokite visus jutiklius ir nuotolinius nuotolinio valdymo pultus, kuriuos norite naudoti projekte, stebėdami, kuris kodas yra su kuriuo jutikliu. Jei signalizacijai įjungti ir išjungti naudojate nuotolinio valdymo pultus, turėsite atkreipti dėmesį į skirtingus kiekvieno nuotolinio valdymo pulto įjungimo ir išjungimo mygtuko kodus.

5 žingsnis: „Arduino“kodo šablonas

Žemiau yra mano „Arduino“kodo, kaip.ino failo, pavadinto „Wireless_Alarm“, kopija. Galite spustelėti jį ir jis turėtų atsidaryti „Arduino IDE“. Nesu programuotojas, mano kodas iš dalies surinktas iš „Arduino IDE“pavyzdžių, jis tikriausiai nėra ypač elegantiškas, tačiau veikia ir yra patikimas ilgą laiką.

Atlikę pakeitimus nepamirškite iš naujo išsaugoti eskizo, kad į jį būtų įtraukti kodai iš savo jutiklių.

6 veiksmas: įklijuokite 5 veiksme gautus kodus į „Arduino“šablono šabloną

Dabar atlikite veiksmus, kad pritaikytumėte naudojamų jutiklių ir nuotolinio valdymo pultelių kodą.

Jei atidarysite „Wireless_Alarm“eskizą savo IDE, pamatysite 111 eilutę.

if (mySwitch.getReceivedValue () == 115166236) // Fob arm mygtuko kodas

Jei esamas kodas nurodo 115166236, turite pakeisti šį skaičių nuotolinio nuotolinio valdymo pulto įjungimo mygtuko dešimtainiu kodu, kurį įrašėte atlikdami 5 veiksmą.

Pavyzdžiui, jei 5 veiksme gavote dešimtainį skaičių 1154321, modifikuotumėte 111 eilutę, kad ji dabar būtų skaitoma;

if (mySwitch.getReceivedValue () == 1154321) // Fob arm mygtuko kodas

Atlikite tą pačią procedūrą 125 eilutėje.

if (mySwitch.getReceivedValue () == 115166234) // Fobo išjungimo mygtuko kodas

Pakeiskite nuotolinio nuotolinio valdymo pulto išjungimo mygtuko, kurį įrašėte atlikdami 5 veiksmą, kodą 115166234.

Jei norite įjungti ir nuginkluoti kelis nuotolinio valdymo pultus, nukopijuokite ir įklijuokite eilutes nuo 111 iki 136 tiek kartų, kiek reikia, tada pakeiskite vertes, kad jos atitiktų kitus nuotolinio valdymo pultelius, bet geriausia tik pradėti nuo vieno nuotolinio valdymo pulto, kol būsite tikri, kad pakeitėte eskizas veikia.

Dabar koduojame pavojaus jutiklius eskize 140 eilutėje

if (ledState == HIGH && mySwitch.getReceivedValue () == 1151640) // Signalo siuntėjo biuro spintelės veiksmas

Išimkite 1151640 ir įveskite vieno iš pavojaus signalų jutiklių dešimtainę vertę.

Tada 158 eilutėje.

lcd.print (F ("Biuro spinta")); // išspausdinkite pranešimą į LCD, kad sužinotumėte, kuris jutiklis buvo suaktyvintas (ir eikite ir raskite įsilaužėlį:)

Pakeiskite „Office“spintelę į tai, ką norėtumėte, kad to jutiklio LCD ekrane būtų rodoma. Pavyzdžiui, jei norite, kad ji skaitytų „kitchendoor“, eilutė atrodytų taip;

lcd.print (F ("Kitchendoor")); // išspausdinkite pranešimą į LCD, kad sužinotumėte, kuris jutiklis buvo suaktyvintas (ir eikite ir raskite įsilaužėlį:)

Pavadinimai neturėtų viršyti 16 simbolių.

Tarp 165 ir 187 eilučių yra šablonas, kurį reikia nukopijuoti ir įklijuoti tiek kartų, kiek reikia tiesiai į eilutes žemiau 187. Pakeiskite skaičių po mySwitch.getReceivedValue () == vieno iš kitų jutiklių, kuriuos įrašėte atlikdami 5 veiksmą, dešimtaine dalimi ir pakeiskite pavadinimą į "", esantį lcd.print (F ("sensornamehere")); prie pavadinimo, kurį norite suteikti savo jutikliui.

Jei žadintuvui įjungti ir išjungti nenaudojate nuotolinio valdymo pultelių, galite tiesiog nepaisyti 111-136 eilučių arba kiekvienos nepageidaujamos eilutės pradžioje įrašyti // ir „Arduino“jų neskaitys.

Atlikę pakeitimus nepamirškite išsaugoti failo.

7 veiksmas: įkelkite pakeistą.ino į „Arduino“ir išbandykite

Įkelkite pakeistą.ino į „Arduino“ir išbandykite
Įkelkite pakeistą.ino į „Arduino“ir išbandykite
Įkelkite pakeistą.ino į „Arduino“ir išbandykite
Įkelkite pakeistą.ino į „Arduino“ir išbandykite
Įkelkite pakeistą.ino į „Arduino“ir išbandykite
Įkelkite pakeistą.ino į „Arduino“ir išbandykite

Kai „Arduino“vis dar prijungtas prie kompiuterio per USB, įkelkite eskizą į „Arduino“lentą. Kai įkėlimas bus sėkmingai baigtas, LCD ekrane turėtų būti užrašas „Alarm On Disarmed“. Paspauskite nuotolinio valdymo pulto rankos mygtuką, o LCD ekrane turėtų būti užrašas „Alarm On Armed“, o šviesos diodas turėtų užsidegti, kad žinotumėte, jog jis yra įjungtas, dabar suaktyvinkite jutiklį, kai jis yra įjungtas, LCD ekrane turėtų būti rodoma „Alarm“, po kurio laiko žymė ir jutiklio vietą, pyptelėjimas turėtų skambėti 2 minutes, nebent paspausite išjungimo mygtuką. Jei negaunate šio rezultato, dar kartą patikrinkite 5 veiksme gautus kodus ir ankstesniame žingsnyje atliktus kodo pakeitimus, taip pat iš naujo patikrinkite visų komponentų laidus. Jei skystųjų kristalų ekranas visai neskaito, LCD modulio gale yra kontrasto reguliavimas. Teisingai nustatę kontrastą, jei skystųjų kristalų ekranas vis tiek neskaito, pabandykite eskizo 12 eilutėje pakeisti LCD adresą iš 0x3f į 0x27. LCD trikčių šalinimas čia I2C LCD pamoka

8 žingsnis: RTC modulio laiko nustatymas ir įjungimo bei išjungimo laiko keitimas

Tikimės, kad jūsų RTC jau buvo nustatytas tinkamas laikas, bet jei neatidarėte IDE, pasirinkite „Failas“ir išskleidžiamajame meniu spustelėkite „Pavyzdžiai“, slinkite žemyn iki „DS1307RTC“ir pasirinkite eskizą „SetTime“, atsisiųskite eskizą į savo „Arduino“ir jis nustatys realaus laiko laikrodį su laiku iš jūsų kompiuterio. Tada turėsite iš naujo įkelti „Wireless_Alarm“eskizą į „Arduino“.

Mano pateiktas „Wireless_Alarm.ino“pagal numatytuosius nustatymus nustatys, kad žadintuvas automatiškai įsijungtų kiekvieną vakarą 22.15 val., O kiekvieną rytą - 6.00 val. Norėdami pakeisti šį laiką, pakeiskite eskizą 71 ir 72 eilutėse. Laikas yra skliausteliuose po Alarm.alarmRepeat formatu HH, MM, SS. pakeiskite tai į jums patogų laiką.

Alarm.alarmRepeat (6, 00, 0, MorningAlarm); // GINKLO laikas

Alarm.alarmRepeat (22, 15, 0, EveningAlarm); // ARM laikas

Taigi, norint pakeisti išjungimo laiką į 9.15 val., O įjungimo laiką į 17.30 val., Kodas atrodytų taip

Alarm.alarmRepeat (9, 15, 0, MorningAlarm); // GINKLO laikas

Alarm.alarmRepeat (17, 30, 0, EveningAlarm); // ARM laikas

Jei nenorite, kad žadintuvas įjungtų ir išjungtų automatiškai, padėkite // prieš 2 eilutes ir jos nebus naudojamos.

//Alarm.alarmRepeat(6, 00, 0, MorningAlarm); // GINKLO laikas

//Alarm.alarmRepeat(22, 15, 0, EveningAlarm); // Rankos laikas

Žadintuvo pyptelėjimo laiką galima pakeisti pakeitus 22 eilutę

const ilgas intervalas = 120000; // dėl milisdelsos pavojaus signalo laiko

Intervalas yra milisekundėse, taigi 120000 = 120 sekundžių, pakeitus 120000 į 30000, žadintuvas skambėtų 30 sekundžių.

Solenoidas, skirtas paleisti sireną, blykstės lemputę, didelės apimties pyptelėjimą ir pan., Taip pat gali būti prijungtas prie 7 arba 9 kaiščio ir veiks „intervalu“, kaip nustatyta aukščiau. Atminkite, kad maksimali „Arduino“kaiščio apkrova neturi viršyti 40 mA.

9 veiksmas: papildomos pastabos

Rinkdamiesi „Arduino“433 arba 315 MHz imtuvo modulį, turėtumėte pasirinkti dažnį, kuris atitiktų ketinamus naudoti aliarmo jutiklius. Siūlau įsigyti modulį su mažomis spiralinėmis spiralinėmis antenomis, kad būtų užtikrintas geriausias našumas, o 17,3 mm ilgio tiesios vielos antenos taip pat padidina našumą.

Naudodami 16x2 skystųjų kristalų modulį, turite naudoti 4 kontaktų I2C skystųjų kristalų ekraną, kad galėtumėte naudoti čia pateiktas instrukcijas ir kodą, jis gali būti pagamintas naudojant 16 kontaktų standartinį skystųjų kristalų ekraną, tačiau jis neveiks su čia esančiais laidais ar kodu.

Belaidžiai aliarmo jungikliai, judesio jutikliai ir nuotolinio valdymo pulteliai turi būti 433Mhz arba 315Mhz, kad atitiktų imtuvą, kurį ketinate naudoti, ir turėtų naudoti kodavimą PT2262 arba EV1527.

Signalizaciją galima išplėsti ir pritaikyti, aš jau pridėjau SD kortelę, kad būtų galima įrašyti, kai įjungiami jutikliai, pakeičiau skystųjų kristalų ekraną, kad jis užsidegtų tik tada, kai paspaudžiamas mygtukas, ir pridėjau 100 dB sireną, bet čia neįtraukiau išsamios informacijos, kad straipsnis išliktų kuo trumpesnis ir paprastesnis. Tikiuosi, kad dalijimasis darbu, kurį padariau su šia signalizacija, yra naudingas kitiems.

Malonu atsakyti į visus klausimus.

Dėkoju.

Rekomenduojamas: