Innholdsfortegnelse:

SMS -tekst Temp -varsler fra en ATTINY85 og A1 GSM: 5 trinn
SMS -tekst Temp -varsler fra en ATTINY85 og A1 GSM: 5 trinn

Video: SMS -tekst Temp -varsler fra en ATTINY85 og A1 GSM: 5 trinn

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

Denne instruksen viser deg hvordan du kan fange temperaturen fra en enkel temperatursensor og sende den med sms -tekst til mobiltelefonen. For å forenkle ting, sender jeg temperaturen med et angitt intervall, men jeg viser også hvordan dette bare kan gjøres ved unntak / varsler. Maskinvaren er veldig lav, mindre enn 10 dollar, selv om det er tilbakevendende sms -kostnader å vurdere.

Tunge løft utføres av den enkle, men kraftige ATTINY 85 som fanger temperaturdataene og deretter utløser en SMS som skal sendes gjennom en AI-Thinker A6 GSM-modul.

Kort sagt, du skriver ATTINY85 -koden i Arduino IDE -miljøet og brenner den på ATTINY85 ved hjelp av en USBASP seriell/USB -omformer. Jeg har dekket konfigurering av AI-Thinker A6 GSM-modulen og Arduino IDE i to tidligere opplæringsprogrammer. Det som er annerledes her er grensesnittet mellom ATTINY og A6 GSM -modulen ved bruk av seriell kommunikasjon.

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

Etter programmering leser ATTINY temperaturdataene fra en termometersensor - Dallas 18B20- og sender deretter dataene og kommandoene ved seriell tilkobling til A6 GSM -modulen som deretter sender dem som en SMS -tekst til din mobiltelefon / smarttelefon.

Her er hva du trenger:

1. USBASP seriell/USB -omformer.

2. ATTINY 85.

3. AI-Thinker A6 GSM-modul versjon 6 (med en sim som har SMS-studiepoeng).

4. 3.3v brødbrett strømforsyning for ATTINY85.

5. 3.3.v USB-strømforsyning for AI-Thinker A6 GSM-modulen.

6. Dallas 18B20 temperatursensor..

7. 4,7k motstand for 18B20 sensoren.

8. Brødbrett og kabler.

9. Arduino IDE (jeg brukte versjon 1.8.5. For dette).

10. Windows X bærbar datamaskin (jeg brukte versjon 10) med en gratis usb -port.

Trinn 1: Programmering av ATTINY 85

Her er Arduino IDE -koden (Du må endre telefonnummeret du vil sende SMS -en til.)

#include #include #include

// *** // *** Definer RX- og TX -pinnene. Velg to // *** pinner som er ubrukte. Prøv å unngå D0 (pin 5) // *** og D2 (pin 7) hvis du planlegger å bruke I2C. // *** #define RX 3 // *** D3, Pin 2 #define TX 4 // *** D4, Pin 3

// *** // *** Definer den programvarebaserte serielle porten. Bruk // *** navnet Serial slik at koden kan brukes på andre // *** plattformer som støtter maskinvarebasert seriell. På // *** sjetonger som støtter maskinvareserien, bare // *** kommenter denne linjen. // ***

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

// *** // *** Pin som OneWire -data // *** ledningen er koblet til. // *** #definere ONE_WIRE_BUS 1

// *** // *** Sett opp en oneWire -forekomst for å kommunisere med alle OneWire // *** -enheter (ikke bare Maxim/Dallas temperatur -ICer). // *** OneWire _oneWire = OneWire (ONE_WIRE_BUS);

// *** // *** Send vår oneWire -referanse til Dallas Temperature. // *** DallasTemperature _sensors = DallasTemperature (& _ oneWire);

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

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

void loop () {

// *** // *** Få gjeldende temperatur og vis den. // *** _sensors.requestTemperatures (); forsinkelse (2000); dobbel tempC = _sensors.getTempCByIndex (0); dobbel tempF = _sensors.getTempFByIndex (0); // sjekk for feil - noen ganger ved start, temp vist som 85C

if (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"); // satt til SMS -modus forsinkelse (1000); mySerial.println ("AT+CMGF = 1"); // satt til SMS -modus forsinkelse (1000); //mySerial.println("AT+CMGS=\"+ DITT NUMMER / ""); // angi telefonnummeret (innpakket i doble anførselstegn) forsinkelse (1000); mySerial.print (mytemp, 1); mySerial.print (myalert); forsinkelse (1000); mySerial.write (0x1A); // sender ctrl+z slutten av meldingsforsinkelse (1000); mySerial.write (0x0D); // Transportretur i sekskantforsinkelse (1000); mySerial.write (0x0A); forsinkelse (1000000); // 17 minutter - juster etter din egen applikasjon}

Åpne Arduino IDE -miljøet - jeg har beskrevet hvordan du kan komme deg rundt dette i detalj i min tidligere instruerbare som jeg hentydet til tidligere.

Du trenger følgende biblioteker

SoftwareSerial.h

OneWire.h

DallasTemperature.h

Konfigurer deretter RX- og TX -pinnene på ATTINY85 som du trenger for å koble til A1 -tenkeren. ATTINY 85 har 8 pinner, fire på hver side og er justert ved hjelp av prikken på overflaten a s en referanse. Pin 1 eller RESET pin er ved siden av prikken.

(i dette tilfellet valgte jeg Pin2 og 3 - Disse er på samme side som RESET -pinnen som er ved siden av prikken på overflaten av ATTINY 85. Pin 2 er den neste pin -en fra RESET -pin mens Pin 3 er mellom Pin 2 og GRUNN)

Deretter må du konfigurere temperatursensoren -

#define ONE_WIRE_BUS 1

OneWire _oneWire = OneWire (ONE_WIRE_BUS);

DallasTemperature _sensors = DallasTemperature (& _ oneWire);

Konfigurer deretter programvarens serielle port

mySerial.begin (115200);

forsinkelse (60000);

og ring deretter sensorene med _sensors.begin ();

Deretter er det løkken, som avstemmer rundt på et forhåndsbestemt tidspunkt, registrerer temperaturen og sender en melding / varsel avhengig av verdien. Den bruker en funksjon SMS_temp som også er der du angir timingen for løkken

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

dobbel tempC = _sensors.getTempCByIndex (0);

dobbel tempF = _sensors.getTempFByIndex (0);

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

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

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

if (tempC> = 23 && error_temperature) {SMS_temp (tempC, "Too warm");}

}

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

Sett deretter opp Arduino IDE for å forberede opplasting til ATTINY85.

En rekke ting å merke seg

1- Hvis du ikke har ATTINY-tavlefamilien, kan du legge til følgende url https://raw.githubusercontent.com/damellis/attiny/… i Fil/Preferanser/Ytterligere styrer-URL-adresse, Deretter klikker du på Arduio IDE på Tools/Board/Board Manager og søker etter ATTINY og installerer det nye kortet. Bytt prosessor til Attiny85.

Trinn 2: Last opp programmet til ATTINY85

Laster opp programmet til ATTINY85
Laster opp programmet til ATTINY85

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

ATTINY85 har to moduser, henholdsvis programmerings- og driftsmodus. PROGRAMMERINGSMODUS Identifiser først pinnene på ATTINY85. For å gjøre dette, finn det lille hakk på overflaten av brikken som ligger ved siden av RST/RESET -pinnen. Ved å bruke dette som et referansepunkt, kan du identifisere resten av pinnene. All denne informasjonen er gitt i A85 -databladet -https://ww1.microchip.com/downloads/en/DeviceDoc/At…

USBasp og ATTINY85 skal kobles til som vist på bildet ovenfor.

Sett deretter på Arduino IDE programmereren til USBasp og frekvensen til intern 8Mhz.

Koble USBasp til en USB -port på den bærbare datamaskinen (på Windows 10, hvis du ikke har USBasp -driveren, bruk Zadig i henhold til nettstedet

Deretter, med USBasp tilkoblet, velger du fra Arduino IDE Skisse/opplasting, og forhåpentligvis bør du se opplastingsfremgangen vist med røde bokstaver i Arduino IDE og slutter med avrdude ferdig. Takk skal du ha.

Eventuelle feil på dette stadiet er vanligvis forbundet med løse kabler eller feil driver.

Trinn 3: Kjøre programmet

Kjører programmet
Kjører programmet
Kjører programmet
Kjører programmet
Kjører programmet
Kjører programmet

For det første noe om Dallas 18b20 termometersensor. Den har 3 pins, Ground (G), data (D) og VCC som vist på bildet ovenfor. For drift krever det å bygge bro mellom D og VCC med en motstand på 4,7 k. G og VCC er koblet til de respektive polene mens D er koblet til en ATTINY 85, pin - [6] PB1, som konfigurert i koden.

Deretter kobler du 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 (Ikke koble til bakken ennå !!!!!)

Slå nå på begge enhetene, og berør midlertidig A6 -jordpinnen etter noen sekunder med kabelen koblet til A6 RST -pinnen. A6 slås av og på, og forhåpentligvis bør du snart motta temperaturdata på telefonen.

Trinn 4: Konklusjon

Dette instruerbare kan virke ganske enkelt, men ideen er å illustrere hva som kan oppnås med komponenter med lave kostnader. Selvfølgelig, hvis du har tilgang til wi-fi eller et BLE-hub, er det mer passende løsninger.

Jeg dekket ikke annen funksjonalitet, for eksempel å sende en SMS til telefonen for å starte temperaturregistrering / overføring etc.

Anbefalt: