Stap 7: De ontvanger
Mijn ontvanger is niet een afgewerkte eenheid voor dit systeem, het is eerder een eerder project dat ik aangepast heb om te fungeren als een ontvanger. De eenheid bestaat uit een kale Arduino ATmega328p gemonteerd in een kunststof behuizing met een I2C 16 x 2 LCD-scherm, een 240 v wisselstroom 10A Relais, een RGB LED, een zoemer en een NRF24L01 transceiver. Het idee is hier is dat wanneer een alarmsignaal wordt ontvangen het LCD-scherm wordt een bericht weergegeven en knippert samen met een RGB LED, de geluiden zoemer en het Relais schakelt over op een schijnwerper van de veiligheid of iets ook hoge aangedreven.
Mijn ontvanger bevat ook een ander Arduino Uno met Ethernet-Shield die is geprogrammeerd om toegang tot een online service genaamd Twilio die een SMS-bericht naar mijn mobiele telefoon stuurt. Echter, ik zal mij concentreren alleen op het circuit van ATmega328p ontvanger, wilt u deze functionaliteit toevoegen aan uw apparaat dan hoofd naar hier om te leren hoe. Mijn code laat zien hoe ik een digitale uitgang van het circuit van ATmega328p ontvanger heb verstuurd naar de Arduino Uno de verzenden SMS code activeren. Merk ook dat mijn ontvanger beschikt over een 4-weg relais boord, maar mijn code alleen maakt gebruik van een van die Relais.
Als we een kijkje nemen op de code:
Wij stellen hier een exemplaar voor de LCD display 'lcd' genoemd. De headerbestanden die opgenomen zijn allemaal deel uit van de LiquidCrystal_I2C bibliotheek gevonden hier.
Wij stel vervolgens up de NRF24L01-exemplaar met behulp van dezelfde methode als de eenheid van de zender ervoor te zorgen dat we de dezelfde pipe-adressen gebruiken.
Het volgende deel van de code definieert verschillende variabelen voor de schets. De duur van het alarm en de zoemer duur zijn configureerbaar hier - Ik heb de zoemer duur ingesteld op 0 op dit moment zoals het drijft mijn vrouw gekke elke keer dat ik testen :)
De code van de verzoekinstellingen configureert de GPIO pinnen, verschijnt een bericht op het LCD-scherm en knippert de groene LED tien keer. Vervolgens configureert de NRF24L01 met het dezelfde gegevenssnelheid en kanaal als de zender en begint met het luisteren naar binnenkomende overbrengingen.
De hoofdlus roept over en weer gewoon de checkRadio() functie.
De functie checkRadio() werkt gewoon door het controleren van de gegevens ontvangen en als die gegevens gelijk aan 1 is dan springen aan de triggerAlarm() functie.
De triggerAlarm() functie in de eerste plaats signaal een tekst bericht naar mijn andere Arduino (niet inbegrepen in dit Instructable). Dan de rest is wat wordt genoemd niet-blokkerende code om te laten werken met vertragingen, en eigenlijk klinkt het alarm voor een vooraf bepaalde duur (ALARM_DURATION) voordat u het systeem terugkeert naar een 'gewapende' staat.
Veel plezier!