Innehållsförteckning:

Arduino trådlöst larmsystem som använder befintliga sensorer: 9 steg (med bilder)
Arduino trådlöst larmsystem som använder befintliga sensorer: 9 steg (med bilder)

Video: Arduino trådlöst larmsystem som använder befintliga sensorer: 9 steg (med bilder)

Video: Arduino trådlöst larmsystem som använder befintliga sensorer: 9 steg (med bilder)
Video: Hur du använder ditt nya larmsystem 2024, Juli
Anonim
Arduino trådlöst larmsystem som använder befintliga sensorer
Arduino trådlöst larmsystem som använder befintliga sensorer
Arduino trådlöst larmsystem som använder befintliga sensorer
Arduino trådlöst larmsystem som använder befintliga sensorer
Arduino trådlöst larmsystem som använder befintliga sensorer
Arduino trådlöst larmsystem som använder befintliga sensorer
Arduino trådlöst larmsystem som använder befintliga sensorer
Arduino trådlöst larmsystem som använder befintliga sensorer

Detta projekt kan byggas på ungefär en halvtimme till en kostnad av cirka $ 20,00 om du har befintliga 433Mhz eller 315Mhz trådlösa larmsensorer.

Det kan också vara ett helt nytt projekt med trådlösa larmsensorer, såsom infraröda rörelsedetektorer och vassströmställare, lätt och billigt tillgängliga online. Sök bara efter 433Mhz eller 315Mhz sensorer som använder PT2262 eller EV1527 kodning.

Jag är säker på att det finns många människor som jag som har köpt ett GSM/2G -larmsystem med trådlösa sensorer och var nöjda med det, men när 2G/GSM -nätet stängdes av där jag bor, stod jag kvar med ett larmsystem jag kunde inte längre programmera eller ens ställa in tiden på den. En dag när jag undrade vad jag kunde göra för att få mitt larm att fungera igen, kom det på mig att kontrollera om en Arduino kunde ta emot signaler från sensorerna. Jag snubblade över en instrukbar https://www.instructables.com/id/Decoding-and-sending-433MHz-RF-codes-with-Arduino-/ och efter några experimenterande bestämde jag att jag kunde ta emot signalerna från mina befintliga sensorer. Jag började processen med att bygga ett larmsystem som kunde ersätta mitt befintliga larm och som också skulle ge ökad funktionalitet. Ett av problemen med det gamla larmet var att faktiskt aldrig veta exakt vilken av de 25 sensorerna som gick av, genom att lägga till en LCD -skärm till min nya larmbyggnad får jag nu text på LCD -skärmen som anger exakt vilken sensor som aktiverades. Det nya larmet kan fortfarande manuellt aktiveras av mina befintliga trådlösa fjärrkontroller och har en realtidsklocka så att det automatiskt kan aktiveras och avaktiveras vid förinställda tider på dygnet.

Tillbehör

Se ytterligare anteckningar i slutet för att säkerställa att du använder rätt version av dessa delar.

Arduino Uno eller liknande

433 eller 315 MHz mottagarmodul för Arduino

DS3231 Real Time Clock -modul för Arduino

I2C 16x2 LDC -modul för Arduino

Trådlösa larmväxlar, rörelsesensorer och fjärrnycklar till önskat läge

Piezo -summer

LED & 220 ohm motstånd

Brödbräda (valfritt men rekommenderas)

Lämplig strömförsörjning för Arduino

Bygelkablar etc.

PC med Arduino IDE installerat

Grundläggande kunskaper i Arduino

Steg 1: Tillbehör

Tillbehör
Tillbehör
Tillbehör
Tillbehör
Tillbehör
Tillbehör

Några bilder ovan av de tillbehör du behöver för detta projekt

Steg 2: Anslut Ardunio och moduler som visas på bilden

Anslut Ardunio och moduler som visas på bilden
Anslut Ardunio och moduler som visas på bilden

Piezo mellan stift 5 på Arduino och jorden

LED mellan stift 8 på Arduino och till ett 220ohm motstånd sedan till jorden

433 eller 315 Mhz mottagare, VCC till 5V, GND till jord och endera en av de 2 datastiften till pin2 på Arduino

I2C 16X2 LCD -modul VCC till 5V, GND till jord, SCL SDA -stift till SCL SDA på Arduino (stift A5 är SCL, stift A4 är SDA)

DS3231 RTC -modul VCC till 5V, GND till jord, SCL SDA -stift till SCL SDA på Arduino (det finns andra uppsättningen ovanför GND- och AREF -stiften på de flesta Arduino)

Jag vet att några av er inte kommer att behöva mer information än detta och skissen som bifogas nedan, men jag kommer att gå in på mer detaljer för alla som vill ha lite ytterligare hjälp.

Steg 3: Lägg till nödvändiga bibliotek i Arduino IDE

Lägg till nödvändiga bibliotek i Arduino IDE
Lägg till nödvändiga bibliotek i Arduino IDE
Lägg till nödvändiga bibliotek i Arduino IDE
Lägg till nödvändiga bibliotek i Arduino IDE
Lägg till nödvändiga bibliotek i Arduino IDE
Lägg till nödvändiga bibliotek i Arduino IDE

Arduino Sketch för att köra larmet använder vissa bibliotek som inte redan är installerade på Arduino IDE som standard.

För att lägga till RCSwitch -biblioteket i Arduino IDE. Öppna Arduino IDE i toppmenyn, välj "Sketch", välj sedan "Inkludera bibliotek" i rullgardinsmenyn och välj "Hantera bibliotek" från nästa rullgardinsmeny. I rutan "Filtrera din sökning" skriver du sedan "RCSW", klickar sedan på installera för "rc-switch by sui77"

Detaljerade instruktioner om hur du lägger till bibliotek på

Medan vi håller på måste vi också lägga till biblioteken som heter Time, TimeAlarms, DS1307RTC och LiquidCrystal_I2C, samma procedur som ovan men söker efter namnet på varje nytt bibliotek och installerar. Se skärmdumpar ovan om du är osäker på vilka bibliotek som ska användas.

Realtidsklockan DS3231 är kompatibel med och använder DS1307RTC-biblioteket.

Steg 4: Nästa måste vi få koderna för dina sensorer

Nästa måste vi få koderna för dina sensorer
Nästa måste vi få koderna för dina sensorer
Nästa måste vi få koderna för dina sensorer
Nästa måste vi få koderna för dina sensorer

Jag har angett mallen för Arduino -koden nedan men du måste hitta värdena för var och en av dina sensorer och klistra in dem i koden.

Det finns omfattande information om hur man får dessa koder på båda dessa platser;

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

github.com/sui77/rc-switch/wiki

Men här är min förkortade version;

För att få koderna som dina sensorer och fjärrnyckelringar skickar, fäst Arduino som monterades i steg 1 till en dator via USB -kabel och öppna Arduino IDE. Gå sedan till Arduino IDE i rullgardinsmenyn "Arkiv", gå sedan till "Exempel", rulla ner listan med exempelskisser tills du hittar "RCSWITCH", välj sedan "ReceiveDemo_Advanced" -skissen och ladda upp den till Arduino. När skissen har laddats upp öppnar du den seriella bildskärmen för Arduino IDE med den fortfarande ansluten till din dator via USB. Aktivera nu den första av sensorerna du vill få koden för, utmatningen från RCSwitch kommer att visas i det seriella bildskärmsfönstret. För det här projektet letar vi efter decimalkoderna som markeras i skärmdump 2. Du kommer att behöva trigga sensorn flera gånger och leta efter det decimalvärde som visas oftast, ibland kommer det att finnas olika värden blandade med sant värde, detta orsakas genom störningar från slumpmässiga radiovågor eller andra enheter som arbetar på samma frekvens.

Notera sensorns decimalkod för användning i nästa steg. Upprepa för alla sensorer och fjärrkontroll som du vill använda i projektet, och håll koll på vilken kod som följer med vilken sensor. Om du använder fjärrkontrollen för att koppla in och frånkoppla larmet måste du notera de olika koder för armknappen och avaktiveringsknappen på varje fjärrkontroll.

Steg 5: Arduino -kodmall

Nedan finns en kopia av min Arduino -kod som en.ino -fil som heter Wireless_Alarm. Du kan klicka på den och den ska öppnas i Arduino IDE. Jag är inte en programmerare min kod är delvis sammansatt från exemplen som finns i Arduino IDE, den är förmodligen inte särskilt elegant men den fungerar och har varit pålitlig under en lång tid.

Kom ihåg att spara skissen igen efter att du har gjort ändringarna för att inkludera koder från dina egna sensorer.

Steg 6: Klistra in de koder som du fick i steg 5 i Arduino -skissen

Nu steg för att anpassa koden för sensorerna och fjärrkontrollerna du använder.

Om du öppnar Wireless_Alarm -skissen i din IDE ser du på rad 111.

if (mySwitch.getReceivedValue () == 115166236) // Fob -armknapp

Om den i den befintliga koden läser 115166236 måste du ersätta det numret med decimalkod för armknappen på fjärrkontrollen som du spelade in i steg 5.

Till exempel om du i steg 5 fick en decimal 1154321 skulle du ändra rad 111 för att nu läsa;

if (mySwitch.getReceivedValue () == 1154321) // Fob -armknapp

Följ samma procedur för rad 125.

if (mySwitch.getReceivedValue () == 115166234) // Fob avaktivera knappkod

Ersätt 115166234 koden för fjärrkontrollens avaktiveringsknapp som du spelade in i steg 5.

Om du vill använda flera fjärrkontroller för att koppla in och frånkoppla, kopiera och klistra in raderna 111 till 136 så många gånger som krävs, ändra sedan värdena så att de passar dina andra fjärrkontroller, men det är bäst att börja med en fjärrkontroll tills du är säker på att du har ändrat skissen fungerar.

Nu till kodning av larmsensorerna i skissen på rad 140

if (ledState == HIGH && mySwitch.getReceivedValue () == 1151640) // Åtgärd för signalsändarens kontorsskåp

Ta ut 1151640 och sätt in decimalvärdet för en av dina larmsensorer.

Sedan på rad 158.

lcd.print (F ("Kontorsskåp")); // skriv ut meddelande till lcd för att veta vilken sensor som aktiverades (och gå och hitta inbrottstjuven:)

Byt kontorsskåp till vad du än vill att ska visas på LCD -skärmen för den sensorn. Till exempel om du vill att den ska läsa kitchendoor får raden att se ut så här;

lcd.print (F ("Kitchendoor")); // skriv ut meddelande till lcd för att veta vilken sensor som var aktiverad (och gå och hitta inbrottstjuven:)

Namnen får inte överstiga 16 tecken.

Mellan rad 165 och 187 finns en mall för att kopiera och klistra in så många gånger som krävs på raderna direkt under 187. Ersätt numret efter mySwitch.getReceivedValue () == med decimalen för en av dina andra sensorer som du spelade in i steg 5 och ändra namn inom "" i lcd.print (F ("sensornamehere")); till det namn du vill ge din sensor.

Om du inte använder fjärrkontroll för att koppla in och avaktivera ditt larm kan du bara ignorera raderna 111-136 eller sätta // i början av var och en av de oönskade raderna och Arduino kommer inte att läsa dem.

Kom ihåg att spara filen efter att du har gjort dina ändringar.

Steg 7: Ladda upp den ändrade.ino till din Arduino och testa

Ladda upp den ändrade.ino till din Arduino och testa
Ladda upp den ändrade.ino till din Arduino och testa
Ladda upp den ändrade.ino till din Arduino och testa
Ladda upp den ändrade.ino till din Arduino och testa
Ladda upp den ändrade.ino till din Arduino och testa
Ladda upp den ändrade.ino till din Arduino och testa

Med Arduino fortfarande ansluten till din PC via USB ladda upp skissen till Arduino Board. När överföringen har slutförts bör LCD -skärmen läsa "Alarm On Disarmed". Tryck på armknappen på din fjärrkontroll och LCD -skärmen ska läsa "Alarm On Armed" och lysdioden ska lysa för att meddela att den är tillkopplad, aktivera nu en sensor medan den är tillkopplad, LCD bör läsa Alarm följ med en tidsstämpel och var sensorn är placerad, bör pipet låta i 2 minuter om du inte trycker på avaktiveringsknappen. Om du inte får detta resultat, kontrollera om koder som du fick i steg 5 och de ändringar du gjorde i koden i föregående steg, kontrollera också kablarna för alla komponenter igen. Om LCD -skärmen inte läser alls finns det en kontrastjustering på LCD -modulens baksida. När kontrasten är korrekt inställd om LCD -skärmen fortfarande inte läser, försök ändra LCD -adressens adress från 0x3f till 0x27 på rad 12 i skissen. LCD -felsökning här I2C LCD -handledning

Steg 8: Ställa in tiden på RTC -modulen och ändra arm- och avkopplingstider

Förhoppningsvis var din RTC redan inställd med rätt tid, men om inte IDE öppnas, välj "File" och klicka på "Exempel" i rullgardinsmenyn, rulla ner till "DS1307RTC" och välj "SetTime" -skissen, ladda ner skissen till din Arduino och det kommer att ställa in realtidsklockan med tiden från din dator. Du måste sedan ladda om Wireless_Alarm -skissen till din Arduino.

Den Wireless_Alarm.ino som jag har tillhandahållit kommer som standard att ställa in larmet att automatiskt aktiveras kl. 22.15 varje kväll och avaktiveras kl. 06.00 varje morgon. För att ändra dessa tider, ändra Skissen på rad 71 och 72. Tiden är inom parentes efter Alarm.alarmRepeat i formatet HH, MM, SS. ändra detta till vilken tid som passar dig.

Alarm.alarmRepeat (6, 00, 0, MorningAlarm); // DISARM -tid

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

Så för att ändra avkopplingstiden till 9.15 och armtiden till 17.30 ser koden ut så här

Alarm.alarmRepeat (9, 15, 0, MorningAlarm); // DISARM -tid

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

Om du inte vill att larmet ska aktiveras och avaktiveras läggs // automatiskt framför de 2 raderna och de kommer inte att användas.

//Alarm.alarmRepeat(6, 00, 0, MorningAlarm); // AVSTÄNGNINGstid

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

Den tid larmsignalen hörs kan ändras genom att rad 22 ändras

konstant långt intervall = 120000; // för millis fördröjning för hur länge alarm ljuder

Intervallet är i millisekunder så 120000 = 120 sekunder, om du ändrar 120000 till 30000 skulle alarmet låta i 30 sekunder.

En solenoid för att köra en siren, stroboskopljus, högvolymsignal etc. kan också kopplas till stift 7 eller stift 9 och körs för "intervallet" enligt ovan. Tänk på den maximala belastningen för en Arduino -stift bör inte överstiga 40mA.

Steg 9: Ytterligare anmärkningar

När du väljer en 433 eller 315 MHz mottagarmodul för Arduino bör du välja frekvensen för att matcha de larmsensorer du tänker använda. Jag föreslår att du köper en modul som levereras med en liten spiralformad antenn för bästa prestanda, alternativt ökar också en 17,3 mm lång rak trådantenn prestanda.

Med 16x2 LCD -modulen måste du använda en 4 -stifts I2C LCD för att använda instruktionerna och koden som jag tillhandahåller här, den kan göras med en 16 -stifts standard LCD men det fungerar inte med ledningarna eller koden här.

Trådlösa larmväxlar, rörelsessensorer och fjärrnycklar bör vara 433Mhz eller 315Mhz för att matcha den mottagare du tänker använda och bör använda PT2262- eller EV1527 -kodning.

Larmet är utbyggbart och anpassningsbart, jag har redan lagt till ett SD -kort för att spela in när sensorer utlöses, modifierat LCD -skärmen för att bara tändas när en knapp hålls och lagt till en 100dB siren, men har inte inkluderat detaljer här för att behålla artikeln som kort och enkelt som möjligt. Jag hoppas att dela med mig av arbetet med detta larm är till någon nytta för andra.

Svarar gärna på alla frågor.

Tack.

Rekommenderad: