Índice:

Notificador: 17 etapas
Notificador: 17 etapas

Vídeo: Notificador: 17 etapas

Vídeo: Notificador: 17 etapas
Vídeo: Módulo 17 | Sesión 3 | Juicio ordinario (etapas: probatoria, preconclusiva y de juicio) 2024, Novembro
Anonim
Notificador
Notificador

O dispositivo pode ser conectado, por exemplo, ao sistema IFTTT e reagir quando um novo e-mail aparecer. Em app.remoteme.org, geraremos um link após chamar quais bytes serão enviados ao Arduino, e o Arduino exibirá algum efeito de luz e reproduzirá alguns mp3 do SDcard

Etapa 1: O que é necessário

O que é preciso
O que é preciso
O que é preciso
O que é preciso
  • NodeMCU, WemOS ou algo semelhante
  • Dois anéis de LED com diodos WS2812B (usei anéis de 16 leds)
  • DFRobotDFPlayerMini - este é um mp3 player. Ele reproduz mp3 do SDcard e se comunica com o Arduino por RX / TX
  • Alto falante
  • Cartão SD
  • Conversor lógico -Eu usei este, o mp3 player usa 5V e Arduino 3.3 é por isso que precisamos deste conversor
  • Conhecimento e habilidades para fazer PCB simples por nós mesmos

A torre:

  • papelão - duas espessuras diferentes
  • Papel vegetal
  • folha de alumínio

Etapa 2: construção da torre

Edifício da Torre
Edifício da Torre
Edifício da Torre
Edifício da Torre
Edifício da Torre
Edifício da Torre
Edifício da Torre
Edifício da Torre

Acima da planta da torre em vista lateral (minha aventura com o desenho técnico terminou no ensino fundamental), todas as dimensões em milímetros.

Princípio da Operação

  1. anel de LEDs iluminando
  2. Papel vegetal
  3. O cone truncado, feito de papelão e coberto com folha de alumínio, reflete as luzes dos anéis de led, na figura 3 '= a malha recortada
  4. tubo de papelão - segura as torres verticalmente, dentro do tubo estão cabos para leds
  5. A altura depende de você eu tenho 85mm
  6. O suporte dentro de todas as peças eletrônicas

Todos os elementos horizontais devem ser feitos de papelão mais espesso.

Etapa 3: Diagrama de fiação

Diagrama de Fiação
Diagrama de Fiação
Diagrama de Fiação
Diagrama de Fiação
Diagrama de Fiação
Diagrama de Fiação
Diagrama de Fiação
Diagrama de Fiação

O mp3 player é fornecido com tensão de 5 V e se comunica com o Arduino via TX / RX, um conversor lógico é necessário porque o próprio Arduino funciona com tensão de 3,3 V. O controle dos anéis também é conectado ao Arduino (D5, D6) através do conversor lógico.

No repositório, você encontrará arquivos de águia com planos de PCB

Eu sugiro não soldar permanentemente o Arduino e o mp3 player apenas para usar pinos de ouro fêmeas

Etapa 4: Princípio de Operação

Nosso Arduino se conecta ao sistema app.remoteme.org usando WebSockets (existem bibliotecas prontas) por meio dessa conexão. Mensagens de 5 bytes são enviadas:

  • o primeiro byte do efeito de luz para o anel de LED superior
  • efeito de luz de segundo byte para o anel LED inferior
  • o número do arquivo mp3 a ser reproduzido
  • o número de segundos por quanto tempo o efeito de luz e o mp3 serão reproduzidos
  • se o mp3 deve ser reproduzido uma vez ou em loop

Código fonte

Código fonte completo, você pode encontrar aqui

nos arquivos SingleRing.cpp e SingleRing.h há uma classe para controlar os efeitos dos anéis de LED. Eu sugiro que você comece olhando para a função setMode (int m):

void SingleRing:: setMode (int m) {switch (m) {case 0: setConfiguration (0, 0, 50, 0, 5, 1); break; // off = 0 caso 1: setConfiguration (6, 0, 50, 0, 0, 20); break; // caso verde padrão sólido 2: setConfiguration (6, 0, 0, 50, 0, 20); break; // caso 3 de azul padrão sólido: setConfiguration (6, 50, 0, 0, 0, 20); break; // caso 4 vermelho padrão sólido: setConfiguration (6, 50, 10, 0, 0, 20); break; // laranja padrão sólido caso 5: setConfiguration (1, 0, 100, 0, 5, 2); break; // policia caso verde 6 no sentido horário: setConfiguration (1, 0, 100, 0, 5, -2); break; // a polícia reverte o caso verde 7: setConfiguration (1, 0, 0, 100, 5, 2); break; // policia caso 8 azul no sentido horário: setConfiguration (1, 0, 0, 100, 5, -2); break; // polícia reverte caso azul 9: setConfiguration (1, 100, 0, 0, 5, 2); break; // caso vermelho padrão policial 10: setConfiguration (1, 100, 0, 0, 5, -2); break; // polícia reverte caso vermelho 11: setConfiguration (1, 100, 20, 0, 5, 2); break; // caso laranja padrão policial 12: setConfiguration (1, 100, 20, 0, 5, -2); break; // a polícia reverte o caso laranja 13: setConfiguration (2, 0, 0, 50, 8, 10); break; // cruza a caixa azul padrão 14: setConfiguration (2, 0, 0, 50, 8, -10); break; // reversão cruzada da caixa azul 15: setConfiguration (5, 0, 50, 0, 0, 20); break; // pisca padrão verde caso 16: setConfiguration (5, 0, 50, 0, 0, -20); break; // pisca odwyrtka green case 17: setConfiguration (5, 0, 0, 50, 0, 20); break; // azul padrão intermitente caso 18: setConfiguration (5, 0, 0, 50, 0, -20); break; // pisca reverter caso azul 19: setConfiguration (5, 50, 0, 0, 0, 20); break; // vermelho padrão intermitente caso 20: setConfiguration (5, 50, 0, 0, 0, -20); break; // pisca reverter caixa vermelha 21: setConfiguration (5, 50, 10, 0, 0, 20); break; // laranja padrão intermitente caso 22: setConfiguration (5, 50, 10, 0, 0, -20); break; // pisca reverter laranja padrão: setConfiguration (0, 0, 50, 0, 5, 1); break; // off = 0}}

dependendo do parâmetro fornecido, o anel exibirá o efeito. Você pode adicionar seu próprio efeito chamando a função setConfiguration com novos parâmetros (mudança de cor, velocidade de exibição) adicionando um novo modo ou adicionando um efeito completamente novo - ou deixe-me saber nos comentários se eu gostar, adicionarei um novo efeito

arduino.ino:

#include "Arduino.h" #include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h"

#incluir

#include #include #include "SingleRing.h"

#incluir

#include #include

#incluir

# define WIFI_NAME ""

#define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "sirene" #define TOKEN ""

#define DIODES_COUNT 16

Top SingleRing = SingleRing (DIODES_COUNT, D5);

SingleRing inferior = SingleRing (DIODES_COUNT, D6);

SoftwareSerial mySoftwareSerial (D4, D3); // RX, TX

DFRobotDFPlayerMini myDFPlayer; RemoteMe & remoteMe = RemoteMe:: getInstance (TOKEN, DEVICE_ID);

ESP8266WiFiMulti WiFiMulti;

void setup () {mySoftwareSerial.begin (9600); Serial.begin (115200);

if (! myDFPlayer.begin (mySoftwareSerial)) {// Use softwareSerial para se comunicar com mp3.

Serial.println (F ("Impossível começar:")); Serial.println (F ("1. Verifique novamente a conexão!")); Serial.println (F ("2. Insira o cartão SD!")); enquanto (verdadeiro); } Serial.println (F ("DFPlayer Mini online."));

myDFPlayer.setTimeOut (500); // Definir tempo limite de comunicação serial 500 ms

myDFPlayer.volume (30);

myDFPlayer. EQ (DFPLAYER_EQ_NORMAL);

myDFPlayer.outputDevice (DFPLAYER_DEVICE_SD); WiFiMulti.addAP (WIFI_NAME, WIFI_PASSWORD); enquanto (WiFiMulti.run ()! = WL_CONNECTED) {atraso (100); }

remoteMe.setUserMessageListener (onUserMessage);

remoteMe.setupTwoWayCommunication ();

remoteMe.sendRegisterDeviceMessage (DEVICE_NAME);

top.setup ();

bottom.setup (); top.clear (); bottom.clear (); }

boolean TurnOff = true;

turnOffMillis longo sem sinal = 0;

void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t * data) {

uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (dados, pos); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (dados, pos); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (dados, pos); uint8_t time = RemoteMeMessagesUtils:: getUint8 (dados, pos); modo uint8_t = RemoteMeMessagesUtils:: getUint8 (dados, pos);

bottom.setMode (bottomMode);

top.setMode (topMode); if (modo == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } turnOff = false; turnOffMillis = millis () + 1000 * tempo; }

void loop ()

{remoteMe.loop (); top.loop (); bottom.loop (); if (turnOffMillis

}

explicação:

#define WIFI_NAME "" #define WIFI_PASSWORD "" #define DEVICE_ID 205 #define DEVICE_NAME "notificator" #define TOKEN ""

Precisamos fornecer os dados acima, instruções detalhadas aqui no link, também mostrei como se registrar no remoteme.org e gerar o token, void onUserMessage (uint16_t senderDeviceId, uint16_t dataSize, uint8_t * data) {uint16_t pos = 0; uint8_t bottomMode = RemoteMeMessagesUtils:: getUint8 (dados, pos); uint8_t topMode = RemoteMeMessagesUtils:: getUint8 (dados, pos); uint8_t trackNumber = RemoteMeMessagesUtils:: getUint8 (dados, pos); uint8_t time = RemoteMeMessagesUtils:: getUint8 (dados, pos); modo uint8_t = RemoteMeMessagesUtils:: getUint8 (dados, pos);

bottom.setMode (bottomMode);

top.setMode (topMode); if (modo == 1) {myDFPlayer.loop (trackNumber); } else {myDFPlayer.play (trackNumber); } turnOff = false; turnOffMillis = millis () + 1000 * tempo; }

Esta função será chamada quando a mensagem chegar ao Arduino e exibir a notificação. O código é tão claro que descreve a si mesmo. Refiro-me aos detalhes das classes para a documentação aqui e aqui

void loop () {remoteMe.loop (); top.loop (); bottom.loop (); if (turnOffMillis <millis ()) {

if (! TurnOff) {

top.clear ();

bottom.clear (); myDFPlayer.stop (); TurnOff = true; }}

No loop, chamamos as funções de loop dos objetos, e também se o tempo de exibição das notificações tiver passado, desligamos os diodos e o som.

Etapa 5: reprodutor de mp3

Leitor de mp3
Leitor de mp3

Ele se comunica com o Arduino via TX / RX - Detalhes do próprio player aqui e a biblioteca aqui

Fazemos upload de arquivos mp3 para o cartão SD. Os arquivos no cartão são classificados em ordem alfabética e, em seguida, chamando:

myDFPlayer.play (5);

Reproduzimos o quinto arquivo do cartão SD do diretório raiz. É por isso que é bom dar aos arquivos no cartão SD os prefixos 01, 02 etc. No meu caso é o mesmo que na tela de impressão acima

Para gerar comandos de voz Você pode usar esta página.

Etapa 6: enviando o programa para o Arduino

Carregando o programa para o Arduino
Carregando o programa para o Arduino
Carregando o programa para o Arduino
Carregando o programa para o Arduino

Antes de fazer o upload do esboço para o Arduino, você deve baixar as bibliotecas necessárias aqui, você encontrará instruções detalhadas

além disso, precisamos instalar a biblioteca DFRobotDFPlayerMini e Adafruit_NeoPixel

Etapa 7: controle

Ao controle
Ao controle
Ao controle
Ao controle

Enviamos para nosso Arduino cinco bytes

  • o primeiro byte do efeito de luz para o anel de LED superior
  • efeito de luz de segundo byte para o anel LED inferior
  • o número do arquivo mp3 a ser reproduzido
  • o número de segundos por quanto tempo o efeito de luz e o mp3 serão reproduzidos
  • se o mp3 deve ser reproduzido uma vez ou em loop (1 se for reproduzido em loop)

Enviando bytes

07 0F 01 05 01

O anel superior mostrará as luzes policiais (modo 6) e a parte inferior piscará em verde (modo 15) (verifique a função setMode em singleRing.cpp e comentários próximos a ela). O primeiro arquivo do cartão SD será reproduzido por 5 segundos. E o arquivo será reproduzido no loop (verifique a função onUserMessage em arduino.ino)

Vamos enviar esses bytes. Olhe para a tela acima e clique nos ícones na ordem em 1, 2, 3. A janela aparece

Em seguida, olhe para a segunda tela - e preencha a janela como na segunda tela

A janela que aparece é usada para enviar mensagens ao dispositivo. No campo 1, selecione o dispositivo remetente - porque temos apenas um dispositivo, nós o selecionamos (este é um campo obrigatório e não importa que seja o mesmo dispositivo para o qual enviamos a mensagem) No campo 2 damos bytes para enviar (em vermelho, o valor inserido em 2 será representado como uma string) e clique no botão Enviar.

Depois de enviar a mensagem, nosso notificador deve reagir exibindo os efeitos de iluminação apropriados e tocando o mp3 selecionado. Eu encorajo você a experimentar efeitos diferentes, dando os primeiros dois bytes de um número entre 0 e 22 (veja a descrição na função setMode).

Etapa 8: Envio de mensagens usando URLs

Envio de mensagens usando URLs
Envio de mensagens usando URLs
Envio de mensagens usando URLs
Envio de mensagens usando URLs
Envio de mensagens usando URLs
Envio de mensagens usando URLs
Envio de mensagens usando URLs
Envio de mensagens usando URLs

Se quisermos exibir notificações de um aplicativo externo, por exemplo, com IFTTT, precisamos ter uma URL que fará exatamente a mesma coisa que fizemos na janela na etapa anterior. remoteme.org fornece REST APi. Vá até ele clicando na aba arrogância à esquerda (a última). Uma página será exibida, nesta página também podemos tentar nossos URLs.

Na primeira tela, você tem a função de expandir e, a seguir, preencher os dados como na segunda tela.

preencha os dados como na imagem acima. Após clicar em executar enviaremos uma mensagem

070F010501

O receptor é o dispositivo com 205 id, o mesmo dispositivo também é um remetente. MessageId com as configurações “No_RENEVAL” é irrelevante. Em seguida, clique em Execute. Notificator reagirá da mesma forma que ao enviar mensagens do aplicativo. Depois de chamar REST, abaixo está o URL que foi chamado - olhe para a terceira tela. E copiar e colar no URL do navegador está marcado com uma borda verde. Na quarta tela, meu navegador Chrome depois que o URL foi colado

No meu caso, o URL é:

app.remoteme.org/api/*/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/

Etapa 9: URL semelhante para enviar mensagem

URL semelhante para enviar mensagem
URL semelhante para enviar mensagem

Na etapa anterior, você tem um URL que envia dados para o seu dispositivo. Infelizmente, depois de sair do app.remoteme.org, ele para de funcionar. Isso ocorre porque não fornecemos o token de autenticação e não estamos mais logados. Vamos pegar nosso token (ou criar um novo) e colá-lo no URL em vez da estrela.

Olhe para a tela e substitua * no URL pelo seu token

no meu caso, o token é:

~ 267_ZxoWtJ) 0ph e 2c

então meu URL final se parece com:

app.remoteme.org/api/~267_ZxoWtJ)0ph&2c/rest/v1/message/sendUserMessageHexString/205/1/NO_RENEWAL/1/070F010501/

Agora podemos chamá-lo mesmo que não estejamos logados. E quando for chamado, uma mensagem será enviada para o nosso dispositivo 205

Etapa 10: Integração com IFTTT 1/7

Integração com IFTTT 1/7
Integração com IFTTT 1/7

O URL criado na etapa acima é adequado para execução por aplicativos externos. Como Usar Vou mostrar no IFTTT. Vou configurá-lo para que o notificador seja ativado quando um e-mail chegar ao endereço de e-mail (conta do Gmail).

Faça login no IFTTT. Em seguida, vá para a guia Meus miniaplicativos e, em seguida, “Novo miniaplicativo” - primeira tela

Etapa 11: Integração com IFTTT 2/7

Integração com IFTTT 2/7
Integração com IFTTT 2/7

Em seguida, clique em “+ isto”

Etapa 12: Integração com IFTTT 3/7

Integração com IFTTT 3/7
Integração com IFTTT 3/7

Em seguida, no campo “Serviços de pesquisa”, escreva “Gmail”

Em seguida, "novo e-mail na caixa de entrada" (pode ser necessária alguma configuração).

Etapa 13: Integração com IFTTT 4/7

Integração com IFTTT 4/7
Integração com IFTTT 4/7

agora clicamos em “+ isso”

Etapa 14: Integração com IFTTT 5/7

Integração com IFTTT 5/7
Integração com IFTTT 5/7

encontre “Webhooks” e clique nele

Etapa 15: Integração com IFTTT 6/7

Integração com IFTTT 6/7
Integração com IFTTT 6/7

em seguida, “Faça uma solicitação na web”

Etapa 16: Integração com IFTTT 7/7

Integração com IFTTT 7/7
Integração com IFTTT 7/7

completamos o URL do nosso url com o token. Digite o conteúdo em application / json e clique em “criar ação” e em Concluir. Agora temos nosso miniaplicativo:

Etapa 17: Resumo

Neste tutorial, mostrei como enviar para o nosso Arduino mensagens de sistemas externos. Também integramos algum outro sistema do IFTTT de maneira semelhante. Não precisa necessariamente ser um “notificador” que eu queria mostrar neste exemplo como enviar mensagens de sistemas externos para nosso Arduino.

sourcecodesFanPage no Facebook

Saúde, Maciek

Recomendado: