Sommario:

Unità di controllo remoto GSM/SMS basata su Arduino: 16 passaggi (con immagini)
Unità di controllo remoto GSM/SMS basata su Arduino: 16 passaggi (con immagini)

Video: Unità di controllo remoto GSM/SMS basata su Arduino: 16 passaggi (con immagini)

Video: Unità di controllo remoto GSM/SMS basata su Arduino: 16 passaggi (con immagini)
Video: GSM Based Water Tank Level Monitoring & Control System using Arduino with SMS Alert 2024, Dicembre
Anonim
Unità di controllo remoto GSM/SMS basata su Arduino
Unità di controllo remoto GSM/SMS basata su Arduino

! ! ! AVVISO !

A causa dell'aggiornamento della torre del cellulare locale nella mia zona, non sono più in grado di utilizzare questo modulo GSM. La torre più recente non supporta più i dispositivi 2G. Pertanto, non posso più fornire alcun supporto per questo progetto.

Con una gamma così ampia di moduli GSM disponibili per l'hobbista, la maggior parte di noi ha finito per acquistarne uno. Ho acquistato un modulo SIM800L localmente e ho finito per giocare con i diversi comandi del modulo.

Usando Arduino Uno e Arduino IDE, sono stato in grado di trasformare le mie idee in realtà. Questo non è stato facile, con il SINGOLO GRANDE PROBLEMA che è la limitazione di soli 2 KB di SRAM. Dopo molte ricerche su Internet e diversi forum, sono riuscito a superare questa limitazione.

Diverse tecniche di programmazione, una comprensione molto migliore del compilatore Arduino e l'utilizzo della scheda SIM e dell'EEPROM per memoria aggiuntiva, hanno salvato questo progetto. Dopo alcune modifiche al codice, è stato realizzato e testato un prototipo stabile per un periodo di una settimana.

Uno svantaggio della SRAM limitata era che l'unità non poteva essere dotata di display e tasti utente. Ciò ha comportato una riscrittura completa del codice. Senza interfaccia utente, l'unica opzione rimasta per continuare con il progetto era utilizzare i messaggi SMS per configurare l'unità, così come gli utenti.

Questo si è rivelato un progetto entusiasmante e sono stati aggiunti altri futuri mentre lo sviluppo continuava.

Il mio obiettivo principale era quello di attaccare con Arduino Uno, o in questo caso, l'ATMEGA328p, e non utilizzare alcun componente a montaggio superficiale. Ciò renderà più facile per il pubblico in generale copiare e costruire l'unità.

Specifiche dell'unità:

  • È possibile programmare un massimo di 250 utenti sull'unità
  • Quattro uscite digitali
  • Quattro ingressi digitali
  • Ogni uscita può essere configurata come uscita IMPULSO o ON/OFF
  • La durata dell'impulso di uscita può essere impostata tra 0,5.. 10 secondi
  • Ciascun ingresso può essere configurato per attivare le modifiche da OFF a ON.
  • Ciascun ingresso può essere configurato per attivare le modifiche da ON a OFF
  • Ogni tempo di ritardo di ingresso può essere impostato tra 0 secondi e 1 ora
  • Gli SMS di modifica degli Ingressi possono essere inviati a 5 diversi utenti
  • I nomi e il testo di stato per ogni ingresso possono essere impostati dall'utente
  • I nomi e il testo di stato per ogni uscita possono essere impostati dall'utente
  • L'unità può essere configurata per ricevere messaggi di saldo della carta SIM tramite messaggistica USSD.
  • Tutti gli utenti possono richiedere aggiornamenti sullo stato degli I/O dell'unità
  • Tutti gli utenti possono controllare le singole uscite tramite messaggi SMS
  • Tutti gli utenti possono controllare le singole uscite chiamando l'unità

Caratteristiche di sicurezza

  • La configurazione iniziale dell'unità può essere eseguita solo mentre si è nell'unità.
  • La configurazione iniziale può essere eseguita solo dall'UTENTE MASTER
  • I comandi di configurazione iniziale vengono disabilitati automaticamente dopo dieci minuti.
  • Solo le chiamate e gli SMS inviati da utenti conosciuti possono controllare l'unità
  • Gli utenti possono azionare solo le uscite loro assegnate dall'UTENTE MASTER

Altre caratteristiche

  • Le chiamate a questa unità sono gratuite, poiché la chiamata non riceve mai risposta.
  • Quando l'unità viene chiamata, la chiamata verrà interrotta solo dopo 2 secondi. Questa è la conferma al chiamante che l'unità ha risposto alla chiamata.
  • Se il fornitore di servizi della carta SIM supporta i messaggi USSD, le richieste di saldo possono essere effettuate dall'UTENTE PRINCIPALE. Il messaggio USSD contenente il saldo, verrà quindi inoltrato all'UTENTE MASTER.

Passaggio 1: alimentazione

Alimentazione elettrica
Alimentazione elettrica

Affinché l'unità possa essere collegata a sistemi di sicurezza standard (sistemi di allarme, porte da garage elettriche, motori per cancelli elettrici), l'unità sarà alimentata da 12V DC che è normalmente disponibile su tali sistemi.

L'alimentazione viene applicata sui terminali 12V IN e 0V ed è protetta da un fusibile da 1A. Sono disponibili ulteriori terminali 12V OUT, anch'essi protetti dal fusibile.

Il diodo D1 protegge l'unità dai collegamenti di polarità inversa sulle linee a 12V.

I condensatori C1 e C2 filtrano eventuali disturbi presenti sulle linee di alimentazione a 12V. L'alimentazione a 12V viene utilizzata per alimentare i relè dell'unità.

L'alimentazione a 5 V è costituita da un regolatore di tensione LM7805L e fornisce un +5 V stabile necessario per il modulo GSM SIM800L e per il microprocessore. I condensatori C3 e C4 filtrano qualsiasi rumore che potrebbe essere presente sulla linea di alimentazione +5V. Sono stati utilizzati condensatori elettrolitici di dimensioni relativamente grandi, poiché il modulo GSM SIM800L utilizza un po' di energia durante la trasmissione.

Non è richiesto alcun dissipatore di calore sul regolatore di tensione.

Passaggio 2: ingressi digitali

Ingressi digitali
Ingressi digitali
Ingressi digitali
Ingressi digitali

I segnali di ingresso digitale sono tutti a 12V, e devono essere interfacciati con il microcontrollore 5V. Per questo, vengono utilizzati accoppiatori ottici per isolare i segnali a 12V dal sistema a 5V.

Il resistore di ingresso da 1K limita la corrente di ingresso all'accoppiatore ottico a circa 10 mA.

A causa delle limitazioni di spazio, sulla scheda PC non era disponibile spazio per i resistori pull-up da 5V. Il micro controller è impostato per abilitare i pull-up deboli dei pin di input.

Senza segnale presente sull'ingresso (LOW) dell'accoppiatore ottico, nessuna corrente scorrerà attraverso il LED dell'accoppiatore ottico. Quindi il transistor dell'accoppiatore ottico è spento. Il debole pull-up del microcontrollore tirerà su il collettore a quasi 5V, e sarà visto come un ALTO logico dal microcontrollore.

Con 12 V applicati (HIGH) all'ingresso dell'accoppiatore ottico, circa 10 mA fluiranno attraverso il LED dell'accoppiatore ottico. Quindi il transistor dell'accoppiatore ottico sarà acceso. Questo abbasserà il collettore a quasi 0V e sarà visto come un LOW logico dal microcontrollore.

Si noti che l'ingresso visto dal microcontrollore è invertito rispetto all'ingresso a 12V.

Il codice normale per leggere il pin di input è il seguente:

Input booleano = digitalRead(pin input);

Per correggere il segnale invertito, utilizzare il seguente codice:

Input booleano = !digitalRead(pin input); // Notare la ! davanti alla lettura

Ora, l'ingresso visto dal microcontrollore corrisponderà all'ingresso sull'ingresso 12V.

Il circuito di ingresso finale è costituito da 4 ingressi digitali. Ciascun ingresso è collegato ai terminali sulla scheda PC.

Passaggio 3: uscite digitali

Uscite digitali
Uscite digitali
Uscite digitali
Uscite digitali
Uscite digitali
Uscite digitali

Normalmente, con un circuito che pilota solo un numero minimo di relè, il modo migliore è utilizzare un circuito di pilotaggio a transistor come mostrato. È semplice, economico ed efficace.

I resistori forniscono il pull-down a terra e la limitazione della corrente di base del transistor. Il transistor viene utilizzato per aumentare la corrente disponibile per pilotare un relè. Con solo 1 mA prelevato dal pin del microcontrollore, il transistor può commutare un carico di 100 mA. Più che sufficienti per la maggior parte dei tipi di relè. Il diodo è un diodo fly-back, che protegge il circuito dai picchi di alta tensione durante la commutazione del relè. Il vantaggio aggiuntivo dell'utilizzo di questo circuito è che la tensione operativa del relè può essere diversa dalla tensione del microcontrollore. Pertanto, invece di utilizzare un relè da 5 V, è possibile utilizzare qualsiasi tensione CC fino a 48 V.

Presentazione dell'ULN2803

Più relè richiede un progetto, maggiore è il numero di componenti. Ciò renderà più difficile la progettazione del PCB e potrebbe utilizzare prezioso spazio sul PCB. Ma l'utilizzo di un array di transistor, come l'ULN2803, aiuterà sicuramente a mantenere piccole le dimensioni del PCB. L'ULN2803 è ideale per ingressi da 3,3 V e 5 V da un microcontrollore e può pilotare relè fino a 48 V CC. Questo ULN2803 ha 8 circuiti a transistor individuali, ogni circuito dotato di tutti i componenti necessari per commutare un relè.

Il circuito di uscita finale è costituito da un ULN3803, che pilota 4 relè di uscita da 12 V CC. Ogni contatto del relè è disponibile sui terminali della scheda elettronica.

Passaggio 4: oscillatore del microcontrollore

Oscillatore del microcontrollore
Oscillatore del microcontrollore
Oscillatore del microcontrollore
Oscillatore del microcontrollore
Oscillatore del microcontrollore
Oscillatore del microcontrollore

Circuito dell'oscillatore

Il microcontrollore necessita di un oscillatore per funzionare correttamente. Per mantenere il design di Arduino Uno, il circuito utilizzerà l'oscillatore standard da 16 MHz. Sono disponibili due opzioni:

Cristallo

Questo metodo utilizza un cristallo collegato a due condensatori di carico. Questa è l'opzione più comune.

Risonatore

Un risonatore è fondamentalmente un cristallo e due condensatori di caricamento in un unico contenitore a 3 pin. Ciò riduce la quantità di componenti e aumenta lo spazio disponibile sulla scheda PC.

Per mantenere il conteggio dei componenti il più basso possibile, ho scelto di utilizzare un risonatore da 16 MHz.

Passaggio 5: LED di indicazione

LED di indicazione
LED di indicazione
LED di indicazione
LED di indicazione

Cosa sarebbe un circuito senza alcuni LED? Sulla scheda PC sono stati predisposti LED da 3 mm.

I resistori da 1K vengono utilizzati per limitare la corrente attraverso il LED a meno di 5 mA, quando si utilizzano LED ad alta luminosità da 3 mm, la luminosità è eccellente.

Per una facile interpretazione dei LED di stato, vengono utilizzati due colori. Combinando i due LED con indicazioni lampeggianti, è possibile ottenere molte informazioni da soli due LED.

LED rosso

Il LED rosso viene utilizzato per indicare condizioni di guasto, lunghi ritardi, eventuali comandi errati.

LED verde

Il LED verde viene utilizzato per indicare ingressi e comandi sani e/o corretti.

Passaggio 6: circuito di ripristino del micro processore

Circuito di reset del micro processore
Circuito di reset del micro processore

Per motivi di sicurezza, alcune delle funzioni dell'unità sono disponibili solo nei primi 10 minuti dopo l'accensione dell'unità.

Con un pulsante di ripristino, non è necessario spegnere l'unità per ripristinare l'unità.

Come funziona

Il resistore da 10K manterrà la linea di RESET vicino a 5V. Quando si preme il pulsante, la linea di RESET verrà portata a 0V, mantenendo così il microcontrollore in reset. Quando il pulsante viene rilasciato, la riga RESET torna a %v, riavviando il microcontrollore.

Passaggio 7: modulo SIM800L

Modulo SIM800L
Modulo SIM800L
Modulo SIM800L
Modulo SIM800L
Modulo SIM800L
Modulo SIM800L

Il cuore dell'unità è il modulo GSM SIM800L. Questo modulo utilizza solo 3 pin I/O sul microcontrollore.

Il modulo si interfaccia al microcontrollore tramite una porta seriale standard.

  • Tutti i comandi all'unità vengono inviati tramite la porta seriale utilizzando i comandi AT standard.
  • All'arrivo di una chiamata, o alla ricezione di un SMS, le informazioni vengono inviate al microcontrollore tramite la porta seriale utilizzando il testo ASCII.

Per risparmiare spazio, il modulo GSM è collegato alla scheda PC tramite un connettore a 7 pin. Ciò facilita la rimozione del modulo GSM. Ciò consente inoltre all'utente di inserire/rimuovere facilmente la scheda SIM nella parte inferiore del modulo.

È necessaria una carta SIM attiva e la carta SIM deve essere in grado di inviare e ricevere messaggi SMS.

Configurazione del modulo GSM SIM800L

All'accensione dell'unità, il pin di ripristino del modulo GSM viene abbassato per un secondo. Ciò garantisce che il modulo GSM si avvii solo dopo che l'alimentazione si è stabilizzata. Il modulo GSM impiega un paio di secondi per riavviarsi, quindi attendere 5 secondi prima di inviare comandi AT al modulo.

Per garantire che il modulo GSM sia configurato per comunicare correttamente con il microcontrollore, durante l'avvio vengono utilizzati i seguenti comandi AT:

A

utilizzato per determinare se un modulo GSM è disponibile

AT+CREG?

Polling di questo comando fino alla registrazione del modulo GSM sulla rete cellulare

AT+CMGF=1

Imposta la modalità messaggio SMS su ASCII

AT+CNMI=1, 2, 0, 0, 0

Se SMS disponibile, inviare i dettagli dell'SMS alla porta seriale del modulo GSM

AT+CMGD=1, 4

Elimina tutti i messaggi SMS memorizzati sulla carta SIM

AT+CPBS=\"SM

Imposta la rubrica del modulo GSM sulla scheda SIM

AT+COPS=2, poi AT+CLTS=1, poi AT+COPS=0

Imposta l'ora del modulo GSM sull'ora della rete del cellulare

Attendere 5 secondi per l'impostazione dell'ora

AT+CUSD=1

Abilita la funzione di messaggistica USSD

Passaggio 8: il microcontrollore

Il microcontrollore
Il microcontrollore
Il microcontrollore
Il microcontrollore
Il microcontrollore
Il microcontrollore

Il micro controller è un AtMega328p standard, lo stesso utilizzato su Arduino Uno. Il codice è quindi confrontabile con entrambi. Per consentire una facile programmazione integrata, sulla scheda PC è disponibile un'intestazione di programmazione a 6 pin.

Le diverse sezioni dell'unità sono collegate al microprocessore e includono quanto segue:

  • Quattro ingressi digitali
  • Quattro uscite digitali
  • L'oscillatore
  • Due LED di indicazione
  • Circuito di ripristino
  • Modulo GSM SIM800L

Tutte le comunicazioni da e verso il modulo GSM vengono eseguite utilizzando la funzione SoftwareSerial(). Questo metodo è stato utilizzato per liberare la porta seriale principale per l'IDE Arduino durante la fase di sviluppo.

Con solo 2 KB di SRAM e 1 KB di EEPROM, non c'è memoria sufficiente per memorizzare più di un paio di utenti che possono essere collegati all'unità. Per liberare la SRAM, tutte le informazioni dell'utente vengono memorizzate sulla carta SIM del modulo GSM. Con questa disposizione, l'unità può ospitare fino a 250 utenti diversi.

I dati di configurazione dell'unità sono memorizzati nella EEPROM, separando così i dati utente ei dati di sistema l'uno dall'altro.

Sono ancora disponibili diversi pin I/O di riserva, tuttavia, l'opzione di aggiungere un display LCD e/o una tastiera non è stata possibile a causa della grande quantità di SRAM utilizzata dai buffer di ricezione e trasmissione di SoftWareSerial(), A causa della mancanza di qualsiasi tipo di interfaccia utente sull'unità, tutte le impostazioni e gli utenti vengono programmati tramite messaggi SMS.

Passaggio 9: ottimizzazione della memoria SRAM

Ottimizzazione della memoria SRAM
Ottimizzazione della memoria SRAM

Abbastanza presto nella fase di sviluppo, l'IDE Arduino ha segnalato una memoria SRAM bassa durante la compilazione del codice. Diversi metodi sono stati utilizzati per superare questo.

Limita i dati ricevuti sulla porta seriale

Il modulo GSM riporterà tutti i messaggi al microcontrollore della porta seriale. Quando si ricevono alcuni messaggi SMS, la lunghezza totale del messaggio ricevuto può superare i 200 caratteri. Questo può consumare rapidamente tutta la SRAM disponibile sul chip AtMega e causerà problemi di stabilità.

per evitare ciò verranno utilizzati solo i primi 200 caratteri di QUALSIASI messaggio ricevuto dal modulo GSM. L'esempio seguente mostra come farlo contando i caratteri ricevuti nella variabile Counter.

// scansiona i dati dalla porta seriale del software

//------------------ RxString = ""; Contatore = 0; while(SSerial.available()){ ritardo(1); // breve ritardo per dare il tempo di inserire nuovi dati nel buffer // ottenere un nuovo carattere RxChar = char(SSerial.read()); //aggiunge i primi 200 caratteri alla stringa if (Counter < 200) { RxString.concat(RxChar); Contatore = Contatore + 1; } }

Ridurre il codice Serial.print()

Sebbene sia utile durante lo sviluppo, Arduino Serial Monitor può utilizzare molta SRAM. Il codice è stato sviluppato utilizzando il minor numero possibile di codice Serial.print(). Una volta che una sezione di codice è stata testata per funzionare, tutto il codice Serial.print() è stato rimosso da quella parte del codice.

Utilizzo del codice Serial.print(F((""))

Molte informazioni normalmente visualizzate sul monitor seriale Arduino hanno più senso quando vengono aggiunte le descrizioni. Prendi il seguente esempio:

Serial.println("In attesa di azioni specifiche");

La stringa "In attesa di azioni specifiche" è fissa e non può cambiare.

Durante la compilazione del codice, il compilatore includerà nella memoria FLASH la stringa "In attesa di azioni specifiche".

Inoltre, il compilatore vede che la stringa è una costante, utilizzata dall'istruzione "Serial.print" o "Serial.println". Durante l'avvio del micro, questa costante viene inserita anche nella memoria SRAM.

Usando il prefisso "F" nelle funzioni Serial.print(), dice al compilatore che questa stringa è disponibile solo nella memoria FLASH. Per questo esempio, la stringa contiene 28 caratteri. Si tratta di 28 byte che possono essere liberati in SRAM.

Serial.println(F("In attesa di azioni specifiche"));

Questo metodo si applica anche ai comandi SoftwareSerial.print(). Poiché il modulo GSM funziona con i comandi AT, il codice contiene numerosi comandi SoftwareSerial.print("xxxx"). L'utilizzo del prefisso "F" ha liberato quasi 300 byte di SRAM.

Non utilizzare la porta seriale hardware

Dopo il debug del codice, la porta seriale hardware è stata disabilitata rimuovendo TUTTI i comandi Serial.print(). Questo ha liberato alcuni byte extra di SRAM.

Senza alcun comando Serial.print() rimasto nel codice, sono stati resi disponibili ulteriori 128 byte di SRAM. Questo è stato fatto rimuovendo la porta seriale hardware dal codice. Questo ha liberato i 64 byte di trasmissione e 64 byte di ricezione dei buffer.

// Serial.begin(9600); // porta seriale hardware disabilitata

Utilizzo di EEPROM per le stringhe

Per ogni input e output occorreva salvare tre stringhe. Sono il nome del canale, la stringa quando il canale è attivo e la stringa quando il canale è disattivato.

Con un totale di 8 canali I/O, il loro sarà

  • 8 stringhe contenenti i nomi dei canali, ciascuna lunga 10 caratteri
  • 8 stringhe contenenti il canale Sulla descrizione, ciascuna lunga 10 caratteri
  • 8 stringhe contenenti la descrizione del canale Off, ciascuna lunga 10 caratteri

Questo annunci fino a 240 byte di SRAM. Invece di memorizzare queste stringhe in SRAM, vengono archiviate in EEPROM. Questo ha liberato altri 240 byte di SRAM.

Dichiarare una stringa con le lunghezze corrette

Le variabili sono normalmente dichiarate all'inizio del codice. Un errore comune quando si dichiara una variabile stringa è che non dichiariamo la stringa con il numero corretto di caratteri.

Stringa GSM_Nr = "";

Stringa GSM_Name = ""; String GSM_Msg = "";

Durante l'avvio, il microcontrollore non allocherà memoria nella SRAM per queste variabili. Ciò può causare in seguito instabilità quando vengono utilizzate queste stringhe.

Per evitare ciò, dichiarare le stringhe con il numero corretto di caratteri che la stringa utilizzerà nel software.

Stringa GSM_Nr = "1000000000";

Stringa GSM_Name = "2000000000"; Stringa GSM_Msg = "3000000000";

Nota come non ho dichiarato le stringhe con gli stessi caratteri. Se dichiari tutte queste stringhe con ad esempio "1234567890", il compilatore vedrà la stessa stringa nelle tre variabili e allocherà memoria sufficiente nella SRAM solo per una delle stringhe.

Passaggio 10: dimensione del buffer seriale del software

Dimensione del buffer seriale del software
Dimensione del buffer seriale del software

Nel codice seguente, noterai che possono essere letti fino a 200 caratteri dalla porta seriale del software.

// scansiona i dati dalla porta seriale del software

//------------------ RxString = ""; Contatore = 0; while(SSerial.available()){ ritardo(1); // breve ritardo per dare il tempo di inserire nuovi dati nel buffer // ottenere un nuovo carattere RxChar = char(SSerial.read()); //aggiunge i primi 200 caratteri alla stringa if (Counter < 200) { RxString.concat(RxChar); Contatore = Contatore + 1; } }

Ciò richiede un buffer di almeno 200 byte anche per la porta seriale del software. per impostazione predefinita, il buffer della porta seriale del software è di soli 64 byte. Per aumentare questo buffer, cerca il seguente file:

SoftwareSerial.h

Apri il file con un editor di testo e modifica la dimensione del buffer a 200.

/******************************************************************************

* Definizioni ********************************************* ******************************/ #ifndef _SS_MAX_RX_BUFF #define _SS_MAX_RX_BUFF 200 // Dimensione buffer RX #endif

Passaggio 11: realizzare la scheda PC

Realizzare la scheda PC
Realizzare la scheda PC

La scheda PC è stata progettata utilizzando la versione freeware di Cadsoft Eagle (credo che il nome sia cambiato).

  • La scheda PC è un design a lato singolo.
  • Non vengono utilizzati componenti a montaggio superficiale.
  • Tutti i componenti sono montati sulla scheda PC, compreso il modulo SIM800L.
  • Non sono necessari componenti o collegamenti esterni
  • I ponticelli sono nascosti sotto i componenti per un aspetto più pulito.

Uso il seguente metodo per creare schede PC:

  • L'immagine della scheda PC viene stampata su Press-n-Peel utilizzando una stampante laser.
  • Il Press-n-Peel viene quindi posizionato sopra un pezzo pulito di scheda PC e fissato con del nastro adesivo.
  • L'immagine della scheda PC viene quindi trasferita dal Press-n-Peel alla scheda PC vuota facendo passare la scheda attraverso un laminatore. Per me, 10 passaggi funzionano meglio.
  • Dopo che la scheda PC si è raffreddata a temperatura ambiente, il Press-n-Peel viene sollevato lentamente dalla scheda.
  • La scheda PC viene quindi incisa utilizzando cristalli di persolfato di ammonio disciolti in acqua calda.
  • Dopo l'incisione, il blu Press-n-Peel e il toner nero vengono rimossi pulendo la scheda PC incisa con un po' di acetone.
  • La tavola viene quindi tagliata a misura con un Dremel
  • I fori per tutti i componenti con foro passante vengono praticati utilizzando una punta da 1 mm.
  • I connettori a vite dei terminali vengono forati utilizzando una punta da trapano da 1,2 mm.

Passaggio 12: assemblaggio della scheda PC

Assemblaggio della scheda PC
Assemblaggio della scheda PC
Assemblaggio della scheda PC
Assemblaggio della scheda PC
Assemblaggio della scheda PC
Assemblaggio della scheda PC
Assemblaggio della scheda PC
Assemblaggio della scheda PC

L'assemblaggio viene effettuato aggiungendo prima i componenti più piccoli e procedendo fino ai componenti più grandi.

Tutti i componenti utilizzati in questo Instructable, escluso il modulo SIM800, sono stati acquistati dal mio fornitore locale. Pensa a loro per avere sempre scorte. Si prega di dare un'occhiata al loro sito web sudafricano:

www.shop.rabtron.co.za/catalog/index.php

NOTA! Prima saldare i due ponticelli situati sotto l'IC ATMEGA328p

L'ordine è il seguente:

  • Resistori e diodo
  • Tasto reset
  • Prese CI
  • Regolatore di tensione
  • Perni di intestazione
  • Piccoli condensatori
  • LED
  • Portafusibili
  • Blocchi terminali
  • relè
  • Condensatori elettrolitici

Prima di inserire i circuiti integrati, collegare l'unità a 12V e verificare che tutte le tensioni siano corrette.

Infine, usando un po' di vernice trasparente, copri il lato in rame della scheda PC per proteggerlo dagli elementi.

Quando la vernice si è asciugata, inserire i circuiti integrati, ma lasciare il modulo GSM fino a quando l'AtMega non è stato programmato.

Passaggio 13: Programmazione dell'AtMega328p

Programmazione dell'AtMega328p
Programmazione dell'AtMega328p
Programmazione dell'AtMega328p
Programmazione dell'AtMega328p
Programmazione dell'AtMega328p
Programmazione dell'AtMega328p

# # Aggiornamento del firmware alla versione 3.02 # #

Abilitato l'invio di SMS all'UTENTE MASTER al ripristino dell'alimentazione del dispositivo

Sto usando un Arduino Uno con uno scudo di programmazione per programmare l'unità. Per ulteriori informazioni su come utilizzare un Arduino Uno come programmatore, fare riferimento a questo Instructable:

Arduino UNO come programmatore AtMega328P

Il modulo GSM deve essere rimosso dalla scheda PC per accedere all'intestazione di programmazione. Fare attenzione a non danneggiare il cavo dell'antenna durante la rimozione del modulo GSM.

Collegare il cavo di programmazione tra il programmatore e l'unità utilizzando l'intestazione di programmazione sulla scheda PC e caricare lo schizzo sull'unità.

L'alimentazione esterna a 12V non è necessaria per programmare l'unità. La scheda PC sarà alimentata da Arduino tramite il cavo di programmazione.

Aprire il file allegato nell'IDE di Arduino e programmarlo sull'unità.

Dopo la programmazione, rimuovere il cavo di programmazione e inserire il modulo GSM.

L'unità è ora pronta per l'uso.

Passaggio 14: collegamento dell'unità

Collegamento dell'unità
Collegamento dell'unità
Collegamento dell'unità
Collegamento dell'unità
Collegamento dell'unità
Collegamento dell'unità

Tutti i collegamenti all'unità vengono effettuati tramite i morsetti a vite.

Alimentazione dell'unità

Assicurati di aver inserito una scheda SIM registrata nel modulo GSM e che la scheda SIM sia in grado di inviare e ricevere messaggi SMS.

Collegare un alimentatore da 12 V CC a 12 V IN e a uno qualsiasi dei terminali 0 V. Una volta acceso, il LED rosso sulla scheda PC si accenderà. In circa un minuto il modulo GSM dovrebbe essersi connesso alla rete del cellulare. Il LED rosso si spegnerà e un LED rosso sul modulo GSM lampeggerà rapidamente.

Una volta raggiunta questa fase, l'unità è pronta per essere configurata.

Connessioni di ingresso

Gli ingressi digitali funzionano a 12V. Per attivare un ingresso, è necessario applicare 12V all'ingresso. La rimozione del 12V disattiverà l'ingresso.

Collegamenti di uscita

Ogni uscita è costituita da un contatto in scambio. Cablare ogni contatto come richiesto.

Passaggio 15: configurazione iniziale

Configurazione iniziale
Configurazione iniziale

La configurazione iniziale dell'unità deve essere eseguita per garantire che tutti i parametri siano impostati sui valori predefiniti di fabbrica e la scheda SIM configurata per accettare le informazioni dell'utente nel formato corretto.

Poiché tutti i comandi sono basati su SMS, avrai bisogno di un altro telefono per eseguire la configurazione.

Per la configurazione iniziale, è necessario essere presso l'unità.

Impostare il numero di telefono dell'UTENTE PRINCIPALE

Poiché solo l'UTENTE MASTER può configurare l'unità, questo passaggio deve essere eseguito prima.

  • L'unità deve essere alimentata.
  • Premere e rilasciare il pulsante Reset e attendere che il LED rosso sulla scheda PC si spenga.
  • Il LED NET sul modulo GSM lampeggerà rapidamente.
  • L'unità è ora pronta per accettare i comandi di configurazione iniziale. Questa operazione deve essere eseguita entro 10 minuti.
  • Inviare un messaggio SMS contenente MASTER, descrizione al numero di telefono dell'unità.
  • Se ricevuto, il LED verde sulla scheda PC lampeggerà due volte.
  • L'UTENTE MASTER è ora programmato.

Ripristinare l'unità alle impostazioni di fabbrica

Dopo aver programmato l'UTENTE MASTER, le impostazioni dell'unità devono essere riportate ai valori di fabbrica.

  • Inviare un SMS con il solo CLEARALL al numero di telefono dell'unità.
  • Se ricevuti, i LED verde e rosso sulla scheda PC lampeggeranno alternativamente una volta al secondo. L'unità è stata ripristinata con le impostazioni predefinite di fabbrica.
  • Tutte le impostazioni sono state ripristinate ai valori predefiniti di fabbrica.
  • Premere e rilasciare il pulsante Reset per riavviare l'unità.

Formattazione della carta SIM

L'ultimo passaggio consiste nel cancellare tutte le informazioni memorizzate sulla carta SIM e configurarle per l'uso in questa unità.

  • Premere e rilasciare il pulsante Reset e attendere che il LED rosso sulla scheda PC si spenga.
  • Il LED NET sul modulo GSM lampeggerà rapidamente.
  • L'unità è ora pronta per accettare i comandi di configurazione iniziale. Questa operazione deve essere eseguita entro 10 minuti.
  • Inviare un SMS con solo ERASESIM al numero di telefono dell'unità.
  • Se ricevuto, il LED verde sulla scheda PC lampeggerà tre volte.

L'unità è stata ora configurata ed è pronta per l'uso.

Passaggio 16: comandi SMS

Comandi SMS
Comandi SMS

Ci sono tre diversi tipi di comandi usati dall'unità. Tutti i comandi vengono inviati tramite SMS e sono tutti nel seguente formato:

COMANDO,,,,,

  • Tutti i comandi, ad eccezione dei comandi NORMAL USER, fanno distinzione tra maiuscole e minuscole.
  • I parametri non fanno distinzione tra maiuscole e minuscole.

Comandi di configurazione iniziale

MAESTRO, nome

Il numero di telefono del mittente dell'SMS viene utilizzato come numero di telefono dell'UTENTE PRINCIPALE. una descrizione per l'unità può essere aggiunta qui.

CANCELLA TUTTO

Ripristinare l'unità alle impostazioni di fabbrica

CLEARSIM

Cancella tutti i dati dalla carta SIM

RIPRISTINA

Riavviare l'unità

MASTER USER Comandi per la configurazione dell'unità

OUTMODE, c, m, t NOTA ! ! ! NON ANCORA IMPLEMENTATO

Impostare canali specifici per avere uscite PULSATE, TEMPORIZZATE o LATCHING. t è la durata in minuti delle uscite TEMPORIZZATE

IMPULSO, cccc

Imposta canali specifici su uscite PULSATE. Se non è impostato, i canali verranno impostati come uscite LATCHING.

PULSETIME, tImposta la durata dell'uscita impulsiva in secondi (0.. 10s)

INPUTON, cccc

Imposta i canali che devono attivarsi e invia un messaggio SMS quando lo stato cambia da OFF a ON

INPUTOFF, cccc

Imposta i canali che devono attivarsi e invia un messaggio SMS quando lo stato cambia da ON a OFF

INTIME, c, t

Imposta il tempo di ritardo dell'ingresso per rilevare i cambiamenti di stato in secondi

INTEXT, ch, nome, on, off

Imposta il nome di ogni canale di ingresso, su testo e su testo fuori testo

OUTTEXT, ch, nome, acceso, spento

Imposta il nome di ogni canale di uscita, su testo e su testo fuori testo

Aggiungi, posizione, numero, Uscite chiamate, Uscite SMS, Ingressi

Aggiungi l'utente alla scheda SIM nella "posizione" di memoria, con i canali di uscita e di ingresso assegnati all'utente

Del, posizione

Elimina utente dalla "posizione" di memoria della carta SIM

Nome del canale

Emetterà impulsi con il nome NomeCanale

NomeCanale, onText o NomeCanale, offText

Attiva/disattiva l'output con il nome di ChannelName e onText/offText

Comandi utente normali per il controllo dell'unità

????Richiedi aggiornamento stato I/O. L'SMS di stato verrà inviato al mittente.

Nome del canale

Emetterà impulsi con il nome NomeCanale

Nome canale, su testo

Attiva l'output con il nome di ChannelName e il testo di stato onText

ChannelName, offText Disattiva l'output con il nome di ChannelName e il testo di stato offText

Per una descrizione più dettagliata dei comandi, fare riferimento al documento PDF allegato.

Consigliato: