Inhoudsopgave:
- Stap 1: Voeding
- Stap 2: Digitale ingangen
- Stap 3: Digitale uitgangen
- Stap 4: Microcontroller-oscillator
- Stap 5: Indicatie-LED's
- Stap 6: Microprocessor resetcircuit
- Stap 7: SIM800L-module
- Stap 8: De microcontroller
- Stap 9: SRAM-geheugen optimaliseren
- Stap 10: Software seriële buffergrootte
- Stap 11: Het pc-bord maken
- Stap 12: Montage van de printplaat
- Stap 13: Programmeren van de AtMega328p
- Stap 14: Het apparaat aansluiten
- Stap 15: Initiële installatie
- Stap 16: SMS-opdrachten
Video: Arduino gebaseerde GSM/SMS afstandsbediening - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
! ! ! KENNISGEVING !
Omdat de lokale gsm-toren in mijn regio wordt geüpgraded, kan ik deze GSM-module niet langer gebruiken. De nieuwere toren ondersteunt geen 2G-apparaten meer. Daarom kan ik geen steun meer geven aan dit project.
Met zo'n breed scala aan GSM-modules beschikbaar voor de hobbyist, hebben de meesten van ons er een gekocht. Ik kocht lokaal een SIM800L-module en speelde uiteindelijk met de verschillende opdrachten van de module.
Met behulp van de Arduino Uno en de Arduino IDE kon ik mijn ideeën omzetten in realiteit. Dit ging niet gemakkelijk, met het ENKEL GROOTSTE PROBLEEM dat de beperking van slechts 2KB SRAM was. Na veel onderzoek op internet en verschillende fora heb ik deze beperking kunnen overwinnen.
Verschillende programmeertechnieken, een veel beter begrip van de Arduino-compiler en het gebruik van de SIM-kaart en EEPROM voor extra geheugen, hebben dit project gered. Na enkele wijzigingen in de code werd een stabiel prototype gebouwd en gedurende een week getest.
Een nadeel van het beperkte SRAM was dat het toestel niet kon worden voorzien van een display en gebruikerstoetsen. Dit resulteerde in een volledige herschrijving van de code. Omdat er geen gebruikersinterface was, was de enige optie om door te gaan met het project, het gebruik van sms-berichten om zowel de unit als de gebruikers te configureren.
Dit bleek een spannend project te zijn en naarmate de ontwikkeling vorderde, werden er meer toekomsten toegevoegd.
Mijn belangrijkste doel was om bij de Arduino Uno te blijven, of in dit geval de ATMEGA328p, en geen componenten voor opbouwmontage te gebruiken. Dit maakt het voor het grote publiek gemakkelijker om de eenheid te kopiëren en te bouwen.
Specificatie van de eenheid:
- Er kunnen maximaal 250 gebruikers op het apparaat worden geprogrammeerd
- Vier digitale uitgangen
- Vier digitale ingangen
- Elke uitgang kan worden geconfigureerd als een PULSE- of AAN/UIT-uitgang
- De duur van de uitgangspuls kan worden ingesteld tussen 0,5.. 10 seconden
- Elke ingang kan worden geconfigureerd om te worden geactiveerd bij wijzigingen van UIT naar AAN.
- Elke ingang kan worden geconfigureerd om te activeren op AAN naar UIT-wijzigingen
- Elke ingangsvertragingstijd kan worden ingesteld tussen 0 seconden en 1 uur
- SMS-berichten voor wijzigingen op de ingangen kunnen naar 5 verschillende gebruikers worden verzonden
- Namen en statusteksten voor elke ingang kunnen door de gebruiker worden ingesteld
- Namen en statusteksten voor elke uitgang kunnen door de gebruiker worden ingesteld
- Eenheid kan worden geconfigureerd om SIM-kaartsaldoberichten te ontvangen via USSD-berichten.
- Alle gebruikers kunnen I/O-statusupdates van de unit aanvragen
- Alle gebruikers kunnen individuele uitgangen bedienen via sms-berichten
- Alle gebruikers kunnen individuele uitgangen bedienen door de unit te bellen
Veiligheidsvoorzieningen
- De eerste installatie van het apparaat kan alleen worden uitgevoerd terwijl u zich bij het apparaat bevindt.
- De eerste installatie kan alleen worden uitgevoerd door de MASTER USER
- Initiële setup-opdrachten worden automatisch uitgeschakeld na tien minuten.
- Alleen oproepen en sms-berichten van bekende gebruikers kunnen het apparaat bedienen
- Gebruikers kunnen alleen de uitgangen bedienen die aan hen zijn toegewezen door de MASTER USER
Andere mogelijkheden
- Oproepen naar dit toestel zijn gratis, omdat de oproep nooit wordt beantwoord.
- Wanneer de unit wordt gebeld, wordt de oproep pas na 2 seconden afgebroken. Dit is een bevestiging voor de beller dat het toestel op de oproep heeft gereageerd.
- Als de SIM-kaartserviceprovider USSD-berichten ondersteunt, kan de HOOFDGEBRUIKER het saldo opvragen. Het USSD-bericht met het saldo wordt vervolgens doorgestuurd naar de MASTER USER.
Stap 1: Voeding
Om ervoor te zorgen dat de unit kan worden aangesloten op standaard beveiligingssystemen (alarmsystemen, elektrische garagedeuren, elektrische poortmotoren), wordt de unit gevoed met 12V DC die normaal beschikbaar is op dergelijke systemen.
De voeding wordt toegepast op 12V IN- en 0V-klemmen en wordt beschermd door een 1A-zekering. Extra 12V OUT-aansluitingen zijn beschikbaar en worden ook beschermd door de zekering.
Diode D1 beschermt de unit tegen omgekeerde polariteit aansluitingen op de 12V lijnen.
Condensatoren C1 en C2 filteren eventuele ruis op de 12V-voedingslijnen. De 12V-voeding wordt gebruikt om de relais van de unit van stroom te voorzien.
De 5V-voeding bestaat uit een LM7805L-spanningsregelaar en levert een stabiele +5V die nodig is voor de SIM800L GSM-module, evenals de microprocessor. Condensatoren C3 en C4 filteren eventuele ruis uit de +5V-voedingslijn. Er werden relatief grote elektrolytische condensatoren gebruikt, aangezien de SIM800L GSM-module behoorlijk wat stroom verbruikt bij het zenden.
Er is geen koellichaam nodig op de spanningsregelaar.
Stap 2: Digitale ingangen
De digitale ingangssignalen zijn allemaal 12V en moeten worden aangesloten op de 5V-microcontroller. Hiervoor worden optocouplers gebruikt om de 12V-signalen van het 5V-systeem te isoleren.
De ingangsweerstand van 1K beperkt de ingangsstroom naar de opto-coupler tot ongeveer 10mA.
Vanwege ruimtebeperkingen was er geen ruimte beschikbaar op de printplaat voor 5V pull-up weerstanden. De microcontroller is ingesteld om de invoerpinnen zwakke pull-ups mogelijk te maken.
Als er geen signaal aanwezig is op de ingang (LOW) van de opto coupler, zal er geen stroom vloeien door de opto coupler LED. De optokoppeltransistor wordt dus uitgeschakeld. De zwakke pull-up van de microcontroller zal de collector naar bijna 5V trekken en zal door de microcontroller als een logische HIGH worden gezien.
Met 12V toegepast (HOOG) op de ingang van de optocoupler, zal ongeveer 10mA door de optocoupler-LED stromen. De optokoppeltransistor wordt dus ingeschakeld. Dit zal de collector naar bijna 0V trekken en door de microcontroller als een logisch LAAG worden gezien.
Merk op dat de ingang die door de microcontroller wordt gezien, omgekeerd is in vergelijking met de 12V-ingang.
Normale code om de invoerpin te lezen ziet er als volgt uit:
boolean Input = digitalRead (inputpin);
Gebruik de volgende code om het geïnverteerde signaal te corrigeren:
boolean Input = !digitalRead(inputpin); // Merk op ! voor de lees
Nu komt de ingang die door de microcontroller wordt gezien overeen met de ingang op de 12V-ingang.
Het laatste ingangscircuit bestaat uit 4 digitale ingangen. Elke ingang is verbonden met klemmen op de printplaat.
Stap 3: Digitale uitgangen
Normaal gesproken, met een circuit dat slechts een minimum aantal relais aanstuurt, is de beste manier om een transistorstuurcircuit te gebruiken zoals weergegeven. Het is eenvoudig, goedkoop en effectief.
De weerstanden bieden pull-down naar aarde en transistorbasisstroombegrenzing. De transistor wordt gebruikt om de beschikbare stroom te verhogen om een relais aan te drijven. Met slechts 1mA getrokken uit de microcontrollerpin, kan de transistor een belasting van 100mA schakelen. Meer dan genoeg voor de meeste soorten relais. De diode is een terugslagdiode die het circuit beschermt tegen hoogspanningspieken tijdens het schakelen van relais. Het extra voordeel van het gebruik van deze schakeling is dat de bedrijfsspanning van het relais kan verschillen van de spanning van de microcontroller. Dus in plaats van een 5V-relais te gebruiken, kan men elke DC-spanning tot 48V gebruiken.
Introductie van de ULN2803
Hoe meer relais een project vereist, hoe hoger het aantal componenten. Dit maakt het PCB-ontwerp moeilijker en kan waardevolle PCB-ruimte in beslag nemen. Maar het gebruik van een transistorarray, zoals de ULN2803, zal zeker helpen om de PCB-grootte klein te houden. De ULN2803 is bij uitstek geschikt voor 3,3V- en 5V-ingangen van een microcontroller en kan relais tot 48V DC aansturen. Deze ULN2803 heeft 8 afzonderlijke transistorcircuits, elk circuit is uitgerust met alle componenten die nodig zijn om een relais te schakelen.
Het uiteindelijke uitgangscircuit bestaat uit een ULN3803, die 4 12V DC uitgangsrelais aanstuurt. Elk contact van het relais is beschikbaar op de klemmen van de printplaat.
Stap 4: Microcontroller-oscillator
Oscillator Circuit
De microcontroller heeft een oscillator nodig om correct te kunnen functioneren. Om bij het Arduino Uno-ontwerp te blijven, zal het circuit gebruik maken van de standaard 16MHz-oscillator. Er zijn twee opties beschikbaar:
Kristal
Deze methode maakt gebruik van een kristal dat is aangesloten op twee laadcondensatoren. Dit is de meest voorkomende optie.
resonator
Een resonator is in feite een kristal en twee laadcondensatoren in een enkele 3-pins behuizing. Dit vermindert het aantal componenten en vergroot de beschikbare ruimte op de printplaat.
Om het aantal componenten zo laag mogelijk te houden, heb ik ervoor gekozen om een 16MHz resonator te gebruiken.
Stap 5: Indicatie-LED's
Wat zal een circuit zijn zonder enkele LED's? Op de printplaat is een voorziening gemaakt voor LED's van 3 mm.
1K-weerstanden worden gebruikt om de stroom door de LED te beperken tot minder dan 5mA. Bij gebruik van 3 mm hoge heldere LED's is de helderheid uitstekend.
Voor een gemakkelijke interpretatie van de status-LED's worden twee kleuren gebruikt. Door de twee LED's te combineren met knipperende indicaties, kan heel veel informatie worden verkregen uit slechts twee LED's.
Rode LED
De rode LED wordt gebruikt om storingscondities, lange vertragingen en eventuele onjuiste commando's aan te geven.
Groene LED
De groene LED wordt gebruikt om gezonde en/of correcte invoer en commando's aan te geven.
Stap 6: Microprocessor resetcircuit
Om veiligheidsredenen zijn sommige functies van het apparaat alleen beschikbaar in de eerste 10 minuten na het inschakelen van het apparaat.
Met een resetknop hoeft de stroom naar het apparaat niet te worden uitgeschakeld om het apparaat te resetten.
Hoe het werkt
De 10K-weerstand houdt de RESET-lijn dicht bij 5V. Wanneer de knop wordt ingedrukt, wordt de RESET-lijn naar 0V getrokken, waardoor de microcontroller in reset blijft. Wanneer de knop wordt losgelaten, keert de RESET-regel terug naar %v, waardoor de microcontroller opnieuw wordt ingesteld.
Stap 7: SIM800L-module
Het hart van de unit is de SIM800L GSM-module. Deze module gebruikt slechts 3 I/O-pinnen op de microcontroller.
De module is via een standaard seriële poort verbonden met de microcontroller.
- Alle commando's naar de unit worden verzonden via de seriële poort met behulp van standaard AT-commando's.
- Bij een inkomende oproep, of wanneer een SMS wordt ontvangen, wordt de informatie via de seriële poort naar de microcontroller gestuurd met behulp van ASCII-tekst.
Om ruimte te besparen is de GSM-module via een 7-pins header aangesloten op de printplaat. Dit maakt het verwijderen van de GSM-module eenvoudig. Hierdoor kan de gebruiker ook gemakkelijk de simkaart aan de onderkant van de module plaatsen/verwijderen.
Een actieve simkaart is vereist en de simkaart moet sms-berichten kunnen verzenden en ontvangen.
Installatie van de SIM800L GSM-module
Bij het opstarten van het apparaat wordt de reset-pin van de GSM-module een seconde naar beneden getrokken. Dit zorgt ervoor dat de GSM module pas opstart nadat de voeding gestabiliseerd is. Het duurt een paar seconden voordat de GSM-module opnieuw is opgestart, dus wacht 5 seconden voordat u AT-commando's naar de module verzendt.
Om ervoor te zorgen dat de GSM-module is geconfigureerd om correct te communiceren met de microcontroller, worden de volgende AT-commando's gebruikt tijdens het opstarten:
BIJ
gebruikt om te bepalen of een GSM-module beschikbaar is
AT+CREG?
Polling van deze opdracht totdat de GSM-module is geregistreerd op het mobiele telefoonnetwerk
AT+CMGF=1
Stel de SMS-berichtmodus in op ASCII
AT+CNMI=1, 2, 0, 0, 0
Als SMS beschikbaar is, stuur dan de SMS-gegevens naar de seriële poort van de GSM-module
AT+CMGD=1, 4
Alle op de simkaart opgeslagen sms-berichten verwijderen
AT+CPBS=\"SM
Stel het telefoonboek van de GSM-module in op de simkaart
AT+COPS=2, dan AT+CLTS=1, dan AT+COPS=0
Stel de tijd van de GSM-module in op de netwerktijd van de mobiele telefoon
Wacht 5 seconden totdat de tijd is ingesteld
AT+CUSD=1
USSD-berichtenfunctie inschakelen
Stap 8: De microcontroller
De microcontroller is een standaard AtMega328p, dezelfde als die op de Arduino Uno wordt gebruikt. De code is dus met beide vergelijkbaar. Om een gemakkelijke on-board programmering mogelijk te maken, is een 6-pins programmeerheader beschikbaar op de printplaat.
De verschillende secties van de unit zijn verbonden met de microprocessor en omvatten het volgende:
- Vier digitale ingangen
- Vier digitale uitgangen
- de oscillator
- Twee indicatie-LED's
- Reset circuit
- SIM800L GSM-module
Alle communicatie van en naar de GSM-module wordt gedaan met behulp van de SoftwareSerial()-functie. Deze methode werd gebruikt om de belangrijkste seriële poort vrij te maken voor de Arduino IDE tijdens de ontwikkelingsfase.
Met slechts 2 KB SRAM en 1 KB EEPROM is er niet genoeg geheugen om meer dan een paar gebruikers op te slaan die aan het apparaat kunnen worden gekoppeld. Om de SRAM vrij te maken, wordt alle gebruikersinformatie opgeslagen op de simkaart van de GSM-module. Met deze opstelling kan de unit maximaal 250 verschillende gebruikers bedienen.
Configuratiegegevens van het apparaat worden opgeslagen in EEPROM, waardoor gebruikersgegevens en systeemgegevens van elkaar worden gescheiden.
Er zijn nog verschillende I/O-pinnen beschikbaar, maar de optie om een LCD-scherm en/of toetsenbord toe te voegen was niet mogelijk vanwege de grote hoeveelheid SRAM die wordt gebruikt door de ontvangst- en verzendbuffers van SoftWareSerial().
Vanwege het ontbreken van een gebruikersinterface op het apparaat, worden alle instellingen en gebruikers geprogrammeerd met behulp van sms-berichten.
Stap 9: SRAM-geheugen optimaliseren
Vrij vroeg in de ontwikkelingsfase rapporteerde de Arduino IDE een laag SRAM-geheugen bij het compileren van de code. Er werden verschillende methoden gebruikt om dit te ondervangen.
Beperk de ontvangen gegevens op de seriële poort
De GSM-module rapporteert alle berichten aan de microcontroller op de seriële poort. Bij het ontvangen van sommige SMS-berichten kan de totale lengte van het ontvangen bericht meer dan 200 tekens bedragen. Dit kan snel alle beschikbare SRAM op de AtMega-chip opslokken en stabiliteitsproblemen veroorzaken.
om dit te voorkomen, worden alleen de eerste 200 tekens van ELK bericht dat van de GSM-module wordt ontvangen, gebruikt. Het onderstaande voorbeeld laat zien hoe dit wordt gedaan door de ontvangen tekens in variabele Teller te tellen.
// scan naar gegevens van de seriële softwarepoort
//----------------------------------------------- RxString = ""; Teller = 0; while(SSerial.available()){ vertraging(1); // korte vertraging om tijd te geven voor het plaatsen van nieuwe gegevens in de buffer // get new character RxChar = char(SSerial.read()); // voeg eerste 200 karakters toe aan string if (Counter <200) { RxString.concat(RxChar); Teller = Teller + 1; } }
Serial.print() code verminderen
Hoewel handig tijdens de ontwikkeling, kan de Arduino Serial Monitor veel SRAM gebruiken. De code is ontwikkeld met zo min mogelijk Serial.print()-code. Nadat een deel van de code is getest om te werken, is alle Serial.print()-code uit dat deel van de code verwijderd.
Serial.print(F(("")) code gebruiken
Veel informatie die normaal op de Arduino Serial Monitor wordt weergegeven, is logischer wanneer beschrijvingen worden toegevoegd. Neem het volgende voorbeeld:
Serial.println("Wachten op specifieke acties");
De tekenreeks "Wachten op specifieke acties" is vast en kan niet worden gewijzigd.
Tijdens het compileren van de code zal de compiler de string "Wachten op specifieke acties" in het FLASH-geheugen opnemen.
Bovendien ziet de compiler dat de tekenreeks een constante is, die wordt gebruikt door de instructie "Serial.print" of "Serial.println". Tijdens het opstarten van de micro wordt deze constante ook in het SRAM-geheugen geplaatst.
Door het voorvoegsel "F" in Serial.print()-functies te gebruiken, vertelt het de compiler dat deze tekenreeks alleen beschikbaar is in FLASH-geheugen. Voor dit voorbeeld bevat de tekenreeks 28 tekens. Dit zijn 28 bytes die in SRAM kunnen worden vrijgemaakt.
Serial.println(F("Wachten op specifieke acties"));
Deze methode is ook van toepassing op de SoftwareSerial.print()-opdrachten. Omdat de GSM-module werkt met AT-commando's, bevat de code talrijke SoftwareSerial.print("xxxx")-commando's. Door het voorvoegsel "F" te gebruiken, werd bijna 300 bytes SRAM vrijgemaakt.
Gebruik niet de hardware seriële poort
Na codefoutopsporing werd de seriële hardwarepoort uitgeschakeld door ALLE Serial.print()-opdrachten te verwijderen. Dit maakte een paar extra bytes SRAM vrij.
Zonder dat er Serial.print()-commando's in de code achterbleven, werd nog eens 128 bytes SRAM beschikbaar gesteld. Dit werd gedaan door de hardware seriële poort uit de code te verwijderen. Dit vergrootte de 64-byte verzend- en 64-byte ontvangstbuffers.
// Serieel.begin (9600); // hardware seriële poort uitgeschakeld
EEPROM gebruiken voor strings
Voor elke input en output moesten drie strings worden opgeslagen. Dit zijn de kanaalnaam, de tekenreeks wanneer het kanaal aan staat en de tekenreeks wanneer het kanaal uit is.
Met in totaal 8 I/O-kanalen zullen hun
- 8 strings met de kanaalnamen, elk 10 karakters lang
- 8 strings die het kanaal Op beschrijving bevatten, elk 10 karakters lang
- 8 strings met de kanaal Off-beschrijving, elk 10 tekens lang
Dit adverteert tot 240 bytes SRAM. In plaats van deze strings op te slaan in SRAM, worden ze opgeslagen in EEPROM. Dit maakte nog eens 240 bytes SRAM vrij.
String met de juiste lengtes declareren
Variabelen worden normaal gesproken aan het begin van de code gedeclareerd. Een veelgemaakte fout bij het declareren van een stringvariabele is dat we de string niet declareren met het juiste aantal karakters.
Tekenreeks GSM_Nr = "";
String GSM_Name = ""; Tekenreeks GSM_Msg = "";
Tijdens het opstarten wijst de microcontroller geen geheugen toe in SRAM voor deze variabelen. Dit kan later instabiliteit veroorzaken wanneer deze strings worden gebruikt.
Om dit te voorkomen, declareert u de tekenreeksen met het juiste aantal tekens dat de tekenreeks in de software zal gebruiken.
Tekenreeks GSM_Nr = "1000000000";
Tekenreeks GSM_Name = "2000000000"; Tekenreeks GSM_Msg = "3000000000";
Merk op dat ik de strings niet met dezelfde karakters heb aangegeven. Als je deze strings allemaal declareert met bijvoorbeeld "1234567890", zal de compiler dezelfde string in de drie variabelen zien en alleen voldoende geheugen toewijzen in het SRAM voor een van de strings.
Stap 10: Software seriële buffergrootte
In de volgende code zult u merken dat er maximaal 200 tekens kunnen worden gelezen van de seriële softwarepoort.
// scan naar gegevens van de seriële softwarepoort
//----------------------------------------------- RxString = ""; Teller = 0; while(SSerial.available()){ vertraging(1); // korte vertraging om tijd te geven voor het plaatsen van nieuwe gegevens in de buffer // get new character RxChar = char(SSerial.read()); // voeg eerste 200 karakters toe aan string if (Counter <200) { RxString.concat(RxChar); Teller = Teller + 1; } }
Dit vereist ook een buffer van minimaal 200 bytes voor de seriële softwarepoort. standaard is de seriële poortbuffer van de software slechts 64 bytes. Zoek naar het volgende bestand om deze buffer te vergroten:
SoftwareSerial.h
Open het bestand met een teksteditor en wijzig de buffergrootte in 200.
/******************************************************************************
* Definities ********************************************** ******************************/ #ifndef _SS_MAX_RX_BUFF #define _SS_MAX_RX_BUFF 200 // RX-buffergrootte #endif
Stap 11: Het pc-bord maken
Het pc-bord is ontworpen met behulp van de freeware-versie van Cadsoft Eagle (ik geloof dat de naam is veranderd).
- PC Board is een enkelzijdig ontwerp.
- Er worden geen componenten voor opbouwmontage gebruikt.
- Alle componenten zijn op de printplaat gemonteerd, inclusief de SIM800L-module.
- Geen externe componenten of aansluitingen nodig
- Draadjumpers zijn verborgen onder componenten voor een strakker uiterlijk.
Ik gebruik de volgende methode om pc-borden te maken:
- De afbeelding van de printplaat wordt afgedrukt op Press-n-Peel met behulp van een laserprinter.
- De Press-n-Peel wordt vervolgens op een schoon stuk pc-board geplaatst en met wat tape vastgezet.
- De afbeelding van de printplaat wordt vervolgens overgebracht van de Press-n-Peel naar de lege printplaat door de printplaat door een laminator te halen. Voor mij werkt 10 passen het beste.
- Nadat de printplaat is afgekoeld tot kamertemperatuur, wordt de Press-n-Peel langzaam van de printplaat getild.
- De printplaat wordt vervolgens geëtst met behulp van ammoniumpersulfaatkristallen opgelost in heet water.
- Na het etsen worden de blauwe Press-n-Peel en zwarte toner verwijderd door de geëtste printplaat te reinigen met wat aceton.
- Het bord wordt vervolgens op maat gesneden met een Dremel
- Gaten voor alle doorlopende componenten worden geboord met een boor van 1 mm.
- De klemschroefverbindingen worden geboord met een boor van 1,2 mm.
Stap 12: Montage van de printplaat
De montage wordt gedaan door eerst de kleinste componenten toe te voegen en door te werken naar de grootste componenten.
Alle componenten die in deze Instructable worden gebruikt, met uitzondering van de SIM800-module, waren afkomstig van mijn lokale leverancier. Denkt aan hen omdat ze altijd voorraad hebben. Kijk eens op hun Zuid-Afrikaanse websie:
www.shop.rabtron.co.za/catalog/index.php
OPMERKING! Soldeer eerst de twee jumpers onder het ATMEGA328p IC
De volgorde is als volgt:
- Weerstanden en diode
- Reset knop
- IC-aansluitingen
- Spanningsregelaar
- Header pinnen
- Kleine condensatoren
- LED's
- Zekeringhouder
- Klemmenblokken
- relais
- Elektrolytische condensatoren
Voordat u de IC's plaatst, sluit u het apparaat aan op 12V en test u of alle spanningen correct zijn.
Bedek ten slotte de koperen kant van de printplaat met wat blanke lak om deze tegen de elementen te beschermen.
Als de lak is opgedroogd, plaats je de IC's, maar laat je de GSM-module staan totdat de AtMega is geprogrammeerd.
Stap 13: Programmeren van de AtMega328p
# # Firmware-upgrade naar versie 3.02 # #
Ingeschakeld SMS om naar MASTER USER te worden verzonden wanneer de stroomvoorziening naar het apparaat is hersteld
Ik gebruik een Arduino Uno met een programmeerschild om het apparaat te programmeren. Raadpleeg deze Instructable voor meer informatie over het gebruik van een Arduino Uno als programmeur:
Arduino UNO als AtMega328P-programmeur
De GSM-module moet van de printplaat worden verwijderd om toegang te krijgen tot de programmeerkop. Zorg ervoor dat u de antennedraad niet beschadigt bij het verwijderen van de GSM-module.
Sluit de programmeerkabel aan tussen de programmer en de unit met behulp van de programmeerkop op de printplaat en upload de schets naar de unit.
De externe 12V voeding is niet nodig om de unit te programmeren. De printplaat wordt via de programmeerkabel van stroom voorzien door de Arduino.
Open het bijgevoegde bestand in de Arduino IDE en programmeer het op het apparaat.
Verwijder na het programmeren de programmeerkabel en plaats de GSM-module.
Het apparaat is nu klaar voor gebruik.
Stap 14: Het apparaat aansluiten
Alle aansluitingen op de unit gebeuren via de schroefklemmen.
Het apparaat van stroom voorzien
Zorg ervoor dat u een geregistreerde simkaart in de GSM-module hebt geplaatst en dat de simkaart sms-berichten kan verzenden en ontvangen.
Sluit een 12V DC-voeding aan op de 12V IN en een van de 0V-aansluitingen. Eenmaal ingeschakeld, gaat de rode LED op de printplaat branden. Over ongeveer een minuut zou de GSM-module verbonden moeten zijn met het mobiele telefoonnetwerk. De rode LED gaat uit en een rode LED op de GSM-module knippert snel.
Zodra dit stadium is bereikt, is het apparaat klaar om te worden geconfigureerd.
Ingangsaansluitingen
De digitale ingangen werken op 12V. Om een ingang aan te zetten, moet er 12V op de ingang worden gezet. Als u de 12V verwijdert, wordt de ingang uitgeschakeld.
Uitgangsaansluitingen
Elke uitgang bestaat uit een wisselcontact. Sluit elk contact naar wens aan.
Stap 15: Initiële installatie
De eerste installatie van het apparaat moet worden uitgevoerd om ervoor te zorgen dat alle parameters zijn ingesteld op de fabrieksinstellingen en dat de SIM-kaart moet worden geconfigureerd om gebruikersinformatie in het juiste formaat te accepteren.
Omdat alle opdrachten op sms zijn gebaseerd, hebt u een andere telefoon nodig om de installatie uit te voeren.
Voor de eerste installatie moet u bij de unit zijn.
Stel het MASTER USER telefoonnummer in
Aangezien alleen de HOOFDGEBRUIKER de unit kan configureren, moet deze stap eerst worden uitgevoerd.
- Het apparaat moet worden gevoed.
- Druk kort op de Reset-knop en wacht tot de rode LED op de printplaat uitgaat.
- De NET-LED op de GSM-module knippert snel.
- De unit is nu klaar om de initiële setup-commando's te accepteren. Dit dient binnen 10 minuten te gebeuren.
- Stuur een SMS-bericht met MASTER, beschrijving naar het telefoonnummer van de unit.
- Indien ontvangen, knippert de groene LED op de printplaat twee keer.
- De MASTER USER is nu geprogrammeerd.
Het apparaat terugzetten naar de fabrieksinstellingen
Nadat de MASTER USER is geprogrammeerd, moeten de instellingen van het apparaat worden ingesteld op de fabrieksinstellingen.
- Stuur een SMS-bericht met alleen CLEARALL naar het telefoonnummer van de unit.
- Indien ontvangen, knipperen de groene en rode LED op de printplaat afwisselend eenmaal per seconde. Het apparaat is hersteld met de fabrieksinstellingen.
- Alle instellingen zijn teruggezet naar de fabrieksinstellingen.
- Druk kort op de Reset-knop om het apparaat opnieuw op te starten.
De simkaart formatteren
De laatste stap is om alle informatie die op de SIM-kaart is opgeslagen te wissen en deze te configureren voor gebruik in dit toestel.
- Druk kort op de Reset-knop en wacht tot de rode LED op de printplaat uitgaat.
- De NET-LED op de GSM-module knippert snel.
- De unit is nu klaar om de initiële setup-commando's te accepteren. Dit moet binnen 10 minuten gebeuren.
- Stuur een SMS-bericht met alleen ERASESIM naar het telefoonnummer van de unit.
- Indien ontvangen, zal de groene LED op de printplaat drie keer knipperen.
De unit is nu geconfigureerd en klaar voor gebruik.
Stap 16: SMS-opdrachten
Er zijn drie verschillende soorten commando's die door het apparaat worden gebruikt. Alle opdrachten worden verzonden via sms en hebben allemaal het volgende formaat:
COMMANDO,,,,,
- Alle commando's, behalve de NORMAL USER-commando's, zijn hoofdlettergevoelig.
- Parameters zijn niet hoofdlettergevoelig.
Initiële setup-opdrachten
MASTER, naam
Het telefoonnummer van de SMS-afzender wordt gebruikt als het MASTER USER-telefoonnummer. hier kan een beschrijving voor de unit worden toegevoegd.
WIS ALLES
Reset het apparaat naar de fabrieksinstellingen
CLEARSIM
Wis alle gegevens van de simkaart
RESET
Start het apparaat opnieuw op
MASTER USER Commando's voor het configureren van de unit
OUTMODE, c, m, t OPMERKING ! ! ! NOG NIET GEIMPLEMENTEERD
Stel specifieke kanalen in voor PULSE, TIMED of LATCHING-uitgangen. t is de tijdsduur in minuten voor TIMED-uitgangen
PULS, cccc
Stel specifieke kanalen in op PULSED-uitgangen. Indien niet ingesteld, worden kanalen ingesteld als LATCHING-uitgangen.
PULSETIME, t Stelt de duur van de pulsuitgang in seconden in (0.. 10s)
INGANG, cccc
Stel kanalen in die moeten worden geactiveerd en stuur een sms-bericht wanneer de status verandert van UIT naar AAN
INGANG UIT, cccc
Stel kanalen in die moeten worden geactiveerd en stuur een sms-bericht wanneer de status verandert van AAN naar UIT
INTIME, c, t
Stelt de ingangsvertragingstijd in voor het detecteren van statuswijzigingen in seconden
INTEXT, ch, naam, aan, uit
Stel de naam van elk ingangskanaal in, aan tekst en uit tekst
OUTTEXT, ch, naam, aan, uit
Stel de naam van elk uitgangskanaal in, aan tekst en uit tekst
Toevoegen, locatie, nummer, Calloutputs, SMSoutputs, inputs
Voeg gebruiker toe aan SIM-kaart op geheugen 'locatie', met uitvoer- en invoerkanalen toegewezen aan de gebruiker
Del, locatie
Verwijder gebruiker uit simkaartgeheugen 'locatie'
Kanaal naam
Zal output pulseren met de naam ChannelName
ChannelName, onText of ChannelName, offText
Zal output aan/uit zetten met de naam van ChannelName, en onText/offText
Normale gebruikerscommando's voor het besturen van de unit
???? Verzoek update van I/O-status. Status-sms wordt naar de afzender verzonden.
Kanaal naam
Zal output pulseren met de naam ChannelName
ChannelName, onText
Zet de uitgang aan met de naam van ChannelName en statustekst opText
ChannelName, offText Schakelt de uitvoer uit met de naam ChannelName en statustekst offText
Raadpleeg het bijgevoegde PDF-document voor een meer gedetailleerde beschrijving van de opdrachten.
Aanbevolen:
Op LoRa gebaseerde afstandsbediening - Apparaten bedienen vanaf grote afstanden: 8 stappen
Op LoRa gebaseerde afstandsbediening | Bedien apparaten van grote afstanden: Hé, wat is er, jongens! Akarsh hier van CETech. In dit project gaan we een afstandsbediening maken die kan worden gebruikt om een verscheidenheid aan instrumenten te bedienen, zoals LED's, motoren of als we het hebben over ons dagelijks leven, kunnen we onze huisapplian
TV-afstandsbediening wordt een RF-afstandsbediening -- NRF24L01+ zelfstudie: 5 stappen (met afbeeldingen)
TV-afstandsbediening wordt een RF-afstandsbediening || NRF24L01+ Tutorial: In dit project laat ik je zien hoe ik de populaire nRF24L01+ RF IC heb gebruikt om de helderheid van een ledstrip draadloos aan te passen via drie nutteloze knoppen van een tv-afstandsbediening. Laten we beginnen
Een sms-afstandsbediening: 4 stappen
Een sms-afstandsbediening: dit project stelt een manier voor om uw ding te beveiligen. Het eindresultaat van het project is een schakelaar die via een sms wordt aangestuurd. U kunt dit dus aanpassen aan uw project. Het programma integreerde een geautoriseerd telefoonnummer en de gebruiker moet het goede "wachtwoord invoeren
Op Arduino gebaseerde contactloze infraroodthermometer - Op IR gebaseerde thermometer met Arduino: 4 stappen
Arduino-gebaseerde contactloze infraroodthermometer | IR-gebaseerde thermometer met Arduino: Hallo allemaal, in deze instructables zullen we een contactloze thermometer maken met behulp van Arduino. Omdat de temperatuur van de vloeistof / vaste stof soms veel te hoog of te laag is en dan is het moeilijk om er contact mee te maken en de temperatuur dan in die sc
Android en Arduino SMS-gebaseerde domotica: 5 stappen (met afbeeldingen)
Android en Arduino SMS-gebaseerde domotica: ! ! ! KENNISGEVING ! ! !Omdat de lokale gsm-mast in mijn omgeving wordt geüpgraded, kan ik deze GSM-module niet meer gebruiken. De nieuwere toren ondersteunt geen 2G-apparaten meer. Daarom kan ik geen steun meer geven aan dit project.Onlangs heb ik