SMS gecontroleerd Gate/Garage Remote (4 / 4 stap)

Stap 4: Schrijven van de Code


Eerst en vooral, lees ik de MediaTek LinkIt een Developer's Guide, in het bijzonder de sectie over het ontvangen van sms'en, evenals de API. Ik heb de gids hier bijgevoegd in het geval deze link niet meer werkt.

Ik heb mijn volledige code hier, die moet gewoon werken bijgevoegd. Ik brak het speciaal in kleine functies die gemakkelijk moeten te begrijpen, ik ga door elk van hen hier. Lees de inline-opmerkingen ook voor extra info.

Globale variabelen initialiseren

 #include <LGSM.h> //these variables are used for the LED int ledGreenPin = 13; //I am using the onboard LED as an indicator boolean ledGreenState = LOW; //this is the pin that is connected to the transistor base (via a resistor) int triggerPin = 12; //these variables are for the sms char smsContent[200]; int smsLength = 0; char smsSender[20]; //these variables are for the password const int passwordLength = 20; //number of possible characters in password, remember the null terminator const char password[passwordLength] = "mellon"; //this is the actual password 

Setup functie

De setup-functie wordt één keer uitgevoerd nadat het apparaat is opgestart. De pin die de onboard beheert leidde (D13) en de pin verbonden aan van de transistor base (D12) zijn geïnitialiseerd als uitgang en ingesteld op de standaardwaarden van 0 ("LOW").

De seriële poort wordt geïnitialiseerd met een baudsnelheid van 9600, zodat de foutopsporingsinformatie kan worden uitgeprint.

De waitForSim() functie wordt eenmaal aangeroepen (wordt later beschreven)

 void setup() { //this code runs once at setup pinMode(ledGreenPin, OUTPUT); //initialise LED pinMode(triggerPin, OUTPUT); //initialise PIN digitalWrite(ledGreenPin, ledGreenState); //turn LED off digitalWrite(triggerPin, LOW); //make sure trigger is off (assuming NPN transistor on a pullup input) Serial.begin(9600); //start the serial port waitForSim(); //wait for simcard to be active } 

waitForSim() functie

De waitForSim() functie zit gewoon in een lus, controleren elke halve seconde, gedefinieerd door delay(500), of de SIM-kaart is klaar. De groene LED is uitgeschakeld op/elke controle zodat het knippert en dan links op eenmaal de SIM-kaart klaar is.

 void waitForSim() { //this is just a function to wait until the SIM is ready Serial.print("waiting for sim"); while (!LSMS.ready()) { delay(500); ledGreenState = !ledGreenState; //blink the led digitalWrite(ledGreenPin, ledGreenState); Serial.print('.'); } ledGreenState = HIGH; //turn led on once SIM is ready digitalWrite(ledGreenPin, ledGreenState); Serial.println("Sim Ready"); } 

receiveSms() functie

Deze functie zal controleren of er een nieuwe SMS. Als er een is, is het lezen in, één teken tegelijk en opgeslagen in de buffer smsContent. Als er geen nieuwe SMS retourneert de functie false. Dit kan we noemen het zo vaak als we in de hoofdlus.

Zodra de SMS heeft gelezen het is verwijderd met de opdracht flush().

 boolean receiveSMS() { //this function will store a new sms in the buffers //or return false if there is no new sms int v; if (LSMS.available()) // Check if there is new SMS { Serial.println("There is new message."); LSMS.remoteNumber(smsSender, 20); // store sender in buffer smsLength = 0; //storing a new sms while (true) { v = LSMS.read(); if (v < 0) break; smsContent[smsLength] = v; smsLength++; } smsContent[smsLength] = '\0'; smsLength++; LSMS.flush(); // delete message return HIGH; } else { return LOW; } } 

displaySMS() functie

Deze functie drukt gewoon de afzender en de inhoud buffers op de seriële poort, die handig is voor foutopsporing.

 void displaySMS() { Serial.print("Sender:"); Serial.println(smsSender); Serial.print("Content:"); Serial.println(smsContent); Serial.println(); } 

validatePassword() functie

Deze functie wordt gebruikt om het vergelijken van de inhoud van de SMS met de wachtwoordtekenreeks. Als de inhoud overeenkomt met de tekenreeks, dan is de functie als resultaat 1 (hoog), anders is het resultaat 0 (laag).

 boolean validatePassword() { //this function will return true if the contents of the sms start with the defined password Serial.print("Comparing "); Serial.println(password); Serial.print("with "); Serial.println(smsContent ); if (strcmp(password, smsContent) == 0) { Serial.println("Password Valid"); return HIGH; } else { Serial.println("Password Invalid"); return LOW; } } 

triggerRemote() functie

Functie die deze functie gewoon de D12 pin (transistor base) hoog voor een bepaalde hoeveelheid tijd (1 seconde werkte voor mij stelt, u afstandsbediening misschien liever iets anders)

 void triggerRemote() { //this function will "turn on" the transistor that emulates a button press Serial.println("Emulating button press"); digitalWrite(triggerPin, HIGH); delay(1000); digitalWrite(triggerPin, LOW); Serial.println("Emulating button release"); } 

loop functie

Deze functie is de kern van een Arduino-programma en loopt gewoon over en weer voor alle eeuwigheid. Aangezien alles reeds in functies opgesplitst heeft is het volledig spreekt voor zich.

 void loop() { if (receiveSMS()) { displaySMS(); if (validatePassword()) { triggerRemote(); } } delay(1000); } 

Gerelateerde Artikelen

SMS gecontroleerd Wireless irrigatiesysteem

SMS gecontroleerd Wireless irrigatiesysteem

UPDATE 02/13/11: stemmen is begonnen voor de wedstrijd van Sparkfun Microcontroller. Please VOTE voor mij!UPDATE 02/26/11: Ik heb een tweede prijs gewonnen!! Huzzah! Bedankt voor alle stemmen jongens!UPDATE 03/17/11: Ik zou graag een Laser cutter in
SMS gecontroleerde LED met Linkit One

SMS gecontroleerde LED met Linkit One

een Linkit biedt hier veel mogelijkheden voor transrecieving sinds zijn veelzijdige connectiviteit.Sinds Linkit heeft een ingebouwde SIM-module, we hoeven niet alle externe schild of accessoires.In dit instructable ga ik om u te tonen hoe we kunnen G
Afstandsbediening via GPRS/GSM SMS(Arduino)

Afstandsbediening via GPRS/GSM SMS(Arduino)

afstandsbediening, vooral wanneer deze geen ethernet of Wifi in de openlucht, een zeer diepe dingen in het verleden is geweest. Toen ik een kind was, beeld ik altijd dat ik heb een uitrusting die alle huistoestellen kunt bepalen. Nu, dit wordt een re
BROEIKASGASSEN, RACK SERVERS, AQUARIUM en andere toestellen temperatuur SUPERVISOR met SMS ALARMSYSTEEM met behulp van Arduino, itbrainpower.net 3G / GSM shields en 1WIRE temperatuursensor

BROEIKASGASSEN, RACK SERVERS, AQUARIUM en andere toestellen temperatuur SUPERVISOR met SMS ALARMSYSTEEM met behulp van Arduino, itbrainpower.net 3G / GSM shields en 1WIRE temperatuursensor

Over het projectZelf uw eigen temperatuur controle systeem met MAXIMUM en MINIMUM temperatuur drempelsbouwen, houden levend massages en (oldies maar goldies als) SMS paging en externe ARM/DISARM systeem. U kunt een of meer 1WIRE temperatuur sensor (s
Afstandsbediening een apparaat via SMS met behulp van Arduino, RELAY boards en schilden van c-uGSM of d-u3G

Afstandsbediening een apparaat via SMS met behulp van Arduino, RELAY boards en schilden van c-uGSM of d-u3G

Sommige tijden geleden, ik voelde de behoefte om afstandsbediening voor schakelaar aan en uit sommige buitenverlichting. Op zoek in mijn achtertuin, ik kies sommige onderdelen en ik het opbouwen van deze bundel SMS gecontroleerd RELAY (S).Hier, ik di
Tekst-gecontroleerde Raspberry Pi

Tekst-gecontroleerde Raspberry Pi

Werd ik geïnspireerd om dit instructable door de groversarvesh00 en sumitgrover97 de recente items in de Raspberry Pi wedstrijd 2016. Vele Instructables en tutorials die ik op het internet voor tekst-gecontroleerde Raspberry Pi's gezien heb betrokken
Como controlar VN-LED remotamente con Arduino y Ubidots

Como controlar VN-LED remotamente con Arduino y Ubidots

Luego de realizar kent tutorial podrás controlar el encendido o apagado de un actuador remotamente, desde la plataforma de Ubidots. Nl bibliotheekbestand caso usaremos un LED por facilidad, zonde emabrgo podrás extender bibliotheekbestand tutorial, n
Raspberry Pi - SMS Garage deur Butler

Raspberry Pi - SMS Garage deur Butler

Meeste Raspberry Pi garage deur afstandsbedieningen had open poorten, of andere functies was ik niet ook dol op. Dus ik heb mijn eigen gemaakt die bevat veel meer veiligheid, registratie van die de garage, video-opname, de status van de garage en mee
Digitale klok met behulp van 7 Segment Display gecontroleerd met behulp van TV Remote

Digitale klok met behulp van 7 Segment Display gecontroleerd met behulp van TV Remote

er zijn rassen van digitale klok beschikbaar in ons dagelijks leven. Eenvoudige digitale klok zal meestal hebben sommige gebouwd in functies zoals alarm klok, kalender en thermometer naast de display de klok-informatie. Sommige van de vooraf digitale
PIGate, deur/gate opener van de garage van de web-enabled

PIGate, deur/gate opener van de garage van de web-enabled

Bouwen van een opener van de externe poort met behulp van een expressjs en een Raspberry PiintroductieEr is iets heel bevredigend over te klikken op een web-interface of het raken van een knop op een app en het zien van enkele fysieke gebeurtenis opt
Aergia: Android gecontroleerd TV Remote(with Speech Recognition)

Aergia: Android gecontroleerd TV Remote(with Speech Recognition)

Hebt u ooit geconfronteerd met deze situatie zittend op je favoriete plekje op de Bank of fauteuil, comfortabel kijken naar uw favoriete TV-programma? U bent zonder speling verscholen onder de deken, de airconditioning is aangenaam koel, schijnt de z
Arduino gecontroleerde auto volgsysteem op basis van SMS

Arduino gecontroleerde auto volgsysteem op basis van SMS

Hi ik een Arduino gecontroleerde auto volgsysteem op basis van SMS voor mijn vaders auto maakte.De gebruikte modules zijn;Arduino nano V3.0SkyLab GPS-moduleWaveCom GSM moduleDe SoftwareSerial bibliotheek, TinyGPS worden gebruikt om te communiceren me
Stem gecontroleerde bureaulamp (SMS Notifier)

Stem gecontroleerde bureaulamp (SMS Notifier)

In dit instructable ga ik u tonen hoe te bouwen van een bureaulamp. De lamp is met een draai aan het stem gecontroleerde via android telefoon en daarnaast het kleuren kunt wijzigen. Dit project is vrij gelijkaardig aan mijn oude instructable, met een
Installeer een Extra Garage deur Remote

Installeer een Extra Garage deur Remote

als we onze garage deuropener gekocht, het kwam met twee afstandsbedieningen. Het was genoeg voor 2 personen maar niet voor drie (en die derde persoon zou me). Het werd een beetje vervelend na een tijdje, dat hoeft te ontgrendelen van de achterklep e