Por diversas vezes é necessário atualizar o firmware do Esp8266 para implementar uma nova funcionalidade, mas as vezes ele está instalado em uma área de difícil acesso, como por exemplo, uma estação meteorológica que normalmente é instalada encima dos telhados ou em máquinas que para atualizar é necessário desmontar todos o equipamento gerando muito trabalho e perda de tempo.
Assim, uma solução para esse problema é efetuar o upload a firmware do Modulo Esp8266 utilizando a conexão Wi-Fi (OTA – Over the Air) já existente.
É importante salientar que a implementação dessa habilidade só se dá depois de uma configuração inicial através da porta serial/USB. Assim, o primeiro upload necessariamente deve ser realizado via conexão Serial/USB, permitindo que todas as demais subsequentes possam ser feitas via OTA.
Essa atualização via OTA é muito boa, já que ela acelera o processo de aperfeiçoamento do equipamento não sendo necessários grandes esforços para realizar o upload do novo Firmware do Modulo Esp8622, mas antes de liberar essa habilidade o desenvolvedor precisa criar boas práticas de programação para que não ocorra nenhuma invasão do sistema que possa possibilitar a implementação de software de fontes não legitimas.
Assim, nesse artigo vamos ver como é feito a atualização via OTA bem como também maneiras para evitar ataques e acesso de terceiros não autorizados.
Entre no site oficial do Python e baixe e instale a versão mais recente de acordo com o seu sistema e aceite todos os paramentos oferecido pelo sistema.
Página oficial Python
Baixe e instale a IDE do Arduino de acordo com sua versão do seu sistema Operacional no site oficial da Arduíno.
Página Oficial do Arduino
Depois de instalado a IDE Arduino é a hora de configura para que a IDE possa gravar o Módulo Esp8266.
Entre em Arquivos>Preferências e coloque o seguinte link no campo URL Adicionais para Gerenciadores de placas.
“ https://arduino.esp8266.com/stable/package_esp8266com_index.json”
Com a IDE Aberta abra o Gerenciador de Placas através Ferramentas>Placas>Gerência de Placas.
Agora com o gerenciador de placas aberto no menu digite: “esp8266”.
Instale a placa conforme imagem abaixo.
Nessa parte é onde a mágica acontece, nela vamos configura o módulo Esp8266 para que esteja pronto para atualizar via OTA.
Para que módulo Esp8266 possa ser atualizado via Wi-Fi é necessário que o primeiro uploard seja realizado via Serial.
Vamos carregar o esboço BasicOTA.ino em: Arquivo>Exemplos>ArduinoOTA>BasicOTA
Atualize o nome e a senha da sua rede.
Configure os parâmetros de upload conforme figura abaixo observando a porta que seu Modulo está instalado.
Carregue o esboço (Ctrl + U).
Agora com o Modulo Esp8266 já podemos realizar atualizar via Wi-Fi – OTA.
Basicamente a atualização via OTA é bem parecida com atualização serial mudando somente a porta de comunicação conforme figura abaixo.
Terminado essa configuração já é possível atualizar via OTA.
Se você concluiu com sucesso todas as etapas acima, você pode carregar (Ctrl + U).
Observação: para que sempre seja possível atualizar via OTA é necessário que as rotinas do OTA da BasicOTA estejam incorporados nos códigos.
A possibilidade de atualizar o módulo esp8266 via OTA deixa portas abertas para que pessoas não autorizadas façam upload de firmware não legítimos.
Assim, uma solução básica para que isso não aconteça é a implementação de uma barreira na hora de programar o firmware é colocando senha impedindo que terceiros sem permissão faça atualização do firmware.
Retire o Comentário da seguinte linha e atribua uma nova senha:
‘ArduinoOTA.setPassword(“senha”);”
O primeiro upload depois da configuração a IDE ainda não vai pedir a senha, somente nas seguintes atualizações que isso vai acontecer.
Observe que a senha digitada foi validada.
Nota: todas as vezes que for feito um novo upload verifique se a senha que está no esboço é a mesma pretendida.
Caso não seja e mesmo assim for enviada o Firmware a senha será subscrita impossibilitando que novos upload seja realizado via OTA até que nova atualização seja feita via Serial/USB com a senha correta.
Sabemos que deixar o módulo ser atualizado sem fio pode criar riscos admitindo que terceiros não autorizados acesse o sistema.
Com a possibilidade de ser hackeado é grande, já que uma porta muito sensível fica aberta é imperioso proteger o seu sistema com senha e se possível também implementar criptografia para dificultar ao máximo invasões.
Nativamente a biblioteca ArduinoOTA já dispõem algumas funcionalidades de segurança.
void setPort(uint16_t port); void setHostname(const char* hostname); void setPassword(const char* password);
A funcionalidade da criptografia já está disponível no ArduinoOta não requer adaptações ou programação adicional e a sua implementação requer que o comentário das linhas sejam tiradas.
//Password can be set with it's md5 value as well //MD5(admin) = 21232f297a57a5a743894a0e4a801fc3 ArduinoOTA.setPasswordHash("21232f297a57a5a743894a0e4a801fc3");
Criptografia utilizada
O MD5 (Message-Digest algorithm 5)
A criptografia é uma forma de embaralhar a comunicação. assim somente o transmissor e o receptor têm como interpretar a informação e tornar compreensível. Qualquer outra pessoa que não tenha a chave vai receber a mensagem de forma incompreensível tornando inútil essa mensagem.
A criptografia utilizada pelo BasicOTA é o MD5 (Message-Digest algorithm 5)
O MD5 é uma função hash é muito utilizado é tem o seu valor em 128 bits expresso em 32 caracteres. É um algorítimo unidirecional e o método de verificação é realizado por comparação nas duas hash, uma com a base de dados e a outra a do login.
Uma das vantagens do MD5 e por ser unidirecional é a possibilidade de conferir a integridade dos arquivos recebidos, já que os hash serão comparados e qualquer divergência entre eles será invalidado o arquivo recebido conferindo sua integridade.
Por mais básica que seja o seu sistema sempre é bom implementar meios de segurança. Principalmente sabendo que para isso não gera grande trabalho e nem perda de tempo já que o código BasicOTA já tem funcionalidade pré configurada necessitando apenas colocar os parâmetros.
Uma outra proteção para que não corra o upload não autorizado é possibilidade de implementar no código que no momento da atualização OTA ocorra somente se pressionado um botão conectado fisicamente no Esp8266, assim somente quem tem acesso fisicamente ao esp poderá efetuar a atualização.
Agora, já sabemos atualizar nossos Módulos Esp8266 via OTA já podemos implementar melhorias com mais facilidades, mas é importante salientar que durante essa atualização o sistema é interrompido e com isso pode gerar problemas no equipamento controlado. Assim, certifique que a parada do equipamento não provoque problemas.
Tenha a Metodologia Eletrogate na sua Escola! Conheça nosso Programa de Robótica Educacional.
|
A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.
Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!