Innehållsförteckning:

SMS -text Temp -varningar från en ATTINY85 och A1 GSM: 5 steg
SMS -text Temp -varningar från en ATTINY85 och A1 GSM: 5 steg

Video: SMS -text Temp -varningar från en ATTINY85 och A1 GSM: 5 steg

Video: SMS -text Temp -varningar från en ATTINY85 och A1 GSM: 5 steg
Video: #82 ATTiny85 + I2C + SPI and more! 2024, Juli
Anonim
SMS -text Temp -varningar från en ATTINY85 och A1 GSM
SMS -text Temp -varningar från en ATTINY85 och A1 GSM

Denna instruerbara visar dig hur du fångar temperaturen från en enkel temperatursensor och skickar den med sms till din mobiltelefon. För att förenkla saker skickar jag temperaturen med ett bestämt intervall men jag visar också hur detta bara kan göras med undantag / varningar. Hårdvaran är mycket låg kostnad, mindre än 10 dollar, även om det finns återkommande sms -kostnader att överväga.

Tunga lyft utförs av den enkla men kraftfulla ATTINY 85 som fångar temperaturdata och sedan utlöser ett SMS som ska skickas via en AI-Thinker A6 GSM-modul.

Kort sagt, du skriver ATTINY85 -koden i Arduino IDE -miljön och bränner den på ATTINY85 med en USBASP -seriell/USB -omvandlare. Jag har täckt upp installationen av AI-Thinker A6 GSM-modulen och Arduino IDE i två tidigare självstudier. Vad som är annorlunda här är gränssnittet ATTINY och A6 GSM -modulen med hjälp av seriell kommunikation.

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

Efter programmering läser ATTINY temperaturdata från en termometersensor - Dallas 18B20- och skickar sedan data och kommandon med seriell anslutning till A6 GSM -modulen som sedan skickar den som en SMS -text till din mobil / smarttelefon.

Här är vad du behöver:

1. USBASP seriell/USB -omvandlare.

2. ATTINY 85.

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

4. 3.3v breadboard -strömförsörjning för ATTINY85.

5. 3.3.v USB-strömförsörjning för AI-Thinker A6 GSM-modulen.

6. Dallas 18B20 temperaturgivare..

7. 4,7k motstånd för 18B20 sensorn.

8. Brödbräda och kablar.

9. Arduino IDE (jag använde version 1.8.5. För detta).

10. Windows X bärbar dator (jag använde version 10) med en gratis usb -port.

Steg 1: Programmering av ATTINY 85

Här är Arduino IDE -koden (Du måste ändra telefonnumret som du vill skicka SMS till.)

#include #include #include

// *** // *** Definiera RX- och TX -stiften. Välj två // *** stift som är oanvända. Försök att undvika D0 (stift 5) // *** och D2 (stift 7) om du planerar att använda I2C. // *** #define RX 3 // *** D3, Pin 2 #define TX 4 // *** D4, Pin 3

// *** // *** Definiera den programvarubaserade seriella porten. Använda // *** namnet Serial så att koden kan användas på andra // *** plattformar som stöder hårdvarubaserad seriell. På // *** chips som stöder hårdvaruserien, bara // *** kommentera den här raden. // ***

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 inställd på intern 8 MHz

// *** // *** Pin som OneWire -data // *** -tråden är ansluten till. // *** #define ONE_WIRE_BUS 1

// *** // *** Konfigurera en oneWire -instans för att kommunicera med alla OneWire // *** -enheter (inte bara Maxim/Dallas temperatur -IC: er). // *** OneWire _oneWire = OneWire (ONE_WIRE_BUS);

// *** // *** Passera vår oneWire -referens till Dallas Temperature. // *** DallasTemperature _sensors = DallasTemperature (& _ oneWire);

void setup () {// *** // *** Initiera serieporten // *** mySerial.begin (115200); fördröjning (60000);

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

void loop () {

// *** // *** Få aktuell temperatur och visa den. // *** _sensors.requestTemperatures (); fördröjning (2000); dubbel tempC = _sensors.getTempCByIndex (0); dubbel tempF = _sensors.getTempFByIndex (0); // kolla efter fel - ibland vid start, temp visas som 85C

if (tempC 14 && tempC 18 && tempC = 23 && error_temperature) {SMS_temp (tempC, "För varmt");}}

void SMS_temp (dubbel mytemp, String myalert) {mySerial.println ("AT+CMGF = 1"); // inställd på fördröjning i SMS -läge (1000); mySerial.println ("AT+CMGF = 1"); // inställd på fördröjning i SMS -läge (1000); //mySerial.println("AT+CMGS=\"+DITT NUMMER / ""); // ställ in telefonnumret (inslaget i dubbla citattecken) fördröjning (1000); mySerial.print (mytemp, 1); mySerial.print (myalert); fördröjning (1000); mySerial.write (0x1A); // skickar ctrl+z slutet av meddelandefördröjning (1000); mySerial.write (0x0D); // Vagnretur i hexfördröjning (1000); mySerial.write (0x0A); fördröjning (1000000); // 17 minuter - justera efter din egen applikation}

Öppna Arduino IDE -miljön - jag har beskrivit hur du kan komma runt detta i detalj i min tidigare instruerbara som jag hänvisade till tidigare.

Du behöver följande bibliotek

SoftwareSerial.h

OneWire.h

DallasTemperature.h

Konfigurera sedan RX- och TX -stiften på ATTINY85 som du behöver ansluta till A1 -tänkaren. ATTINY 85 har 8 stift, fyra på varje sida och är inriktad med hjälp av pricken på ytan a s en referens. Pin 1 eller RESET pin är bredvid punkten.

(i det här fallet valde jag Pin2 och 3 - Dessa är på samma sida som RESET -stiftet som ligger bredvid pricken på ytan på ATTINY 85. Pin 2 är nästa stift längs RESET -stiftet medan Pin 3 är mellan Pin 2 och JORD)

Därefter måste du konfigurera temperaturgivaren -

#define ONE_WIRE_BUS 1

OneWire _oneWire = OneWire (ONE_WIRE_BUS);

DallasTemperature _sensors = DallasTemperature (& _ oneWire);

Konfigurera sedan programvarans seriella port

mySerial.begin (115200);

fördröjning (60000);

och ring sedan sensorerna med _sensors.begin ();

Därefter är det slingan, som undersöker runt vid en förutbestämd tid, registrerar temperaturen och skickar ett meddelande / varning beroende på värdet. Den använder en funktion SMS_temp som också är där du ställer in tidpunkten för slingan

void loop () {sensors.requestTemperatures (); fördröjning (2000);

dubbel tempC = _sensors.getTempCByIndex (0);

dubbel tempF = _sensors.getTempFByIndex (0);

if (tempC <= 14) {SMS_temp (tempC, "FARLIGT kallt");}

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

if (tempC> 18 && tempC <23) {SMS_temp (tempC, "Temp Precis rätt");}

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

}

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

Ställ sedan in Arduino IDE för att förbereda för uppladdning till ATTINY85.

Ett antal saker att notera

1- Om du inte har ATTINY-styrelsen, lägg till följande webbadress https://raw.githubusercontent.com/damellis/attiny/… i File/Preferences/Additional Boards Manager URL, Klicka sedan på Arduio IDE på Tools/Board/Board Manager och sök efter ATTINY och installera det nya kortet. Byt processor till Attiny85.

Steg 2: Ladda upp programmet till ATTINY85

Ladda upp programmet till ATTINY85
Ladda upp programmet till ATTINY85

Se även min tidigare instruktion om detta-https://www.instructables.com/id/15-Dollar-Attiny8…

ATTINY85 har två lägen, programmerings- respektive driftsläge. PROGRAMMERINGSLÄGE Identifiera först stiften på ATTINY85. För att göra detta, hitta det lilla hacket på ytan av chipet som ligger bredvid RST/RESET -stiftet. Med detta som referenspunkt kan du identifiera resten av stiften. All denna information finns i A85 -databladet -https://ww1.microchip.com/downloads/en/DeviceDoc/At…

USBasp och ATTINY85 ska anslutas enligt bilden ovan.

Ställ sedan in på Arduino IDE programmeraren på USBasp och frekvensen till intern 8Mhz.

Anslut USBasp till en USB -port på din bärbara dator (i Windows 10, om du inte har USBasp -drivrutinen, använd Zadig enligt webbplatsen

Därefter, med USBasp ansluten, välj från Arduino IDE Sketch/upload och förhoppningsvis ska du se uppladdningsförloppet visas med röda bokstäver i Arduino IDE och sluta med avrdude gjort. Tack.

Eventuella fel i detta skede är vanligtvis förknippade med lösa kablar eller fel drivrutin.

Steg 3: Kör ditt program

Kör ditt program
Kör ditt program
Kör ditt program
Kör ditt program
Kör ditt program
Kör ditt program

För det första, något om Dallas 18b20 termometersensor. Den har 3 stift, Ground (G), data (D) och VCC som visas på bilden ovan. För drift kräver det överbryggning av D och VCC med ett 4,7k motstånd. G och VCC är anslutna till respektive poler medan D är ansluten till en ATTINY 85, stift - [6] PB1, enligt konfigurationen i koden.

Anslut sedan ATTINY till A6 GSM enligt följande (och visas ovan)

ATTINY TX A6 UART_RXdATTINY RX A6 UART_TXd

ATTINY GND A6 GND

och på A6 själv, A6 PWR A6 VCC 5.0A6 RST A6 GND (Anslut inte till jord ännu !!!!!)

Slå nu på båda enheterna, och efter några sekunder, tryck tillfälligt på A6 -jordstiftet med kabeln ansluten till A6 RST -stiftet. A6 slås av och på och förhoppningsvis bör du snart få temperaturdata på din telefon.

Steg 4: Slutsats

Detta instruerbara kan verka ganska enkelt men tanken är att illustrera vad som kan uppnås med lågkostnadskomponenter. Uppenbarligen, om du har tillgång till wi-fi eller ett BLE-hubb finns det mer lämpliga lösningar.

Jag täckte inte över andra funktioner som att skicka ett SMS till telefonen för att starta temperaturregistrering / överföring etc.

Rekommenderad: