Sommario:
- Passaggio 1: Programmazione di ATTINY 85
- Passaggio 2: caricamento del programma su ATTINY85
- Passaggio 3: eseguire il programma
- Passaggio 4: conclusione
Video: Avvisi temporanei di testo SMS da un GSM ATTINY85 e A1: 5 passaggi
2024 Autore: John Day | [email protected]. Ultima modifica: 2024-01-30 10:02
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
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
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:
Dispositivo di sicurezza per donne con tracciamento GPS e avvisi con Arduino: 6 passaggi
Dispositivo di sicurezza per donne con tracciamento GPS e avvisi tramite Arduino: con tutta la tecnologia a nostra disposizione negli ultimi tempi, non è difficile costruire un dispositivo di sicurezza per le donne che non solo generi un allarme di emergenza, ma invii anche un messaggio ai tuoi amici, familiari , o persona interessata. Qui costruiremo una band
Come inviare messaggi di testo SMS dal tuo progetto Arduino ESP: 6 passaggi
Come inviare messaggi di testo SMS dal tuo progetto Arduino ESP: questa istruzione dimostra come inviare messaggi di testo SMS dal tuo progetto arduino utilizzando un dispositivo ESP8266 e una connessione WiFi. Perché usare gli SMS?* I messaggi SMS sono molto più veloci e affidabili della notifica dell'app messaggi. * I messaggi SMS possono anche
Monitorare i galloni del serbatoio dell'olio da riscaldamento con avvisi tramite e-mail, SMS e pushbullet: 9 passaggi (con immagini)
Monitora i galloni del serbatoio dell'olio per riscaldamento con avvisi tramite e-mail, SMS e pushbullet: INFORMAZIONI DI SICUREZZA: nel caso in cui qualcuno voglia sapere se "questo è sicuro da costruire/installare" -- L'ho portato a 2 diverse compagnie petrolifere per feedback/considerazioni sulla sicurezza, e l'ho gestito dal vicepresidente della prevenzione degli incendi dei vigili del fuoco C
Allarme porta fai da te con avvisi di testo: 5 passaggi
Allarme porta fai-da-te con avvisi di testo: crea il tuo allarme porta/finestra con alcuni semplici dispositivi elettronici, magneti e Raspberry Pi. Il Raspberry Pi viene utilizzato per inviare messaggi di testo o e-mail quando la porta viene aperta!Materiali necessari (link inclusi):Raspberry Pi (ecco il kit che abbiamo usato)Reed SwitchNeodymiu
Allarme porta Arduino con avvisi di testo: 14 passaggi (con immagini)
Allarme porta Arduino con avvisi di testo: questo è un allarme porta basato su Arduino che utilizza un interruttore magnetico reed per determinare lo stato della porta e ha un allarme acustico e un allarme basato su messaggi di testo. Elenco delle parti Arduino UnoArduino Uno Ethernet Shield3x LED2x interruttori SPST1x pulsante momentaneo2