Índice:
- Etapa 1: O que é necessário
- Etapa 2: construção da torre
- Etapa 3: Diagrama de fiação
- Etapa 4: Princípio de Operação
- Etapa 5: reprodutor de mp3
- Etapa 6: enviando o programa para o Arduino
- Etapa 7: controle
- Etapa 8: Envio de mensagens usando URLs
- Etapa 9: URL semelhante para enviar mensagem
- Etapa 10: Integração com IFTTT 1/7
- Etapa 11: Integração com IFTTT 2/7
- Etapa 12: Integração com IFTTT 3/7
- Etapa 13: Integração com IFTTT 4/7
- Etapa 14: Integração com IFTTT 5/7
- Etapa 15: Integração com IFTTT 6/7
- Etapa 16: Integração com IFTTT 7/7
- Etapa 17: Resumo
Vídeo: Notificador: 17 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:38
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
- 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
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
- anel de LEDs iluminando
- Papel vegetal
- 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
- tubo de papelão - segura as torres verticalmente, dentro do tubo estão cabos para leds
- A altura depende de você eu tenho 85mm
- 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
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
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
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
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
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
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
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
Em seguida, clique em “+ isto”
Etapa 12: 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
agora clicamos em “+ isso”
Etapa 14: Integração com IFTTT 5/7
encontre “Webhooks” e clique nele
Etapa 15: Integração com IFTTT 6/7
em seguida, “Faça uma solicitação na web”
Etapa 16: 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:
Notificador de chamadas Bluetooth: 5 etapas (com imagens)
Notificador de chamadas Bluetooth: introduçãoEu estava navegando no feed de notícias instructables alguns dias atrás, quando me deparei com este projeto. Foi um projeto legal. Mas eu pensei: Por que não construí-lo com um Bluetooth em vez de coisas complicadas de wi-fi. Especificação deste Notificador de Chamadas Bluetooth
Notificador de lavagem automática das mãos: 5 etapas
Notificador automático para lavagem das mãos: Esta é uma máquina que pode notificar alguém quando ele entra pela porta. Seu objetivo é lembrar a alguém de lavar as mãos ao voltar para casa. Há um sensor ultrassônico na frente da caixa que detecta alguém que entra
Notificador de IoT usando ESP-12E: 7 etapas (com imagens)
IoT Notifier usando ESP-12E: Preso em casa longe de seu ente querido? Durante este momento difícil, este pequeno projeto divertido certamente tentará trazer um sorriso aos seus rostos. Neste Instructable, vou mostrar como exibir notificações de seu telefone celular na forma de
Notificador fácil de e-mail não lido: 7 etapas
Notificador de e-mail não lido fácil: Olá a todos, bem-vindos a mais um Instructable. Com a situação atual de trabalho em casa, estou enfrentando alguns desafios porque recebo e-mails da minha empresa de vez em quando. notifique-me sobre o meu
Construir um Notificador Fácil ISS: 5 etapas
Construa um Notificador Easy ISS: Por TokyLabs | Tempo necessário: 1–3 horas | Dificuldade: Fácil | Preço: $ 60– $ 70 Você pode criar facilmente um notificador de hardware que levanta um astronauta de papel para alertá-lo cada vez que a Estação Espacial Internacional passa sobre sua localização. Muito mais divertido do que