Índice:

Alertas temporários de texto SMS de um ATTINY85 e A1 GSM: 5 etapas
Alertas temporários de texto SMS de um ATTINY85 e A1 GSM: 5 etapas

Vídeo: Alertas temporários de texto SMS de um ATTINY85 e A1 GSM: 5 etapas

Vídeo: Alertas temporários de texto SMS de um ATTINY85 e A1 GSM: 5 etapas
Vídeo: Беслан. Помни / Beslan. Remember (english & español subs) 2024, Julho
Anonim
Alertas temporários de texto SMS de um ATTINY85 e A1 GSM
Alertas temporários de texto SMS de um ATTINY85 e A1 GSM

Este instrutível mostra como capturar a temperatura de um sensor de temperatura simples e enviá-lo por texto sms para o seu telefone celular. Para simplificar, envio a temperatura em um intervalo definido, mas também mostro como isso só pode ser feito por exceção / alertas. O hardware tem um custo muito baixo, menos de 10 dólares, embora haja os custos recorrentes de sms a serem considerados.

O trabalho pesado é realizado pelo simples, mas poderoso ATTINY 85, que captura os dados de temperatura e aciona um SMS a ser enviado por meio de um módulo GSM AI-Thinker A6.

Resumindo, você escreve o código ATTINY85 no ambiente Arduino IDE e o grava no ATTINY85 usando um conversor serial / USB USBASP. Eu cobri a configuração do módulo GSM AI-Thinker A6 e do Arduino IDE em dois tutoriais anteriores. O que é diferente aqui é a interface do módulo ATTINY e A6 GSM usando comunicações seriais.

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

Após a programação, o ATTINY lê os dados de temperatura de um sensor termômetro - Dallas 18B20- e envia os dados e comandos por conexão serial para o módulo A6 GSM que então os envia como um texto SMS para o seu celular / smartphone.

Aqui está o que você precisa:

1. Conversor serial / USB USBASP.

2. ATENÇÃO 85.

3. Módulo GSM AI-Thinker A6 versão 6 (com um sim que possui créditos de SMS).

4. Fonte de alimentação de placa de ensaio de 3,3 V para o ATTINY85.

5. Fonte de alimentação USB 3.3.v para o módulo GSM AI-Thinker A6.

6. Sensor de temperatura Dallas 18B20..

7. Resistor de 4,7k para o sensor 18B20.

8. Placa de ensaio e cabos.

9. Arduino IDE (usei a versão 1.8.5. Para isso).

10. Laptop Windows X (usei a versão 10) com uma porta USB livre.

Etapa 1: Programação do ATTINY 85

Aqui está o código IDE do Arduino (você terá que alterar o número de telefone para o qual deseja enviar o SMS).

#include #include #include

// *** // *** Defina os pinos RX e TX. Escolha quaisquer dois // *** pinos que não sejam usados. Tente evitar D0 (pino 5) // *** e D2 (pino 7) se você planeja usar I2C. // *** #define RX 3 // *** D3, Pino 2 #define TX 4 // *** D4, Pino 3

// *** // *** Defina a porta serial baseada no software. Usando o // *** nome Serial para que o código possa ser usado em outras // *** plataformas que suportam serial baseado em hardware. Em // *** chips que suportam o serial do hardware, apenas // *** comente esta linha. // ***

SoftwareSerial mySerial = SoftwareSerial (RX, TX);

// *** // *** Pinagem 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) // *** // Frequência ATTINY 85 definida para 8 MHz interno

// *** // *** Pino no qual o fio de dados do OneWire // *** está conectado. // *** #define ONE_WIRE_BUS 1

// *** // *** Configure uma instância oneWire para se comunicar com quaisquer dispositivos OneWire // *** (não apenas ICs de temperatura Maxim / Dallas). // *** OneWire _oneWire = OneWire (ONE_WIRE_BUS);

// *** // *** Passe nossa referência oneWire para a temperatura de Dallas. // *** DallasTemperature _sensors = DallasTemperature (& _ oneWire);

void setup () {// *** // *** Inicializar a porta serial // *** mySerial.begin (115200); atraso (60.000);

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

void loop () {

// *** // *** Obtenha a temperatura atual e exiba-a. // *** _sensors.requestTemperatures (); atraso (2000); double tempC = _sensors.getTempCByIndex (0); double tempF = _sensors.getTempFByIndex (0); // verifique se há erros - às vezes no início, a temperatura é mostrada como 85C

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

void SMS_temp (duplo mytemp, String myalert) {mySerial.println ("AT + CMGF = 1"); // definido para modo SMS delay (1000); mySerial.println ("AT + CMGF = 1"); // definido para modo SMS delay (1000); //mySerial.println("AT+CMGS=\"+YOUR NUMBER / ""); // define o número do telefone (entre aspas duplas) delay (1000); mySerial.print (mytemp, 1); mySerial.print (myalert); atraso (1000); mySerial.write (0x1A); // envia ctrl + z final da mensagem delay (1000); mySerial.write (0x0D); // Retorno de carro em Hex delay (1000); mySerial.write (0x0A); atraso (1000000); // 17 minutos - ajuste para se adequar à sua própria aplicação}

Abra o ambiente Arduino IDE - eu descrevi como encontrar uma maneira de contornar isso em detalhes em meu instrutível anterior, ao qual aludi anteriormente.

Você precisará das seguintes bibliotecas

SoftwareSerial.h

OneWire.h

DallasTemperature.h

Em seguida, configure os pinos RX e TX no ATTINY85 que você precisa para conectar com o A1 Thinker. O ATTINY 85 possui 8 pinos, quatro de cada lado e é alinhado com o ponto na superfície como referência. O pino 1 ou o pino RESET está ao lado do ponto.

(neste caso eu escolhi os pinos 2 e 3 - eles estão no mesmo lado do pino RESET, que está ao lado do ponto na superfície do ATTINY 85. O pino 2 é o próximo pino ao longo do pino RESET enquanto o pino 3 está entre o pino 2 e GROUND)

Em seguida, você deve configurar o sensor de temperatura -

#define ONE_WIRE_BUS 1

OneWire _oneWire = OneWire (ONE_WIRE_BUS);

DallasTemperature _sensors = DallasTemperature (& _ oneWire);

Em seguida, configure a porta serial do software

mySerial.begin (115200);

atraso (60.000);

e então chame os sensores com _sensors.begin ();

Em seguida, vem o loop, que faz um polling em um horário pré-determinado, registra a temperatura e envia uma mensagem / alerta dependendo do valor. Ele usa uma função SMS_temp que também é onde você define o tempo do loop

void loop () {sensores.requestTemperatures (); atraso (2000);

double tempC = _sensors.getTempCByIndex (0);

double tempF = _sensors.getTempFByIndex (0);

if (tempC <= 14) {SMS_temp (tempC, "PERIGOSAMENTE Frio");}

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

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

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

}

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

Em seguida, configure o IDE do Arduino para preparar o upload para o ATTINY85.

Uma série de coisas a serem observadas

1- Se você não tem a família de placas ATTINY, adicione o seguinte url https://raw.githubusercontent.com/damellis/attiny/… em Arquivo / Preferências / URL do gerenciador de placas adicionais, Em seguida, no IDE do Arduio, clique em Tools / Board / Board Manager, procure ATTINY e instale a nova placa. Mude o processador para Attiny85.

Etapa 2: Upload do programa para ATTINY85

Enviando o Programa para ATTINY85
Enviando o Programa para ATTINY85

Além disso, consulte meu instrutivo anterior sobre isso -

O ATTINY85 possui dois modos, modo de programação e modo de operação, respectivamente.1. MODO DE PROGRAMAÇÃO Em primeiro lugar, identifique os pinos no ATTINY85. Para fazer isso, encontre o pequeno entalhe na superfície do chip que está ao lado do pino RST / RESET. Usando isso como um ponto de referência, você pode identificar o resto dos pinos. Todas essas informações são fornecidas na planilha de dados A85 -https://ww1.microchip.com/downloads/en/DeviceDoc/At…

O USBasp e o ATTINY85 devem ser conectados conforme mostrado na imagem acima.

Em seguida, no IDE do Arduino, defina o programador para USBasp e a frequência para 8Mhz interno.

Conecte o USBasp a uma porta USB do seu laptop (no Windows 10, se você não tiver o driver USBasp, use o Zadig conforme o site

Em seguida, com o USBasp conectado, selecione no Arduino IDE Sketch / upload e, com sorte, você verá o progresso do upload mostrado em letras vermelhas do Arduino IDE e terminando com avrdude feito. Obrigada.

Quaisquer erros neste estágio são normalmente associados a cabos soltos ou driver incorreto.

Etapa 3: executando seu programa

Executando seu programa
Executando seu programa
Executando seu programa
Executando seu programa
Executando seu programa
Executando seu programa

Em primeiro lugar, algo sobre o sensor do termômetro Dallas 18b20. Possui 3 pinos, Terra (G), dados (D) e VCC como mostrado na imagem acima. Para operação, é necessário conectar o D e VCC com um resistor de 4,7k. G e VCC são conectados aos respectivos pólos, enquanto D está conectado a um ATTINY 85, pino - [6] PB1, conforme configurado no código.

Em seguida, conecte o ATTINY ao A6 GSM da seguinte maneira (e mostrado acima)

ATTINY TX A6 UART_RXdATTINY RX A6 UART_TXd

ATTINY GND A6 GND

e na própria A6, A6 PWR A6 VCC 5.0A6 RST A6 GND (não conecte ao aterramento ainda !!!!!)

Agora ligue os dois dispositivos e, após alguns segundos, toque temporariamente no pino de aterramento A6 com o cabo conectado ao pino A6 RST. O A6 será desligado e ligado e, com sorte, você receberá em breve os dados de temperatura em seu telefone.

Etapa 4: Conclusão

Isso pode parecer bastante simples, mas a ideia é ilustrar o que pode ser alcançado com componentes de baixo custo. Obviamente, se você tiver acesso a wi-fi ou a um hub BLE, existem soluções mais adequadas.

Não cobri outras funcionalidades, como enviar um SMS PARA o telefone para iniciar a gravação / transmissão de temperatura, etc.

Recomendado: