Taula de continguts:

Alertes temporals de text per SMS des d'un ATTINY85 i A1 GSM: 5 passos
Alertes temporals de text per SMS des d'un ATTINY85 i A1 GSM: 5 passos

Vídeo: Alertes temporals de text per SMS des d'un ATTINY85 i A1 GSM: 5 passos

Vídeo: Alertes temporals de text per SMS des d'un ATTINY85 i A1 GSM: 5 passos
Vídeo: ESP32 Внутренние датчики — температура, датчики Холла и сенсорные датчики Arduino 2024, De novembre
Anonim
Alertes temporals de text SMS des d'un ATTINY85 i A1 GSM
Alertes temporals de text SMS des d'un ATTINY85 i A1 GSM

Aquest instructiu us mostra com captar la temperatura des d’un senzill sensor de temperatura i enviar-la per SMS al vostre telèfon mòbil. Per simplificar les coses, envio la temperatura a un interval fixat, però també mostro com això només es pot fer mitjançant excepcions / alertes. El maquinari té un cost molt baix, menys de 10 dòlars, tot i que hi ha els costos recurrents de sms a tenir en compte.

L’elevació pesada es realitza amb el senzill però potent ATTINY 85 que capta les dades de temperatura i desencadena un SMS que s’envia a través d’un mòdul GSM AI-Thinker A6.

En resum, escriviu el codi ATTINY85 a l'entorn Arduino IDE i el graveu a l'ATTINY85 mitjançant un convertidor USBASP sèrie / USB. He cobert la configuració del mòdul AI-Thinker A6 GSM i Arduino IDE en dos tutorials anteriors. El que és diferent aquí és la interfície del mòdul GSM ATTINY i A6 mitjançant comunicacions en sèrie.

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

Després de la programació, ATTINY llegeix les dades de temperatura d’un sensor de termòmetre (Dallas 18B20) i, a continuació, envia les dades i les ordres per connexió en sèrie al mòdul GSM A6, que les envia com a SMS al vostre telèfon mòbil / intel·ligent.

Això és el que necessiteu:

1. Convertidor USBASP sèrie / USB.

2. ATINY 85.

3. Mòdul GSM AI-Thinker A6 versió 6 (amb un simulador que té crèdits SMS).

4. Font d'alimentació de taulers de 3.3v per a l'ATTINY85.

5. 3.3.v Font d'alimentació USB per al mòdul GSM AI-Thinker A6.

6. Sensor de temperatura Dallas 18B20..

7. Resistència de 4,7 k per al sensor 18B20.

8. Taula de pa i cables.

9. Arduino IDE (he utilitzat la versió 1.8.5. Per a això).

10. Ordinador portàtil Windows X (he utilitzat la versió 10) amb un port USB gratuït.

Pas 1: Programació de l'ATTINY 85

Aquí teniu el codi IDE d’Arduino (haureu de canviar el número de telèfon al qual voleu enviar l’SMS).

#include #include #include

// *** // *** Definiu els pins RX i TX. Trieu dos // *** pins que no s'utilitzin. Intenteu evitar D0 (pin 5) // *** i D2 (pin 7) si teniu previst utilitzar I2C. // *** #define RX 3 // *** D3, Pin 2 #define TX 4 // *** D4, Pin 3

// *** // *** Definiu el port sèrie basat en el programari. Utilitzant el nom // *** Serial perquè el codi es pugui utilitzar en altres plataformes // *** que admetin sèries basades en maquinari. Als // *** xips que admeten la sèrie de maquinari, només // *** comenteu aquesta línia. // ***

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) // *** // Freqüència ATTINY 85 ajustada a 8 MHz intern

// *** // *** Pin en què està connectat el cable // *** de dades OneWire. // *** #define ONE_WIRE_BUS 1

// *** // *** Configureu una instància oneWire per comunicar-vos amb qualsevol dispositiu OneWire // *** (no només els circuits de temperatura màxima / Dallas). // *** OneWire _oneWire = OneWire (ONE_WIRE_BUS);

// *** // *** Passeu la nostra referència oneWire a Dallas Temperature. // *** DallasTemperature _sensors = DallasTemperature (& _ oneWire);

void setup () {// *** // *** Inicialitza el port sèrie // *** mySerial.begin (115200); retard (60000);

// *** Inicieu la biblioteca. _sensors.begin (); }

bucle buit () {

// *** // *** Obteniu la temperatura actual i mostreu-la. // *** _sensors.requestTemperatures (); endarreriment (2000); doble tempC = _sensors.getTempCByIndex (0); doble tempF = _sensors.getTempFByIndex (0); // comproveu si hi ha errors - de vegades a l'inici, la temperatura es mostra com a 85C

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

void SMS_temp (mytemp doble, String myalert) {mySerial.println ("AT + CMGF = 1"); // s'estableix en mode de retard SMS (1000); mySerial.println ("AT + CMGF = 1"); // s'estableix en mode de retard SMS (1000); //mySerial.println("AT+CMGS=\"+EU NÚMERO / ""); // definir el número de telèfon (embolicat entre cometes dobles) endarreriment (1000); mySerial.print (mytemp, 1); mySerial.print (myalert); retard (1000); mySerial.write (0x1A); // envia ctrl + z final del retard del missatge (1000); mySerial.write (0x0D); // Retorn del carro amb retard hexagonal (1000); mySerial.write (0x0A); retard (1000000); // 17 minuts: ajusteu-lo segons la vostra aplicació}

Obriu l'entorn IDE d'Arduino: he descrit com trobar-vos el camí detallat a la meva instrucció anterior a la qual he al·ludit anteriorment.

Necessitareu les biblioteques següents

SoftwareSerial.h

OneWire.h

DallasTemperature.h

A continuació, configureu els pins RX i TX a l'ATINY85 que necessiteu connectar amb l'A1 Thinker. L’ATTINY 85 té 8 pins, quatre a cada costat i s’alinea mitjançant el punt de la superfície com a referència. El pin 1 o el PIN RESET es troba al costat d'aquest punt.

(en aquest cas he triat Pin2 i 3: es troben al mateix costat que el PIN RESET que es troba al costat del punt a la superfície de l'ATTINY 85. El Pin 2 és el següent pin del pin RESET mentre que el Pin 3 es troba entre Pin 2 i TERRA)

A continuació, heu de configurar el sensor de temperatura -

#define ONE_WIRE_BUS 1

OneWire _oneWire = OneWire (ONE_WIRE_BUS);

DallasTemperature _sensors = DallasTemperature (& _ oneWire);

A continuació, configureu el port sèrie del programari

mySerial.begin (115200);

retard (60000);

i després truqueu als sensors amb _sensors.begin ();

A continuació, hi ha el bucle, que examina en un moment predeterminat, registra la temperatura i envia un missatge / alerta en funció del valor. Utilitza una funció SMS_temp que també és on s'estableix el temps del bucle

bucle buit () {sensors.requestTemperatures (); endarreriment (2000);

doble tempC = _sensors.getTempCByIndex (0);

doble tempF = _sensors.getTempFByIndex (0);

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

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

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

if (tempC> = 23 && error_temperature) {SMS_temp (tempC, "Massa calent");}

}

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

A continuació, configureu l'IDE Arduino per preparar-vos la càrrega a l'ATTINY85.

Hi ha diverses coses a tenir en compte

1- Si no teniu la família de taulers ATTINY, afegiu la següent url https://raw.githubusercontent.com/damellis/attiny/… a Fitxer / Preferències / URL de gestor de taulers addicionals, A continuació, dins de l’IDE Arduio, feu clic a Eines / Tauler / Gestor de taules i cerqueu ATTINY i instal·leu la nova placa. Canvieu el processador a Attiny85.

Pas 2: penjar el programa a l'ATTINY85

Carregant el programa a l'ATTINY85
Carregant el programa a l'ATTINY85

A més, consulteu la informació prèvia sobre aquest tema:

L’ATTINY85 té dos modes, el de programació i el de funcionament, respectivament. MODE DE PROGRAMACIÓ En primer lloc, identifiqueu els pins de l'ATTINY85. Per fer-ho, busqueu la poca osca a la superfície del xip que hi ha al costat del pin RST / RESET. Utilitzant això com a punt de referència, podeu identificar la resta de pins. Tota aquesta informació es proporciona al full de dades A85 -https://ww1.microchip.com/downloads/en/DeviceDoc/At…

L'USBasp i ATTINY85 s'han de connectar tal com es mostra a la imatge superior.

A continuació, a l'IDE Arduino, configureu el programador a USBasp i la freqüència a 8Mhz intern.

Connecteu l'USBasp a un port USB del vostre ordinador portàtil (a Windows 10, si no teniu el controlador USBasp, utilitzeu Zadig segons el lloc web

A continuació, amb l'USBasp connectat, seleccioneu el Sketch / upload d'Arduino IDE i, amb sort, hauríeu de veure el progrés de la càrrega que es mostra en lletres vermelles de l'Arduino IDE i que finalitza amb avrdude fet. Gràcies.

Qualsevol error en aquesta etapa sol estar associat a cables solts o a un controlador incorrecte.

Pas 3: Execució del programa

Execució del vostre programa
Execució del vostre programa
Execució del vostre programa
Execució del vostre programa
Execució del vostre programa
Execució del vostre programa

En primer lloc, alguna cosa sobre el sensor del termòmetre Dallas 18b20. Té 3 pins, terra (G), dades (D) i VCC com es mostra a la imatge superior. Per funcionar, requereix unir el D i el VCC amb una resistència de 4,7 k. G i VCC estan connectats als pols respectius mentre que D està connectat a un ATTINY 85, pin - [6] PB1, tal com es configura al codi.

A continuació, connecteu ATTINY a A6 GSM de la següent manera (i es mostra a la part superior)

ATTINY TX A6 UART_RXdATTINY RX A6 UART_TXd

ATTINY GND A6 GND

i a la pròpia A6, A6 PWR A6 VCC 5.0A6 RST A6 GND (encara no us connecteu a terra !!!!!)

Ara engegueu els dos dispositius i, al cap d’uns segons, toqueu temporalment el pin de terra A6 amb el cable connectat al pin A6 RST. L’A6 s’encendrà i s’encendrà i, amb sort, aviat haureu de rebre dades de temperatura al telèfon.

Pas 4: Conclusió

Aquesta instrucció pot semblar bastant senzilla, però la idea és il·lustrar el que es pot aconseguir amb components de baix cost. Viouslybviament, si teniu accés al wi-fi o a un hub BLE, hi ha solucions més adequades.

No he cobert altres funcions com ara enviar un SMS al telèfon per iniciar la transmissió o enregistrament de temperatura, etc.

Recomanat: