Inhoudsopgave:
- Benodigdheden
- Stap 1: Benodigdheden
- Stap 2: Sluit de Ardunio en modules aan zoals weergegeven in de afbeelding
- Stap 3: Voeg noodzakelijke bibliotheken toe aan de Arduino IDE
- Stap 4: Vervolgens moeten we de codes voor uw sensoren ophalen
- Stap 5: Arduino-codesjabloon
- Stap 6: Plak de codes die u in stap 5 hebt verkregen in de Arduino-schets van de sjabloon
- Stap 7: Upload de gewijzigde.ino naar uw Arduino en test
- Stap 8: De tijd instellen op de RTC-module en de in- en uitschakeltijden wijzigen
- Stap 9: Aanvullende opmerkingen
Video: Arduino draadloos alarmsysteem met bestaande sensoren - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:16
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
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
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
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
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
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:
Hoe op IoT gebaseerde domotica te maken met NodeMCU-sensoren Besturingsrelais 14 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Hoe op IoT gebaseerde huisautomatisering te maken met NodeMCU-sensoren Besturingsrelais: In dit op IoT gebaseerde project heb ik huisautomatisering gemaakt met Blynk en NodeMCU besturingsrelaismodule met realtime feedback. In de handmatige modus kan deze relaismodule worden bediend vanaf mobiel of smartphone en handmatige schakelaar. In de automatische modus is deze slimme
De WiFi AutoConnect-functie toevoegen aan een bestaande schets: 3 stappen
De WiFi AutoConnect-functie toevoegen aan een bestaande schets: in een recent bericht leerden we over de AutoConnect-functie voor de ESP32/ESP8266-kaarten en een van de gestelde vragen ging over het toevoegen ervan aan bestaande schetsen. In dit bericht zullen we leren hoe we dat precies kunnen doen en we zullen het netwerktijdproject gebruiken
SanityForce (alarmsysteem- Rpi): 7 stappen
SanityForce (Alarmsysteem- Rpi): Er zijn nu veel manieren om je spullen veilig te houden, of je broers en zussen gewoon uit je kamer te houden, zoals een slot erop zetten of het buiten het bereik van andere mensen houden. Wat als ik je zou vertellen dat je al die basisdingen niet hoeft te doen, maar je kunt veranderen
Bewegingsdetectie alarmsysteem: 11 stappen (met afbeeldingen)
Bewegingsdetectie alarmsysteem: Let op! Reactive Blocks is niet langer beschikbaar om te downloaden. Een eenvoudige USB-camera kan worden gebruikt om beweging in een kamer te detecteren. In de volgende stappen laten we u zien hoe u Reactive Blocks kunt gebruiken om een kant-en-klare Java-toepassing te programmeren die sms-berichten verstuurt
PCB-handheld met Arduino (met een optie om draadloos te gaan!): 3 stappen
PCB-handheld met Arduino (met een optie om draadloos te gaan!): Update 28.1.2019Ik werk momenteel aan de volgende versie van deze handheld. Je kunt het project volgen op mijn YouTube-kanaal of Twitter.Waarschuwing! Ik heb een fout gevonden in de PCB-layout. De linker- en omhoog-knoppen zijn verbonden met alleen analoge pinnen. ik repareerde