INHOUDSOPGAWE:

SMS -teks Temp -waarskuwings vanaf 'n ATTINY85 en A1 GSM: 5 stappe
SMS -teks Temp -waarskuwings vanaf 'n ATTINY85 en A1 GSM: 5 stappe

Video: SMS -teks Temp -waarskuwings vanaf 'n ATTINY85 en A1 GSM: 5 stappe

Video: SMS -teks Temp -waarskuwings vanaf 'n ATTINY85 en A1 GSM: 5 stappe
Video: How to use W1209 Temperature relay controller and program the thermostat 2024, Julie
Anonim
SMS -teks Temp -waarskuwings vanaf 'n ATTINY85 en A1 GSM
SMS -teks Temp -waarskuwings vanaf 'n ATTINY85 en A1 GSM

Hierdie instruksies wys u hoe u die temperatuur met 'n eenvoudige temperatuursensor kan opneem en dit per sms na u selfoon kan stuur. Om dinge te vereenvoudig, stuur ek die temperatuur op 'n vasgestelde interval, maar ek wys ook hoe dit slegs met uitsondering / waarskuwings gedoen kan word. Die hardeware is baie goedkoop, minder as 10 dollar, alhoewel die herhalende sms -koste in ag geneem moet word.

Die swaar opheffing word uitgevoer deur die eenvoudige, maar kragtige ATTINY 85, wat die temperatuurdata vaslê en dan 'n SMS stuur deur 'n AI-Thinker A6 GSM-module.

Kortom, jy skryf die ATTINY85 -kode in die Arduino IDE -omgewing en verbrand dit op die ATTINY85 met 'n USBASP seriële/USB -omskakelaar. Ek het die opstel van die AI-Thinker A6 GSM-module en Arduino IDE behandel in twee vorige tutoriale. Wat hier anders is, is die koppelvlak van die ATTINY- en A6 GSM -module met behulp van seriële kommunikasie.

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

Na die programmering lees die ATTINY die temperatuurdata van 'n termometersensor - Dallas 18B20- en stuur dan die data en opdragte deur middel van 'n seriële verbinding na die A6 GSM -module, wat dit dan as 'n SMS -teks na u selfoon / slimfoon stuur.

Hier is wat jy nodig het:

1. USBASP seriële/USB -omskakelaar.

2. ATTINY 85.

3. AI-Denker A6 GSM-module weergawe 6 (met 'n sim met SMS-krediete).

4. 3.3v broodbordkragbron vir die ATTINY85.

5. 3.3.v USB-kragtoevoer vir die AI-Thinker A6 GSM-module.

6. Dallas 18B20 temperatuur sensor.

7. 4.7k weerstand vir die 18B20 sensor.

8. Broodbord en kabels.

9. Arduino IDE (ek het weergawe 1.8.5. Hiervoor gebruik).

10. Windows X -skootrekenaar (ek het weergawe 10 gebruik) met 'n gratis usb -poort.

Stap 1: Programmering van die ATTINY 85

Hier is die Arduino IDE -kode (u moet die telefoonnommer verander waarna u die SMS wil stuur.)

#include #include #include

// *** // *** Definieer die RX- en TX -penne. Kies twee // *** penne wat ongebruik is. Probeer om D0 (pen 5) // *** en D2 (pen 7) te vermy as u van plan is om I2C te gebruik. // *** #definieer RX 3 // *** D3, pen 2 #definieer TX 4 // *** D4, pen 3

// *** // *** Definieer die sagteware -gebaseerde seriële poort. Gebruik die // *** naam Serial sodat kode gebruik kan word op ander // *** platforms wat hardeware gebaseerde reeks ondersteun. Op // *** skyfies wat die hardeware -reeks ondersteun, // // lewer slegs kommentaar op hierdie reël. // ***

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 frekwensie ingestel op interne 8 MHz

// *** // *** Speld waarop die OneWire -data // *** draad verbind is. // *** #definieer ONE_WIRE_BUS 1

// *** // *** Stel 'n oneWire -instansie op om te kommunikeer met enige OneWire // *** toestelle (nie net Maxim/Dallas temperatuur IC's nie). // *** OneWire _oneWire = OneWire (ONE_WIRE_BUS);

// *** // *** Slaag ons oneWire -verwysing na Dallas Temperature. // *** DallasTemperature _sensors = DallasTemperature (& _ oneWire);

leemte -opstelling () {// *** // *** Initialiseer die reekspoort // *** mySerial.begin (115200); vertraging (60000);

// *** Begin die biblioteek. _sensors.begin (); }

leemte -lus () {

// *** // *** Kry die huidige temperatuur en wys dit. // *** _sensors.requestTemperatures (); vertraging (2000); dubbele tempC = _sensors.getTempCByIndex (0); dubbele tempF = _sensors.getTempFByIndex (0); // kyk vir foute - soms aan die begin, die temperatuur word as 85C aangedui

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

void SMS_temp (double mytemp, String myalert) {mySerial.println ("AT+CMGF = 1"); // ingestel op SMS -modus vertraging (1000); mySerial.println ("AT+CMGF = 1"); // ingestel op SMS -modus vertraging (1000); //mySerial.println("AT+CMGS=\"+JOU NOMMER / ""); // stel die telefoonnommer (in dubbele aanhalings) vertraag (1000) in; mySerial.print (mytemp, 1); mySerial.print (myalert); vertraging (1000); mySerial.write (0x1A); // stuur ctrl+z einde van boodskap vertraging (1000); mySerial.write (0x0D); // Vervoer in heksvertraging (1000); mySerial.write (0x0A); vertraging (1000000); // 17 minute - pas by u eie toepassing aan}

Maak die Arduino IDE -omgewing oop - ek het in my vorige instruksies waarop ek vroeër verwys het, beskryf hoe u dit in detail kan omseil.

U benodig die volgende biblioteke

SoftwareSerial.h

OneWire.h

DallasTemperature.h

Stel dan die RX- en TX -penne op die ATTINY85 op wat u met die A1 -denker moet verbind. Die ATTINY 85 het 8 penne, vier aan elke kant en is in lyn met die punt op die oppervlak as 'n verwysing. Speld 1 of RESET -pen is langs die kol.

(in hierdie geval het ek Pin2 en 3 gekies - dit is aan dieselfde kant as die RESET -pen wat langs die punt op die oppervlak van die ATTINY 85 is. Pin 2 is die volgende pen langs die RESET -pen terwyl Pin 3 tussen pen is 2 en GROND)

Vervolgens moet u die temperatuursensor instel -

#definieer ONE_WIRE_BUS 1

OneWire _oneWire = OneWire (ONE_WIRE_BUS);

DallasTemperature _sensors = DallasTemperature (& _ oneWire);

Stel dan die seriële poort van die sagteware op

mySerial.begin (115200);

vertraging (60000);

en bel dan die sensors met _sensors.begin ();

Vervolgens is daar die lus, wat op 'n voorafbepaalde tyd rondpeil, die temperatuur aanteken en 'n boodskap / waarskuwing stuur, afhangende van die waarde. Dit gebruik 'n funksie SMS_temp, waar u ook die tydsberekening van die lus kan bepaal

leemte -lus () {sensors.requestTemperatures (); vertraging (2000);

dubbele tempC = _sensors.getTempCByIndex (0);

dubbele tempF = _sensors.getTempFByIndex (0);

as (tempC <= 14) {SMS_temp (tempC, "GEVAARLIK koud");}

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

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

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

}

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

Stel dan die Arduino IDE op om voor te berei vir oplaai na die ATTINY85.

'N Aantal dinge om op te let

1- As u nie die ATTINY-reeks borde het nie, voeg die volgende url by https://raw.githubusercontent.com/damellis/attiny/… in die URL van File/Preferences/Additional Boards Manager, Klik dan in die Arduio IDE op Tools/Board/Board Manager en soek ATTINY en installeer die nuwe bord. Verander die verwerker na Attiny85.

Stap 2: Laai die program op na die ATTINY85

Laai die program op na die ATTINY85
Laai die program op na die ATTINY85

Verwys ook na my vorige instruksies hieroor-https://www.instructables.com/id/15-Dollar-Attiny8…

Die ATTINY85 het twee modusse, onderskeidelik programmerings- en bedieningsmodus. PROGRAMMERINGSMODUS Identifiseer eerstens die penne op die ATTINY85. Om dit te doen, vind u die klein kerf op die oppervlak van die skyfie langs die RST/RESET -pen. Deur dit as 'n verwysingspunt te gebruik, kan u die res van die penne identifiseer. Al hierdie inligting word verskaf in die A85 -datablad -https://ww1.microchip.com/downloads/en/DeviceDoc/At…

Die USBasp en ATTINY85 moet gekoppel word soos getoon in die prent hierbo.

Stel vervolgens die programmeerder op die Arduino IDE op USBasp en die frekwensie op interne 8Mhz.

Koppel die USBasp aan 'n USB -poort op u skootrekenaar (as u nie die USBasp -bestuurder in Windows 10 het nie, gebruik Zadig volgens die webwerf

Kies dan met die USBasp gekoppel uit die Arduino IDE Skets/oplaai en hopelik moet u die oplaai -vordering in rooi letters van die Arduino IDE sien en eindig met avrdude. Dankie.

Enige foute op hierdie stadium hou gewoonlik verband met los kabels of die verkeerde bestuurder.

Stap 3: Begin u program

Die bestuur van u program
Die bestuur van u program
Die bestuur van u program
Die bestuur van u program
Die bestuur van u program
Die bestuur van u program

Eerstens iets oor die Dallas 18b20 termometersensor. Dit het 3 penne, grond (G), data (D) en VCC, soos in die prent hierbo getoon. Vir die operasie is dit nodig om die D en VCC te oorbrug met 'n weerstand van 4.7k. G en VCC is aan die onderskeie pole gekoppel terwyl D gekoppel is aan 'n ATTINY 85, pen - [6] PB1, soos in die kode opgestel.

Koppel die ATTINY vervolgens soos volg aan die A6 GSM (en hierbo getoon)

ATTINY TX A6 UART_RXdATTINY RX A6 UART_TXd

ATTINY GND A6 GND

en op die A6 self, A6 PWR A6 VCC 5.0A6 RST A6 GND (Moet nog nie met die grond aansluit nie !!!!!)

Skakel nou albei toestelle aan, en raak na 'n paar sekondes die A6 -grondpen tydelik aan met die kabel wat aan die A6 RST -pen gekoppel is. Die A6 sal aanskakel en hopelik moet u binnekort temperatuurdata op u telefoon ontvang.

Stap 4: Gevolgtrekking

Dit kan eenvoudig lyk, maar die idee is om te illustreer wat met lae koste -komponente bereik kan word. Uiteraard is daar meer geskikte oplossings as u toegang tot wi-fi of 'n BLE-hub het.

Ek het nie ander funksies behandel nie, soos om 'n SMS na die telefoon te stuur om temperatuuropname / oordrag, ens.

Aanbeveel: