Posso reprogramar meu Arduino através de um escudo de wifi?

9

Meu Arduino está conectado a algumas luzes do meu aquário e posso controlá-las a partir de um navegador da Web na minha LAN. Gostaria de saber se posso modificar o programa no Arduino sem ter que conectá-lo a uma máquina via USB, o que seria um pouco inconveniente. Deve haver alguma maneira de tirar proveito da conexão wifi.

Usei o escudo wixel da Pololu para enviar programas sem fio (ele funciona como um rádio de porta serial), mas essa é uma tecnologia diferente da do meu escudo WiFi.

Alguém sabe como eu posso fazer isso via WiFi? Talvez se eu carregar um novo código na memória flash no escudo do Wi-Fi, ele poderá carregar a partir da memória flash? Não tenho certeza de como fazer isso ou se é possível.

Talvez uma abordagem completamente diferente seria mais simples?

Polvo
fonte

Respostas:

8

É possível, em teoria, mas não trivial na prática. O código responsável por carregar seu novo esboço no Arduino é chamado de gerenciador de inicialização . Todas as versões populares de gerenciadores de inicialização que eu conheço são baseadas em serial / USB. Para carregar um esboço sobre o escudo do WiFi, o carregador de inicialização precisaria ser reescrito para se comunicar com o escudo do WiFi em vez de serial. Isso levaria algum trabalho, mas não impossível na prática.

Observe que você precisará fazer isso independentemente de estar armazenando o esboço no escudo WiFi (o que acho difícil: não tenho certeza se isso é possível) ou carregando o esboço diretamente no seu Arduino: o O carregador de inicialização precisará se comunicar com o escudo para ler os dados do esboço.


Existe uma maneira de reprogramar seu Arduino sem fio facilmente, e isso é Bluetooth. Você precisará obter um módulo Bluetooth (não sei se um escudo Bluetooth funcionará) e conectá-lo às portas seriais de hardware . O gerenciador de inicialização que está no seu Arduino já pode falar em série, para que o problema seja resolvido. Você terá que (potencialmente) resolver dois outros problemas:

  • Os módulos bluetooth de menor custo encontrados no Ebay são 3.3V. Isso significa que você precisará fornecê-los com energia de 3,3V, e a linha de envio do seu Arduino precisará ser alterada de 5V para 3,3V. Você pode resolver o primeiro subproblema (de alimentação) adquirindo um módulo Bluetooth feito para comunicação de 5V ou se o seu Arduino tiver energia 3V3 usando-o para alimentar o módulo Bluetooth. Um módulo pronto para 5V também resolve o segundo problema; Como alternativa, você pode mudar a tensão de saída de 5V do seu Arduino usando qualquer uma das técnicas descritas nesta pergunta .
  • Para programar seu Arduino automaticamente, o Arduino precisa ser redefinido imediatamente antes do upload do esboço: quando o Arduino é executado normalmente, o gerenciador de inicialização não está ativo. A redefinição do Arduino ativa o gerenciador de inicialização, permitindo o upload de novos esboços. no Arduino USB habilmente usa a linha DTR para redefinir o dispositivo. A maioria dos módulos seriais Bluetooth, no entanto, fornece apenas saída TS / RX, portanto, você provavelmente precisará redefinir o Arduino manualmente para fazer upload de um esboço, a menos que você encontre algum sinal de saída no módulo Bluetooth que possa ser enviado para conectar a um circuito de redefinição. .
angelatlarge
fonte
2

Hoje, tomei conhecimento de um produto que pode conseguir isso: o ESP8266. Isso permitirá que você programe / reprograme seu arduino através de uma conexão wifi. Várias empresas produzem versões do chip em vários arranjos de breakout board. Especificamente, pode se tornar um AVRISP WiFi para um Arduino.

Você também pode programar o próprio ESP8266 com o SDK do Arduino e ele possui bastante poder.

Veja aqui no whatimadetoday hoje (não no meu post) uma boa introdução de como avançar com o ESP8266 e o ​​Arduino SDK. Depois que o SDK estiver configurado para programar o ESP8266, você poderá navegar nos Exemplos do IDE e encontrar "Arduino_Wifi_AVRISP".

Você pode encontrar no fórum preços que variam de US $ 5 a US $ 15.

Polvo
fonte