a de um LED, seja via WiFi, seja via Bluetooth (pois o PCOM se conectará ao que estiver disponível). A partir deste exemplo simples, inúmeros outros mais sofisticados poderão ser implementados.
O Hardware de teste, pode ser algo como o mostrado na figura a seguir:
(clique na figura para "zoom")
No código, pode-se especificar facilmente qual o pino da placa ESP32 será usado. Notar também que o “Katodo” do LED está ligado diretamente a um pino de I/O do ESP32, enquanto o “Anodo” está ligado à alimentação de 3.3V através de um Resistor de 330 Ω (o Resistor foi dimensionado considerando-se os 3.3V e uma luminosidade “média” para o LED, sem exageros do tipo “super nova ofuscante”). Assim o pino de I/O é configurado no código como “saída digital”, e para que o LED ligue é preciso ter-se no respectivo pino, o valor “LOW” (ou seja, nível digital “0”). O nível que liga o LED também pode ser facilmente configurado no código.
O LED poderá ser ligado ou desligado através de Interfaces entre um Cliente conectado através do WiFi ou Bluetooth.
O mesmo código pode ser utilizado para controlar uma Lâmpada acionada através de um Relé. Por este motivo, no código deste exemplo sempre é usada a palavra Lâmpada ao invés de LED. Para aqueles que têm mais experiência em montagem de circuitos, e se sentem seguros em fazer montagens que se conectam à rede elétrica AC (127 ou 220 Volts), é mostrado na figura a seguir um exemplo de montagem com Lâmpada/Relé:
(clique na figura para "zoom")
Para o caso da Lâmpada/Relé, procure seguir rigorosamente o circuito mostrado, pois alguns pontos que podem parecer “bobos”, foram pensados para se ter maior nível de segurança (exemplo: o fato do fio marrom de “Fase” da rede elétrica estar conectado ao “CM” dos contatos do Relé).
Observar também a forma como são interligados os diversos “GNDs” (do ESP32, da plaquinha do Relé, e da fonte que alimenta esta plaquinha), onde há um “ponto” de conjunção mais próximo da plaquinha do Relé do que da placa do ESP32. Essa topologia de ligação, é para minimizar as interferências e efeitos de “loops de terra” (que normalmente são nocivos ao funcionamento adequado dos circuitos).
A plaquinha do Relé mostrada, é acionada por um Transistor BC548, justamente para permitir uma perfeita interface entre os níveis de tensão da Bobina do Relé (normalmente entre 5V e 12V), e a saída digital do ESP32 (D27 na figura). Vou elucidar um pouco, o porquê de se usar o Transistor como elemento intermediário para o acionamento do Relé.
Esta plaquinha, aciona o Relé quando o nível digital de controle aplicado à mesma (no pino “IN” no conector de controle da plaquinha), é o nível “LOW” (ou “0”, exatamente como no caso do LED). Este acionamento é feito através de um Foto-Acoplador (aquele de 4 pinos na placa) cujo LED interno recebe alimentação de uma fonte ligada entre os pinos “VCC” e “GND” do conector de controle da plaquinha (via resistor existente na placa). E essa alimentação é a mesma usada para a Bobina do Relé, que é normalmente entre 5V e 12V (é especificado no datasheet do Relé). Devido a isso, há uma incompatibilidade entre o nível lógico “HIGH” do ESP32 (que é entre 2.5V e 3.3V), e o “HIGH” da plaquinha do Relé. Vou esclarecer. Se o sinal de saída do pino de I/O do ESP32 fosse aplicado diretamente para o controle da plaquinha do Relé, quando o pino do ESP32 estivesse em “LOW”, algo entre 0V e 0.3V, então seguramente o Relé seria acionado, pois esta faixa de tensão “LOW” iria ligar confiavelmente o LED do Foto-Acoplador. Porém para desligar o Relé, o nível lógico da saída do ESP32 tem que ser “HIGH”, algo entre 2.5V e 3.3V. Ocorre que esta faixa “HIGH” do ESP32 pode também acionar o Relé, já que o LED do Foto-Acoplador está sendo alimentado entre 5V e 12V (como já dito, a mesma tensão da Bobina do Relé), o que não deveria ocorrer. E para que não ocorra esse acionamento, é utilizado um Transistor BC548 como “Interface” entre os níveis lógicos do ESP32 e os níveis de tensão da Plaquinha do Relé. Neste caso, se a saída do ESP32 está em “LOW”, este nível lógico “desliga” o BC548 e o Foto-Acoplador não é acionado, desligando o Relé. E se a saída do ESP32 estiver em “HIGH”, a faixa deste nível será suficiente para “ligar” o Transistor e consequentemente o Foto-Acoplador e Relé. Observe no entanto, que agora a lógica inverteu, pois agora é o “HIGH” que aciona o Relé. Como pode-se escolher no código qual nível lógico irá acionar o Relé (“LOW” ou “HIGH”), então é melhor usar o BC548 como “Interface” entre os níveis digitais do ESP32 e os níveis para ligar/desligar o Relé da plaquinha, pois esta topologia garante um liga/desliga sempre confiável.
No circuito com o BC548, o Resistor R1 é o de polarização da Base do Transistor, e é necessário para garantir os níveis adequados das correntes de liga/desliga no LED do Foto-Acoplador.
Ao se fazer as ligações para o circuito Relé/Lâmpada, atenção à identificação dos pinos do Transistor BC548, mostrado na figura a seguir:
(clique na figura para "zoom")
Mas existem plaquinhas de Relés cujo acionamento via sinal de controle no conector da respectiva plaquinha (o equivalente ao sinal “IN” na plaquinha mostrada), é através do “HIGH” (essas plaquinhas são menos comuns no mercado), então o sinal do pino do ESP32 pode ser ligado diretamente ao pino de controle da plaquinha, pois neste caso não costuma haver incompatibilidade de níveis lógicos.
Seja acionando um LED, seja acionando uma Lâmpada via Relé, no código basta especificar o nível lógico (“LOW” ou “HIGH”) que liga o elemento (LED ou Relé da Lâmpada). E claro, procure seguir as orientações e dicas sobre a montagem dos circuitos.
Observar também que em algumas plaquinhas, como a mostrada aqui, na verdade não existe o efeito de isolação que poderia ser proporcionado pelo Opto-Acoplador. Então é preciso ficar atento aos modelos comercializados, caso a isolação seja realmente necessária.
Como dito anteriormente, a Lâmpada (ou o LED), poderá ser ligado ou desligado através de Interfaces entre um Cliente conectado através do WiFi ou Bluetooth.
Para a Interface via WiFi, foi utilizada uma Página HTML simples, que sempre mostra o estado da Lâmpada, e tem um Botão para mudar este estado. Ou seja, o ESP32 se conecta à Rede WiFi especificada no código do Arduino, e a partir do Endereço IP que foi designado ao mesmo pela Rede, se acessa a Página HTML da Interface de Controle da Lâmpada, via navegador em um Computador, Smartphone, ou Tablet.
O Endereço IP, é mostrado no Terminal Serial do Arduino, sempre que o PCOM WiFi se conecta à rede WiFi. Uma vez conectado, esse endereço não é exibido novamente. Mas se em algum momento a rede cair e depois ficar novamente disponível, o PCOM WiFi irá se conectar automaticamente à rede, e novamente irá exibir o Endereço IP da Interface. Isto é feito assim, porque o IP poderá mudar, uma vez que é designado pela Rede.
Se um Roteador estiver sendo utilizado, pode-se também fixar o Endereço IP neste Roteador. Para isto, normalmente basta se entrar na página do Roteador, seção DHCP ou Clientes DHCP, pois ali vai estar sendo mostrado também o Endereço MAC do ESP32, e então ali mesmo se reserva o IP desejado para a Interface de Controle da Lâmpada, atrelando este IP ao MAC do ESP32.
Na figura a seguir pode-se ver no Terminal do Arduino, o Endereço IP “192.168.0.21” da Página de Interface com o ESP32, exibido logo que o PCOM WiFi consegue se conectar à rede de nome “RJJ” que está especificada no código:
(clique na figura para "zoom")
No código do Arduino, pode-se especificar o nome da Rede WiFi, a senha para conexão à esta Rede, bem como o “Port” do Servidor TCP/IP a ser usado pelo PCOM WiFi, exatamente como se faz nos programas convencionais de exemplos de WiFi Server para o ESP32.
Na figura seguinte, o IP “192.168.0.21” mostrado na figura anterior, é digitado em um navegador de Internet, sendo então acessada a Página HTML da Interface de Controle da Lâmpada do exemplo em questão:
(clique na figura para "zoom")
Como se vê, é uma Interface simples, que funciona no modo “toggle”, ou seja, cada vez que clica no Botão de controle, o estado da Lâmpada é “invertido” (se estava desligada então liga, e se estava ligada então desliga, caracterizando o “toggle”).
Observar que na Página é mostrado o estado atual da Lâmpada, e quando se clica no Botão, esta informação é atualizada na Página de Controle. É interessante criar um atalho para a Página de Controle, pois se por qualquer motivo a Rede WiFi caia ou se desconecte o ESP32, basta clicar no atalho para se ver o estado atualizado em que se encontra a Lâmpada, e neste caso o atalho é o próprio Endereço IP sendo usado pelo PCOM WiFi, conforme mostrado na figura a seguir:
(clique na figura para "zoom")
No exemplo de controle da Lâmpada via PCOM WiFi, foi utilizada apenas uma Página HTML simples, conforme mostrado. Porém o PCOM WiFi permite facilmente se controlar diversas Páginas, o que abre uma gama de possibilidades para a Interface com o Cliente WiFi. Escolhendo-se de forma adequada o “Modelo de Memória” para o ESP32, certamente será possível manter no espaço da Memória de Programa, estas diversas Páginas HTML (ou mesmo através de um SD Card conectado ao Sistema). Em exemplos ainda a serem publicados, será mostrado como implementar este Gerenciamento de Páginas através do PCOM WiFi.
Para o controle via Bluetooth, como já foi dito no início, pode-se utilizar um APP de Terminal Serial Bluetooth (que tenha o perfil SPP no Bluetooth Classic), ou um APP desenvolvido especificamente para a aplicação de controle.
Lembrando que independente do APP utilizado, um Cliente Bluetooth deverá passar pelo Processo de Autenticação, para então ter acesso ao Sistema. Observar que no WiFi, o Cliente já terá ingressado na Rede WiFi local, a qual normalmente já requer uma senha de conexão, mas se necessário é também fácil implementar um controle de acesso através de Páginas HTML, o que será demonstrado em breve também.
Para o acesso e controle via APP de Terminal, foi utilizado o APP “Serial Bluetooth Terminal”, que reúne todos os requerimentos para o controle via Interface SPP. Este APP é de autoria de Kai Morich, e está disponível gratuitamente no Google Play, conforme pode ser visto na figura a seguir:
(clique na figura para "zoom")
No momento que este texto é escrito, o link da página do APP é este: "Serial Bluetooth Terminal"
Um documento foi preparado para descrever a configuração deste APP “Serial Bluetooth Terminal” para uso adequado com o PCOM Bluetooth, e que também mostra o Processo de Autenticação de um Cliente Bluetooth e o respectivo Controle da Lâmpada (também no modo “toggle” para simplicidade, da mesma forma que na Página HTML acessada via PCOM WiFi).
Assim, para não se gastar mais linhas aqui neste texto, as quais já estão incluídas no documento mencionado, para entender como o APP é configurado e utilizado, veja o respectivo documento que está em um link no final deste artigo. XYZ
O controle do Sistema depois que um Cliente Bluetooth está Autenticado, é totalmente livre, e o Processo do Usuário sendo executado na Placa ESP32/Arduino tem a liberdade de utilizar qualquer mecanismo de controle que achar conveniente. Este mecanismo ainda estará dentro da Interface SPP Bluetooth, mas isto será totalmente transparente ao Processo do Usuário. Isto será mostrado mais à frente, e posteriormente será demonstrado através de um APP dedicado.
O Processo de Autenticação Bluetooth tem suas regras, que apesar de muito simples, devem ser seguidas para que um Cliente possa se Autenticar e assim ter acesso ao controle do Sistema.
O PCOM Bluetooth disponibiliza dois “Modos de Comando” para o Processo de Autenticação: o “Modo de Comando Simples” e o “Modo de Comando Texto”. Este dois modos estão descritos no documento que trata do uso do APP de Terminal Serial, então os detalhes relacionados a estes modos não serão aqui mostrados.
Mas é importante dizer que o “Modo de Comando Texto” é o mais adequado quando se utiliza um APP de Terminal Serial, onde uma pessoa (o Cliente Bluetooth) irá fazer a Autenticação e o Controle do Sistema.
Já o “Modo de Comando Simples” é o mais adequando quando se utiliza um APP dedicado, onde certamente quem fará a Autenticação e o controle efetivo, é uma “Máquina” ou Programa (no caso o próprio APP). Assim, o Cliente não tem que se preocupar com a Autenticação nem precisa conhecer os comandos necessários para o controle do Sistema. A coisa funciona assim: quando a conexão Bluetooth é estabelecida e o Dispositivo implementado (no exemplo, o “BlueLAMP”) está pareado (no ESP32 isto não requer senha), o PCOM Bluetooth enviará um comando simples ao APP requisitando a senha de Autenticação. Então o APP responde enviando a senha, e se estiver correta, o Cliente será incluído na Lista de Clientes Autenticados e poderá acessar e controlar o Sistema. Mas se o Cliente não Autenticar, será enviado uma mensagem (que é considerada um Comando Simples também), avisando ao Cliente do ocorrido. Tudo que ocorre no “Modo de Comando Texto”, ocorre no “Modo Simples”, a única diferença é que os comandos no “Modo Simples” são sequências simples de caracteres ASCII (dificilmente passando de 4 caracteres), o que simplifica o processo de interpretação dos comandos e mensagens por parte do APP dedicado sendo utilizado (enquanto no “Modo Texto” os comandos e mensagens são sequências mais compridas de caracteres ASCII formando frases que são facilmente entendíveis por pessoas).
Normalmente o Modo de Comando a ser utilizado para a Autenticação, é selecionado no início do código sendo executado no ESP32, e permanece o mesmo durante o tempo todo.
Mas é possível mudar o Modo de Comando para Autenticação, a qualquer momento (ou seja, “on the fly”), caso isto seja desejável, através de uma função da Interface do PCOM que permite especificar qual o Modo de Comando será usado para Autenticação.
Além do Comando de Requisição da Senha de Autenticação, o APP tem que interpretar também as mensagens que o PCOM envia indicando as várias ocorrências do Processo de Autenticação, a fim de que o APP possa tomar a decisão do que fazer em cada situação (como por exemplo saber que está autenticado e que pode iniciar o acesso e o Controle do Sistema, ou se não autenticou e terá que tentar novamente depois de aguardar um período de tempo chamado “Intervalo de Autenticação”).
Os comandos/mensagens no Modo de Comando Simples para o Processo de Autenticação Bluetooth, são apenas 5 e estão listadas na tabela mostrada na figura a seguir:
(clique na figura para "zoom")
Após estar Autenticado no Sistema, o APP poderá utilizar qualquer método de controle que desejar, pois o PCOM Bluetooth não interfere mais no Processo do Usuário. Isto porque qualquer coisa enviada pelo Cliente Bluetooth será repassada integralmente ao código que está executando o Processo do Usuário, e da mesma forma qualquer coisa que o Processo do Usuário repassar ao PCOM será enviado diretamente para o Cliente Bluetooth sem interferência. Claro, isso tudo enquanto a conexão estiver estabelecida.
Então após a Autenticação, o Cliente Bluetooth e o Processo do Usuário executando na Placa ESP32, estarão totalmente livres para se entenderem conforme desejarem.
Lembrando que o PCOM Bluetooth não irá solicitar a senha de Autenticação para um Cliente que já tenha autenticado no Sistema, e portanto a conexão entre este Cliente e o Processo do Usuário executando na Placa ESP32, será imediata assim que o Cliente se conectar.
E desde que um Processo qualquer do Usuário deseje, ele pode utilizar apenas o PCOM WiFi ou apenas o PCOM Bluetooth, ou então ambos, e conforme o Gerenciamento do PCOM conecte automaticamente o Sistema via WiFi ou via Bluetooth (qual estiver disponível em um determinado momento).
E lembrando também que é possível “desativar” e “reativar” qualquer dos PCOMs (inclusive ambos) a qualquer instante que se desejar (“on the fly”).
Links para downloads de alguns documentos/arquivos individuais:
Todos os arquivos individuais nos links a seguir, já se encontram no arquivo "Zip" da Bliblioteca PCOM WiFi-Bluetooth, no link no final da primeira parte do tópico.
Link para o Documento que mostra como configurar/usar o APP “Serial Bluetooth Terminal” : "config_APP_PCOM_BT_00.pdf"
Link para o Documento que mostra como configurar uma Placa ESP32 para compilar código que usa o PCOM WiFi-Bluetooth: "config_ESP32_PCOM_WF_BT_00.pdf"
Para aqueles que querem analisar como é o funcionamento interno do PCOM WiFi-Bluetooth, aconselho configurar de forma mais adequada a IDE do Arduino.
Este documento mostra a configuração da IDE: "config_IDE_Arduino_00.pdf"
Os Diagramas de Estados do PCOM WiFi-Bluetooth, estão inclusos junto à Biblioteca, mas o mesmo documento está neste link: "PCOM_WiFi_Bluetooth_01 - Diagramas.pdf"
O código de exemplo de controle da Lâmpada, via PCOM WiFi-Bluetooth está também incluso na Biblioteca, e também neste link: "ESP32_WiFi_Bluetooth_Lampada_01.zip"
E finalmente, a própria Biblioteca do PCOM WiFi-Bluetooth, está disponível neste link, que já foi publicado na primeira parte do tópico: "PCOM WiFi-Bluetooth ESP32/Arduino"
Em breve novos exemplos usando o PCOM WiFi-Bluetooth serão aqui publicados.
Abrçs,
Elcids…
Adicionado por Elcids Chagas ao 23:58 em 27 agosto 2019
soais, resolvi montar uma ideia com vários componentes, sensores, etc. Talvez ampla e complexa demais para iniciar, mas acredito ser um bom objetivo.
Sou de TI, e sempre gostei muito de "fuçar" nos mais diversos escopos. Trabalhei e trabalho com várias coisas, Windows, Mac, Linux, banco de dados, núvem, AWS, GCP, e várias outras tecnologias. Programação básica em Golang, Lua, Javascript, Node JS, PHP e mais básica ainda em Python.
Acredito que este conhecimento prévio ajude.
O Projeto: Automação Residencial
Premissas:
A parte de automação em si, deve funcionar de forma 100% autônoma. Por autônoma, eu quero dizer:
Todos os componentes devem funcionar com suas próprias baterias/fontes de energia (para casos de queda de energia, o principal continuar funcionando, como fechaduras e alarmes/alertas
Comunicação sem Fio entre os dispositivos
Independente de Internet (apesar de conectada para monitoramento e automação remota)
Independente de Rede WiFi (pois dependeria de um roteador WiFi)
Ser possível controle por voz
Ser possível fazer programações de horários, ambiente, etc
Ser possível monitorar/controlar remotamente
Evitar equipamentos caros
Dispositivos:
Sensor de temperatura/pressão atmosférica, dióxodo de carbono e luminosidade (com e sem visor no sensor)
Sensor de umidade em vasos (futuramente, automatizar com bomba de agua)
Sensores de Presença
Sensores de Identificação (saber quem está no lugar)
Controlar e receber informações de cameras IP
Automação de dispositivos de audio/video IR e IP (TV, Home Theather, etc)
Automação de iluminação
Medição de consumo de energia e controle liga/desliga (Bidirecional para receber informações de status e consumo, e controle remoto liga/desliga)
Fechadura de portas (bidirecional para poder abrir remotamente, e informar/registrar status da porta)
Para este projeto, o que estou pesando em usar:
Central de Comando
Algum Arduino, inicial um R3/UNO e talvez depois um Mega
Comunicação Monodirecional - RF 433 (não achei outras boas opções alem desta com simplicidade e baixo custo)
vários dispositivos irão enviar dados para este dispositivo
Comunicação Bidirecional - NRF24L01 (entendo que um XBee, X10, Zigbee ou Z Wave tem muitas vantanges, mas são muito mais caros)
vários dispositivos irão se comunicar
"Controle remoto universal" feito com arduino usando NRF24L01 e talvez uma tela Touch
Módulo GSM para enviar alertas
Dispositivos
Sensor de Temperatura, etc
Attiny85
sensores
rf 433
bateria (é possível monitorar a carga? e sinalizar quando estiver acabando?)
Sensor de umidade em vasos
Attiny85
sensor
rf 433
bateria (é possível monitorar a carga? e sinalizar quando estiver acabando?)
Sensor de Presença
Attiny85
sensor PIR
rf 433
bateria (é possível monitorar a carga? e sinalizar quando estiver acabando?)
Sensor de identificação
Attiny85
Bluetooth (utilizar "MAC" do bluetooth para identificar pessoas pelo smartphone)
rf 433
bateria (é possível monitorar a carga? e sinalizar quando estiver acabando?)
Controlar e receber informações de camera IP
inicialmente direto com raspberry (acho que será mais fácil)
Automação de dispositivos de Audio/Video
Attiny85
transmissor IR
rf 433
bateria (é possível monitorar a carga? e sinalizar quando estiver acabando?)
Automação de iluminação(aqui terei algum trabalho para entender como funciona quando tem várias pontos de liga/desliga)
Attiny85
Rele
NRF24L01
bateria (é possível monitorar a carga? e sinalizar quando estiver acabando?)
Medição de consumo de energia e liga/desliga
Attiny85
1 ou vários reles
sensor de tensão/corrente
NRF24L01
bateria (é possível monitorar a carga? e sinalizar quando estiver acabando?) (para permitir mudar o status para desligado quando acabar energia e evitar queima quando voltar, faz sentido?)
Fechadura de porta
Attiny85
sensor de toque
sensor de "trepidação"
servo/motor para abrir/fechar
NRF24L01
bateria (é possível monitorar a carga? e sinalizar quando estiver acabando?)
Algum smarthub como o Samsung Smartthings Hub para integrar Zigbee, ZWave, etc
Raspberry PI 3 para ser a central de comando e repositório de dados com algo como home-assistant, openhab, mqtt, node-red, etc
Alguma solução em núvem para gateway, backups, etc (aws, gcp, azure, etc)
Esta é uma descrição que fiz do projeto para ajudar a visualizar e começar a fazer as coisas. Porém, ainda restam muitas dúvidas. Devem ter muitas outras ideias melhores, também por isto gostaria de pedir ajuda de vocês.
Inicialmente fiz algumas pesquisas, mas ainda não ficou claro, as principais dúvidas que pairam sobre estas ideias são:
O Attiny85 "aguenta" esta quantidade de componentes? Exemplo do caso do sensor de temperatura e outras coisas que serão vários sensores?
A parte de comunicação é factível?
1 receptor no arduino e vários transsores RF 433 é realmente possível e recomendável? Algum sugestão de melhor alternativas?
Este NRF24L01 funciona para estes casos? 1 na central e um em cada dispositivo vai me antender?
Tem muito riscos de interferências?
Como montar os esquemas para alimentação de energia? Quais baterias utilizar?
Como calcular/estimar o consumo de energia de cada dispositivo e duração das baterias?
Fora isto, toda crítica, opinião e sugestão será extremamente bem vinda.
Grato e espero poder contribuir.…
Adicionado por Ricardo Tutume ao 19:33 em 27 outubro 2017
e PVC super leve e as partes internas das pinças possuem material antideslizante.
Especificações
Tensão nominal: 12V DC
Faixa de tensão operacional: 5V - 12V DC
Corrente nominal: 450mA
Corrente de "stall": 1700mA
Peso da garra: 0,05kg
Velocidade da garra (de fechada para totalmente aberta): 1 segundo
Carga máxima suportável: 0,6kg
Algumas informações foram obtidas da página oficial do produto e também da embalagem do mesmo.
Divertindo-se
Inicialmente fiz alguns testes usando o aplicativo da Makeblock rodando em um smartphone com Android, conectado via bluetooth à placa mCore, que é a controladora do robô mBot.
Para testar a garra de uma maneira mais divertida, fiz um braço simples com dois graus de liberdade mais a garra.
A montagem inclui uma base feita de MDF, perfis e suportes de alumínio e peças da Makeblock.
O braço é controlado por um controle sem fio de PlayStation 2 e uma placa Arduino.
Usarei este método para controlar remotamente o MDi #4.
Informações adicionais
http://mech-dickel.blogspot.com.br/2016/02/makeblock-robot-gripper-unboxing-and.html - Postagem em meu blog com o mesmo conteúdo, mas em inglês.…