Ir ao conteúdo

Posts recomendados

Postado

Olá pessoal, preciso desenvolver um carro controlado por Bluetooth na plataforma Arduino. O problema que tenho enfrentando é: Como usar o bluetooth de um ESP 32 junto ao Arduino ? Sei que usando um módulo bluetooth seria bem mais fácil, porém eu TENHO que usar o ESP32.

  • Membro VIP
Postado

Penso cá com meus botões que a maneira + fácil é procurar exemplos prontos/ mastigados na net. Como este esp32 é extremamente barato, a dica que dou é tenha 2.. um tx e um rx.. de fato bidirecional: você pode p.ex. ver as condições da bateria. Se bem que o + legal é usar um celular pra controlar pelo b.t.   .. de novo .. google p.ex. esp32 blue tooth home automation (clique)

Postado

@alefe zanella ,

 

Eu sou do tempo dos modens .... então eu usaria esse ESP-32 exatamente como um modem, usando o set de comandos AT .... assim isolo tudo do Arduino e uso os ESP-32 como se fossem um modem full duplex ou half-duplex, virando um simples link serial ......

 

Procure exemplos desse tipo com o ESP8266 que são bem numerosos, então apenas use os comandos equivalentes do ESP-32 ok ?

 

Para sua referência :

https://docs.espressif.com/projects/esp-at/en/latest/esp32/AT_Command_Set/Basic_AT_Commands.html

 

Veja este vídeo :

https://www.youtube.com/watch?v=xOLG-88Ld3A

 

Paulo

 

  • Curtir 1
Postado

@alexandre.mbm ,

 

Sim, claro que o ESP-32 é bem mais potente que um simples Arduino, mas usar o hardware do Arduino é algo muito simples, e usar o hardware do ESP-32 já é bem mais complicado.

Isso se traduz numa facilidade programação bem maior , com milhares de exemplos disponíveis para o Arduino, contra poucos exemplos para o ESP-32.

 

Muitas vezes preferimos trabalhar com aquilo que dominamos, mesmo sendo menos potente e talvez dando mais trabalho na programação, do que nos embrenharmos em um caminho desconhecido.

 

Aliás, eu sou um perfeito exemplo disso : faço quase tudo em Basic, usando os velhos Atmegas e o Proteus na simulação, e sempre consigo chegar no produto desejado bem rápido.

 

Paulo

  • Membro VIP
Postado
  Em 05/04/2022 às 12:06, aphawk disse:

usar o hardware do ESP-32 já é bem mais complicado.

Expandir  

Não necessariamente... pra você ter uma ideia até eu consegui fazer um led piscar com ele 😁 (de fato via blue tooth). Quem domina o arduino domina ele também pois ambos trabalham com o mesmo 'ambiente'.

 

Mas se você estiver falando de programar comandos at nele, aí sim só mesmo de Paulão ou Chuck Norris pra cima...😁

  • Haha 1
Postado
  Em 05/04/2022 às 14:07, .if disse:

Mas se você estiver falando de programar comandos at nele, aí sim só mesmo de Paulão ou Chuck Norris pra cima...😁

Expandir  

 

kkkk é .... fazer na marra como eu fazia desde os anos 80 não é para qualquer um ......

 

  Em 05/04/2022 às 15:03, alexandre.mbm disse:

Ou um grande subconjunto. Arduino IDE. Foi como pensei.

Expandir  

 

O unico problema que eu vejo no ambiente do Arduino é que é muito complicado para um iniciante trabalhar com várias interrupções ao mesmo tempo. Algumas bibliotecas atrapalham bastante, e algus comandos da IDE também podem usar alguma coisa e dar pau .....

 

O programa que eu mostrei o finalzinho num outro tópico, feito em Basic e Assembler, é o motivo de eu preferir ficar no ambiente idoso do Basic que eu domino bem :

 

Tenho o Timer1 gerando interrupção de base de tempo , fazendo leituras do ADC e normalizando os possíveis ruídos.

Tenho o Timer0 gerando interrupção como Counter para transferir dados por pulsos com outro equipamento.

Tenho uma interface serial gerando interrupção na comunicação USB serial a 9600 Bauds com o micro.

Tenho uma interface I2C conversando com o display, a 100 Khz, também por interrupção.

Fora essas interrupções, tenho uma outra interface serial por software a baixa velocidade ( 1200 Bauds ) enviando um log para outro equipamento.

E tenho o Timer2 gerando sinal PWM para modular a velocidade de um motor DC.

 

No meio disso tudo, tenho um Rotary Encoder usando interrupção dos pinos do Atmega328, e mais 3 botões que preciso ler as entradas , um deles gera interrupção também ....

 

Quem já tentou usar um rotary encoder no Arduino já sabe a porcaria que implementaram, falha toda hora e se girar rápido demais perde um monte de pulsos.

 

Não posso perder de jeito nenhum as interrupções geradas pela porta serial, a 9600 Bauds, e sei que o buffer de recepção por hardware do Atmega é de apenas 1 byte.

 

Para o programa rodar , não perder dados do micro, não perder dados dos outros equipamentos, o display não perder dados, o rotary não falhar, a comunicação por trem de pulsos não perder dados, tudo isso precisa ser muito bem controlado, usando rotinas em Assembler para garantir o total controle, e muitas vezes desabilitando as interrupções para fazer algo muito crítico e reabilitando elas depois.  Isso eu consigo facilmente pois sei TUDO o que o Bascom utiliza, e assim planejo o meu programa.

 

Fazer isso tudo usando a IDE do Arduino, a qual eu não domino, com bibliotecas de monte as quais eu também não escrevi , me parece uma doideira enorme .... por isso que fico no meu velho ambiente onde dificilmente serei surpreendido por algo imprevisto na linguagem.

 

Paulo

  • Membro VIP
Postado
  Em 05/04/2022 às 15:37, aphawk disse:

Fazer isso tudo usando a IDE do Arduino, a qual eu não domino, com bibliotecas de monte as quais eu também não escrevi , me parece uma doideira enorme .... por isso que fico no meu velho ambiente onde dificilmente serei surpreendido por algo imprevisto na linguagem.

Expandir  

 

Essa receita é seguida por todo desenvolvedor profissional que tem juízo, de software ou hardware. Porém  ela se aplica ao contexto de cada um, com as ferramentas que a pessoa domina. No ambiente do fórum, talvez estejamos, em cada caso, a tratar de ferramentas que estão sendo aprendidas, então o conselho deve ser adaptado por quem o está recebendo: será que o @alefe zanellaquer aprofundar em que, AVR com sketches?

 

Na área de software, tem grade de curso que gira em torno de uma única plataforma: Java, Python, C, etc. Então a pessoa fica quatro ou seis anos olhando para aquilo, para quando entrar no mercado ter inevitavelmente o sentimento de ser melhor usar aquilo (que [ainda] começa a dominar). Fora daquilo, tudo é estranho e esticador de prazo.

 

Se não há prazo nem compromisso, aprender coisas novas talvez seja um conselho para dar mais peso.

 

Toda grande ferramenta construída por algum coletivo na horizontal será um prato com algum espaguete. Quando a coisa é fechada, as gambiarras apenas ficaram trancadas, para ninguém saber delas.

  • Curtir 2
  • Membro VIP
Postado
  Em 05/04/2022 às 15:37, aphawk disse:

Tenho o Timer1

Tenho o Timer0

Tenho uma interface serial

Tenho uma interface I2C conversando

..., tenho uma outra interface

 tenho o Timer2 gerando sinal PWM

..., tenho um Rotary Encoder

Expandir  

Permiti-me abreviar 😁. Quando há muito o que fazer e a sincronização/temporização-otimização é crítica, eis que surge uma boa oportunidade pra estudar o conceito de RTOS

2f809c36-c24a-4adc-9d91-84113c1d6f1c

https://www.digikey.at/de/maker/projects/what-is-a-realtime-operating-system-rtos/28d8087f53844decafa5000d89608016

Me lembro vagamente que tinha uns maluco do passado que implementava RTOS em pic12c508.

 

Como nunca precisei entender, passei batido mas fica aí a semente 🙂

  Em 05/04/2022 às 16:15, alexandre.mbm disse:

aprender coisas novas talvez

Expandir  

😁

Postado
  Em 05/04/2022 às 16:37, .if disse:

Permiti-me abreviar 😁. Quando há muito o que fazer e a sincronização/temporização-otimização é crítica, eis que surge uma boa oportunidade pra estudar o conceito de RTOS

2f809c36-c24a-4adc-9d91-84113c1d6f1c

 

Expandir  

 

Sim, em 1985 trabalhei junto com um engenheiro muito bom em software, ele projetou um sistema e batizou de  SOCO ( Sistema Operacional CONTRAP) , baseado na arquitetura que trabalhávamos na época, Z80A com Z80CTC, e ele criou o sistema  em tempo real que fazia isso muito bem ....  tinha as prioridades das tarefas, tinha um stack individual para cada uma, flags para conversação entre as tarefas, demorou uns 4 meses para ele escrever e debugar mas depois funcionou muito bem. Usamos isso em uns 3 projetos industriais legais.

 

Era interessante escrever as tarefas para esse sistema, o L80 ( linker ) fazia milagres com as macros....

 

Mas claro que a base é um sistema onde você tem interrupções com prioridades... já ví tentarem implementar isso em um Atmega48 , mas no final não deu muito certo. Faz muita falta poder escolher as prioridades ..... que saudades dos vetores de interrupção do Z80....

 

Enfim, cada um sabe onde dói mais o seu calo, né ?

 

 

 

 

 

  Em 05/04/2022 às 16:15, alexandre.mbm disse:

No ambiente do fórum, talvez estejamos, em cada caso, a tratar de ferramentas que estão sendo aprendidas, então o conselho deve ser adaptado por quem o está recebendo

Expandir  

 

Sim, tem razão, mas eu complementaria um pouco mais : se é para uso profissional, a IDE do Arduino não é uma boa escolha. Para aprendizado, sim, mas para uso profissional eu indicaria o C mesmo. Cansei de ver programas do Arduino que só funcionavam direito numa versão específica da IDE .... isso nunca deve ser feito profissionalmente.

 

Paulo

Postado

@aphawk

Paulo

Nos controladores da STMicroeletronics, seja nos 8 bits do STM8 ou no STM32 o timer 1 deles vem pronto para receber o 2 canais do encoder, velocidade máxima de 50% do clock para entrada externa, perfeito para quem se move nos 2 sentidos (CNC e outros). O problema que se pode ter em encoder de alta frequência é o trajeto do sinal mas se este for bem protegido o Timer1 deles mastiga com facilidade. Caso os 16bits do Timer1 não sejam suficientes dá para encadear internamente em série com outro para se ter 32bits. Só não sei se tem ambientes Bascon para esses controladores. A lógica dos registradores que controlam as portas e periféricos da ST é bem mais amigável do que da Microchip/Atmel e muitos modelos vem com um ou dois DMA bem interessantes por um excelente custo, fato que facilita a vida de quem tem que operar em tempo real tantas tarefas, inclusive comunicação serial. O ADCs deles são a partir de 1mps. Consegue-se tudo isso por menos de US$ 2,00.

Vou pedir uma grana depois dessa propaganda.

Abraços

Sérgio

 

  • Curtir 1
  • Haha 1
Postado

@Sérgio Lembo ,

 

Sim, eles são controladores muito legais, e relativamente baratos. Infelizmente não tem suporte para eles no Bascom, houve uns boatos mas até agora nada .....

Existem alguns microcontroladores novos semelhantes aos velhos Atmegas lançados pela Microchip que são um híbrido AVR/PIC, com muita coisa nova dentro deles, e que são bem baratos também, mas ainda tem muita errata saindo nos datasheets.

 

Sobre usar os encoders, eu fiz a minha rotina em Assembler, usando interrupção nos dois pinos, funciona muito bem mesmo se o encoder sair voando.... uso elas nos meus programas fazem alguns anos, porque a rotina original do Bascom também é uma porcaria, igual às bibliotecas que  tem no Arduino... claro que ajuda muito nos Atmegas quase qualquer pino poder ter uma interrupção !

 

Dá uma olhada nesse CI : AVR128DB28 e família, desde 28 pinos até 64 pinos... olha quanta coisa tem dentro...

O Bascom já tem suporte para essa família, tá todo mundo querendo brincar com isso nos Fóruns.

 

Paulo

 

  • Curtir 1
  • Membro VIP
Postado
  Em 08/04/2022 às 11:51, aphawk disse:

a rotina original do Bascom também é uma porcaria, igual às bibliotecas que  tem no Arduino...

Expandir  

 

Seis por meia dúzia. O eletricista (ou o pintor) não sabe o que fizeram antes dele. No ideal existem normas, e documentação do realizado.

  • Curtir 1
Postado

@alexandre.mbm ,

 

No mundo real esses encoders baratos não fornecem os sinais tão limpinhos como mostram os datasheets .... tem ruído de monte. No caso do Arduíno, tem o agravante das interrupções da base de tempo dele, e acaba perdendo movimentos do encoder em uma velocidade maior.

 

Eu aprendi a controlar muito bem todas as interrupções que podem ocorrer em um projeto, então tenho alguns truques para eliminar essas perdas. Mas isto implica em escrever algumas rotinas em Assembly para manter o controle total,  habilitando novamente as interrupções assim que possível para evitar perder algo que possa ter tempos críticos. Isso não é a norma dos programadores atuais, eles não tem conhecimento de stack da CPU, dos registradores, do fato de os microcontroladores PIC e AVR comum não terem prioridade de interrupção , então acontece um monte de problemas nos projetos deles.

 

Existe uma grande diferença entre aprender como funciona o hardware interno de um microcontrolador e programar tudo orientado para esse funcionamento, e um iniciante aprender a programar na IDE do Arduino sem saber os detalhes de todo o hardware ....

 

Enfim, como já disse, esse conhecimento que alguns de nós aqui do CDH ainda possuímos logo será perdido , pois os novos programadores não acham isso necessário, e acabam usando microcontroladores de 32 bits e 500Mhz de clock para fazer coisas que um de 8  bits a 4Mhz faz com um pé nas costas....

 

Bom, pensando bem esse foi o mesmo motivo que fez com que um Windows 3.1 que ocupava menos de 10 Mbytes num computador virasse um Windows 10 que ocupa mil vezes mais espaço ..... tudo pela facilidade de programação !

 

Paulo

  • Curtir 2
  • Obrigado 1
Postado

@aphawk

Paulo

Sei que cachorro velho não gosta de truque novo mas tu ainda tem muita lenha pra queimar. Saia das limitações de suporte do Basic, aprenda C. Os MC da ST usam o Timer1 para encoder com 2 canais de capture para controle de contagem e direção. Por possuir 4 canais ainda sobram 2 canais que podem ser usados como compare, um para o destino final do motor e outro para alerta antecipado que o fará desacelerar o motor. Com o hardware controlando isso pra ti fica o processador livre para outras tarefas. Tl1 e Tl2 são as entradas dos 2 primeiros canais do TIM1.

 

 

 

image.png

  Em 08/04/2022 às 20:15, aphawk disse:

Existe uma grande diferença entre aprender como funciona o hardware interno de um microcontrolador e programar tudo orientado para esse funcionamento, e um iniciante aprender a programar na IDE do Arduino sem saber os detalhes de todo o hardware ....

 

Enfim, como já disse, esse conhecimento que alguns de nós aqui do CDH ainda possuímos logo será perdido , pois os novos programadores não acham isso necessário, e acabam usando microcontroladores de 32 bits e 500Mhz de clock para fazer coisas que um de 8  bits a 4Mhz faz com um pé nas costas....

Expandir  

Isto é realmente uma estupidez. Trabalhar na força bruta vai na contra-mão da engenharia que é a de atender a demanda com o menor custo possível.  Quando penso nos meus projetinhos inicio por aquilo que pretendo fazer e os recursos necessários à execução. A seleção dos componentes parte da necessidade e o mais barato que atender aos requisitos é o selecionado desde que o fornecedor tenha produtos confiáveis e bom histórico. Perder tempo com componente porcaria por causa de moedas é insensato.

  • Curtir 1

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Mostrar mais  

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

Mostrar mais  
×
×
  • Criar novo...