Tabla de contenido:

Alertas temporales de texto SMS desde un ATTINY85 y A1 GSM: 5 pasos
Alertas temporales de texto SMS desde un ATTINY85 y A1 GSM: 5 pasos

Video: Alertas temporales de texto SMS desde un ATTINY85 y A1 GSM: 5 pasos

Video: Alertas temporales de texto SMS desde un ATTINY85 y A1 GSM: 5 pasos
Video: Modificando Compilando y Cargando Bootloader Micronucleus ATtiny85 IDEAL BadUSB Y OTROS TRUCOS!!! 2024, Noviembre
Anonim
Alertas temporales de texto SMS desde un ATTINY85 y A1 GSM
Alertas temporales de texto SMS desde un ATTINY85 y A1 GSM

Este instructivo le muestra cómo capturar la temperatura de un sensor de temperatura simple y enviarla por SMS a su teléfono móvil. Para simplificar las cosas, envío la temperatura en un intervalo establecido, pero también muestro cómo esto se puede hacer solo mediante excepciones / alertas. El hardware es de muy bajo costo, menos de 10 dólares, aunque hay que considerar los costos recurrentes de sms.

El trabajo pesado lo realiza el simple pero poderoso ATTINY 85, que captura los datos de temperatura y luego activa un SMS que se envía a través de un módulo GSM AI-Thinker A6.

En resumen, escribe el código ATTINY85 en el entorno Arduino IDE y lo graba en el ATTINY85 usando un convertidor USBASP serial / USB. He cubierto la configuración del módulo GSM AI-Thinker A6 y Arduino IDE en dos tutoriales anteriores. Lo que es diferente aquí es la interconexión del módulo GSM ATTINY y A6 mediante comunicaciones en serie.

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

Después de la programación, el ATTINY lee los datos de temperatura de un sensor de termómetro, Dallas 18B20, y luego envía los datos y comandos por conexión en serie al módulo GSM A6, que luego lo envía como un mensaje de texto SMS a su teléfono móvil / inteligente.

Esto es lo que necesita:

1. Convertidor USBASP serial / USB.

2. ATTINY 85.

3. Módulo GSM AI-Thinker A6 versión 6 (con un sim que tiene créditos SMS).

4. Fuente de alimentación de tablero de 3.3v para el ATTINY85.

5. Fuente de alimentación USB 3.3.v para el módulo GSM AI-Thinker A6.

6. Sensor de temperatura Dallas 18B20.

7. Resistencia de 4.7k para el sensor 18B20.

8. Protoboard y cables.

9. Arduino IDE (utilicé la versión 1.8.5. Para esto).

10. Computadora portátil con Windows X (yo usé la versión 10) con un puerto USB libre.

Paso 1: Programación del ATTINY 85

Aquí está el código IDE de Arduino (Deberá cambiar el número de teléfono al que desea enviar el SMS).

#incluir #incluir #incluir

// *** // *** Defina los pines RX y TX. Elija dos // *** pines que no se utilicen. Intente evitar D0 (pin 5) // *** y D2 (pin 7) si planea usar I2C. // *** #define RX 3 // *** D3, Pin 2 #define TX 4 // *** D4, Pin 3

// *** // *** Defina el puerto serie basado en software. Usar el // *** nombre Serial para que el código se pueda usar en otras // *** plataformas que admitan el serial basado en hardware. En // *** chips que admiten la serie de hardware, simplemente // *** comente esta línea. // ***

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) // *** // Frecuencia ATTINY 85 configurada en 8 MHz internos

// *** // *** Pin en el que está conectado el cable de datos // *** de OneWire. // *** #define ONE_WIRE_BUS 1

// *** // *** Configure una instancia de oneWire para comunicarse con cualquier dispositivo OneWire // *** (no solo los IC de temperatura Maxim / Dallas). // *** OneWire _oneWire = OneWire (ONE_WIRE_BUS);

// *** // *** Pase nuestra referencia oneWire a la temperatura de Dallas. // *** DallasTemperature _sensors = DallasTemperature (& _ oneWire);

void setup () {// *** // *** Inicializar el puerto serie // *** mySerial.begin (115200); retraso (60000);

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

bucle vacío () {

// *** // *** Obtener la temperatura actual y mostrarla. // *** _sensors.requestTemperatures (); retraso (2000); doble tempC = _sensors.getTempCByIndex (0); doble tempF = _sensors.getTempFByIndex (0); // verifica si hay errores - a veces al inicio, la temperatura se muestra como 85C

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

void SMS_temp (doble mytemp, String myalert) {mySerial.println ("AT + CMGF = 1"); // establecer en modo SMS delay (1000); mySerial.println ("AT + CMGF = 1"); // establecer en modo SMS delay (1000); //mySerial.println("AT+CMGS=\"+YOUR NUMBER / ""); // establece el número de teléfono (entre comillas dobles) delay (1000); mySerial.print (mytemp, 1); mySerial.print (myalert); retraso (1000); mySerial.write (0x1A); // envía ctrl + z final del mensaje delay (1000); mySerial.write (0x0D); // Retorno de carro en retardo hexadecimal (1000); mySerial.write (0x0A); retraso (1000000); // 17 minutos: ajuste para adaptarse a su propia aplicación}

Abra el entorno Arduino IDE: he descrito cómo encontrar la manera de solucionar esto en detalle en mi instructable anterior al que aludí anteriormente.

Necesitará las siguientes bibliotecas

SoftwareSerial.h

OneWire.h

DallasTemperature.h

A continuación, configure los pines RX y TX en el ATTINY85 que necesita para conectar con el A1 Thinker. El ATTINY 85 tiene 8 pines, cuatro en cada lado y está alineado usando el punto en la superficie como referencia. El pin 1 o el pin RESET está al lado del punto.

(en este caso, elegí Pin2 y 3 - Estos están en el mismo lado que el pin RESET que está al lado del punto en la superficie del ATTINY 85. Pin 2 es el siguiente pin a lo largo del pin RESET mientras que el Pin 3 está entre Pin 2 y TIERRA)

A continuación, debe configurar el sensor de temperatura -

#define ONE_WIRE_BUS 1

OneWire _oneWire = OneWire (ONE_WIRE_BUS);

DallasTemperature _sensors = DallasTemperature (& _ oneWire);

A continuación, configure el puerto serie del software

mySerial.begin (115200);

retraso (60000);

y luego llame a los sensores con _sensors.begin ();

A continuación, está el bucle, que sondea a una hora predeterminada, registra la temperatura y envía un mensaje / alerta según el valor. Utiliza una función SMS_temp que también es donde se establece el tiempo del bucle

bucle vacío () {sensores. RequestTemperatures (); retraso (2000);

doble tempC = _sensors.getTempCByIndex (0);

doble tempF = _sensors.getTempFByIndex (0);

if (tempC <= 14) {SMS_temp (tempC, "PELIGROSAMENTE frío");}

if (tempC> 14 && tempC <= 18) {SMS_temp (tempC, "Bastante frío");}

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

if (tempC> = 23 && error_temperature) {SMS_temp (tempC, "Demasiado caliente");}

}

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

A continuación, configure el IDE de Arduino para prepararse para la carga en ATTINY85.

Una serie de cosas a tener en cuenta

1- Si no tiene la familia de tableros ATTINY, agregue la siguiente URL https://raw.githubusercontent.com/damellis/attiny/… en Archivo / Preferencias / URL del Administrador de tableros adicionales, A continuación, dentro del IDE de Arduio, haga clic en Tools / Board / Board Manager y busque ATTINY e instale la nueva placa. Cambie el procesador a Attiny85.

Paso 2: Carga del programa en ATTINY85

Carga del programa en ATTINY85
Carga del programa en ATTINY85

Además, consulte mis instrucciones anteriores sobre esto:

El ATTINY85 tiene dos modos, modo de programación y modo de funcionamiento, respectivamente. MODO DE PROGRAMACIÓN En primer lugar, identifique los pines del ATTINY85. Para hacer esto, busque la pequeña muesca en la superficie del chip que está al lado del pin RST / RESET. Utilizando esto como punto de referencia, puede identificar el resto de los pines. Toda esta información se proporciona en la hoja de datos A85 -https://ww1.microchip.com/downloads/en/DeviceDoc/At…

El USBasp y ATTINY85 deben conectarse como se muestra en la imagen de arriba.

A continuación, en el IDE de Arduino, configure el programador en USBasp y la frecuencia en 8Mhz internos.

Conecte el USBasp a un puerto USB en su computadora portátil (en Windows 10, si no tiene el controlador USBasp, use Zadig según el sitio web

A continuación, con el USBasp conectado, seleccione desde Arduino IDE Sketch / upload y, con suerte, debería ver el progreso de carga mostrado en letras rojas del Arduino IDE y terminando con avrdude done. Gracias.

Cualquier error en esta etapa suele estar asociado con cables sueltos o con el controlador incorrecto.

Paso 3: Ejecución de su programa

Ejecutando su programa
Ejecutando su programa
Ejecutando su programa
Ejecutando su programa
Ejecutando su programa
Ejecutando su programa

En primer lugar, algo sobre el sensor del termómetro Dallas 18b20. Tiene 3 pines, tierra (G), datos (D) y VCC como se muestra en la imagen de arriba. Para su funcionamiento, requiere unir el D y VCC con una resistencia de 4.7k. G y VCC están conectados a los polos respectivos, mientras que D está conectado a un ATTINY 85, pin - [6] PB1, como se configura en el código.

A continuación, conecte ATTINY a A6 GSM de la siguiente manera (y se muestra arriba)

ATTINY TX A6 UART_RXdATTINY RX A6 UART_TXd

ATTINY GND A6 GND

y en el propio A6, A6 PWR A6 VCC 5.0A6 RST A6 GND (¡No conecte a tierra todavía!)

Ahora encienda ambos dispositivos y, después de unos segundos, toque temporalmente el pin de tierra A6 con el cable conectado al pin A6 RST. El A6 se apagará y se encenderá y, con suerte, pronto debería recibir datos de temperatura en su teléfono.

Paso 4: Conclusión

Este instructable puede parecer bastante simple, pero la idea es ilustrar lo que se puede lograr con componentes de bajo costo. Obviamente, si tiene acceso a wi-fi o un concentrador BLE, existen soluciones más apropiadas.

No cubrí otras funciones, como enviar un SMS al teléfono para iniciar la grabación / transmisión de temperatura, etc.

Recomendado: