Cuprins:

Alerte SMS Text Temp de la un GSM ATTINY85 și A1: 5 pași
Alerte SMS Text Temp de la un GSM ATTINY85 și A1: 5 pași

Video: Alerte SMS Text Temp de la un GSM ATTINY85 și A1: 5 pași

Video: Alerte SMS Text Temp de la un GSM ATTINY85 și A1: 5 pași
Video: 5000KM distance walkie-talkie,you can talk in real time 2024, Noiembrie
Anonim
Alerte SMS text Temp de la un GSM ATTINY85 și A1
Alerte SMS text Temp de la un GSM ATTINY85 și A1

Această instrucțiune vă arată cum să captați temperatura de la un senzor simplu de temperatură și să o trimiteți prin sms către telefonul dvs. mobil. Pentru a simplifica lucrurile, trimit temperatura la un interval stabilit, dar arăt, de asemenea, cum se poate face acest lucru numai prin excepții / alerte. Hardware-ul are un cost foarte mic, mai puțin de 10 dolari, deși există costurile recurente ale SMS-urilor de luat în considerare.

Ridicarea grea este realizată de ATTINY 85 simplu, dar puternic, care captează datele de temperatură și apoi declanșează un SMS pentru a fi trimis printr-un modul AI-Thinker A6 GSM.

Pe scurt, scrieți codul ATTINY85 în mediul Arduino IDE și îl ardeți pe ATTINY85 folosind un convertor USBASP serial / USB. Am acoperit configurarea modulului AI-Thinker A6 GSM și Arduino IDE în două tutoriale anterioare. Ceea ce diferă aici este interfațarea modulului ATTINY și A6 GSM utilizând comunicații seriale.

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

După programare, ATTINY citește datele de temperatură de la un senzor termometru - Dallas 18B20- și apoi transmite datele și comenzile prin conexiune serială la modulul A6 GSM care apoi le trimite ca text SMS pe telefonul mobil / inteligent.

Iată de ce aveți nevoie:

1. Convertor USBASP serial / USB.

2. ATTINY 85.

3. Modulul AI-Thinker A6 GSM versiunea 6 (cu un sim care are credite SMS).

4. Sursă de alimentare 3.3V pentru ATTINY85.

5. 3.3.v Alimentare USB pentru modulul AI-Thinker A6 GSM.

6. Senzor de temperatură Dallas 18B20..

7. Rezistor de 4.7k pentru senzorul 18B20.

8. Plăci și cabluri.

9. Arduino IDE (am folosit versiunea 1.8.5. Pentru asta).

10. Laptop Windows X (am folosit versiunea 10) cu un port USB gratuit.

Pasul 1: Programarea ATTINY 85

Iată codul IDE Arduino (va trebui să schimbați numărul de telefon la care doriți să trimiteți SMS-ul.)

#include #include #include

// *** // *** Definiți pinii RX și TX. Alegeți doi // *** pini neutilizați. Încercați să evitați D0 (pinul 5) // *** și D2 (pinul 7) dacă intenționați să utilizați I2C. // *** #define RX 3 // *** D3, Pin 2 #define TX 4 // *** D4, Pin 3

// *** // *** Definiți portul serial bazat pe software. Folosind numele // *** Serial, astfel încât codul să poată fi utilizat pe alte platforme // *** care acceptă serial bazat pe hardware. Pe cipurile // *** care acceptă seria hardware, doar // *** comentează această linie. // ***

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) // *** // ATTINY 85 frecvență setată la 8 MHz intern

// *** // *** Pinul la care este conectat firul OneWire // ***. // *** #define ONE_WIRE_BUS 1

// *** // *** Configurați o instanță oneWire pentru a comunica cu orice dispozitiv OneWire // *** (nu doar cu circuitele de temperatură Maxim / Dallas). // *** OneWire _oneWire = OneWire (ONE_WIRE_BUS);

// *** // *** Treceți referința noastră oneWire la temperatura Dallas. // *** DallasTemperature _sensors = DallasTemperature (& _ oneWire);

void setup () {// *** // *** Inițializați portul serial // *** mySerial.begin (115200); întârziere (60000);

// *** Porniți biblioteca. _sensors.begin (); }

bucla nulă () {

// *** // *** Obțineți temperatura actuală și afișați-o. // *** _sensors.requestTemperatures (); întârziere (2000); tempC dublu = _sensors.getTempCByIndex (0); tempF dublu = _sensors.getTempFByIndex (0); // verificați dacă există erori - uneori la început, temperatura este afișată ca 85C

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

void SMS_temp (mytemp dublu, String myalert) {mySerial.println ("AT + CMGF = 1"); // setat la modul SMS întârziere (1000); mySerial.println ("AT + CMGF = 1"); // setat la modul SMS întârziere (1000); //mySerial.println("AT+CMGS=\"+YOUR NUMBER / ""); // setați numărul de telefon (înfășurat în ghilimele duble) întârziere (1000); mySerial.print (mytemp, 1); mySerial.print (myalert); întârziere (1000); mySerial.write (0x1A); // trimite ctrl + z sfârșitul întârzierii mesajului (1000); mySerial.write (0x0D); // Returnarea transportului în întârziere hexagonală (1000); mySerial.write (0x0A); întârziere (1000000); // 17 minute - reglați-vă pentru a vă potrivi aplicației}

Deschideți mediul Arduino IDE - Am descris cum să vă găsesc în detaliu acest lucru în instructajul meu anterior la care am făcut aluzie mai devreme.

Veți avea nevoie de următoarele biblioteci

SoftwareSerial.h

OneWire.h

DallasTemperature.h

Apoi, configurați pinii RX și TX de pe ATTINY85 de care trebuie să vă conectați cu A1 Thinker. ATTINY 85 are 8 pini, patru pe fiecare parte și este aliniat utilizând punctul de pe suprafață ca referință. Pinul 1 sau pinul RESET se află lângă punctul.

(în acest caz am ales Pin2 și 3 - Acestea sunt pe aceeași parte ca pinul RESET care este lângă punctul de pe suprafața ATTINY 85. Pinul 2 este următorul pin de-a lungul pinului RESET, în timp ce Pinul 3 este între Pin 2 și TEREN)

Apoi, trebuie să configurați senzorul de temperatură -

#define ONE_WIRE_BUS 1

OneWire _oneWire = OneWire (ONE_WIRE_BUS);

DallasTemperature _sensors = DallasTemperature (& _ oneWire);

Apoi configurați portul serial al software-ului

mySerial.begin (115200);

întârziere (60000);

și apoi apelați senzorii cu _sensors.begin ();

Apoi, există bucla, care sondează la un moment prestabilit, înregistrează temperatura și trimite un mesaj / alertă în funcție de valoare. Folosește o funcție SMS_temp, care este, de asemenea, locul în care setați sincronizarea buclei

void loop () {sensors.requestTemperatures (); întârziere (2000);

tempC dublu = _sensors.getTempCByIndex (0);

tempF dublu = _sensors.getTempFByIndex (0);

if (tempC <= 14) {SMS_temp (tempC, "DANGEROUSLY Cold");}

if (tempC> 14 && tempC <= 18) {SMS_temp (tempC, "Destul de rece");}

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

if (tempC> = 23 && error_temperature) {SMS_temp (tempC, "Prea cald");}

}

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

Apoi, configurați IDE-ul Arduino pentru a vă pregăti pentru încărcare pe ATTINY85.

O serie de lucruri de remarcat

1- Dacă nu aveți familia de plăci ATTINY, adăugați următoarea adresă URL https://raw.githubusercontent.com/damellis/attiny/… în fișier / Preferințe / Adresa URL a plăcilor suplimentare, Apoi, în Arduio IDE, faceți clic pe Tools / Board / Board Manager și căutați ATTINY și instalați noua placă. Schimbați procesorul în Attiny85.

Pasul 2: Încărcarea programului pe ATTINY85

Încărcarea programului pe ATTINY85
Încărcarea programului pe ATTINY85

De asemenea, consultați instrucțiunile mele anterioare în acest sens -

ATTINY85 are două moduri, programarea și respectiv modul de operare. MODUL DE PROGRAMARE În primul rând, identificați pinii de pe ATTINY85. Pentru a face acest lucru, găsiți mica crestătură de pe suprafața cipului care este lângă pinul RST / RESET. Folosind acest lucru ca punct de referință, puteți identifica restul pinilor. Toate aceste informații sunt furnizate în fișa tehnică A85 -https://ww1.microchip.com/downloads/en/DeviceDoc/At…

USBasp și ATTINY85 trebuie conectate așa cum se arată în imaginea de mai sus.

Apoi, pe Arduino IDE, setați programatorul la USBasp și frecvența la 8Mhz intern.

Conectați USBasp la un port USB de pe laptop (pe Windows 10, dacă nu aveți driverul USBasp, utilizați Zadig conform site-ului

Apoi, cu USBasp conectat, selectați din Arduino IDE Sketch / upload și, sperăm, ar trebui să vedeți progresul încărcării afișat cu litere roșii ale Arduino IDE și se termină cu avrdude terminat. Mulțumesc.

Orice erori în această etapă sunt asociate de obicei cu cabluri libere sau cu driverul greșit.

Pasul 3: Rulați programul

Rularea programului dvs
Rularea programului dvs
Rularea programului dvs
Rularea programului dvs
Rularea programului dvs
Rularea programului dvs

În primul rând, ceva despre senzorul termometrului Dallas 18b20. Are 3 pini, masă (G), date (D) și VCC așa cum se arată în imaginea de mai sus. Pentru funcționare, necesită conectarea D și VCC cu un rezistor de 4,7 k. G și VCC sunt conectate la polii respectivi, în timp ce D este conectat la un ATTINY 85, pin - [6] PB1, așa cum este configurat în cod.

Apoi, conectați ATTINY la A6 GSM după cum urmează (și se arată mai sus)

ATTINY TX A6 UART_RXdATTINY RX A6 UART_TXd

ATTINY GND A6 GND

și pe A6 în sine, A6 PWR A6 VCC 5.0A6 RST A6 GND (Nu vă conectați încă la masă !!!!!)

Acum porniți ambele dispozitive și, după câteva secunde, atingeți temporar pinul de masă A6 cu cablul conectat la pinul A6 RST. A6 se va opri și porni și, sperăm, ar trebui să primiți în curând date de temperatură pe telefon.

Pasul 4: Concluzie

Acest lucru instructiv poate părea destul de simplu, dar ideea este de a ilustra ceea ce se poate realiza cu componente cu costuri reduse. Evident, dacă aveți acces la Wi-Fi sau la un hub BLE, atunci există soluții mai potrivite.

Nu am acoperit alte funcționalități, cum ar fi trimiterea unui SMS către telefon pentru a iniția înregistrarea / transmiterea temperaturii etc.

Recomandat: