Sapsan draadloze bewegingssensoren verbinden met Arduino. Over de bewegingssensor en het aansluiten op Arduino

Sapsan draadloze bewegingssensoren verbinden met Arduino. Over de bewegingssensor en het aansluiten op Arduino

Infraroodsensoren (IR) worden doorgaans gebruikt om afstanden te meten, maar ze kunnen ook worden gebruikt om objecten te detecteren. Door meerdere IR-sensoren op Arduino aan te sluiten, kunnen we een beveiligingsalarm creëren.

Beoordeling

Infraroodsensoren (IR) worden doorgaans gebruikt om afstanden te meten, maar ze kunnen ook worden gebruikt om objecten te detecteren. IR-sensoren bestaan ​​uit een infraroodzender en een infraroodontvanger. De zender zendt pulsen infraroodstraling uit terwijl de ontvanger eventuele reflecties detecteert. Als de ontvanger een reflectie waarneemt, betekent dit dat er zich op enige afstand een object voor de sensor bevindt. Als er geen reflectie is, is er geen object.

De IR-sensor die we in dit project zullen gebruiken, detecteert reflectie binnen een specifiek bereik. Deze sensoren hebben een kleine lineair apparaat Charge-coupled device (CCD), dat de hoek detecteert waaronder IR-straling terugkeert naar de sensor. Zoals weergegeven in de onderstaande afbeelding zendt de sensor een infraroodpuls de ruimte in, en wanneer een object voor de sensor verschijnt, wordt de puls teruggekaatst naar de sensor onder een hoek die evenredig is aan de afstand tussen het object en de sensor. De sensorontvanger detecteert en geeft de hoek door en met behulp van deze waarde kunt u de afstand berekenen.

Door een paar IR-sensoren op de Arduino aan te sluiten, kunnen we een eenvoudig beveiligingsalarm maken. We zullen sensoren installeren deurkozijn en door de sensoren correct uit te lijnen, kunnen we detecteren wanneer iemand door de deur loopt. Wanneer dit gebeurt, zal de output van de IR-sensor veranderen, en we zullen deze verandering detecteren door continu de output van de sensoren te lezen van met behulp van Arduino. IN in dit voorbeeld we weten dat een object door de deur gaat wanneer de uitgangswaarde van de IR-sensor hoger is dan 400. Wanneer dit gebeurt, zal de Arduino een alarm activeren. Om het alarm te resetten, kan de gebruiker op een knop drukken.

Accessoires

  • 2 x IR-afstandssensor;
  • 1 x Arduino Mega 2560;
  • 1 x zoemer;
  • 1 x knop;
  • 1 x 470 Ohm-weerstand;
  • 1 x NPN-transistor;
  • truien.

Aansluitschema

Het diagram voor dit project wordt weergegeven in de onderstaande afbeelding. De uitgangen van de twee IR-sensoren zijn aangesloten op pin A0 en A1. De andere twee pinnen zijn verbonden met de 5V- en GND-pinnen. De zoemer van 12 volt is via een transistor op pin 3 aangesloten en op pin 4 is de knop om het alarm uit te zetten aangesloten.


Op de onderstaande foto is te zien hoe we voor dit experiment de sensoren op een deurkozijn hebben gelijmd. Als je het regelmatig zou gebruiken, zou je de sensoren natuurlijk anders installeren.


Installatie

  1. Verbind de 5V- en GND-pinnen van het Arduino-bord met de stroom- en GND-pinnen van de sensoren. Je kunt ze ook van externe stroom voorzien.
  2. Sluit de uitgangspinnen van de sensoren aan op pinnen A0 en A1 van het Arduino-bord.
  3. Verbind pin 3 van de Arduino met de basis van de transistor via een weerstand van 1k ohm.
  4. Breng 12V aan op de collector van de transistor.
  5. Sluit de positieve draad van de 12-volt zoemer aan op de zender en de negatieve draad op de aardbus.
  6. Verbind pin 4 met pin 5V via een knop. Om veiligheidsredenen en om grote stroomstromen te voorkomen, is het altijd beter om dit via een extra kleine weerstand te doen.
  7. Verbind het Arduino-bord via een USB-kabel met uw computer en laad het programma in de microcontroller met behulp van de Arduino IDE.
  8. Voed het Arduino-bord met een voeding, batterij of USB-kabel/

Code

const int zoemer=3; // pin 3 is de uitvoer naar de zoemer const int pushbutton=4; // pin 4 is de invoer voor de knop void setup() ( pinMode(buzzer,OUTPUT); // stel pin 3 in op output pinMode(drukknop,INPUT); // stel pin 4 in op input ) void loop() ( / / lees de uitvoer van beide sensoren en vergelijk het resultaat met de drempelwaarde int sensor1_value = analogRead(A0); int sensor2_value = analogRead(A1); digitalWrite(zoemer,HIGH) ; // zet het alarm aan if(digitalRead(drukknop) == HOOG) break; else ( digitalWrite(zoemer,LOW); // zet het alarm uit) )

Video

De afgelopen tien jaar hebben autodiefstallen een van de belangrijkste plaatsen ingenomen in de structuur van misdaden die in de wereld worden gepleegd. Dit heeft niet zozeer te maken met de soortelijke ernst van deze categorie diefstal in verhouding tot het totale aantal misdaden, maar met de omvang van de schade die wordt veroorzaakt door de hoge kosten van auto's. De zwakke effectiviteit van de maatregelen die eind jaren negentig op het gebied van de bestrijding van autodiefstal zijn genomen, heeft geleid tot de oprichting van stabiele groepen die gespecialiseerd zijn in het plegen van deze misdaden en het bezitten van onderscheidende kenmerken georganiseerde misdaad; Je hebt waarschijnlijk de term 'zwarte autobedrijf' gehoord. Het wagenpark van Europese landen heeft jaarlijks een tekort aan ≈ 2% van de auto's die het onderwerp worden van criminele aanvallen. Daarom kwam ik op het idee om een ​​GSM-alarm voor mijn auto aan te zetten Arduino-gebaseerd Uno.

Laten we beginnen!

Waarvan gaan we inzamelen?

We moeten het hart van ons systeem kiezen. Naar mijn mening is er voor dergelijke signalering niets beters dan Arduino Uno. Het belangrijkste criterium is een voldoende aantal "pinnen" en prijs.


Belangrijkste kenmerken van Arduino Uno

Microcontroller - ATmega328
Bedrijfsspanning - 5 V
Ingangsspanning (aanbevolen) - 7-12 V
Ingangsspanning (limiet) - 6-20 V
Digitale ingangen/uitgangen - 14 (waarvan 6 kunnen worden gebruikt als PWM-uitgangen)
Analoge ingangen - 6
Gelijkstroom via ingang/uitgang - 40 mA
Constante stroom voor uitgang 3,3V - 50mA
Flash-geheugen - 32 KB (ATmega328) waarvan 0,5 KB wordt gebruikt voor de bootloader
RAM - 2 KB (ATmega328)
EEPROM - 1 KB (ATmega328)
Klokfrequentie - 16 MHz


Past!

Nu moet u een GSM-module selecteren, omdat ons alarmsysteem de auto-eigenaar moet kunnen waarschuwen. Dus je moet het googlen... Hier, een uitstekende sensor - SIM800L, het formaat is gewoonweg geweldig.


Ik dacht en bestelde het uit China. Alles bleek echter niet zo rooskleurig. De sensor weigerde eenvoudigweg de simkaart op het netwerk te registreren. Al het mogelijke werd geprobeerd - het resultaat was nul.
Gevonden goede mensen die mij nog meer heeft gegeven gaaf ding- Sim900-schild. Dit is een serieuze zaak. De Shield beschikt over zowel een microfoon- als koptelefoonaansluiting, waardoor het een volwaardige telefoon is.


Belangrijkste kenmerken van Sim900 Shield

4 bedrijfsfrequentiestandaarden 850/ 900/ 1800/ 1900 MHz
GPRS multi-slot klasse 10/8
GPRS mobiel station klasse B
Voldoet aan GSM fase 2/2+
Klasse 4 (2 W bij 850/900 MHz)
Klasse 1 (1 W @ 1800/1900 MHz)
Besturing met behulp van AT-opdrachten (GSM 07.07, 07.05 en SIMCOM uitgebreide AT-opdrachten)
Laag stroomverbruik: 1,5 mA (slaapmodus)
Bedrijfstemperatuurbereik: -40°C tot +85°C


Past!

Oké, maar je moet metingen doen van sommige sensoren om de eigenaar op de hoogte te stellen. Als de auto wordt weggesleept, verandert de positie van de auto uiteraard in de ruimte. Laten we een versnellingsmeter en een gyroscoop nemen. Geweldig. Oké, nu zijn we op zoek naar een sensor.

Ik denk dat de GY-521 MPU6050 zeker zal passen. Het bleek dat het ook een temperatuursensor heeft. We zouden het ook moeten gebruiken, er zal zo’n “killer feature” zijn. Laten we aannemen dat de eigenaar van de auto deze onder zijn huis parkeerde en vertrok. De temperatuur in de auto verandert “soepel”. Wat gebeurt er als een indringer probeert in te breken in de auto? Hij kan bijvoorbeeld de deur openen. De temperatuur in de auto zal snel beginnen te veranderen naarmate de lucht in de cabine zich met de lucht begint te vermengen omgeving. Ik denk dat het zal werken.


Belangrijkste kenmerken van GY-521 MPU6050

3-assige gyroscoop + 3-assige accelerometermodule GY-521 op een MPU-6050-chip. Hiermee kunt u de positie en beweging van een object in de ruimte bepalen, hoeksnelheid bij het draaien. Het heeft ook een ingebouwde temperatuursensor. Het wordt gebruikt in verschillende helikopters en vliegtuigmodellen; op basis van deze sensoren kan ook een motion capture-systeem worden samengesteld.

Chip - MPU-6050
Voedingsspanning - van 3,5V tot 6V (DC);
Gyrobereik - ±250 500 1000 2000°/s
Bereik accelerometer - ±2±4±8±16g
Communicatie-interface - I2C
Afmeting - 15x20 mm.
Gewicht - 5 g


Past!

Een trillingssensor komt ook van pas. Opeens proberen ze met “brute kracht” de auto te openen, of op de parkeerplaats botst een andere auto tegen jouw auto. Laten we de trillingssensor SW-420 nemen (instelbaar).


Belangrijkste kenmerken van SW-420

Voedingsspanning - 3,3 - 5V
Uitgangssignaal - digitaal hoog/laag (normaal gesloten)
Gebruikte sensor - SW-420
De gebruikte comparator is LM393
Afmetingen - 32x14 mm
Bovendien - Er is een aanpassingsweerstand.


Past!

Schroef de SD-geheugenkaartmodule vast. We zullen ook een logbestand schrijven.


Belangrijkste kenmerken van de SD-geheugenkaartmodule

Met de module kunt u de gegevens die nodig zijn voor de werking van een apparaat op basis van een microcontroller opslaan, lezen en schrijven naar een SD-kaart. Het gebruik van het apparaat is relevant bij het opslaan van bestanden van tientallen megabytes tot twee gigabytes. Het bord bevat een SD-kaarthouder, een kaartstroomstabilisator en een connectorplug voor interface- en stroomleidingen. Als u met audio, video of andere grootschalige gegevens moet werken, bijvoorbeeld een logboek van gebeurtenissen, sensorgegevens of webserverinformatie moet bijhouden, dan maakt de SD-geheugenkaartmodule voor Arduino het mogelijk om een ​​SD-kaart te gebruiken voor deze doeleinden. Met behulp van de module kunt u de kenmerken van de SD-kaart bestuderen.
Voedingsspanning - 5 of 3,3 V
Geheugencapaciteit SD-kaart - tot 2 GB
Afmetingen - 46 x 30 mm


Past!

En laten we een servoaandrijving toevoegen; wanneer de sensoren worden geactiveerd, zal de servoaandrijving met de videorecorder draaien en een video van het incident opnemen. Laten we de MG996R-servoaandrijving nemen.


Belangrijkste kenmerken van MG996R servoaandrijving

Stabiel en betrouwbare bescherming van schade
- Metalen aandrijving
- Dubbelrijig kogellager
- Draadlengte 300 mm
- Afmetingen 40x19x43mm
- Gewicht 55 gram
- Rotatiehoek: 120 graden.
- Bedrijfssnelheid: 0,17 sec/60 graden (4,8 V onbelast)
- Bedrijfssnelheid: 0,13 sec/60 graden (6V onbelast)
- Startkoppel: 9,4 kg/cm bij een voeding van 4,8 V
- Startkoppel: 11 kg/cm met 6V-voeding
- Bedrijfsspanning: 4,8 - 7,2V
- Alle aandrijfonderdelen zijn gemaakt van metaal


Past!

Wij verzamelen

Er zijn een groot aantal artikelen op Google over het aansluiten van elke sensor. En ik heb geen zin om nieuwe fietsen uit te vinden, dus ik laat links naar eenvoudige en werkende opties achter.

Het zijn speciale hardwareplatforms op basis waarvan je er verschillende kunt creëren elektronische apparaten, inclusief en . Apparaten van dit type onderscheiden zich door hun eenvoudige ontwerp en de mogelijkheid om hun bedieningsalgoritmen te programmeren. Dankzij dit gemaakt met behulp van Arduino GSM-alarm, kan maximaal worden aangepast aan het object dat het zal beschermen.

Wat is een Arduino-module?

Arduino's worden geïmplementeerd in de vorm van kleine bordjes met een eigen microprocessor en geheugen. Het bord bevat ook een reeks functionele contacten waarop u verschillende geëlektrificeerde apparaten kunt aansluiten, waaronder sensoren die worden gebruikt voor beveiligingssystemen.

Met de Arduino-processor kunt u een programma laden dat door de gebruiker zelf is geschreven. Door uw eigen unieke algoritme te creëren, kunt u optimale bedrijfsmodi bieden voor beveiligingsalarmen voor verschillende objecten en voor verschillende omstandigheden toepassingen en taken die moeten worden opgelost.

Is het moeilijk om met Arduino te werken?

Arduino-modules zijn zeer populair bij veel gebruikers. Dit werd mogelijk gemaakt door de eenvoud en toegankelijkheid.

Programma's voor het besturen van modules worden geschreven met behulp van reguliere C++ en toevoegingen in de vorm van eenvoudige functies voor het besturen van I/O-processen op modulepinnen. Bovendien kan voor het programmeren de gratis Arduino IDE-software worden gebruikt die onder Windows, Linux of Mac OS werkt.

Met Arduino-modules wordt de procedure voor het assembleren van apparaten aanzienlijk vereenvoudigd. Een GSM-alarmsysteem op Arduino kan worden gemaakt zonder dat er een soldeerbout nodig is - de montage vindt plaats met behulp van een breadboard, jumpers en draden.

Hoe maak je een alarm met Arduino?

De basisvereisten waaraan een doe-het-zelf-gsm-alarmsysteem dat op Arduino is gemaakt, moet voldoen, zijn onder meer:

  • de eigenaar van de inrichting op de hoogte stellen van een inbraak of binnendringing;
  • ondersteuning voor externe systemen zoals geluidssirene, waarschuwingslichten;
  • alarmbediening via sms of oproep;
  • autonome werking zonder externe voeding.

Om een ​​alarm aan te maken heeft u het volgende nodig:

  • Arduino-module;
  • een reeks functionele sensoren;
  • of modem;
  • autonome stroombron;
  • externe actuatoren.

Een onderscheidend kenmerk van Arduino-modules is het gebruik van speciale uitbreidingskaarten. Met hun hulp kunt u alle extra apparaten die nodig zijn voor het samenstellen van de configuratie op Arduino aansluiten beveiligingssysteem. Dergelijke kaarten worden bovenop de Arduino-module geïnstalleerd in de vorm van een "sandwich", en de bijbehorende hulpapparaten worden op de kaarten zelf aangesloten.

Hoe werkt dit?

Wanneer een van de aangesloten sensoren wordt getriggerd, wordt er een signaal verzonden naar de processor van de Arduino-module. Met behulp van de gedownloade gebruikerssoftware verwerkt de microprocessor deze volgens een specifiek algoritme. Als resultaat hiervan kan een commando voor het bedienen van een externe actuator worden gegenereerd, dat ernaar wordt verzonden via de bijbehorende uitbreidingsinterfacekaart.

Om de mogelijkheid te garanderen om waarschuwingssignalen te sturen naar de eigenaar van een huis of appartement dat beveiligd is, wordt er via een uitbreidingsbord een speciale GSM-module op de Arduino-module aangesloten. Er is een simkaart van een van de mobiele providers in geïnstalleerd.

Bij gebrek aan een speciale GSM-adapter kan een gewone zijn rol vervullen. mobiele telefoon. Naast het verzenden van sms-berichten waarin wordt gewaarschuwd voor een alarm en bellen, kunt u dankzij de aanwezigheid van een mobiele verbinding het GSM-alarmsysteem op Arduino op afstand bedienen en de toestand van het object bewaken door speciale verzoeken te sturen.

"Let op!

Om met de eigenaar van het object te communiceren kunnen naast GSM-modules ook gewone modems worden gebruikt, die de communicatie via internet verzorgen.”

In dit geval wordt, wanneer de sensor wordt geactiveerd, het door de processor verwerkte signaal via een modem naar een speciaal portaal of website verzonden. En vanaf de site wordt automatisch een waarschuwings-SMS of mailing naar de gekoppelde e-mail gegenereerd.

Conclusies

Door het gebruik van Arduino-modules kunnen gebruikers zelfstandig GSM-alarmen ontwerpen die met verschillende functionele sensoren kunnen werken en externe apparaten kunnen besturen. Dankzij de mogelijkheid om te gebruiken diverse sensoren De alarmfuncties kunnen aanzienlijk worden uitgebreid en er kan een complex worden gecreëerd dat niet alleen de veiligheid van het object, maar ook de toestand ervan bewaakt. Het zal bijvoorbeeld mogelijk zijn om de temperatuur in de faciliteit te controleren, water- en gaslekken op te sporen, de toevoer ervan af te sluiten in geval van nood, en nog veel meer.

Hallo allemaal, vandaag zullen we kijken naar een apparaat dat bewegingssensor wordt genoemd. Velen van ons hebben hierover gehoord, sommigen hebben zelfs met dit apparaat te maken gehad. Wat is een bewegingssensor? Laten we proberen het uit te zoeken, dus:

Bewegingssensor of verplaatsingssensor - een apparaat (apparaat) dat de beweging van objecten detecteert. Heel vaak worden deze apparaten gebruikt in beveiligings-, alarm- en bewakingssystemen. Er zijn een groot aantal vormen van factoren van deze sensoren, maar we zullen de bewegingssensormodule overwegen voor aansluiting op borden Arduino,en specifiek van het bedrijf RobotDyn. Waarom dit bedrijf? Ik wil geen reclame maken voor deze winkel en zijn producten, maar het waren de producten van deze winkel die als laboratoriummonsters werden gekozen vanwege de hoogwaardige presentatie van hun producten aan de eindgebruiker. Dus we ontmoeten elkaar - bewegingssensor(PIR-sensor) van RobotDyn:


Deze sensoren zijn klein van formaat, verbruiken weinig stroom en zijn gemakkelijk in gebruik. Daarnaast beschikken RobotDyn bewegingssensoren ook over gezeefdrukte contacten, dit is uiteraard een kleinigheidje, maar wel erg prettig. Welnu, degenen die dezelfde sensoren gebruiken, maar alleen van andere bedrijven, hoeven zich geen zorgen te maken: ze hebben allemaal dezelfde functionaliteit, en zelfs als de contacten niet zijn gemarkeerd, is de pinout van dergelijke sensoren gemakkelijk te vinden op internet.

Belangrijkste technische kenmerken van de bewegingssensor (PIR-sensor):

Sensorwerkgebied: van 3 tot 7 meter

Volghoek: tot 110 o

Bedrijfsspanning: 4,5...6 volt

Stroomverbruik: tot 50 µA

Opmerking: De standaardfunctionaliteit van de sensor is uit te breiden door een lichtsensor op de IN- en GND-pinnen aan te sluiten, dan werkt de bewegingssensor alleen in het donker.

Het apparaat initialiseren.

Wanneer ingeschakeld, duurt het bijna een minuut voordat de sensor is geïnitialiseerd. Gedurende deze periode kan de sensor valse signalen geven; hiermee moet rekening worden gehouden bij het programmeren van een microcontroller waarop een sensor is aangesloten, of in actuatorcircuits als de verbinding tot stand wordt gebracht zonder gebruik van een microcontroller.

Detectiehoek en gebied.

De detectie(tracking)hoek is 110 graden, het detectieafstandsbereik is van 3 tot 7 meter, onderstaande illustratie laat het allemaal zien:

Aanpassing van de gevoeligheid (detectieafstand) en tijdsvertraging.

Onderstaande tabel toont de belangrijkste aanpassingen van de bewegingssensor; links bevindt zich een tijdvertragingsregelaar, in de linkerkolom staat een beschrijving van de mogelijke instellingen. De rechterkolom beschrijft de aanpassingen van de detectieafstand.


Sensoraansluiting:

  • PIR-sensor - Arduino Nano
  • PIR-sensor - Arduino Nano
  • PIR-sensor - Arduino Nano
  • PIR-sensor - voor lichtsensor
  • PIR-sensor - voor lichtsensor

Een typisch aansluitschema wordt weergegeven in het onderstaande diagram; in ons geval wordt de sensor conventioneel vanaf de achterkant weergegeven en aangesloten op het Arduino Nano-bord.

Schets die de werking van de bewegingssensor demonstreert (we gebruiken het programma):

/* * PIR-sensor -> Arduino Nano * PIR-sensor -> Arduino Nano * PIR-sensor -> Arduino Nano */ void setup() ( //Breng een verbinding tot stand met de poortmonitor Serial.begin(9600); ) void loop( ) ( //Lezen drempelwaarde vanaf poort A0 //meestal is het hoger dan 500 als er een signaal is if(analogRead(A0) > 500) ( //Signaal van de bewegingssensor Serial.println("Er is beweging!!!"); ) else ( //Geen signaal Serieel. println("Alles is stil...");

De schets is een veel voorkomende test van de werking van de bewegingssensor en heeft veel nadelen, zoals:

  1. Mogelijke valse alarmen, de sensor vereist zelf-initialisatie binnen één minuut.
  2. Stijve binding aan de poortmonitor, geen uitgangsactuators (relais, sirene, LED-indicator)
  3. De signaaltijd aan de sensoruitgang is te kort; wanneer er beweging wordt gedetecteerd, is het noodzakelijk om het signaal programmatisch voor een langere tijd te vertragen.

Door het circuit ingewikkelder te maken en de functionaliteit van de sensor uit te breiden, kunt u de hierboven beschreven nadelen vermijden. Om dit te doen, moet u het circuit aanvullen met een relaismodule en via deze module een gewone lamp van 220 volt aansluiten. De relaismodule zelf wordt aangesloten op pin 3 op het Arduino Nano-bord. Dus het schematische diagram:

Nu is het tijd om de schets waarin de bewegingssensor werd getest enigszins te verbeteren. Het is in de schets dat de vertraging bij het uitschakelen van het relais zal worden geïmplementeerd, omdat de bewegingssensor zelf een te korte signaaltijd aan de uitgang heeft wanneer deze wordt geactiveerd. Het programma implementeert een vertraging van 10 seconden wanneer de sensor wordt geactiveerd. Indien gewenst kan deze tijd worden verhoogd of verlaagd door de waarde van de variabele te wijzigen Vertragingswaarde. Hieronder vindt u een schets en video van het gehele geassembleerde circuit in actie:

/* * PIR-sensor -> Arduino Nano * PIR-sensor -> Arduino Nano * PIR-sensor -> Arduino Nano * Relaismodule -> Arduino Nano */ //relout - pin (uitgangssignaal) voor de relaismodule const int relout = 3 ; //prevMillis - variabele voor het opslaan van de tijd van de vorige programmascancyclus //interval - tijdsinterval voor het tellen van seconden voordat het relais wordt uitgeschakeld. niet-ondertekend lang prevMillis = 0; int-interval = 1000; //DelayValue - de periode waarin het relais in de aan-status wordt gehouden int DelayValue = 10; //initSecond - Iteratievariabele van de initialisatielus int initSecond = 60; //countDelayOff - tijdsintervalteller statische int countDelayOff = 0; //trigger - bewegingssensor triggervlag statische bool trigger = false; void setup() ( //Standaardprocedure voor het initialiseren van de poort waarop de relaismodule is aangesloten //BELANGRIJK!!! - om ervoor te zorgen dat de relaismodule in de aanvankelijk uit-status blijft //en niet wordt geactiveerd tijdens initialisatie, hebt u nodig om //de waarde HIGH naar de input/output-poort te schrijven, voorkomt dit vals "klikken", en // behoudt het de status van het relais zoals het was voordat het hele circuit werd ingeschakeld pinMode(relout, OUTPUT(); relout, HIGH); //Alles is hier eenvoudig - we wachten tot 60 cycli eindigen (initSecond variabele) //die 1 seconde duren, gedurende welke tijd de sensor "zelf initialiseert" voor (int i = 0; i< initSecond; i ++) { delay(1000); } } void loop() { //Считать значение с аналогового порта А0 //Если значение выше 500 if(analogRead(A0) >500) ( //Stel de triggervlag van de bewegingssensor in if(!trigger) (trigger = true; ) ) //Terwijl de triggervlag van de bewegingssensor is ingesteld while(trigger) ( //Execute volgende instructies//Opslaan in de variabele currMillis //de waarde van milliseconden die zijn verstreken sinds het begin van //uitvoering van het programma unsigned long currMillis = millis();

//Vergelijk met de vorige waarde van milliseconden //als het verschil groter is dan het opgegeven interval, dan: if(currMillis - prevMillis > interval) ( //Sla de huidige waarde van milliseconden op in de variabele prevMillis prevMillis = currMillis; // Controleer de vertragingsteller door deze te vergelijken met de waarde van de periode / /waarin het relais in de AAN-status moet worden gehouden if(countDelayOff >= DelayValue) ( ​​//Als de waarde gelijk is, dan: //reset de bewegingssensor trigger flag trigger = false; //Reset de vertragingsteller countDelayOff = 0; // Schakel het relais uit digitalWrite(relout, HIGH) else ( //Als de waarde nog steeds lager is, dan //Verhoog de vertragingsteller met één countDelayOff ++; //Houd het relais in de aan-status digitalWrite(relout, LOW ) ) ) );

Het programma bevat de volgende structuur:

niet-ondertekend lang prevMillis = 0;

...

int-interval = 1000;

niet-ondertekende lange currMillis = millis();

{

if(currMillis - prevMillis > interval)

....

prevMillis = currMillis;

....

}

// Onze activiteiten zijn ingesloten in het lichaam van de structuur Ter verduidelijking is besloten om dit ontwerp afzonderlijk te becommentariëren. Dus, dit ontwerp Hiermee kunt u een parallelle taak in het programma uitvoeren. Het lichaam van de constructie werkt ongeveer één keer per seconde, dit wordt mogelijk gemaakt door de variabele interval . Ten eerste de variabele currMillis de waarde die wordt geretourneerd bij het aanroepen van de functie wordt toegewezen milli () de waarde die wordt geretourneerd bij het aanroepen van de functie wordt toegewezen. Functie retourneert het aantal milliseconden dat is verstreken sinds het begin van het programma. Als het verschil currMillis - vorigeMillis Hiermee kunt u een parallelle taak in het programma uitvoeren. Het lichaam van de constructie werkt ongeveer één keer per seconde, dit wordt mogelijk gemaakt door de variabele groter is dan de waarde van de variabele . Ten eerste de variabele dan betekent dit dat er al meer dan een seconde is verstreken sinds het begin van de uitvoering van het programma, en dat u de waarde van de variabele moet opslaan in een variabele vorige Millis retourneert het aantal milliseconden dat is verstreken sinds het begin van het programma. Als het verschil voer vervolgens de bewerkingen uit die in de hoofdtekst van de structuur zijn opgenomen. Als het verschil Hiermee kunt u een parallelle taak in het programma uitvoeren. Het lichaam van de constructie werkt ongeveer één keer per seconde, dit wordt mogelijk gemaakt door de variabele kleiner dan de variabele waarde

, dan is er nog geen seconde verstreken tussen de scancycli van het programma en worden de bewerkingen in de hoofdtekst van de structuur overgeslagen.

Welnu, aan het einde van het artikel een video van de auteur:

Schakel javascript in om reacties te laten werken.

Laten we beginnen! Voordat je begint, raad ik aan om deze eens te bekijken, minder componenten en grotere autonomie. Dus de “technische specificaties”, de basisvereisten voor signalering:

1) Waarschuw wanneer sensoren worden geactiveerd.
2) Bij stroomuitval moet er voor enige autonomie gezorgd worden.
3) Alarmcontrole via sms en oproepen.

Vanwege het feit dat het proces van het maken van een alarm enkele maanden duurde en sommige verkopers de componenten die bij hen zijn gekocht niet langer verkopen, worden links bijgewerkt naar producten van andere verkopers die het maximale of bijna het maximale aantal productverkopen hebben En beste prijs. De prijzen in de recensie zijn actueel op de datum waarop deze is geschreven.

Lijst met wat je nodig hebt:

Lijst met wijzigingen

GSM_03_12_2016-14-38.hex- vaste werking van het apparaat met de M590-modem.
GSM_05_12_2016-13-45.hex- Memtest-consoleopdracht toegevoegd, waardoor het RAM-gebruik wordt geoptimaliseerd.
GSM_2016_12_06-15-43.hex- toegevoegde uitvoer van opdrachtresultaten naar de console, geheugenoptimalisatie. Bezet: 49% SRAM.
GSM_2016_12_07-10-59.hex- nu worden telefoonnummers correct toegevoegd en verwijderd. Bezet: 49% SRAM, 74% Flash-geheugen.
GSM_2016_12_07-15-38.hex- de mogelijkheid toegevoegd om een ​​bewegingssensor aan te sluiten, aangesloten op pin A0 (in dit geval wordt pin A0 gebruikt als een digitale). SMS-opdrachten toegevoegd PIRON, PIRUit. Bezet: 48% SRAM, 76% Flash-geheugen.
GSM_2016_12_08-13-53.hex- Nu daarna succesvolle implementatie commando dat geen sms-bericht verzendt, knippert de blauwe LED één keer op het apparaat. Nu, na een onjuiste uitvoering van een commando waarbij geen sms-bericht wordt verzonden, knippert het apparaat twee keer met de blauwe LED. Als nu, na het initialiseren van de apparaatparameters, de “stille” modus is ingeschakeld (SendSms = 0), knippert de blauwe LED regelmatig gedurende 2 seconden. Een bug opgelost waardoor het nummer niet altijd uit het geheugen werd verwijderd met behulp van de opdracht DeletePhone. Bezet: 48% SRAM, 78% Flash-geheugen.
GSM_2016_12_11-09-12.hex- Console-opdrachten AddPhone en DeletePhone toegevoegd, de syntaxis is vergelijkbaar met SMS-opdrachten. Geheugenoptimalisatie. Bezet: 43% SRAM, 79% Flash-geheugen.
GSM_2017_01_03-22-51.hex- Er is ondersteuning geïmplementeerd voor vergelijkbare I/O-poortexpanders op de PCF8574-chip, voor het aansluiten van nog eens 8 sensoren, inclusief reed-schakelaars. Automatisch adres zoeken en automatische moduleconfiguratie. De standaardnamen van sensoren en het logische niveau van hun reactie worden gewijzigd met behulp van het commando EditSensor. De inhoud van de alarm-SMS voor de hoofdsensor (pin D0) is gewijzigd: “Alarm! Hoofdsensor! en bewegingssensor (pin A0) “Alarm! PIR-sensor! EditSensor- en I2CScan-opdrachten toegevoegd. Bezet: 66% SRAM, 92% Flash-geheugen.
GSM_2017_01_15-23-26.hex- Ondersteuning voor A6_Mini-modem. Bewaking van de aanwezigheid van externe voeding (pin D7). SMS-opdrachten WatchPowerOn, WatchPowerOff toegevoegd. Console-opdrachten ListConfig, ListSensor toegevoegd. Nu werkt het EditSensor SMS-commando correct. De uitvoer van foutopsporingsinformatie naar de poortmonitor is enigszins verminderd. Bezet: 66% SRAM, 95% Flash-geheugen.
GSM_2017_01_16-23-54.hex- Nu wordt in het antwoordbericht op het SMS-commando “Info” ook de status van de bewegingssensor gerapporteerd. Een bug opgelost waardoor soms lege antwoord-sms-berichten werden verzonden. Nu meldt het apparaat niet alleen over een uitschakeling, maar ook over de hervatting van de externe stroomvoorziening. Alle modems begonnen minder te chatten en nu is de poortmonitor een beetje schoner. Bezet: 66% SRAM, 95% Flash-geheugen.
GSM_2017_02_04-20-23.hex- De fout 'Kijk hoe de stroom wordt ingeschakeld' is opgelost. Nu wordt na het uitschakelen de “alarmpin” uitgeschakeld. Nu, na het verwijderen van een nummer, wordt de juiste informatie weergegeven in de console. Mogelijk een bug opgelost waardoor er soms lege antwoord-SMS-berichten werden verzonden. Bezet: 66% SRAM, 90% Flash-geheugen.
GSM_2017_02_14-00-03.hex- Nu worden er standaard SMS-berichten verzonden, de SendSms-parameter is weer gelijk aan 1. Wanneer de contacten van de hoofdreedsensor nu gesloten zijn (deur sluiten), knippert het apparaat gedurende 2 seconden met een blauwe LED, wat de normale werking aangeeft van de sensor. Bezet: 66% SRAM, 90% Flash-geheugen.
GSM_2017_03_01-23-37.hex- De WatchPowerOn-opdracht is verwijderd. Console-opdracht WatchPowerOff toegevoegd, identiek aan de SMS-opdracht. WatchPowerOn1- en WatchPowerOn2-opdrachten toegevoegd. WatchPowerOn1 - externe stroombewaking is ingeschakeld als het alarm is ingeschakeld, WatchPowerOn2 - externe stroombewaking is altijd ingeschakeld. Hiervoor wordt de functie van in- en uitschakelen door externe apparaten geïmplementeerd; pinnen A1(D15) en A2(D16) worden hiervoor gebruikt. Het alarm wordt in-/uitgeschakeld wanneer een hoog niveau van +5V verschijnt op pin A1(D15) of op pin A2(D16) laag niveau GND. Pin A1(D15) wordt omhoog getrokken naar GND, pin A2(D16) wordt omhoog getrokken naar +5V via weerstanden van 20 (10) kOhm. GuardButtonOn- en GuardButtonOff-opdrachten toegevoegd. Nu, na het inschakelen, knippert de rode LED totdat de integriteit van het hoofdcircuit van de reedschakelaar is gecontroleerd. Als de schakeling intact is, licht de rode LED op. Bezet: 66% SRAM, 95% Flash-geheugen.
GSM_2017_03_12-20-04.hex- Nu is de console nog schoner geworden, maar als de testmodus “TestOn” is ingeschakeld, wordt aanvullende informatie weergegeven in de console. De bug 'Verzonden!' is opgelost; informatie over het verzenden van berichten wordt nu correct weergegeven in de console. De bug "herhaalde valse oproepen" opgelost. Nu zou het saldoverzoek correct moeten werken op alle modems. Bezet: 67% SRAM, 95% Flash-geheugen.
GSM_2017_04_16-12-00.hex- Gecorrigeerd. Nu sturen de opdrachten Info en Geld altijd een antwoord-sms. Het GuardButtonOn-commando is vervangen door de GuardButtonOn1- en GuardButtonOn2-commando's. Bezet: 67% SRAM, 99% Flash-geheugen.
GSM_2017_04_21-09-43.hex - niet aanbevolen voor gebruik, alleen voor testdoeleinden, bedankt voor het identificeren van fouten :) - Nu heeft de parameter sendsms geen invloed op het verzenden van SMS-berichten voor monitoring van het elektriciteitsnet. SMS-commando DelayBeforeGuard toegevoegd, verantwoordelijk voor de vertraging bij het inschakelen, de waarde mag niet langer zijn dan 255 seconden. SMS-commando DelayBeforeAlarm toegevoegd, dat verantwoordelijk is voor het vertragen van het verzenden van meldingen en het inschakelen van de “alarmpin” wanneer sensoren worden geactiveerd; ClearSMS-opdrachten zijn verwijderd, berichten worden nu automatisch verwijderd bij ontvangst. Bezet: 68% SRAM, 100% Flash-geheugen.
GSM_2017_04_22-20-42.hex- Meerdere bugs opgelost. ClearSMS-opdrachten zijn opnieuw aanwezig in de firmware. Geheugenoptimalisatie. Bezet: 68% SRAM, 98% Flash-geheugen.
GSM_2017_04_23-17-50.hex- Nu zou het saldoverzoek correct moeten werken op alle modems. Het in- en uitschakelen met externe apparaten werkt nu correct. SMS-antwoordberichten van de Info-opdracht mogen niet leeg zijn. Geheugenoptimalisatie. Bezet: 68% SRAM, 98% Flash-geheugen.
GSM_2017_04_24-13-22.hex- Stuur nu console-opdrachten naar GSM-module wordt alleen uitgevoerd als de testmodus is ingeschakeld. Nu is er geen onderscheid meer tussen SMS-opdrachten en console-opdrachten; alle bestaande opdrachten kunnen zowel via SMS als via de console worden verzonden. Mogelijk is een bug met het Info-commando opgelost. Geheugenoptimalisatie. Bezet: 68% SRAM, 94% Flash-geheugen.
GSM_2017_04_25-20-54.hex- Een bug opgelost waarbij de ListConfig-opdracht de waarde van de laatste gebeurtenis veranderde. Bij het invoeren van opdrachten via de console worden nu geen onnodige sms-berichten verzonden. Mogelijk is een bug met het Info-commando opgelost. Geheugenoptimalisatie. Bezet: 66% SRAM, 94% Flash-geheugen.
GSM_2017_04_30-12-57.hex- Tijdelijk de uitvoer van aanvullende informatie naar de console mogelijk gemaakt bij het verzenden van sms-berichten en het genereren van een reactie op het Info-commando. Mogelijk is een bug met het Info-commando opgelost. Geheugenoptimalisatie. Bezet: 66% SRAM, 92% Flash-geheugen.
GSM_2017_05_06-11-52.hex- Opgelost met de functie DelayBeforeAlarm. Bezet: 66% SRAM, 93% Flash-geheugen.
GSM_2017_05_23-21-27.hex- De uitvoer van informatie naar de console is enigszins gewijzigd. Ondersteuning toegevoegd voor poortuitbreidingsmodules op PCF8574A met adressen van 0x38 tot en met 0x3f. Bug opgelost c. Nu wordt het apparaat automatisch opnieuw opgestart na de opdrachten FullReset, ResetConfig, ResetPhone en als de opdracht MemTest met succes is uitgevoerd. WatchPowerTime-opdracht toegevoegd. Het is nu mogelijk om de tijd in te stellen waarna een SMS-bericht wordt verzonden waarin wordt aangegeven dat de externe stroombron is uitgeschakeld. Bezet: 67% SRAM, 94% Flash-geheugen.
GSM_2017_05_26-20-22.hex- Initialisatie van het sensorgeheugen van de uitbreidingskaart is opgelost. De syntaxis van de AddPhone-opdracht is gewijzigd. Opdracht EditMainPhone toegevoegd. Het werkingsprincipe van het notificatiesysteem is gewijzigd; wanneer de sensor wordt geactiveerd, worden eerst sms-berichten verzonden, waarna spraakoproepen worden gedaan. Alarm-SMS-berichten worden verzonden naar telefoonnummers met het teken “S” (SMS). Er worden spraakoproepen gedaan naar nummers met het “R”-teken (Ring). Berichten over het in-/uitschakelen van de externe voedingsbron worden verzonden naar telefoonnummers met het teken “P” (Power). RingTime-opdracht toegevoegd. Het is nu mogelijk om de duur van een alarmerende spraakoproep in te stellen; de parameter kan een waarde hebben van 10 tot 255 seconden. De opdracht RingOn/RingOff schakelt nu globaal waarschuwingen voor spraakoproepen in/uit. ResetSensor-opdracht toegevoegd. Bezet: 68% SRAM, 99% Flash-geheugen.
GSM_2017_06_02-17-43.hex- De parameter “I” (Info) is toegevoegd aan de opdrachten AddPhone en EditMainPhone, die verantwoordelijk is voor sms-meldingen over het in- of uitschakelen van het apparaat. Na het toevoegen van het hoofdnummer wordt het apparaat automatisch opnieuw opgestart. Nu kunt u identieke nummers in het geheugen van het apparaat invoeren. Bij het toevoegen van het tweede en volgende dubbele nummer worden de attributen “M”, “S”, “P” en “I” automatisch verwijderd. Deze nummers worden gebruikt voor herhaalde spraakoproepen wanneer de sensoren worden geactiveerd. Een bug met onjuiste console-uitvoer na het uitvoeren van de AddPhone-opdracht is opgelost; nu wordt informatie niet automatisch weergegeven na het toevoegen van een nummer. Herstartopdracht toegevoegd. Bezet: 69% SRAM, 99% Flash-geheugen.
GSM_2017_06_11-00-07.hex- Ook nu, wanneer de contacten van de hoofdreedsensor gesloten zijn (de deur sluiten), knippert het apparaat gedurende 2 seconden met een blauwe LED, wat de normale werking van de sensor aangeeft, maar er wordt geen rekening mee gehouden of het apparaat is ingeschakeld of ontwapend. RingOn/RingOff-opdrachten zijn verwijderd. Nu kan het apparaat worden uitgeschakeld tijdens een alarmoproep; deze wordt nu op de achtergrond gedaan. Bezet: 69% SRAM, 99% Flash-geheugen.
GSM_2017_07_04-21-52.hex- Nu verzendt het pauzecommando geen antwoord-sms. De opdrachten TestOn en TestOff zijn verwijderd. Het Management attribuut is uit alle nummers verwijderd. Bezet: 68% SRAM, 96% Flash-geheugen.
GSM_2017_07_24-12-02.hex- ReedSwitchOn/ReedSwitchOff-opdrachten toegevoegd voor het bewaken van de hoofdrietsensor, nu kan deze op dezelfde manier worden in-/uitgeschakeld als een bewegingssensor. Een bug in de Info-opdracht opgelost. De opdrachten TestOn en TestOff zijn opnieuw aanwezig in de firmware. Bezet: 68% SRAM, 96% Flash-geheugen.
GSM_2017_07_26-10-03.hex- ModemID-opdracht toegevoegd. Automatische detectie van de modem wordt alleen uitgevoerd als de waarde van deze parameter 0 is. Nadat de parameterwaarde op 0 is ingesteld, wordt het apparaat automatisch opnieuw opgestart. Bezet: 68% SRAM, 98% Flash-geheugen.
GSM_2017_08_03-22-03.hex- Nu kan het alarm externe apparaten bedienen. Voor de besturing wordt analoge uitgang A3 gebruikt (D17 - gebruikt als digitaal). Het logische uitgangsniveau (+5V of GND) kan worden gewijzigd via het configuratiecommando; het apparaat zal automatisch opnieuw opstarten. De duur van het besturingssignaal van het externe apparaat kan worden gewijzigd. ExtDeviceLevelLow, ExtDeviceLevelHigh, ExtDeviceTime, Open-opdrachten toegevoegd. Enkele veranderingen in de logica van besturingsopdrachten. Geheugenoptimalisatie. Bezet: 68% SRAM, 99% Flash-geheugen.
GSM_2017_08_10-12-17.hex- De commando's SmsOn/SmsOff, ReedSwitchOn/ReedSwitchOff, PIROn/PIROff en alles wat daarmee samenhangt, zijn verwijderd. Het DelayBeforeAlarm-commando is vervangen door uitgebreide commando's. De uitvoer van het Info-commando gewijzigd. De uitvoer van de ListConfig-opdracht naar de console is geoptimaliseerd. Nu kunnen alle digitale sensoren met hoge of lage responsniveaus, inclusief reed-schakelaars, worden aangesloten op pinnen D6 en A0. Pin D6 en A0 moeten met aarde (GND) worden verbonden via een weerstand van 10 (20) kOhm. Als de sensor is ingesteld op een laag responsniveau (ingeschakeld in reed-schakelaarmodus), wordt de integriteit van het circuit gecontroleerd. Het logische triggerniveau op ingangen D6 en A0 (+5V of GND) kan worden gewijzigd; na het wijzigen van het logische niveau zal het apparaat automatisch opnieuw opstarten. Voor elk van de sensoren (hoofd-, tweede-, PCF-uitbreidingskaart) kan bij activering zijn eigen tijd worden ingesteld, waarna een melding wordt gedaan (SMS en/of spraakoproep). "PIR-sensor" is hernoemd naar "Tweede sensor". De werking van de uitbreidingskaart verholpen, een fout waardoor het apparaat altijd op de hoogte werd gesteld wanneer sensoren werden geactiveerd, ongeacht of het apparaat was ingeschakeld of niet. Nu kunt u een bedrijfsmodus selecteren waarin het apparaat de sensoren van de uitbreidingskaart zowel in de ingeschakelde modus (GuardOn) als in de uitgeschakelde modus (GuardOff) kan controleren. Commando's toegevoegd PCFForceOn/PCFForceOff, MainSensorLevelHigh/MainSensorLevelLow/MainSensorLevelOff, SecondSensorLevelHigh/SecondSensorLevelLow/SecondSensorLevelOff, MainDelayBeforeAlarm, SecondDelayBeforeAlarm, PCFDelayBeforeAlarm. Bezet: 68% SRAM, 99% Flash-geheugen.

*Volgende firmwareversies bevatten wijzigingen ten opzichte van eerdere versies.


Arduino Nano v3-poorten gebruikt

D4- uitgang van een “alarm”-pin; de sensor wordt geactiveerd, op deze pin wordt een signaal op hoog niveau ingesteld
D5- omgekeerde uitgang van de “alarm”-pin; wanneer de sensor wordt geactiveerd, wordt op deze pin een laag niveau-signaal ingesteld

D6- reed-sensor. Vanaf versie GSM_2017_08_10-12-17.hex kunnen alle digitale sensoren met hoge of lage responsniveaus, inclusief reed-schakelaars, op pin D6 worden aangesloten. Pin D6 moet via een weerstand van 10 (20) kOhm naar aarde (GND) worden getrokken.
D7- aangesloten op een spanningsdeler van een externe +5V-voedingsbron. Bovenarm 2,2 kOhm, onderarm 3,3 kOhm.

Spanningsdeler


D8- TX-modem
D9- RX-modem

D10- rode LED
D11- blauwe LED
D12- groene LED

Randapparatuuraansluiting:
A0- bewegingssensor. Vanaf versie GSM_2017_08_10-12-17.hex kunnen alle digitale sensoren met een hoog of laag responsniveau, inclusief reedschakelaars, op pin A0 worden aangesloten. Pin A0 moet via een weerstand van 10 (20) kOhm naar aarde (GND) worden getrokken.

A1- Ingang voor externe bediening. Het alarm wordt in-/uitgeschakeld als er een hoog niveau van +5V op de ingang verschijnt.
A2- Inverse ingang voor externe bediening. Het alarm wordt in-/uitgeschakeld als er een laag GND-niveau op de ingang verschijnt.

A3- Configureerbare (+5V of GND) uitgang voor het aansturen van externe apparaten. Wanneer een besturingscommando wordt ontvangen, verandert de waarde op deze uitgang afhankelijk van wat er gedurende een bepaalde tijd is ingesteld.

A4- SDA I2C
A5- SLC I2C
, voor het aansluiten van nog eens 8 sensoren.


Besturingsopdrachten voor hex-firmware

Aandacht! Teams toegewijd vetgedrukt kunnen alleen worden uitgevoerd vanaf het hoofdnummer, aangezien zij verantwoordelijk zijn voor de apparaatconfiguratie. Andere opdrachten kunnen worden uitgevoerd vanaf getallen met het attribuut “Beheer”.

SMS - besturingsopdrachten zijn niet hoofdlettergevoelig:
Telefoon toevoegen- Voeg een telefoonnummer toe. In totaal kunnen er niet meer dan 9 nummers worden toegevoegd + 1 hoofdnummer, dat automatisch in het geheugen wordt opgeslagen wanneer u het apparaat voor de eerste keer belt nadat u het met opdrachten naar de fabrieksinstellingen heeft teruggezet Telefoon opnieuw instellen of Volledige reset. Die. degene die het apparaat als eerste heeft gebeld nadat het naar de fabrieksinstellingen is teruggezet, is de “master”, dit nummer wordt in de eerste geheugencel ingevoerd en kan niet via sms worden gewijzigd of verwijderd. Het is niet mogelijk om twee identieke nummers toe te voegen.
Voorbeeld commando:



Commandosyntaxis:

Telefoon toevoegen- ploeg
: - scheidingsteken
5 - schrijf naar de vijfde geheugencel
+71234567890 - telefoonnummer
Tot versie GSM_2017_05_26-20-22.hex:
a - Parameter “Alarm” - SMS-berichten worden verzonden naar nummers met deze parameter - berichten over alarmactivering en berichten over in- of uitschakelen.
Vanaf versie GSM_2017_05_26-20-22.hex:
m - Parameter “Beheer” - alarmbeheer is ingeschakeld
s - Parameter “SMS” - er wordt een SMS-bericht verzonden wanneer de sensoren worden geactiveerd
r - Parameter “Ring” - er wordt een spraakoproep gedaan wanneer de sensoren worden geactiveerd
p - “Power” parameter - er wordt een SMS-bericht verzonden wanneer de externe voeding wordt in-/uitgeschakeld
i - “Info” parameter - er wordt een SMS-bericht verzonden bij het in- of uitschakelen
Als de parameters “m”, “s”, “r”, “p”, “i” ontbreken, wordt de telefoon in het geheugen opgeslagen, maar wordt deze op geen enkele manier gebruikt.


Telefoon verwijderen- Verwijder telefoonnummer.
Voorbeeld commando:

Commandosyntaxis:

Telefoon verwijderen - opdracht
: - scheidingsteken
+71234567891 - telefoonnummer


Hoofdtelefoon bewerken- Wijzig de parameters “s”, “r”, “p”, “i” van de hoofdtelefoon, dit nummer wordt opgeslagen in de eerste geheugencel.
Voorbeeld commando:

Commandosyntaxis:

Hoofdtelefoon bewerken - opdracht
: - scheidingsteken
srpi - parameters


SaldoNum- Wijzigen van het saldoverzoeknummer en verwerken van de lengte van het verzoekantwoord. Standaardwaarde voor Beeline: #100#L22.
Voorbeeld commando:

Commandosyntaxis:

BalanceNum - opdracht
: - scheidingsteken
#103# - nummer van saldoaanvraag
L24 - De lengte (len) van het doorgestuurde antwoord is 24 tekens, we hebben spam uit het saldoverzoek verwijderd.


BewerkSensor- Wijzig de naam van de sensor en het logische reactieniveau. Er kunnen in totaal niet meer dan 8 extra sensoren zijn. Na het wijzigen van de parameters moet het apparaat opnieuw worden opgestart.
Voorbeeld commando:
EditSensor:1+Datchik dvizheniya v koridore#h

Commandosyntaxis:

EditSensor - opdracht
: - scheidingsteken
1 - schrijf naar de eerste geheugencel
+ - scheidingsteken
Datchik dvizheniya v koridore - de naam van de sensor mag niet langer zijn dan 36 tekens, inclusief spaties.
#h - Teken van een hoog logisch niveau van de sensor, bij ontvangst hiervan wordt een alarm geactiveerd. Als "#h" ontbreekt, wordt het alarm geactiveerd wanneer een laag logisch niveau wordt ontvangen van de sensor.


Slaaptijd- De tijd waarna het alarm “in slaap valt” bij ontvangst van het SMS-commando “Pauze” wordt aangegeven in minuten. Standaardwaarde: 15, kan niet minder dan 1 of meer dan 60 zijn.
Voorbeeld commando:

Commandosyntaxis:

Slaaptijd - opdracht
: - scheidingsteken
20 - 20 minuten “slaap”.


AlarmPinTime- De tijd gedurende welke de alarm/inverse pin wordt in-/uitgeschakeld, wordt aangegeven in seconden. Standaardwaarde: 60, mag niet minder dan 1 seconde en meer dan 43200 seconden (12 uur) zijn.
Voorbeeld commando:

Commandosyntaxis:

AlarmPinTime - opdracht
: - scheidingsteken
30 - 30 seconden om de alarmpin in/uit te schakelen.


VertragingBeforeGuard- Tijd voordat het apparaat wordt ingeschakeld, na ontvangst van het bijbehorende commando.
Voorbeeld commando:

Commandosyntaxis:

DelayBeforeGuard - opdracht
: - scheidingsteken
25 - 25 seconden vóór het inschakelen


Vertraging vóór alarm- De tijd waarna een SMS-melding “alarm” wordt verzonden als het alarm gedurende deze periode niet is uitgeschakeld. Vervangen door uitgebreide opdrachten vanaf versie GSM_2017_08_10-12-17.hex
Voorbeeld commando:

Commandosyntaxis:

DelayBeforeAlarm - opdracht
: - scheidingsteken
40 - 40 seconden voordat een “alarm”-melding wordt verzonden


Bekijk PowerTime- Tijd in minuten waarna er een SMS-bericht wordt verzonden over het uitschakelen van de externe stroombron. Als de externe stroom wordt hersteld voordat de ingestelde tijd is verstreken, wordt het bericht niet verzonden.
Voorbeeld commando:

Commandosyntaxis:

WatchPowerTime - opdracht
: - scheidingsteken
5 - 5 minuten voordat u een SMS-bericht verzendt


Beltijd- Duur van een alarmerende spraakoproep, de parameter kan een waarde hebben van 10 tot 255 seconden.
Voorbeeld commando:

Commandosyntaxis:

Beltijd - opdracht
: - scheidingsteken
40 - 40 De gespreksduur bedraagt ​​40 seconden, waarna de volgende abonnee wordt gebeld.


ModemID- Geforceerde installatie van het gebruikte modemmodel. Mogelijke waarden: 0 - automatische modemdetectie, 1 - M590, 2 - SIM800l, 3 - A6_Mini.
Voorbeeld commando:

Commandosyntaxis:

ModemID - opdracht
: - scheidingsteken
2 - Modem-ID.


ExtDeviceTime- Het aantal seconden waarmee het signaalniveau op de stuuruitgang van het externe apparaat verandert.
Voorbeeld commando:

Commandosyntaxis:

ExtDeviceTime-opdracht
: - scheidingsteken
5 - 5 seconden


ExtDeviceLevelLaag- Het externe apparaat aangesloten op uitgang A3 wordt aangestuurd door een laag signaalniveau (GND). De uitgang wordt standaard ingesteld op een hoog niveau van +5V totdat een besturingscommando van een extern apparaat wordt ontvangen
ExtDeviceLevelHigh- Een extern apparaat aangesloten op uitgang A3 wordt aangestuurd door een hoog signaalniveau (+5V). De uitgang wordt standaard ingesteld op GND laag totdat een extern apparaatbesturingscommando wordt ontvangen.

ResetSensor- poortuitbreidingssensoren opnieuw instellen

ResetConfig- instellingen terugzetten naar fabrieksinstellingen

Telefoon opnieuw instellen- alles uit het geheugen verwijderen telefoonnummers

Volledige reset- instellingen resetten, alle telefoonnummers uit het geheugen verwijderen, de standaardwaarde van de BalanceNum-opdracht herstellen.

BelAan- notificatie inschakelen door het “hoofd”-nummer te bellen dat in de eerste geheugencel is opgeslagen wanneer de sensor wordt geactiveerd. Verwijderd vanaf versie GSM_2017_06_11-00-07.hex
BelUit- schakel de melding uit door te rinkelen wanneer de sensor wordt geactiveerd. Verwijderd vanaf versie GSM_2017_06_11-00-07.hex

SmsAan- SMS-melding inschakelen wanneer de sensor wordt geactiveerd. Verwijderd vanaf versie GSM_2017_08_10-12-17.hex
SmsUit- schakel de sms-melding uit wanneer de sensor wordt geactiveerd. Verwijderd vanaf versie GSM_2017_08_10-12-17.hex

PIRON- bewegingssensorverwerking inschakelen
PIRUit- bewegingssensorverwerking uitschakelen

ReedSwitchOn- verwerking van de hoofdrietsensor mogelijk maken
ReedSwitchUit- schakel de verwerking van de hoofdrietsensor uit

Bekijk PowerOn- externe stroomregeling inschakelen, er wordt een SMS-bericht verzonden over het uitschakelen van de externe stroom, op voorwaarde dat het alarmsysteem is ingeschakeld. Verwijderd vanaf versie GSM_2017_03_01-23-37.

Bekijk PowerOn1- externe stroomregeling inschakelen, er wordt een SMS-bericht verzonden over het uitschakelen van de externe stroom, op voorwaarde dat het alarmsysteem is ingeschakeld.
Bekijk PowerOn2- externe stroomregeling inschakelen, er wordt in ieder geval een SMS-bericht over externe stroomuitval verzonden

Bekijk PowerOff- schakel de externe stroomregeling uit

GuardButtonAan- alarmbediening door externe apparaten of knop is verwijderd vanaf versie GSM_2017_04_16-12-00.
GuardButtonOn1- functie instellen of verwijderen bescherming door externe apparaten of knop is ingeschakeld
BewakingsknopAan2- functie alleen producties Inschakelen door externe apparaten of de knop wordt ingeschakeld; het uitschakelen gebeurt door het apparaat te bellen of een sms-opdracht te gebruiken.
GuardButtonUit- alarmbediening door externe apparaten of knop is uitgeschakeld

PCForceAan- constante monitoring van een groep van alle uitbreidingsmodulesensoren
PCFForceUit- alleen een groep van alle uitbreidingsmodulesensoren bewaken wanneer het apparaat is ingeschakeld

HoofdSensorNiveauHoog- er wordt een alarmmelding verzonden wanneer er een hoogniveausignaal (+5 V) verschijnt op de ingang (D6) van de sensor
Hoofdsensorniveaulaag- er wordt een alarmmelding verzonden wanneer er een laag niveau-signaal (GND) verschijnt op de ingang (D6) van de sensor
HoofdsensorniveauUit- sensorinvoerverwerking (D6) is uitgeschakeld

TweedeSensorNiveauHoog- er wordt een alarmmelding verzonden wanneer er een hoogniveausignaal (+5 V) verschijnt op de ingang (A0) van de sensor
TweedeSensorNiveauLaag- er wordt een alarmmelding verzonden wanneer er een laag niveau-signaal (GND) verschijnt op de ingang (A0) van de sensor
TweedeSensorNiveauUit- verwerking van de sensoringang (A0) is uitgeschakeld

HoofdVertragingVoorAlarm- de tijd waarna een “alarm” SMS-melding wordt verzonden wanneer de hoofdsensor (D6) wordt geactiveerd, als het alarm gedurende deze periode niet is uitgeschakeld. De syntaxis is hetzelfde als de opdracht DelayBeforeAlarm.
TweedeVertragingVóórAlarm- tijd waarna een “alarm” SMS-melding wordt verzonden wanneer een extra sensor (A0) wordt geactiveerd, als het alarm gedurende deze periode niet is uitgeschakeld. De syntaxis is hetzelfde als de opdracht DelayBeforeAlarm.
PCFDvertraging vóór alarm- de tijd waarna een “alarm”-sms-melding wordt verzonden wanneer de sensoren van de uitbreidingskaart (PCF8574) worden geactiveerd, als het alarm gedurende deze periode niet is uitgeschakeld. De syntaxis is hetzelfde als de opdracht DelayBeforeAlarm.

GuardOn - arm
GuardOff - verwijder de bewaker

Open - commando voor externe apparaatbesturing

Info - controleer de status, naar aanleiding van dit bericht wordt er een SMS verzonden met informatie over welk nummer de beveiliging aan/uit heeft gezet

Pauze - pauzeert het systeem gedurende de tijd die is ingesteld door het slaaptijdcommando in minuten; het systeem reageert niet op sensortriggers.

TestOn - testmodus is ingeschakeld, de blauwe LED knippert.
TestOff - de testmodus is uitgeschakeld.

LedOff - schakelt de stand-by-LED uit.
LedOn - schakelt de stand-by-LED in.

Geld - saldoverzoek.

ClearSms - Verwijder alle sms-berichten uit het geheugen

Console-opdrachten (tot versie GSM_2017_04_24-13-22.hex) - ingevoerd in de Arduino IDE-poortmonitor:

AddPhone - vergelijkbaar met de sms-opdracht AddPhone

DeletePhone - vergelijkbaar met de sms-opdracht DeletePhone

EditSensor - vergelijkbaar met de sms-opdracht EditSensor

ListPhone - uitvoer naar de poortmonitor van een lijst met telefoons die in het geheugen zijn opgeslagen

ResetConfig - vergelijkbaar met de SMS-opdracht ResetConfig

ResetPhone - vergelijkbaar met de sms-opdracht ResetPhone

FullReset - vergelijkbaar met de sms-opdracht FullReset

ClearSms - vergelijkbaar met de ClearSms sms-opdracht

WatchPowerOn1 - vergelijkbaar met de sms-opdracht WatchPowerOn1
WatchPowerOn2 - vergelijkbaar met de sms-opdracht WatchPowerOn2
WatchPowerOff - vergelijkbaar met de WatchPowerOff sms-opdracht

GuardButtonOn - vergelijkbaar met de sms-opdracht GuardButtonOn. Verwijderd vanaf versie GSM_2017_04_16-12-00
GuardButtonOn1 - vergelijkbaar met de sms-opdracht GuardButtonOn1
GuardButtonOn2 - vergelijkbaar met de sms-opdracht GuardButtonOn2
GuardButtonOff - vergelijkbaar met de sms-opdracht GuardButtonOff

Memtest - test van het niet-vluchtige geheugen van het apparaat; alle apparaatinstellingen worden gereset, vergelijkbaar met de opdracht FullReset.

I2CScan - zoek en initialiseer ondersteunde apparaten op de I2C-bus.

ListConfig - geeft de huidige apparaatconfiguratie weer op de poortmonitor.

ListSensor - uitvoer naar de poortmonitor van de huidige sensorconfiguratie.

UPD. Bij gebruik van een bewegingssensor, uit te sluiten valse positieven wanneer de modem in werking is, is dit noodzakelijk tussen pinnen GND En A0 Arduino weerstand bieden, bedankt kameraad
AllowPhone = ("70001234501", "70001234502", "70001234503", "70001234504", "70001234505") - Nummers die de beveiliging mogen beheren.
AlarmPhone = (“70001234501”, “70001234502”) - Nummers voor het verzenden van SMS-meldingen wanneer de sensor wordt geactiveerd en meldingen over in- of uitschakelen. Het eerste nummer in de lijst wordt gebeld wanneer de sensor wordt geactiveerd als het RingOn-commando standaard wordt uitgevoerd; deze optie is ingeschakeld. Dit wordt gedaan omdat SMS-berichten met enige vertraging kunnen arriveren, maar de oproep onmiddellijk moet worden doorgegeven.

Als er een oproep wordt ontvangen van een geautoriseerd nummer of een SMS-bericht met het GuardOn/GuardOff-commando, dan is dit afhankelijk van huidige staat beveiliging wordt een SMS-bericht over het in- of uitschakelen verzonden naar de nummers die in de AlarmPhone-array staan ​​vermeld, en er wordt ook een SMS-bericht verzonden naar het nummer waar de oproep vandaan kwam.

Wanneer de sensor wordt geactiveerd Er worden SMS-berichten verzonden naar alle nummers uit de AlarmPhone-array (lijst) en er wordt een spraakoproep gedaan naar het eerste nummer uit deze array.

Lichtindicatie:
De LED brandt rood - hij is ingeschakeld.
De LED brandt groen - uitgeschakeld, aan-/uitgezet via SMS-commando LedOn/LedOff.
De LED knippert constant blauw - dit geeft aan dat alles in orde is met de Arduino, het bord is niet bevroren, het wordt uitsluitend gebruikt voor foutopsporing, het wordt in- en uitgeschakeld door de SMS-opdracht TestOn/TestOff.
* De code bevat de LedTest()-functie, deze knippert met een blauwe LED, deze is alleen gemaakt om de Arduino te monitoren, knippert - het betekent dat hij werkt, knippert niet - hij is bevroren. Nog niet opgehangen :)

NIET relevant!

2 of meer sensoren aansluiten voor open firmware (geldt alleen voor deze firmware sketch_02_12_2016.ino)
Om extra reed-sensoren aan te sluiten, gebruiken we vrije digitale pinnen D2, D3, D5 of D7. Aansluitschema met extra sensor op D7.

Noodzakelijke wijzigingen in de firmware
... #define DoorPin 6 // Ingangsnummer aangesloten op de hoofdsensor int8_t DoorState = 0; // Variabele voor het opslaan van de status van de hoofdsensor int8_t DoorFlag = 1; // Variabele voor het opslaan van de status van de hoofdsensor #define BackDoorPin 7 // Ingangsnummer aangesloten op de extra sensor int8_t BackDoorState = 0; // Variabele voor het opslaan van de status van de extra sensor int8_t BackDoorFlag = 1; // Variabel om de status van de extra sensor op te slaan...
void setup() ( ... pinMode(DoorPin, INPUT); pinMode(BackDoorPin, INPUT); ...
... void Detect() ( // Waarden lezen van sensoren DoorState = digitalRead(DoorPin); BackDoorState = digitalRead(BackDoorPin); // Verwerking van de hoofdsensor als (DoorState == LAAG && DoorFlag == 0) ( DoorFlag = 1; vertraging(100); if (LedOn == 1) digitalWrite(GLed, LOW); (DoorState == HOOG && DoorFlag == 1)( DoorFlag = 0; vertraging(100); ) //Verwerking van extra sensor if (BackDoorState == LAAG && BackDoorFlag == 0) ( BackDoorFlag = 1; vertraging(100); if (LedOn == 1) digitalWrite(GLed, LOW); Alarm(); ) if (BackDoorState == HOOG && BackDoorFlag = = 1)( BackDoorFlag = 0; vertraging(100); ) ) ...

En nog een ding:
1. Het is beter om diodes te gebruiken die geschikt zijn voor een stroomsterkte van 2 A, aangezien de module een stroomsterkte van 1 A voert en we de Arduino en de modem nog steeds van stroom moeten voorzien. Deze instantie gebruikt 1N4007-diodes; deze falen, vervang ze door 2 A-diodes.
2. Ik heb alle weerstanden voor de LED op 20 kOhm gebruikt, om 's nachts niet de hele gang te verlichten.
3. Ik heb ook een weerstand van 20 kOhm op de reed-sensor geplaatst tussen de GND-pin en de D6-pin.

Dat is alles voor nu. Bedankt voor uw aandacht! :)

Ik ben van plan +207 te kopen Toevoegen aan favorieten Ik vond de recensie leuk +112 +243
bekeken