Inhoudsopgave:

Arduino gebaseerde GSM/SMS afstandsbediening - Ajarnpa
Arduino gebaseerde GSM/SMS afstandsbediening - Ajarnpa

Video: Arduino gebaseerde GSM/SMS afstandsbediening - Ajarnpa

Video: Arduino gebaseerde GSM/SMS afstandsbediening - Ajarnpa
Video: Arduino Projects | How to Send & Receive Text Messages (SMS) Using Arduino Uno & SIM900A GSM Module 2024, November
Anonim
Op Arduino gebaseerde GSM/SMS-afstandsbedieningseenheid
Op Arduino gebaseerde GSM/SMS-afstandsbedieningseenheid

! ! ! 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

Stroomvoorziening
Stroomvoorziening

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

Digitale ingangen
Digitale ingangen
Digitale ingangen
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

Digitale uitgangen
Digitale uitgangen
Digitale uitgangen
Digitale uitgangen
Digitale uitgangen
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

Microcontroller-oscillator
Microcontroller-oscillator
Microcontroller-oscillator
Microcontroller-oscillator
Microcontroller-oscillator
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

Indicatie LED's
Indicatie LED's
Indicatie LED's
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

Microprocessor resetcircuit
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

SIM800L-module
SIM800L-module
SIM800L-module
SIM800L-module
SIM800L-module
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
De microcontroller
De microcontroller
De microcontroller
De microcontroller
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

SRAM-geheugen optimaliseren
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

Grootte van software seriële buffer
Grootte van software seriële buffer

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 maken
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

Montage van de printplaat
Montage van de printplaat
Montage van de printplaat
Montage van de printplaat
Montage van de printplaat
Montage van de printplaat
Montage van de printplaat
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

De AtMega328p programmeren
De AtMega328p programmeren
De AtMega328p programmeren
De AtMega328p programmeren
De AtMega328p programmeren
De AtMega328p programmeren

# # 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

Het apparaat aansluiten
Het apparaat aansluiten
Het apparaat aansluiten
Het apparaat aansluiten
Het apparaat aansluiten
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

Initiële setup
Initiële setup

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

SMS-opdrachten
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: