Inhoudsopgave:

Arduino draadloos alarmsysteem met bestaande sensoren - Ajarnpa
Arduino draadloos alarmsysteem met bestaande sensoren - Ajarnpa

Video: Arduino draadloos alarmsysteem met bestaande sensoren - Ajarnpa

Video: Arduino draadloos alarmsysteem met bestaande sensoren - Ajarnpa
Video: ARDUINO Ultrasonic sensor alarm system (Nederlands) 2024, November
Anonim
Arduino draadloos alarmsysteem met bestaande sensoren
Arduino draadloos alarmsysteem met bestaande sensoren
Arduino draadloos alarmsysteem met bestaande sensoren
Arduino draadloos alarmsysteem met bestaande sensoren
Arduino draadloos alarmsysteem met bestaande sensoren
Arduino draadloos alarmsysteem met bestaande sensoren
Arduino draadloos alarmsysteem met bestaande sensoren
Arduino draadloos alarmsysteem met bestaande sensoren

Dit project kan in ongeveer een half uur worden gebouwd voor ongeveer $ 20,00 als je bestaande draadloze alarmsensoren van 433 Mhz of 315 Mhz hebt.

Het kan ook een compleet nieuw project zijn met draadloze alarmsensoren, zoals infrarood bewegingsmelders en reed-schakelaars, eenvoudig en goedkoop online verkrijgbaar. Zoek gewoon naar 433Mhz- of 315Mhz-sensoren die PT2262- of EV1527-codering gebruiken.

Ik weet zeker dat er veel mensen zoals ik zijn die een GSM/2G-alarmsysteem met draadloze sensoren hebben gekocht en er blij mee waren, maar toen het 2G/GSM-netwerk werd uitgeschakeld waar ik woon, bleef ik achter met een alarmsysteem dat ik kon niet meer programmeren of zelfs de tijd erop instellen. Op een dag, terwijl ik me afvroeg wat ik kon doen om mijn alarm weer functioneel te maken, kwam het bij me op om te controleren of een Arduino signalen van de sensoren kon ontvangen. Ik struikelde over een instuctable https://www.instructables.com/id/Decoding-and-sending-433MHz-RF-codes-with-Arduino-/ en na wat experimenteren vastgesteld dat ik de signalen van mijn bestaande sensoren kon ontvangen. Ik begon het proces om een alarmsysteem te bouwen dat mijn bestaande alarm zou kunnen vervangen en ook meer functionaliteit zou bieden. Een van de problemen met het oude alarm was dat ik nooit precies wist welke van de 25 sensoren afging, door een LCD-scherm toe te voegen aan mijn nieuwe alarm-build krijg ik nu tekst op het LCD-scherm die precies aangeeft welke sensor is geactiveerd. Het nieuwe alarm kan nog steeds handmatig worden ingeschakeld door mijn bestaande draadloze keyfobs en heeft een realtime klok zodat het automatisch kan in- en uitschakelen op vooraf ingestelde tijden van de dag.

Benodigdheden

Zie aanvullende opmerkingen aan het einde om er zeker van te zijn dat u de juiste versie van deze onderdelen gebruikt.

Arduino Uno of vergelijkbaar

433 of 315 MHz ontvangermodule voor Arduino

DS3231 Real Time Clock-module voor Arduino

I2C 16x2 LDC-module voor Arduino

Draadloos alarm reed-schakelaars, bewegingssensoren en afstandsbedieningen naar wens

Piëzo-zoemer

LED & 220 ohm weerstand

Breadboard (optioneel maar aanbevolen)

Geschikte voeding voor Arduino

Overbruggingsdraden enz

PC met Arduino IDE geïnstalleerd

Basiskennis van Arduino

Stap 1: Benodigdheden

Benodigdheden
Benodigdheden
Benodigdheden
Benodigdheden
Benodigdheden
Benodigdheden

Enkele afbeeldingen hierboven van de benodigdheden die je nodig hebt voor dit project

Stap 2: Sluit de Ardunio en modules aan zoals weergegeven in de afbeelding

Sluit de Ardunio en modules aan zoals weergegeven in de afbeelding
Sluit de Ardunio en modules aan zoals weergegeven in de afbeelding

Piezo tussen pin 5 van de Arduino en aarde

LED tussen pin 8 van de Arduino en naar een 220ohm weerstand en dan naar aarde

433 of 315 Mhz ontvanger, VCC naar 5V, GND naar aarde en een van de 2 data pinnen naar pin2 van de Arduino

I2C 16X2 LCD-module VCC naar 5V, GND naar aarde, SCL SDA-pinnen naar SCL SDA van de Arduino (pin A5 is SCL, pin A4 is SDA)

DS3231 RTC-module VCC naar 5V, GND naar aarde, SCL SDA-pinnen naar SCL SDA van de Arduino (er is een 2e set boven de GND- en AREF-pinnen van de meeste Arduino's)

Ik weet dat sommigen van jullie niet meer informatie nodig hebben dan deze en de onderstaande schets, maar ik zal wat meer in detail treden voor iedereen die wat meer hulp wil.

Stap 3: Voeg noodzakelijke bibliotheken toe aan de Arduino IDE

Voeg noodzakelijke bibliotheken toe aan de Arduino IDE
Voeg noodzakelijke bibliotheken toe aan de Arduino IDE
Voeg noodzakelijke bibliotheken toe aan de Arduino IDE
Voeg noodzakelijke bibliotheken toe aan de Arduino IDE
Voeg noodzakelijke bibliotheken toe aan de Arduino IDE
Voeg noodzakelijke bibliotheken toe aan de Arduino IDE

De Arduino Sketch om het alarm uit te voeren, gebruikt enkele bibliotheken die niet standaard op de Arduino IDE zijn geïnstalleerd.

Om de RCSwitch-bibliotheek toe te voegen aan de Arduino IDE. Open de Arduino IDE in het bovenste menu, selecteer "Sketch" en selecteer vervolgens in de vervolgkeuzelijst "Bibliotheek opnemen" en selecteer in de volgende vervolgkeuzelijst "Bibliotheken beheren". Typ vervolgens in het vak "Filter uw zoekopdracht" "RCSW", klik vervolgens op installeren voor "rc-switch by sui77"

Gedetailleerde instructies voor het toevoegen van bibliotheken op

Terwijl we toch bezig zijn, moeten we ook de bibliotheken toevoegen met de naam Time, TimeAlarms, DS1307RTC en LiquidCrystal_I2C, dezelfde procedure als hierboven, maar zoeken naar de naam van elke nieuwe bibliotheek en installeren. Zie bovenstaande schermafbeeldingen als u niet zeker weet welke bibliotheken u moet gebruiken.

De DS3231 real-time klok is compatibel met en gebruikt de DS1307RTC-bibliotheek.

Stap 4: Vervolgens moeten we de codes voor uw sensoren ophalen

Volgende We moeten de codes voor uw sensoren krijgen
Volgende We moeten de codes voor uw sensoren krijgen
Volgende We moeten de codes voor uw sensoren krijgen
Volgende We moeten de codes voor uw sensoren krijgen

Ik heb de sjabloon van de Arduino-code hieronder verstrekt, maar je moet de waarden voor elk van je sensoren vinden en in de code plakken.

Op beide sites is uitgebreide informatie te vinden over het verkrijgen van deze codes;

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

github.com/sui77/rc-switch/wiki

Maar hier is mijn verkorte versie;

Om de codes te verkrijgen die uw sensoren en afstandsbedieningen verzenden, bevestigt u de Arduino zoals geassembleerd in stap 1 via een USB-kabel op een pc en opent u de Arduino IDE. Ga vervolgens in de Arduino IDE naar de vervolgkeuzelijst "Bestand", ga vervolgens naar "Voorbeelden", blader door de lijst met voorbeeldschetsen totdat u "RCSWITCH" vindt, selecteer vervolgens de schets "ReceiveDemo_Advanced" en upload deze naar de Arduino. Zodra de schets succesvol is geüpload, opent u de seriële monitor van de Arduino IDE met deze nog steeds via USB op uw pc aangesloten. Activeer nu de eerste van de sensoren waarvoor u de code wilt krijgen, de uitvoer van RCSwitch verschijnt in het seriële monitorvenster. Voor dit project zijn we op zoek naar de decimale codes zoals gemarkeerd in screenshot 2. U moet de sensor meerdere keren activeren op zoek naar de decimale waarde die het vaakst voorkomt, soms zijn er verschillende waarden vermengd met de echte waarde, dit wordt veroorzaakt door interferentie van willekeurige radiogolven of andere apparaten die op dezelfde frequentie werken.

Noteer de decimale code van de sensor voor gebruik in de volgende stap. Herhaal dit voor alle sensoren en afstandsbedieningen die je in het project wilt gebruiken, waarbij je bijhoudt welke code bij welke sensor hoort. Als u keyfobs gebruikt om het alarm in en uit te schakelen, moet u de verschillende codes voor de inschakelknop en de uitschakelknop van elke afstandsbediening noteren.

Stap 5: Arduino-codesjabloon

Hieronder staat een kopie van mijn Arduino-code als een.ino-bestand met de naam Wireless_Alarm. Je kunt erop klikken en het zou moeten openen in de Arduino IDE. Ik ben geen programmeur, mijn code is gedeeltelijk samengesteld uit de voorbeelden in de Arduino IDE, het is waarschijnlijk niet bijzonder elegant, maar het werkt wel en is gedurende een lange periode betrouwbaar geweest.

Vergeet niet om de schets opnieuw op te slaan nadat u de wijzigingen hebt aangebracht om de codes van uw eigen sensoren op te nemen.

Stap 6: Plak de codes die u in stap 5 hebt verkregen in de Arduino-schets van de sjabloon

Nu de stappen om de code aan te passen voor de sensoren en afstandsbedieningen die u gebruikt.

Als u de Wireless_Alarm-schets in uw IDE opent, ziet u op regel 111.

if (mySwitch.getReceivedValue() == 115166236) //Fob arm knop code

Waar in de bestaande code 115166236 staat, moet u dat nummer vervangen door een decimale code voor de inschakelknop van uw afstandsbediening die u bij stap 5 hebt genoteerd.

Als u bijvoorbeeld in stap 5 een decimaal 1154321 kreeg, zou u regel 111 wijzigen om nu te lezen;

if (mySwitch.getReceivedValue() == 1154321) //Fob arm knop code

Volg dezelfde procedure voor lijn 125.

if (mySwitch.getReceivedValue () == 115166234) //Fob ontwapeningsknopcode

Vervang 115166234 door de code van de uitschakelknop van uw afstandsbediening die u bij stap 5 hebt genoteerd.

Als u meerdere afstandsbedieningen wilt gebruiken om in en uit te schakelen, kopieer en plak regel 111 tot en met 136 zo vaak als nodig is, verander dan de waarden zodat ze passen bij uw andere afstandsbedieningen, maar het beste is om met één afstandsbediening te beginnen totdat u zeker weet dat uw gewijzigde schets werkt.

Nu naar het coderen van de alarmsensoren in de schets op regel 140

if (ledState == HIGH && mySwitch.getReceivedValue () == 1151640) //Actie voor signaalzender kantoorkast

Haal 1151640 eruit en voer de decimale waarde van een van je alarmsensoren in.

Dan op lijn 158.

lcd.print(F("Kantoorkast")); // print bericht naar lcd om te weten welke sensor is geactiveerd (en ga op zoek naar de inbreker:)

Verander de kantoorkast in wat je maar wilt dat op het LCD-scherm voor die sensor wordt weergegeven. Als u bijvoorbeeld wilt dat er keukendeur op staat, laat de regel er dan zo uitzien;

lcd.print(F("Keukendeur")); // print bericht naar lcd om te weten welke sensor is geactiveerd (en ga op zoek naar de inbreker:)

Namen mogen niet langer zijn dan 16 tekens.

Tussen regel 165 en 187 bevindt zich een sjabloon dat u zo vaak als nodig kunt kopiëren en plakken in de regels direct onder 187. Vervang het getal achter mySwitch.getReceivedValue() == door het decimaalteken van een van uw andere sensoren die u in stap 5 hebt genoteerd en verander de naam binnen de " " in lcd.print(F("sensornamehere")); aan de naam die u uw sensor wilt geven.

Als u geen afstandsbedieningen gebruikt om uw alarm in en uit te schakelen, kunt u regels 111-136 negeren of // aan het begin van elk van de ongewenste regels plaatsen en de Arduino zal ze niet lezen.

Vergeet niet om het bestand op te slaan nadat u uw wijzigingen hebt aangebracht.

Stap 7: Upload de gewijzigde.ino naar uw Arduino en test

Upload de gewijzigde.ino naar uw Arduino en test
Upload de gewijzigde.ino naar uw Arduino en test
Upload de gewijzigde.ino naar uw Arduino en test
Upload de gewijzigde.ino naar uw Arduino en test
Upload de gewijzigde.ino naar uw Arduino en test
Upload de gewijzigde.ino naar uw Arduino en test

Terwijl de Arduino nog steeds via USB op uw pc is aangesloten, uploadt u de schets naar het Arduino-bord. Zodra het uploaden is voltooid, moet het LCD-scherm "Alarm On Disarmed" weergeven. Druk op de inschakelknop op uw afstandsbediening en het LCD-scherm moet "Alarm On Armed" weergeven en de LED moet branden om u te laten weten dat het is ingeschakeld, activeer nu een sensor terwijl het is ingeschakeld, het LCD-scherm moet Alarm lezen, gevolgd door een tijdstempel en de locatie van de sensor, moet de pieper gedurende 2 minuten klinken, tenzij u op de uitschakelknop drukt. Als u dit resultaat niet krijgt, controleer dan opnieuw de codes die u in stap 5 hebt gekregen en de wijzigingen die u in de vorige stap in de code hebt aangebracht, controleer ook de bedrading van alle componenten opnieuw. Als het LCD-scherm helemaal niet leest, is er een contrastaanpassing op de achterkant van de LCD-module. Zodra het contrast correct is ingesteld en het LCD-scherm nog steeds niet leest, probeert u het adres van het LCD-scherm te wijzigen van 0x3f in 0x27 op regel 12 in de schets. LCD-probleemoplossing hier I2C LCD-zelfstudie

Stap 8: De tijd instellen op de RTC-module en de in- en uitschakeltijden wijzigen

Hopelijk was uw RTC al ingesteld met de juiste tijd, maar als u de IDE niet opent, selecteert u 'Bestand' en klikt u in de vervolgkeuzelijst op 'Voorbeelden', scrolt u omlaag naar 'DS1307RTC' en selecteert u de 'SetTime'-schets, downloadt u de schets naar uw Arduino en het zal de real-time klok instellen met de tijd van uw pc. U moet dan de Wireless_Alarm-schets opnieuw laden naar uw Arduino.

De Wireless_Alarm.ino die ik heb geleverd, stelt het alarm standaard in om elke avond om 22.15 uur automatisch in te schakelen en elke ochtend om 6.00 uur uit te schakelen. Om deze tijden te wijzigen, past u de Sketch aan op regel 71 en 72. De tijd staat tussen haakjes na Alarm.alarmRepeat in het formaat HH, MM, SS. verander dit naar een tijdstip dat jou uitkomt.

Alarm.alarmRepeat(6, 00, 0, MorningAlarm); // UITSCHAKELEN tijd

Alarm.alarmRepeat(22, 15, 0, AvondAlarm); // ARM-tijd

Dus om de uitschakeltijd te wijzigen naar 9.15 uur en de inschakeltijd naar 17.30 uur, ziet de code er als volgt uit:

Alarm.alarmRepeat(9, 15, 0, MorningAlarm); // UITSCHAKELEN tijd

Alarm.alarmHerhaal (17, 30, 0, AvondAlarm); // ARM-tijd

Als u niet wilt dat het alarm automatisch in- en uitgeschakeld wordt, plaatst u // voor de 2 regels en ze zullen niet worden gebruikt.

//Alarm.alarmRepeat (6, 00, 0, MorningAlarm); // UITSCHAKELEN tijd

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

De tijd dat de alarmpieper afgaat, kan worden gewijzigd door regel 22. te wijzigen

const lang interval = 120000; // voor millis vertraging voor tijdsduur alarm klinkt

Het interval is in milliseconden, dus 120000 = 120 seconden, het veranderen van 120000 naar 30000 zou het alarm 30 seconden laten klinken.

Een solenoïde om een sirene, stroboscooplicht, pieper met hoog volume enz. te laten werken, kan ook worden aangesloten op pin 7 of pin 9 en werkt gedurende het "interval" zoals hierboven is ingesteld. Houd er rekening mee dat de maximale belasting voor een Arduino-pin niet hoger mag zijn dan 40mA.

Stap 9: Aanvullende opmerkingen

Wanneer u een 433 of 315 MHz ontvangermodule voor Arduino selecteert, moet u de frequentie kiezen die overeenkomt met de alarmsensoren die u wilt gebruiken. Ik raad aan om een module te kopen die wordt geleverd met een kleine spiraalvormige spiraalvormige antenne voor de beste prestaties, of een 17,3 mm lange rechte draadantenne verhoogt ook de prestaties.

Met de 16x2 LCD-module moet u een 4-pins I2C LCD-scherm gebruiken om de instructies en code te gebruiken die ik hier geef, het kan worden gemaakt met een 16-pins standaard LCD-scherm, maar het werkt niet met de bedrading of code hier.

Draadloze reed-schakelaars voor alarmen, bewegingssensoren en afstandsbedieningen moeten 433 Mhz of 315 Mhz zijn om overeen te komen met de ontvanger die u wilt gebruiken en moeten PT2262- of EV1527-codering gebruiken.

Het alarm is uitbreidbaar en aanpasbaar, ik heb al een SD-kaart toegevoegd om op te nemen wanneer sensoren worden geactiveerd, het LCD-scherm aangepast om alleen te branden wanneer een knop wordt ingedrukt en een 100dB-sirene toegevoegd, maar heb hier geen details opgenomen om het artikel zo te houden kort en eenvoudig mogelijk. Ik hoop dat het delen van het werk dat ik aan dit alarm heb gedaan, anderen van nut kan zijn.

Graag antwoord op eventuele vragen.

Bedankt.

Aanbevolen: