Indholdsfortegnelse:

SMS -tekst Temp -advarsler fra en ATTINY85 og A1 GSM: 5 trin
SMS -tekst Temp -advarsler fra en ATTINY85 og A1 GSM: 5 trin

Video: SMS -tekst Temp -advarsler fra en ATTINY85 og A1 GSM: 5 trin

Video: SMS -tekst Temp -advarsler fra en ATTINY85 og A1 GSM: 5 trin
Video: 25 - ARDUINO: SI PUO' MISURARE LA TEMPERATURA CON IL SENSORE LM35 ? - VIDEORIPETIZIONI 2024, Juli
Anonim
SMS -tekst Temp -advarsler fra en ATTINY85 og A1 GSM
SMS -tekst Temp -advarsler fra en ATTINY85 og A1 GSM

Denne instruktør viser dig, hvordan du registrerer temperaturen fra en simpel temperatursensor og sender den med sms -tekst til din mobiltelefon. For at forenkle tingene sender jeg temperaturen med et bestemt interval, men jeg viser også, hvordan dette kun kan gøres ved undtagelse / advarsler. Hardwaren er meget lav, mindre end 10 dollars, selvom der er de tilbagevendende sms -omkostninger at overveje.

De tunge løft udføres af den enkle, men kraftfulde ATTINY 85, der registrerer temperaturdataene og derefter udløser en SMS, der skal sendes gennem et AI-Thinker A6 GSM-modul.

Kort sagt skriver du ATTINY85 -koden i Arduino IDE -miljøet og brænder den på ATTINY85 ved hjælp af en USBASP seriel/USB -konverter. Jeg har dækket opsætning af AI-Thinker A6 GSM-modulet og Arduino IDE i to tidligere selvstudier. Hvad der er anderledes her er grænsefladen mellem ATTINY og A6 GSM -modulet ved hjælp af seriel kommunikation.

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

Efter programmering læser ATTINY temperaturdataene fra en termometersensor - Dallas 18B20- og sender derefter data og kommandoer ved seriel forbindelse til A6 GSM -modulet, som derefter sender det som en SMS -tekst til din mobiltelefon / smartphone.

Her er hvad du har brug for:

1. USBASP seriel/USB -konverter.

2. ATTINY 85.

3. AI-Thinker A6 GSM-modul version 6 (med en sim, der har SMS-kreditter).

4. 3.3v brødbræt strømforsyning til ATTINY85.

5. 3.3.v USB-strømforsyning til AI-Thinker A6 GSM-modulet.

6. Dallas 18B20 temperatursensor..

7. 4,7k modstand til 18B20 sensoren.

8. Brødbræt og kabler.

9. Arduino IDE (jeg brugte version 1.8.5. Til dette).

10. Windows X bærbar computer (jeg brugte version 10) med en gratis usb -port.

Trin 1: Programmering af ATTINY 85

Her er Arduino IDE -koden (Du bliver nødt til at ændre det telefonnummer, du vil sende SMS'en til.)

#include #include #include

// *** // *** Definer RX- og TX -benene. Vælg to // *** pins, der ikke er brugt. Prøv at undgå D0 (pin 5) // *** og D2 (pin 7), hvis du planlægger at bruge I2C. // *** #define RX 3 // *** D3, Pin 2 #define TX 4 // *** D4, Pin 3

// *** // *** Definer den softwarebaserede serielle port. Brug af // *** navnet Serial, så koden kan bruges på andre // *** platforme, der understøtter hardware baseret seriel. På // *** chips, der understøtter hardware -serien, skal du bare // *** kommentere denne linje. // ***

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 frekvens indstillet til intern 8 MHz

// *** // *** Pin, som OneWire -data // *** ledningen er tilsluttet. // *** #definer ONE_WIRE_BUS 1

// *** // *** Konfigurer en oneWire -forekomst til at kommunikere med alle OneWire // *** -enheder (ikke kun Maxim/Dallas temperatur -IC'er). // *** OneWire _oneWire = OneWire (ONE_WIRE_BUS);

// *** // *** Videregiv vores oneWire -reference til Dallas Temperature. // *** DallasTemperature _sensors = DallasTemperature (& _ oneWire);

void setup () {// *** // *** Initialiser seriel port // *** mySerial.begin (115200); forsinkelse (60000);

// *** Start biblioteket. _sensors.begin (); }

void loop () {

// *** // *** Få den aktuelle temperatur, og vis den. // *** _sensors.requestTemperatures (); forsinkelse (2000); dobbelt tempC = _sensors.getTempCByIndex (0); dobbelt tempF = _sensors.getTempFByIndex (0); // tjek for fejl - nogle gange ved start, temp vist som 85C

hvis (tempC 14 && tempC 18 && tempC = 23 && error_temperature) {SMS_temp (tempC, "For varm");}}}

void SMS_temp (double mytemp, String myalert) {mySerial.println ("AT+CMGF = 1"); // indstillet til forsinkelse i SMS -tilstand (1000); mySerial.println ("AT+CMGF = 1"); // indstillet til forsinkelse i SMS -tilstand (1000); //mySerial.println("AT+CMGS=\"+DIT NUMMER / ""); // indstil telefonnummeret (pakket ind i dobbelte citater) forsinkelse (1000); mySerial.print (mytemp, 1); mySerial.print (myalert); forsinkelse (1000); mySerial.write (0x1A); // sender ctrl+z slut på meddelelsesforsinkelse (1000); mySerial.write (0x0D); // Transportretur i sekskantforsinkelse (1000); mySerial.write (0x0A); forsinkelse (1000000); // 17 minutter - juster efter din egen applikation}

Åbn Arduino IDE -miljøet - jeg har beskrevet, hvordan du finder dig omkring dette i detaljer i min tidligere instruerbare, som jeg hentydede til tidligere.

Du skal bruge følgende biblioteker

SoftwareSerial.h

OneWire.h

DallasTemperatur. H

Konfigurer derefter RX- og TX -benene på ATTINY85, som du skal forbinde med A1 -tænkeren. ATTINY 85 har 8 ben, fire på hver side og er justeret ved hjælp af prikken på overfladen a s en reference. Pin 1 eller RESET pin er ved siden af prikken.

(i dette tilfælde valgte jeg Pin2 og 3 - Disse er på samme side som RESET -stiften, der er ved siden af prikken på overfladen af ATTINY 85. Pin 2 er den næste pin langs RESET -stiften, mens Pin 3 er mellem Pin 2 og GRUND)

Dernæst skal du konfigurere temperatursensoren -

#define ONE_WIRE_BUS 1

OneWire _oneWire = OneWire (ONE_WIRE_BUS);

DallasTemperature _sensors = DallasTemperature (& _ oneWire);

Konfigurer derefter softwarens serielle port

mySerial.begin (115200);

forsinkelse (60000);

og derefter kalde sensorerne med _sensors.begin ();

Dernæst er der sløjfen, som poller rundt på et forudbestemt tidspunkt, registrerer temperaturen og sender en besked / advarsel afhængigt af værdien. Den bruger en funktion SMS_temp, som også er, hvor du indstiller timingen af sløjfen

void loop () {sensors.requestTemperatures (); forsinkelse (2000);

dobbelt tempC = _sensors.getTempCByIndex (0);

dobbelt tempF = _sensors.getTempFByIndex (0);

hvis (tempC <= 14) {SMS_temp (tempC, "FARLIGT kold");}

hvis (tempC> 14 && tempC <= 18) {SMS_temp (tempC, "Ret kold");}

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

hvis (tempC> = 23 && error_temperature) {SMS_temp (tempC, "For varm");}

}

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

Konfigurer derefter Arduino IDE til at forberede upload til ATTINY85.

En række ting at bemærke

1- Hvis du ikke har ATTINY-bestyrelsesfamilien, skal du tilføje følgende url https://raw.githubusercontent.com/damellis/attiny/… i File/Preferences/Additional Boards Manager URL, Dernæst skal du i Arduio IDE klikke på Værktøjer/Board/Board Manager og søge efter ATTINY og installere det nye board. Skift processoren til Attiny85.

Trin 2: Upload af programmet til ATTINY85

Upload af programmet til ATTINY85
Upload af programmet til ATTINY85

Se også min tidligere instruks om dette-https://www.instructables.com/id/15-Dollar-Attiny8…

ATTINY85 har to tilstande, henholdsvis programmering og driftstilstand. PROGRAMMERINGSMODUS Identificer først stifterne på ATTINY85. For at gøre dette skal du finde det lille hak på overfladen af chippen, der er ved siden af RST/RESET -stiften. Ved at bruge dette som referencepunkt kan du identificere resten af stifterne. Alle disse oplysninger findes i A85 -databladet -https://ww1.microchip.com/downloads/en/DeviceDoc/At…

USBasp og ATTINY85 skal tilsluttes som vist på billedet ovenfor.

Indstil derefter på Arduino IDE programmereren til USBasp og frekvensen til intern 8Mhz.

Tilslut USBasp til en USB -port på din bærbare computer (i Windows 10, hvis du ikke har USBasp -driveren, skal du bruge Zadig i henhold til webstedet

Vælg derefter med USBasp tilsluttet fra Arduino IDE Skitse/upload, og forhåbentlig skal du se uploadforløbet vist med røde bogstaver i Arduino IDE og slutte med avrdude udført. Tak skal du have.

Eventuelle fejl på dette tidspunkt er normalt forbundet med løse kabler eller den forkerte driver.

Trin 3: Kør dit program

Kører dit program
Kører dit program
Kører dit program
Kører dit program
Kører dit program
Kører dit program

For det første noget om Dallas 18b20 termometersensoren. Den har 3 ben, jord (G), data (D) og VCC som vist på billedet ovenfor. For drift kræver det at bygge bro mellem D og VCC med en 4,7k modstand. G og VCC er forbundet til de respektive poler, mens D er forbundet til en ATTINY 85, pin - [6] PB1, som konfigureret i koden.

Tilslut derefter ATTINY til A6 GSM som følger (og vist ovenfor)

ATTINY TX A6 UART_RXdATTINY RX A6 UART_TXd

ATTINY GND A6 GND

og på selve A6, A6 PWR A6 VCC 5.0A6 RST A6 GND (Tilslut ikke til jorden endnu !!!!!)

Tænd nu for begge enheder, og efter et par sekunder skal du midlertidigt røre ved A6 -stiften med kablet forbundet til A6 RST -stiften. A6 slukker og tænder, og forhåbentlig skal du snart modtage temperaturdata på din telefon.

Trin 4: Konklusion

Dette instruerbare kan virke ret simpelt, men tanken er at illustrere, hvad der kan opnås med billige komponenter. Det er klart, at hvis du har adgang til wi-fi eller et BLE-hub, er der mere passende løsninger.

Jeg dækkede ikke anden funktionalitet såsom at sende en SMS TIL telefonen for at starte temperaturregistrering / transmission osv.

Anbefalede: