Arduino Bluetooth Firmware Upload

É possível fazer o upload de um programa para o arduino via bluetooth?Bluetooth Arduino Sketch Upload

Quem utiliza Arduino nos seus projectos, mais dia menos dia irá ter uma duvida que gostaria de ter esclarecida.

É possível fazer o upload de um programa para o arduino via wireless?

R.: Sim, de todo testado, comprovado, e explicado neste post.

Para começar informo que neste caso, o via Wireless trata-se de uma ligação Bluetooth, os testes foram feito utilizando um arduino UNO r3, e um Arduino Nano 328, utilizando o Windows XP, e o Arduino IDE 1.0.5, será ainda necessário outro programa o VSPE (Virtual Serial Port Emulation), estes são alguns dos requisitos que me dará muito gosto explicar, e outros passam por Handshake, Reset, e Watchdog (a serio cão de guarda), Sketch, Bootloader,  entre outros termos estrangeiros que definem algumas operações.

Para começar a resolver este problema resolvi colocar a questão de outra maneira. Como é que o upload se processa e, o que que me impede de fazer o upload de programas para o arduino via wireless.

O upload de software para o Arduino normalmente é feito via cabo FTDI que não é mais que um conversor USB serie, e é através dos pinos 0 e 1  (que são também a porta serie do arduino TX e RX) que a informação circula.

Posto isto e visto que podemos ter uma porta serie com a maioria dos dispositivos bluetooth presentes nos nossos notebook´s fica a questão. O que me impede de ligar um modulo bluetooth na porta serie do arduino emparelhar com o PC e solicitar ao Arduino IDE de enviar o firmware para essa porta?

Bem na verdade o que impede isto ser assim tão simples e linear, são fundamentalmente 3 aspectos.

  1. Primeiro no meu caso utilizo módulos Bluetooth HC-05, que a semelhança de outras possibilidades no mercado parece que não dispõem de linha DTR (digo parece porque ainda não tenho a certeza, se alguém souber mais sobre o DTR nos módulos HC-05 agradeço que me informe). Sem DTR não se consegue fazer o reset ao Arduino de modo o Bootloader iniciar e por conseguinte dar inicio a sequência de upload de firmware para o Arduino.
  2. Qual as características que a ligação serie necessita para comunicar com o arduino na sequência de upload?
  3. O Arduino IDE é capaz de enviar o upload para uma porta serie, até aqui tudo certo, mas há um senão que é, se estabelecer a ligação serie Bluetooth do PC ao arduino via Windows o IDE vai dizer que esta porta está a ser usada e impede o upload.

Se dominarmos estas questões temos o problema resolvido e o upload do firmware a funcionar em pleno.

Ponto 1 Reset do Arduino

Estão relacionadas entre si existem varias hipóteses de solução, sempre em mente que o necessário é fazer um reset ao Arduino de modo o bootloader arrancar.

Isto pode ser conseguido de varias formas.

Por Hardware

  • Carregando no Botão de reset do Arduino resolve as questões no ponto 1 e ponto 2. Para o upload iniciar devera carregar no botão de reset do arduino e um segundo depois de aparecer “Uploading” no IDE largar o botão de reset.

Por Software

  • Brevemente vou dedicar um  post a este assunto mas para já deixo 2 links com informação útil sobre este tema.

Resetting the arduino through software for fun and profit by aRiver’s pad

Arduino tips ticks and techniques Bootloader by Adafruit

Ponto 2 Características da ligação serie estabelecida durante o upload de firmware.

Aqui basicamente o que há a saber é que o upload é feito desde o IDE via porta serie que pode ser seleccionada pelo utilizador e um aspecto fundamentar é que essa comunicação e feita com um Baund Rate 57600bps Stop Bit 1 e Parity None.

Como tal teremos de configurar o modulo BT HC_05 com estas características, e até já fiz um post sobre isso que pode ser lido aqui.

Para modulo diferentes destes o procedimento é algo parecido mas recomendo consultarem o datasheet do respectivo modulo e obter referencias sobre o modo AT e respectivos comandos.

Ponto 3 Configurações do Arduino IDE

Aqui reside o problema do normal funcionamento do IDE, que reside em testar a utilização da porta serie em questão neste caso a porta serie associada ao Bluetooth.

Em Linux não sei ao certo o funcionamento tanto bluetooth como do IDE, mas no windows o que se passa é o seguinte.

Por um lado temos de fazer a ligação da porta serie ao bluetooth do pc ao modulo via windows e por outro quando seleccionamos essa mesma porta para upload o IDE reporta que a porta serie em questão já está a ser utilizada.

A solução

Passa pela utilização do programa que indiquei acima o VSPE (Virtual Serial Port Emulation) e que pode ser descarregado gratuitamente aqui.

O truque aqui agora é o seguinte criar uma porta serie virtual, encaminhar todo o tráfego entre a porta serie do BT e esta porta serie virtual.

Desta maneira o IDE não se queixa do windows estar a utilizar a porta serie do BT e o upload é feito sem problemas.

Exemplo

Criei um Spliter onde utilizei como porta serie virtual a COM16 e redireccionei para a COM13 porta real do BT do PC, fiz o emparelhamento e a ligação pelo windows e “voilá” está pronto a fazer upload de novos sketch para o Arduino via bluetooth.

vspe create spliter
vspe create spliter
vspe config ports

 

8 thoughts on “Arduino Bluetooth Firmware Upload”

Leave a Comment

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

Este site utiliza o Akismet para reduzir spam. Fica a saber como são processados os dados dos comentários.

Scroll to Top