alguém poderia me ajudar a fazer esses dois código rodar simultâneo numa só placa Esp32 segue o código em anexo....

Exibições: 402

Anexos

Responder esta

Respostas a este tópico

Olá Marcela, mais uma vez.

      Conforme vc me explicou pelo chat aqui no LDG, seu Sistema é para controlar um acionamento de forma que isto seja possível tanto pelo WiFi quanto pelo Bluetooth (o "classic"). Mas vc me disse também que isto seria sistemático. Ou seja, enquanto o WiFi estiver disponível, o controle é feito pelo WiFi (através de uma página HTML no navegador, seja computador, celular, ou Tablet). Quando o WiFi não estiver mais disponível (seja por qual motivo for), então o controle pode ser feito automaticamente via Bluetooth (também via celular, Tablet, ou computador). E quando vc desconectar do Bluetooth, o controle volta para o WiFi se este estiver disponível (do contrário pode continuar a ser feito pelo Bluetooth, conforme necessário).

      Então, preciso que vc me confirme se é isto mesmo, conforme eu descrevi acima.

      Minha proposta é implementar via Máquina de Estados (pra variar). Já posso te adiantar que serão necessárias 3 Máquinas de Estado:  uma para o Gerenciamento do Sistema, outra para o Gerenciamento da Conexão WiFi, e outra para o Gerenciamento da Conexão Bluetooth. Claro, todas implementadas no mesmo ESP32. Apesar das 3 Máquinas, pouca memória será necessária, seja de código (Flash) como de RAM, e isso é importante pois vc já deve ter percebido que o WiFi e principalmente o Bluetooth, são bastante famintos de memória no ESP32.

      Sobre os problemas técnicos de coexistência do WiFi com o Bluetooth "classic", eles realmente existem (vi que vc e outros discutiram bastante sobre isso em outro post aqui no LDG, e isso também é motivo de diversos posts mundo afora). Em parte, este problema é devido ao fato do WiFi e Bluetooth partilharem o mesmo Hardware no ESP32 (moduladores, demoduladores de RF, e competição entre canais de RF). Mas também principalmente devido a um descuido da Espressif, que ao implementar os "Stacks" WiFiBluetooth, ela não percebeu que as pessoas iriam querer ter os dois juntos, e não criou uma Interface harmoniosa entre estes Stacks no Firmware Nativo do ESP32. Claro, ela já fez umas gambis que resolvem parcialmente o problema. Para quem programa no SDK Nativo do ESP32 (ambiente Linux), estas soluções são mais fáceis, pois podem ir a um layer de código mais baixo e com maior flexibilidade para contornar o problema. Já para a Plataforma Arduino, as coisas são bem mais restritas e se resumem às Bibliotecas disponíveis da Plataforma, e no que é possível fazer com elas.

      Já olhei a LIB referente ao SPP (Serial Port Profile) via Bluetooth "classic", e vi algumas limitações da mesma. Também vi algumas falhas "graves" de implementação desta LIB, e algumas não são possíveis de corrigir sem alterar a própria LIB SPP. Estas falhas da LIB, torna impossível fazer o que vc deseja Marcela, na Plataforma Arduino. Mas não se preocupe, há uma solução.

      Eu sou absolutamente contra alterar as LIBs padrões. Por isso o que farei será o seguinte: irei implementar uma LIB SPP baseada na original, mas sem as falhas graves que mencionei. Essa LIB não precisará ser acrescentada ao diretório "libraries" do Arduino. Ela estará em uma pasta própria junto ao arquivo "ino" do Projeto. Caso vc ou qualquer outra pessoa deseje, poderá posteriormente adaptá-la para ser incluída na pasta "libraries" do Arduino.

      Esta LIB será 100% compatível com a original, permitindo que seja usada também em outros projetos "antigos", mas sem as falhas graves da LIB original.

      A LIB que usarei como base, é do package 1.0.0 do ESP32 para o Arduino. Recentemente, lançaram a 1.0.2 e a LIB SPP correspondente sofreu algumas alterações significativas. Infelizmente não posso afirmar que as alterações que eles fizeram, foram as mais acertadas. Por exemplo, para o método "flush", eles mudaram completamente a interpretação da função, contrariando o que a Classe "Print" determina (eu consigo visualizar o motivo provável pelo qual eles fizeram isso, mas acho que não foi uma boa decisão). Além disso, um dos problemas graves que mencionei, continua o mesmo na LIB SPP do Pack 1.0.2.

      Como a proposta aqui é fazer a coisa funcionar e de forma confiável, é preferível usar como base a LIB do package 1.0.0 do ESP32 para o Arduino, pois dará conta do recado, sem riscos de outros bugs ainda mais raivosos e misteriosos.

      Mas antes de eu postar mais detalhes sobre a implementação, peço a vc Marcela, que forneça sistematicamente as seguintes informações:

      1) que APP vc estará usando para controlar seu Sistema via Bluetooth ?  será um APP de Terminal convencional como estes tantos que existem por aí? Por exemplo, seria algo como o desse link ou similar :  "Serial Bluetooth Terminal   ?

      2) qual comando vc enviará através desse APP? No código que vc postou aqui, está usando a letra "b" (minúscula), para ligar/desligar um Relé. Inclusive, isso parece sugerir o uso de um APP de Terminal, embora o Blink também permita fazer o mesmo tipo de controle.

      3) poderia nos informar melhor o que vc estará controlando? Será um Portão Elétrico (Motor ou similar), será uma Lâmpada ou similar ? Claro, pergunto isso para que o tópico fique mais elucidado e atraente para aqueles que venham a precisar se uma solução semelhante.

      Aguardo suas respostas,

      Abrçs.

      Elcids

Boa noite Elcids, sim correto a sua colocação de usar o ESP32 via Wifi e quando não tiver Wifi via Bluetooth, já estou usando dessa forma com 2 ESP32, nossa pensei que não fosse tão complexa assim, agradeço pela sua pesquisa sobre as duas conexão do Esp32.

1° =  App estou usando um que fiz no app inventor, sistema android

2° =  Estou usando para controlar minhas lâmpadas e o portão eletrônico .

ok Marcela.

      Sobre o APP, como ele é usado?  Você envia um caracter (como o "b" no seu código de exemplo)  via SPP Bluetooth classic?

      Pergunto, pois precisarei testar com algum APP.

      Uma coisa que podemos fazer, é testar com aquele APP do Link que postei antes, o "Serial Bluetooth Terminal"   ,  pois é mais genérico e já implementa a SPP via Bluetooth classic. Facilitará muito o teste.

      Sugiro vc baixar este APP "Serial Bluetooth Terminal", e testar com aquele código de exemplo que vc postou. Eu fiz isso, e achei prático para testes.

      Além disso, esse APP também recebe dados do ESP32, de forma a confirmar comandos e enviar notificações. No APP vc também pode programar diversos botões para enviar comandos com apenas um toque no Botão. Ah claro, sempre há algumas configurações no APP que facilitam muito o trabalho, e neste caso eu posso postar aqui as configurações que fiz.

      Isto seria apenas para facilitar o teste de forma comum (os que eu fizer e os que vc fizer), e também pra facilitar o uso de forma mais genérica para outros que não tenham desenvolvido um APP específico como vc fez.

      Depois que estiver tudo ok, então vc usa o APP que vc desenvolveu.

      Pode ser?

      Abrçs

      Elcids

sobre os comandos eu uso os carácter  a, b,  c, d   para o camando via bluetooth  e outro comando para usar via Wifi, mais se você mudar o comando no código eu mudo aqui no app também,  essas e a foto do app inventor.

esses são os comando que uso para os dois .

oi Marcela.

      Esse APP de controle que vc desenvolveu, parece ter ficado muito legal.

      Pelos prints e conforme vc confirmou, está controlando pelo menos 4 elementos.

      Na solução que proponho, o funcionamento das três Máquinas de Estados que controlarão o Sistema, será independente da quantidade de elementos controlados.

      Logo, as rotinas de controle dos elementos, serão independentes.

      Via Bluetooth vc poderá usar caracteres (como por exemplo "a", "b", "c", e "d" que vc disse já estar usando) ou até mesmo textos mais complexos (tipo "abre Portão", "fecha Portão", "liga Quarto", etc). Já via WiFi, poderia ser uma Página HTML, clicando em botões na página).

      A ideia é que esse controle seja totalmente genérico, tanto em termos do que é controlado (Motores, Lâmpadas, etc), como em termos da forma que o controle é feito (seja via Página HTML, via um APP de Terminal Bluetooth convencional, ou vi um APP personalizado).

      Assim, para permitir que a solução possa ser acessível a um maior grupo de pessoas, vou fazer toda a implementação usando apenas um elemento de controle (por exemplo uma Lâmpada), e assim ficará fácil para estender a ideia para quaisquer quantidades e tipos de elementos (inclusive Analógicos também).

      Ou seja, após a solução estar implementada para um elemento de controle digital (liga/desliga), podemos também postar a mesma solução aplicada a maior quantidade e tipos de elementos.

      Dessa forma, acho que ficará mais evidenciado a solução em si, e não os elementos (que são apenas os "periféricos" controlados).

      Então irei usar para os testes, o APP "Serial Bluetooth Terminal" que mencionei antes, pois isto permitirá que qualquer pessoa interessada também faça os testes e use o Sistema.

      Para o controle via WiFi, usarei uma Página HTML semelhante à do exemplo que vc postou no início do tópico.

      Observe que dessa forma, mantemos também a simplicidade do controle, permitindo que o mesmo seja estendido posteriormente da forma como cada um achar conveniente.

      Depois de implementada e validada a solução, postarei uma versão que tenha também uma autenticação via Bluetooth, permitindo que se insira uma senha de acesso, a qual será independente do pareamento Bluetooth convencional.

      Tão logo eu tenha feito os Diagramas de Estados das três Máquinas de Estados, os publicarei aqui, o que permitirá que se tenha uma visão prévia de como a solução funcionará.

      Se tiver qualquer comentário, sugestão, ou mesmo dúvida, vc Marcela, ou outro garagista, não deixe de fazer.

      Abrçs,

      Elcids

Eu tenho o APP "Serial Bluetooth Terminalno celular, eu uso pra  fazer uns teste e muito bom esse APP, Obrigada pela atenção e o tempo que você dispõe para nos ajudar aqui no LDG....

Ok Marcela,

      então fica assim combinado. Usaremos o APP "Serial Bluetooth Terminal" para os testes com Bluetooth. E para o WiFi uma Página HTML semelhante àquela do exemplo que vc postou no início do tópico.

      Assim que possível postarei aqui o andamento de tudo.

      Abrçs,

      Elcids

RSS

Destaques

Registre-se no
Lab de Garagem
Clicando aqui

Convide um
amigo para fazer
parte

curso gratis de arduino

© 2019   Criado por Marcelo Rodrigues.   Ativado por

Badges  |  Relatar um incidente  |  Termos de serviço