Índice:

Recuperar Módulo de Bluetooth HC-06 configurado incorretamente: 4 etapas
Recuperar Módulo de Bluetooth HC-06 configurado incorretamente: 4 etapas

Vídeo: Recuperar Módulo de Bluetooth HC-06 configurado incorretamente: 4 etapas

Vídeo: Recuperar Módulo de Bluetooth HC-06 configurado incorretamente: 4 etapas
Vídeo: #122 Curso de Arduino desde cero 2024, Novembro
Anonim
Recuperar Módulo Bluetooth HC-06 Desconfigurado
Recuperar Módulo Bluetooth HC-06 Desconfigurado

Por puro maximalismo, configurei meu módulo HC-06 Bluetooth (escravo) para uma taxa de bauds de 1, 382, 400 bauds com o comando AT + BAUDC. Desde que o Arduino conectado a ele não foi capaz de usar o módulo com a biblioteca SoftwareSerial. Tentei restaurar a taxa de transmissão com o serial do hardware do Arduino (pinos 0 e 1) sem sorte.

Também tentei pesquisar o tópico no Google sem encontrar uma solução aceitável. Talvez usar uma porta serial embutida no computador pudesse ter sido uma solução (com mudança de nível lógico de 12V para 3V3), mas meu computador não tem essa porta obsoleta, então eu tive que pensar em outra solução.

Etapa 1: O que você precisa

O que você vai precisar
O que você vai precisar
  • Placa Arudino / Genuino com o Atmel ATMEGA328P-PU MCU padrão (@ 16 MHz).
  • Um módulo Bluetooth HC-06 ouvindo em 1, 382, 400 baud
  • IDE arduino básico de

Etapa 2: a solução

A solução
A solução
A solução
A solução

Observe que este Instructable e a solução são feitos para 1, 382, 400 baud (AT + BAUDC) cenário. A solução não funcionará para nenhuma outra taxa de transmissão. Para lidar com outros casos, consulte as etapas a partir da Etapa 3.

A solução é muito simples.

  1. Conecte o pino VCC do HC-06 ao pino 5V do Arduino.
  2. Conecte o pino GND do HC-06 ao pino GND do Arduino.
  3. Conecte o pino RXD do HC-06 ao pino 2 do Arduino.
  4. Deixe o pino TXD do HC-06 desconectado (ou conecte ao pino 8).
  5. Faça upload do esboço hc06reset.ino.
  6. O programa definirá o HC-06 no modo 115, 200 baud (AT + BAUD8).
  7. Use seu módulo HC-06 recuperado como antes.

Etapa 3: nos bastidores …

Por trás das cenas…
Por trás das cenas…
Por trás das cenas…
Por trás das cenas…

A biblioteca SoftwareSerial que vem com o Arduino IDE é capaz de transmitir no máximo 115, 200 bits / segundo, portanto, não é rápida o suficiente para se comunicar na taxa de baud desejada de 1, 382, 400. Dado que uma placa Arduino padrão funciona em 16 MHz, a taxa de bits máxima não compactada teórica é de 16.000.000 bits / s. Estamos bem até agora!

Com base no meu entendimento de SoftwareSerial.cpp, a comunicação seial é feita configurando um pino de saída Alto (= 1) ou Baixo (= 0) em relação a um atraso (que vem da taxa de transmissão) entre as alterações.

  • O pino de saída é alto por padrão (significa sem dados), então
  • um bit de início é transmitido (o que puxa o pino para baixo), então
  • 8 bits de dados transmitidos de LSB para MSB, (+ 5V quando o bit 1 e 0 de outra forma), então
  • um bit de parada é transmitido (o que puxa o pino para cima)

Desta forma, 1 byte é transmitido usando 10 bits.

A mensagem que devemos enviar é AT + BAUD8 (sem / n, / r no final). Este comando define o HC-06 de volta para a taxa de 115, 200 baud que pode ser controlada por bibliotecas regulares.

Para enviar bits com 1, 382, 400 bits / s de velocidade, para cada bit temos 1/1, 382, 400 segundos de tempo (ou seja, cerca de 723,38 ns) para cada bit. O Arduino é executado em 16.000.000 Mhz, portanto, cada ciclo dura 1/16.000.000 segundos - ou seja, 62,5 ns por ciclo.

Usando o código assembly do AVR, podemos usar o comando OUT para definir o pino de saída alto ou baixo e o NOP para esperar exatamente um ciclo da CPU. Ambos os comandos consomem exatamente 1 ciclo de CPU. Dessa forma, o tempo de bit de 723,38 ns pode ser coberto por 11 a 12 instruções Arduino por bit transmitido. Uma coisa a se considerar: o comando OUT define um byte inteiro de uma vez, então temos que selecionar um PORTx onde isso não seja um problema. Usar ATMEGA328P-PU por exemplo PORTD (pinos 0-7 do arduino) é perfeito para essa condição. Depois de definir o bit, apenas o tempo adequado tem que passar, o que é feito por 10 a 11 NOPs e é isso.

Você pode encontrar os detalhes do cálculo no arquivo Excel abaixo. Este arquivo gerou as instruções de montagem necessárias para o programa. Apenas algumas substituições tiveram que ser feitas depois de colar o código gerado.

Etapa 4: Leitura Adicional / Possibilidades de Melhoria

  • Talvez uma biblioteca SoftwareSerial mais rápida possa ser feita usando a técnica descrita na Etapa anterior.
  • FedericoK2 criou uma ótima ferramenta que gera o código de recuperação HC-06 para cada taxa de bits possível. Acesse o site aqui: https://tools.krum.com.ar/save_your_hc-06/ Obrigado FedericoK2

Recomendado: