Inhoudsopgave:

SMS-tekst Temp Alerts van een ATTINY85 en A1 GSM: 5 stappen
SMS-tekst Temp Alerts van een ATTINY85 en A1 GSM: 5 stappen

Video: SMS-tekst Temp Alerts van een ATTINY85 en A1 GSM: 5 stappen

Video: SMS-tekst Temp Alerts van een ATTINY85 en A1 GSM: 5 stappen
Video: Урок 99. Создание цифровых часов Arduino с использованием ЖК-дисплея DS3231 и семисегментного дисплея. 2024, November
Anonim
SMS-tekst Temp-waarschuwingen van een ATTINY85 en A1 GSM
SMS-tekst Temp-waarschuwingen van een ATTINY85 en A1 GSM

Deze instructable laat je zien hoe je de temperatuur van een eenvoudige temperatuursensor kunt vastleggen en deze per sms naar je mobiele telefoon kunt sturen. Om het eenvoudiger te maken, stuur ik de temperatuur met een vast interval, maar ik laat ook zien hoe dit alleen bij uitzondering / waarschuwingen kan. De hardware is erg goedkoop, minder dan 10 dollar, hoewel er rekening wordt gehouden met de terugkerende sms-kosten.

Het zware werk wordt gedaan door de eenvoudige maar krachtige ATTINY 85 die de temperatuurgegevens vastlegt en vervolgens een sms activeert die via een AI-Thinker A6 GSM-module wordt verzonden.

Kortom, je schrijft de ATTINY85-code in de Arduino IDE-omgeving en brandt deze op de ATTINY85 met behulp van een USBASP seriële/USB-converter. Ik heb het opzetten van de AI-Thinker A6 GSM-module en Arduino IDE behandeld in twee eerdere tutorials. Wat hier anders is, is de interface van de ATTINY en A6 GSM-module met behulp van seriële communicatie.

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

Na het programmeren leest de ATTINY de temperatuurgegevens van een thermometersensor - Dallas 18B20 - en stuurt de gegevens en commando's vervolgens via een seriële verbinding naar de A6 GSM-module die deze vervolgens als een sms-bericht naar uw mobiele / smartphone verzendt.

Dit is wat je nodig hebt:

1. USBASP serieel/USB-converter.

2. ATTINY 85.

3. AI-Thinker A6 GSM-module versie 6 (met een sim die sms-tegoed heeft).

4. 3.3v breadboard-voeding voor de ATTINY85.

5. 3.3.v USB-voeding voor de AI-Thinker A6 GSM-module.

6. Dallas 18B20 temperatuursensor..

7. 4.7k-weerstand voor de 18B20-sensor.

8. Breadboard en kabels.

9. Arduino IDE (hiervoor heb ik versie 1.8.5 gebruikt).

10. Windows X laptop (ik gebruikte versie 10) met een vrije usb-poort.

Stap 1: Programmeren van de ATTINY 85

Hier is de Arduino IDE-code (u moet het telefoonnummer wijzigen waarnaar u de sms wilt verzenden.)

#include #include #include

// *** // *** Definieer de RX- en TX-pinnen. Kies twee //*** pinnen die ongebruikt zijn. Probeer D0 (pin 5) // *** en D2 (pin 7) te vermijden als je van plan bent I2C te gebruiken. // *** #define RX 3 // *** D3, Pin 2 #define TX 4 // *** D4, Pin 3

// *** // *** Definieer de op software gebaseerde seriële poort. De // ***-naam Serial gebruiken, zodat code kan worden gebruikt op andere // ***-platforms die op hardware gebaseerde seriële ondersteuning bieden. Op // ***-chips die de hardware-serie ondersteunen, geef gewoon // *** commentaar op deze regel. // ***

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 frequentie ingesteld op interne 8 MHz

// *** // *** Pin waarop de OneWire data // *** draad is aangesloten. // *** #define ONE_WIRE_BUS 1

// *** // *** Stel een oneWire-instantie in om te communiceren met alle OneWire // ***-apparaten (niet alleen Maxim/Dallas-temperatuur-IC's). // *** OneWire _oneWire = OneWire (ONE_WIRE_BUS);

// *** // *** Geef onze oneWire-referentie naar Dallas Temperature door. // *** DallasTemperature _sensors = DallasTemperature (&_oneWire);

void setup () { // *** // *** Initialiseer de seriële poort // *** mySerial.begin (115200); vertraging (60.000);

// *** Start de bibliotheek op. _sensoren.begin(); }

lege lus() {

// *** // *** Haal de huidige temperatuur op en geef deze weer. // *** _sensors.requestTemperatures(); vertraging (2000); dubbele tempC = _sensors.getTempCByIndex(0); dubbele tempF = _sensors.getTempFByIndex(0); // controleer op fouten - soms aan het begin, temp weergegeven als 85C

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

void SMS_temp (dubbele mytemp, String myalert) { mySerial.println ("AT+CMGF=1"); // ingesteld op vertraging in sms-modus (1000); mySerial.println("AT+CMGF=1"); // ingesteld op vertraging in sms-modus (1000); //mySerial.println("AT+CMGS=\"+UW NUMMER\""); // stel het telefoonnummer in (verpakt tussen dubbele aanhalingstekens) vertraging (1000); mijnSerial.print(mijntemp, 1); mijnSerial.print(myalert); vertraging (1000); mySerial.write(0x1A); // verzendt ctrl+z einde van berichtvertraging (1000); mySerial.write(0x0D); // Vervoersretour in Hex-vertraging (1000); mySerial.write(0x0A); vertraging (1000000); // 17 minuten - aanpassen aan uw eigen toepassing }

Open de Arduino IDE-omgeving - ik heb beschreven hoe u dit in detail kunt vinden in mijn vorige instructable waarnaar ik eerder verwees.

Je hebt de volgende bibliotheken nodig:

SoftwareSerial.h

OneWire.h

DallasTemperature.h

Configureer vervolgens de RX- en TX-pinnen op de ATTINY85 die u moet verbinden met de A1 Thinker. De ATTINY 85 heeft 8 pinnen, vier aan elke kant en is uitgelijnd met behulp van de stip op het oppervlak als referentie. Pin 1 of RESET-pin staat naast de stip.

(in dit geval heb ik Pin2 en 3 gekozen - Deze bevinden zich aan dezelfde kant als de RESET-pin die zich naast de stip op het oppervlak van de ATTINY 85 bevindt. Pin 2 is de volgende pin naast de RESET-pin terwijl Pin 3 tussen Pin zit 2 en GROND)

Vervolgens moet u de temperatuursensor configureren -

#define ONE_WIRE_BUS 1

OneWire _oneWire = OneWire(ONE_WIRE_BUS);

DallasTemperature _sensors = DallasTemperature(&_oneWire);

Stel vervolgens de seriële softwarepoort in

mijnSerial.begin(115200);

vertraging (60.000);

en roep vervolgens de sensoren aan met _sensors.begin();

Vervolgens is er de lus, die rondkijkt op een vooraf bepaald tijdstip, de temperatuur registreert en afhankelijk van de waarde een bericht/waarschuwing verstuurt. Het gebruikt een functie SMS_temp waar je ook de timing van de lus instelt

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

dubbele tempC = _sensors.getTempCByIndex(0);

dubbele tempF = _sensors.getTempFByIndex(0);

if (tempC <= 14){SMS_temp(tempC, " GEVAARLIJK Koud");}

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

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

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

}

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

Stel vervolgens de Arduino IDE in om het uploaden naar de ATTINY85 voor te bereiden.

Een aantal dingen om op te merken

1- Als je de ATTINY-familie van boards niet hebt, voeg dan de volgende url toe https://raw.githubusercontent.com/damellis/attiny/… in File/Preferences/Additional Boards Manager URL, Klik vervolgens binnen de Arduio IDE op Tools/Board/Board Manager en zoek naar ATTINY en installeer het nieuwe bord. Verander de processor in Attiny85.

Stap 2: Het programma uploaden naar de ATTINY85

Het programma uploaden naar de ATTINY85
Het programma uploaden naar de ATTINY85

Raadpleeg ook mijn vorige instructable hierover -

De ATTINY85 heeft twee modi, respectievelijk programmeer- en bedieningsmodus.1. PROGRAMMEERMODUS Identificeer eerst de pinnen op de ATTINY85. Zoek hiervoor de kleine inkeping op het oppervlak van de chip naast de RST/RESET-pin. Door dit als referentiepunt te gebruiken, kunt u de rest van de pinnen identificeren. Al deze informatie staat in het A85-gegevensblad -https://ww1.microchip.com/downloads/en/DeviceDoc/At…

De USBasp en ATTINY85 moeten worden aangesloten zoals weergegeven in de afbeelding hierboven.

Stel vervolgens op de Arduino IDE de programmer in op USBasp en de frequentie op intern 8Mhz.

Sluit de USBasp aan op een USB-poort op uw laptop (in Windows 10, als u niet over het USBasp-stuurprogramma beschikt, gebruikt u Zadig volgens de website

Selecteer vervolgens, met de USBasp aangesloten, uit de Arduino IDE Sketch/upload en hopelijk zou je de uploadvoortgang in rode letters van de Arduino IDE moeten zien en eindigen met avrdude done. Bedankt.

Eventuele fouten in dit stadium worden meestal geassocieerd met losse kabels of de verkeerde driver.

Stap 3: Uw programma uitvoeren

Uw programma uitvoeren
Uw programma uitvoeren
Uw programma uitvoeren
Uw programma uitvoeren
Uw programma uitvoeren
Uw programma uitvoeren

Ten eerste iets over de Dallas 18b20 thermometersensor. Het heeft 3 pinnen, Ground (G), data (D) en VCC zoals weergegeven in de afbeelding hierboven. Voor gebruik moet de D en VCC worden overbrugd met een weerstand van 4,7 k. G en VCC zijn verbonden met respectievelijke polen terwijl D is verbonden met een ATTINY 85, pin - [6] PB1, zoals geconfigureerd in de code.

Verbind vervolgens de ATTINY met A6 GSM als volgt (en hierboven weergegeven)

ATTINY TX A6 UART_RXdATTINY RX A6 UART_TXd

ATTINY GND A6 GND

en op de A6 zelf, A6 PWR A6 VCC 5.0A6 RST A6 GND (Nog geen verbinding maken met aarde!!!!!)

Schakel nu beide apparaten in en raak na een paar seconden tijdelijk de A6-aardingspin aan met de kabel aangesloten op de A6 RST-pin. De A6 gaat aan en uit en hopelijk ontvang je binnenkort temperatuurgegevens op je telefoon.

Stap 4: Conclusie

Deze instructable lijkt misschien vrij eenvoudig, maar het idee is om te illustreren wat kan worden bereikt met goedkope componenten. Het is duidelijk dat als je toegang hebt tot wifi of een BLE-hub, er meer geschikte oplossingen zijn.

Ik heb geen andere functionaliteit behandeld, zoals het verzenden van een sms NAAR de telefoon om temperatuurregistratie / verzending te starten, enz.

Aanbevolen: