É possível fazer o upload de um programa para o arduino via bluetooth?
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.
- 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.
- Qual as características que a ligação serie necessita para comunicar com o arduino na sequência de upload?
- 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.
Charly Da Silva liked this on Facebook.
Pedro Neves liked this on Facebook.
Daniel Lopes liked this on Facebook.
Nuno Moleiro liked this on Facebook.
Manuel Barros liked this on Facebook.
Mario Guido liked this on Facebook.
César Rafael liked this on Facebook.
Silvia Lopes liked this on Facebook.