Tabla de contenido:

Envía un SMS con la temperatura a tiempo: 5 pasos (con imágenes)
Envía un SMS con la temperatura a tiempo: 5 pasos (con imágenes)

Video: Envía un SMS con la temperatura a tiempo: 5 pasos (con imágenes)

Video: Envía un SMS con la temperatura a tiempo: 5 pasos (con imágenes)
Video: Si tienes un XIAOMI, DEBES activar estas opciones! 2024, Mes de julio
Anonim
Envía un SMS con la temperatura a tiempo
Envía un SMS con la temperatura a tiempo

La idea es conseguir un sms de temperatura de la casa de mi padre.

Nada sofisticado, solo unir piezas rápidamente.

Las partes son:

  • Placa controladora Geekcreit® ATmega328P Nano V3 compatible con Arduino
  • Placa de expansión DIY NANO IO Shield V1. O para Arduino
  • Módulo de reloj en tiempo real RTC IIC / I2C basado en DS1307 y DS18b20
  • SIM800L GSM / GPRS de cuatro bandas
  • Módulo de fuente de alimentación reductor ajustable LM2596 Mini DC-DC Converter
  • Temperatura del termistor NTC MF52AT

En primer lugar, leer y buscar mucho.

Antes de finalmente usar el Geekcreit® Nano, pruebo todas las partes con un Arduino Uno.

Paso 1: haga que el SIM800l funcione

Haga que el SIM800l funcione
Haga que el SIM800l funcione

Un punto principal es la potencia del Sim800L.

Utilizo un convertidor Mini DC-DC LM2596, ajustado a 3,7 voltios y una fuente de alimentación independiente.

Para probar la conexión con los comandos AT +, este lado es muy útil:

Inicio rápido SIM800 (SIM800L) con Arduino

Con Deshabilitar el código pin usando el módem gsm en los comandos, obtuve el código pin de la SIM.

La siguiente consideración es qué biblioteca. Internet ofrece una solución diferente.

Mi solución es la biblioteca de Mattias Aabmets: AspenSIM800

Su ejemplo: Send_SMS.ino usé I como programa básico y, una por una, conecté todas las demás partes.

El pin Tx y el pin Rx están codificados para:

RX_PIN 10 de Arduino. Debe estar conectado al pin TX del módulo SIM800. TX_PIN 11 de Arduino. Debe estar conectado al pin RX del módulo SIM800

Siempre es una buena idea leer los archivos *.ccp y *.h en las bibliotecas.

Contienen muchos consejos y conocimientos interesantes.

Paso 2: haga funcionar el RTC DS1307 con sensor DS18B20

Haga que el RTC DS1307 con sensor DS18B20 funcione
Haga que el RTC DS1307 con sensor DS18B20 funcione

Usé este lado: simtronyx, el blog para DS1307 y DS18B20.

El reloj tiene una conexión de bus I2C y eso es para Arduino Uno: A4 (SDA) - A5 (SCL)

El DS18B20 lo conecté al D3.

Leí que en un SMS no puedes enviar Floats solo String, así que tuve que traducir floats a string.

Eso hago con este fragmento de código que encontré:

norte

MyString1 = String (currentTemp, 2); // Convertir float en String

MyString1 = (MyString1 + "C - RoomTemperatur:)");

// convertir cadena a char comienza aquí

// Longitud (con un carácter adicional para el terminador nulo)

int str_len1 = MyString1.length () + 1; // Preparar la matriz de caracteres (el búfer)

char char_array1 [str_len1]; // Copiarlo

MyString1.toCharArray (char_array1, str_len1); // convertir cadena a char termina con ella

Seré honesto, no sé cómo funciona, pero funciona.

Paso 3: hacer que el termistor NTC MF52AT funcione

Haga que el termistor NTC MF52AT funcione
Haga que el termistor NTC MF52AT funcione

Trabajé antes con un termistor, así que fue la parte fácil.

Pero también aquí puedes encontrar una solución diferente.

En el código final puedes encontrar el mío.

Ella también puede encontrar la traducción Floats to String.

Soldado un poco de cable y la resistencia de 10 k ohmios al termistor.

Paso 4: Consiga que todos trabajen juntos

Así que escribí todas las partes del programa juntas.

Ahora tenía que averiguar cómo enviar un SMS todos los días, a la misma hora.

Leí sobre diferentes ideas, algunas con un TimerAlarm y otras con un enfoque.

Pero encontré una solución simple en algún lugar del foro arduino:

if (ahora.hora () == 8 && ahora.minuto () == 00 && ahora.segundo () == 59)

{

SIM.smsSend (addr, char_array); // termistor

retraso (500); SIM.smsSend (addr, char_array1); // DS18B20}

Pero ¿por qué ahora.segundo = 59 porque envía un SMS de minuto completo? Lo hace para mí, pero pruébelo usted mismo.

Después de algunas pruebas, cargué el programa en Geekcreit® Nano.

Puede que este no sea el mejor programa para escribir:) pero hace lo que se desea.

Debido a que el Geekcreit® ATmega328P Nano tiene algunos problemas con el IDE de Arduino, subo por terminal (Linux Mint) y lanzo el USBtinyisp con esto: avrdude -c usbtiny -p atmega328p -U flash: w: SomeHexFile.hex

Paso 5: funcionó

Sí funcionó y se coloca en la casa.

Todos los días a las 6:00 am recibo un SMS con la temperatura.

Recomendado: