Índice:

Envia um SMS com temperatura na hora: 5 etapas (com fotos)
Envia um SMS com temperatura na hora: 5 etapas (com fotos)

Vídeo: Envia um SMS com temperatura na hora: 5 etapas (com fotos)

Vídeo: Envia um SMS com temperatura na hora: 5 etapas (com fotos)
Vídeo: nu, vou QUERER🔥 2024, Novembro
Anonim
Envia um SMS com temperatura na hora
Envia um SMS com temperatura na hora

A ideia é conseguir um sms de temperamento da casa do meu pai.

Nada sofisticado, apenas juntando as peças rapidamente.

As partes são:

  • Arduino compatível com placa controladora Geekcreit® ATmega328P Nano V3
  • Placa de expansão DIY NANO IO Shield V1. O para Arduino
  • Módulo de relógio em tempo real baseado em DS1307 RTC IIC / I2C e DS18b20
  • SIM800L Quad-band GSM / GPRS
  • LM2596 Mini conversor DC-DC Módulo de fonte de alimentação escalonada ajustável
  • Temperatura do termistor NTC MF52AT

Em primeiro lugar, muito lendo e pesquisando.

Antes de finalmente usar o Geekcreit® Nano, testo todas as peças com um Arduino Uno.

Etapa 1: Faça o SIM800l funcionar

Faça o SIM800l funcionar
Faça o SIM800l funcionar

Um ponto principal é a potência do Sim800L.

Eu uso um conversor LM2596 Mini DC-DC, ajustado para 3,7 volts e uma fonte de alimentação separada.

Para testar a conexão com comandos AT +, este lado é muito útil:

Quickstart SIM800 (SIM800L) com Arduino

Com Desativar código PIN usando modem gsm em comandos, eu me livrei do código PIN do sim.

A próxima consideração que biblioteca. A internet oferece soluções diferentes.

Minha solução é a biblioteca de Mattias Aabmets: AspenSIM800

Seu exemplo: Send_SMS.ino usava I como programa básico e, um por um, conectava todas as outras partes.

O pino Tx e o pino Rx são codificados para:

RX_PIN 10 do Arduino. Deve ser conectado ao pino TX do módulo SIM800. TX_PIN 11 do Arduino. Deve ser conectado ao pino RX do módulo SIM800

É sempre uma boa ideia ler os arquivos *.ccp e *.h nas bibliotecas.

Eles contêm muitas dicas e conhecimentos interessantes.

Etapa 2: Faça o RTC DS1307 com Sensor DS18B20 funcionar

Faça o RTC DS1307 com sensor DS18B20 funcionar
Faça o RTC DS1307 com sensor DS18B20 funcionar

Usei este lado: simtronyx - o blog do DS1307 e DS18B20.

O relógio possui uma conexão de barramento I2C e que é para o Arduino Uno: A4 (SDA) - A5 (SCL)

O DS18B20 eu conectei ao D3.

Eu li que em um SMS você não pode enviar floats apenas String, então eu tive que traduzir floats para string.

Isso eu faço com este snippet de código que encontrei:

n

MyString1 = String (currentTemp, 2); // Converte float em String

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

// converter string em char começa aqui

// Comprimento (com um caractere extra para o terminador nulo)

int str_len1 = MyString1.length () + 1; // Prepare a matriz de caracteres (o buffer)

char char_array1 [str_len1]; // Copie

MyString1.toCharArray (char_array1, str_len1); // converter string para char termina ela

Vou ser sincero, não sei como funciona, mas funciona.

Etapa 3: Faça o Termistor NTC MF52AT funcionar

Faça o termistor NTC MF52AT funcionar
Faça o termistor NTC MF52AT funcionar

Trabalhei antes com um termistor, então foi a parte fácil.

Mas também aqui você pode encontrar uma solução diferente.

No código final, você pode encontrar o meu.

Aqui você também pode encontrar a tradução Floats to String.

Soldado algum fio e o resistor de 10 k ohm ao termistor.

Etapa 4: Faça com que todos trabalhem juntos

Então, escrevi todas as partes do programa juntas.

Agora eu precisava descobrir como enviar um SMS todos os dias, ao mesmo tempo.

Eu li sobre ideias diferentes, algumas com TimerAlarm e outras abordagens.

Mas eu encontrei uma solução simples em algum lugar do fórum do arduino:

if (now.hour () == 8 && now.minute () == 00 && now.second () == 59)

{

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

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

Mas por que now.second = 59 porque envia um SMS de um minuto inteiro. Para mim serve, mas experimente você mesmo.

Depois de alguns testes, carreguei o programa no Geekcreit® Nano.

Este pode não ser o melhor programa para escrever:), mas faz o desejado.

Como o Geekcreit® ATmega328P Nano tem alguns problemas de IDE do Arduino, eu carrego pelo terminal (Linux Mint) através do USBtinyisp com este: avrdude -c usbtiny -p atmega328p -U flash: w: SomeHexFile.hex

Etapa 5: Funcionou

Sim deu certo e é colocado em casa.

Todos os dias às 6h recebo um SMS com o temperatur.

Recomendado: