Sommario:

Avvisi temporanei di testo SMS da un GSM ATTINY85 e A1: 5 passaggi
Avvisi temporanei di testo SMS da un GSM ATTINY85 e A1: 5 passaggi

Video: Avvisi temporanei di testo SMS da un GSM ATTINY85 e A1: 5 passaggi

Video: Avvisi temporanei di testo SMS da un GSM ATTINY85 e A1: 5 passaggi
Video: I procedimenti amministrativi in materia di realizzazione di impianti di comunicazione elettronica 2024, Luglio
Anonim
Avvisi temporanei di testo SMS da un ATTINY85 e A1 GSM
Avvisi temporanei di testo SMS da un ATTINY85 e A1 GSM

Questa istruzione ti mostra come acquisire la temperatura da un semplice sensore di temperatura e inviarla tramite SMS al tuo cellulare. Per semplificare le cose, invio la temperatura ad un intervallo prestabilito ma mostro anche come ciò possa essere fatto solo per eccezione/avvisi. L'hardware ha un costo molto contenuto, meno di 10 dollari, anche se ci sono i costi ricorrenti degli sms da considerare.

Il lavoro pesante è svolto dal semplice ma potente ATTINY 85 che acquisisce i dati di temperatura e quindi attiva un SMS da inviare tramite un modulo GSM AI-Thinker A6.

In breve, si scrive il codice ATTINY85 nell'ambiente IDE Arduino e lo si masterizza sull'ATTINY85 utilizzando un convertitore USBASP seriale/USB. Ho coperto la configurazione del modulo GSM AI-Thinker A6 e dell'IDE Arduino in due tutorial precedenti. La differenza qui è l'interfacciamento del modulo GSM ATTINY e A6 tramite comunicazioni seriali.

www.instructables.com/id/How-to-Send-an-SM…https://www.instructables.com/id/15-Dollar-Attiny8…

Dopo la programmazione, l'ATTINY legge i dati di temperatura da un sensore del termometro - Dallas 18B20- e quindi invia i dati e i comandi tramite connessione seriale al modulo GSM A6 che poi lo invia come testo SMS al tuo cellulare / smartphone.

Ecco cosa ti serve:

1. Convertitore USBASP seriale/USB.

2. ATTINA 85.

3. Modulo GSM AI-Thinker A6 versione 6 (con una sim con crediti SMS).

4. Alimentatore breadboard da 3,3 V per ATTINY85.

5. Alimentatore USB 3.3.v per il modulo GSM AI-Thinker A6.

6. Sensore di temperatura Dallas 18B20..

7. Resistenza da 4,7k per il sensore 18B20.

8. Tagliere e cavi.

9. Arduino IDE (ho usato la versione 1.8.5. per questo).

10. Laptop Windows X (ho usato la versione 10) con una porta USB gratuita.

Passaggio 1: Programmazione di ATTINY 85

Ecco il codice IDE di Arduino (dovrai cambiare il numero di telefono a cui vuoi inviare l'SMS.)

#include #include #include

// *** // *** Definisce i pin RX e TX. Scegli due // *** pin inutilizzati. Cerca di evitare D0 (pin 5) // *** e D2 (pin 7) se prevedi di utilizzare I2C. // *** #definisci RX 3 // *** D3, Pin 2 #definisci TX 4 // *** D4, Pin 3

// *** // *** Definire la porta seriale basata sul software. Utilizzo del // *** nome Serial in modo che il codice possa essere utilizzato su altre // *** piattaforme che supportano il seriale basato su hardware. Su // *** chip che supportano il seriale hardware, basta // *** commentare questa riga. // ***

SoftwareSerial mySerial = SoftwareSerial(RX, TX);

// *** // *** Pinout ATtiny25/45/85: // *** PDIP/SOIC/TSSOP // *** ================== ================================================== ========================= // *** // *** (PCINT5/RESET/ADC0/dW) PB5 [1]* [8] VCC // *** (PCINT3/XTAL1/CLKI/OC1B/ADC3) PB3 [2] [7] PB2 (SCK/USCK/SCL/ADC1/T0/INT0/PCINT2) // *** (PCINT4/ XTAL2/CLKO/OC1B/ADC2) PB4 [3] [6] PB1 (MISO/DO/AIN1/OC0B/OC1A/PCINT1) // *** GND [4] [5] PB0 (MOSI/DI/SDA/AIN0 /OC0A/OC1A/AREF/PCINT0) // *** // Frequenza ATTINY 85 impostata su 8 MHz interni

// *** // *** Pin su cui è collegato il cavo dati OneWire // ***. // *** #define ONE_WIRE_BUS 1

// *** // *** Configura un'istanza oneWire per comunicare con qualsiasi dispositivo OneWire // *** (non solo i circuiti integrati di temperatura Maxim/Dallas). // *** OneWire _oneWire = OneWire(ONE_WIRE_BUS);

// *** // *** Passa il nostro riferimento oneWire a Dallas Temperature. // *** DallasTemperature _sensors = DallasTemperature(&_oneWire);

void setup() { // *** // *** Inizializza la porta seriale // *** mySerial.begin(115200); ritardo (60000);

// *** Avvia la libreria. _sensors.begin(); }

ciclo vuoto() {

// *** // *** Ottieni la temperatura attuale e visualizzala. // *** _sensors.requestTemperatures(); ritardo (2000); double tempC = _sensors.getTempCByIndex(0); double tempF = _sensors.getTempFByIndex(0); // controlla gli errori - a volte all'inizio, la temperatura mostrata come 85C

if (tempC 14 && tempC 18 && tempC = 23 && error_temperature){SMS_temp(tempC, " Troppo caldo");} }

void SMS_temp(double mytemp, String myalert) { mySerial.println("AT+CMGF=1"); //imposta in modalità SMS delay(1000); mySerial.println("AT+CMGF=1"); //imposta in modalità SMS delay(1000); //mySerial.println("AT+CMGS=\"+IL TUO NUMERO\""); //imposta il numero di telefono (racchiuso tra virgolette) delay(1000); mySerial.print(mytemp, 1); mySerial.print(myalert); ritardo(1000); mySerial.write(0x1A); // invia ctrl+z fine del messaggio delay(1000); mySerial.write(0x0D); // Ritorno a capo in esadecimale delay(1000); mySerial.write(0x0A); ritardo(1000000); // 17 minuti - adatta alla tua applicazione }

Apri l'ambiente IDE di Arduino: ho descritto in dettaglio come aggirare questo problema nella mia precedente istruzione a cui ho accennato in precedenza.

Avrai bisogno delle seguenti librerie

SoftwareSerial.h

OneWire.h

DallasTemperature.h

Quindi, configura i pin RX e TX sull'ATTINY85 che devi connettere con A1 Thinker. L'ATTINY 85 ha 8 perni, quattro per lato ed è allineato usando il punto sulla superficie come riferimento. Il pin 1 o RESET è accanto al punto.

(in questo caso ho scelto Pin2 e 3 - Questi sono sullo stesso lato del pin RESET che si trova accanto al punto sulla superficie dell'ATTINY 85. Il Pin 2 è il pin successivo al pin RESET mentre il Pin 3 è tra i Pin 2 e TERRA)

Successivamente, devi configurare il sensore di temperatura -

#define ONE_WIRE_BUS 1

OneWire _oneWire = OneWire(ONE_WIRE_BUS);

DallasTemperature _sensors = DallasTemperature(&_oneWire);

Quindi imposta la porta seriale del software

mySerial.begin(115200);

ritardo (60000);

e poi chiama i sensori con _sensors.begin();

Successivamente, c'è il ciclo, che esegue il polling a un'ora predeterminata, registra la temperatura e invia un messaggio / avviso a seconda del valore. Usa una funzione SMS_temp che è anche dove imposti i tempi del ciclo

void loop(){ sensori.requestTemperatures(); ritardo (2000);

double tempC = _sensors.getTempCByIndex(0);

double tempF = _sensors.getTempFByIndex(0);

if (tempC <= 14){SMS_temp(tempC, " FREDDO PERICOLOSO");}

if (tempC > 14 && tempC <= 18) {SMS_temp(tempC, " Abbastanza freddo");}

if (tempC > 18 && tempC < 23) {SMS_temp(tempC, " Temp Giusto");}

if (tempC >= 23 && error_temperature){SMS_temp(tempC, " Troppo caldo");}

}

==============

Quindi, configura l'IDE Arduino per prepararti al caricamento su ATTINY85.

Un certo numero di cose da notare

1- Se non hai la famiglia di schede ATTINY, aggiungi il seguente URL https://raw.githubusercontent.com/damellis/attiny/… in File/Preferences/Additional Boards Manager URL, Quindi, all'interno dell'IDE Arduio, fai clic su Strumenti/Board/Board Manager e cerca ATTINY e installa la nuova scheda. Cambia il processore in Attiny85.

Passaggio 2: caricamento del programma su ATTINY85

Caricamento del programma su ATTINY85
Caricamento del programma su ATTINY85

Inoltre, fai riferimento alla mia precedente istruzione su questo -

L'ATTINY85 ha due modalità, rispettivamente di programmazione e di funzionamento.1. MODALITÀ DI PROGRAMMAZIONE Innanzitutto, identificare i pin sull'ATTINY85. Per fare ciò, trova la piccola tacca sulla superficie del chip che si trova accanto al pin RST/RESET. Usando questo come punto di riferimento, puoi identificare il resto dei pin. Tutte queste informazioni sono fornite nella scheda tecnica A85 -https://ww1.microchip.com/downloads/en/DeviceDoc/At…

USBasp e ATTINY85 devono essere collegati come mostrato nell'immagine sopra.

Quindi, sull'IDE Arduino, imposta il programmatore su USBasp e la frequenza su 8 Mhz interni.

Collega l'USBasp a una porta USB del tuo laptop (Su Windows 10, se non hai il driver USBasp usa Zadig come da sito web

Successivamente, con USBasp collegato, seleziona da Arduino IDE Sketch/upload e, si spera, dovresti vedere l'avanzamento del caricamento mostrato in lettere rosse dell'IDE Arduino e terminare con avrdude done. Grazie.

Eventuali errori in questa fase sono generalmente associati a cavi allentati o al driver sbagliato.

Passaggio 3: eseguire il programma

Esecuzione del tuo programma
Esecuzione del tuo programma
Esecuzione del tuo programma
Esecuzione del tuo programma
Esecuzione del tuo programma
Esecuzione del tuo programma

In primo luogo, qualcosa sul sensore del termometro Dallas 18b20. Ha 3 pin, Ground (G), data (D) e VCC come mostrato nell'immagine sopra. Per il funzionamento, è necessario collegare D e VCC con un resistore da 4,7k. G e VCC sono collegati ai rispettivi poli mentre D è collegato ad un ATTINY 85, pin - [6] PB1, come configurato nel codice.

Quindi, collega ATTINY a A6 GSM come segue (e mostrato sopra)

ATTINY TX A6 UART_RXdATTINY RX A6 UART_TXd

ATTINY GND A6 GND

e sulla stessa A6, A6 PWR A6 VCC 5.0A6 RST A6 GND (Non collegare ancora a massa!!!!!)

Ora accendi entrambi i dispositivi e, dopo alcuni secondi, tocca temporaneamente il pin di terra A6 con il cavo collegato al pin A6 RST. L'A6 si spegnerà e si accenderà e, si spera, dovresti ricevere presto i dati sulla temperatura sul tuo telefono.

Passaggio 4: conclusione

Questo istruibile può sembrare piuttosto semplice, ma l'idea è di illustrare cosa si può ottenere con componenti a basso costo. Ovviamente se hai accesso al wi-fi o ad un hub BLE allora ci sono soluzioni più adeguate.

Non ho coperto altre funzionalità come l'invio di un SMS AL telefono per avviare la registrazione/trasmissione della temperatura, ecc.

Consigliato: