Índice:
- Suprimentos
- Etapa 1: OTA
- Etapa 2: Layout da memória Flash Ameba
- Etapa 3: Fluxo de inicialização
- Etapa 4: Exemplo
Vídeo: Programando Arduino Over the Air (OTA) - Ameba Arduino: 4 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:36
Existem muitos microcontroladores Wi-Fi no mercado, muitos fabricantes gostam de programar seu microcontrolador Wi-Fi usando o IDE Arduino. No entanto, um dos recursos mais legais que um microcontrolador Wi-Fi tem a oferecer tende a ser esquecido, que é programar e enviar seu código remotamente e sem fio usando a função OTA (Over-The-Air).
Neste Instructable, vou mostrar como configurar OTA em seu microcontrolador Wi-Fi usando o onipresente Arduino IDE no microcontrolador Ameba Arduino Wi-Fi!
Suprimentos
Ameba Arduino x 1
Etapa 1: OTA
OTA (Over-The-Air) refere-se ao mecanismo de atualização online via Internet.
O Arduino IDE oferece o recurso OTA, que segue o fluxo de trabalho na figura acima.
(i) Arduino IDE procura por mDNS dispositivos com serviço Arduino IDEOTA na rede local.
(ii) Como o serviço mDNS está sendo executado no Ameba, o Ameba responde à pesquisa mDNS e abre a porta TCP específica para conexão.
(iii) O usuário desenvolve o programa no Arduino IDE. Ao concluir, escolha a porta de rede.
(iv) Clique em upload. Em seguida, o IDE do Arduino envia a imagem OTA para o Ameba por meio do TCP, o Ameba salva a imagem em um endereço específico e define a opção de inicialização para inicializar a partir desta imagem na próxima vez.
O fluxo de trabalho consiste em três partes: processo de imagem mDNS, TCP e OTA. Os detalhes relacionados ao mDNS são descritos no tutorial do mDNS. A programação de soquete TCP é usada na transferência de imagens e já é fornecida na API OTA.
Na próxima seção, discutiremos como processar a imagem OTA e apresentaremos alguns conhecimentos básicos sobre o layout da memória flash Ameba e o fluxo de inicialização.
Etapa 2: Layout da memória Flash Ameba
O tamanho da memória flash do Ameba RTL8195A é 2 MB, varia de 0x00000000 a 0x00200000. No entanto, o tamanho da memória flash do Ameba RTL8710 é de 1 MB. Para ajustar o uso de placas diferentes, presumimos que o layout da memória flash é de 1 MB.
Conforme mostrado na figura acima, o programa Ameba ocupa três partes da memória flash:
- Imagem de inicialização:
Ou seja, o bootloader. Quando o Ameba é inicializado, ele coloca a imagem de inicialização na memória e executa a inicialização. Além disso, determina onde proceder após o bootloader. Bootloader examina o endereço OTA e o pino de recuperação na área de dados do sistema e determina qual imagem será executada posteriormente. No final do bootloader, ele coloca a imagem na memória e inicia a execução.
- Imagem padrão 2:
O código do desenvolvedor é colocado nesta parte, o endereço começa em 0x0000B000. Os primeiros 16 bytes são o cabeçalho da imagem, 0x0000B008 ~ 0x0000B00F compreende a assinatura, que é usada para verificar se a imagem é válida. O campo de assinatura tem dois valores válidos para distinguir a nova imagem da antiga.
- Imagem OTA:
Os dados nesta parte também são código do desenvolvedor. Por padrão, esta parte da memória começa em 0x00080000 (pode ser alterada). As principais diferenças entre a imagem OTA e a imagem padrão 2 são o endereço da memória flash e o valor da assinatura.
Além do código, existem alguns blocos de dados:
- Dados do sistema:
O bloco de dados do sistema começa em 0x00009000. Existem dois dados relacionados à OTA:
1. Endereço OTA: dados de 4 bytes a partir de 0x00009000. Ele informa o endereço da imagem OTA. Se o valor do endereço OTA for inválido (ou seja, 0xFFFFFFFF), a imagem OTA na memória flash não pode ser carregada corretamente.
2. Pino de recuperação: dados de 4 bytes começando em 0x00009008, o pino de recuperação é usado para determinar qual imagem (imagem padrão 2 ou imagem OTA) executar quando ambas as imagens são válidas. Se o valor do pino de recuperação for inválido (ou seja, 0xFFFFFFFF), a nova imagem será executada por padrão.
Os dados do sistema serão removidos quando carregarmos o programa no Ameba via DAP. Ou seja, o endereço OTA será removido e o Ameba determinará que não há imagem OTA.
- Dados de calibração: Os dados de calibração periférica são colocados neste bloco. Normalmente, esses dados não devem ser excluídos.
Etapa 3: Fluxo de inicialização
Da imagem acima, Discutimos os seguintes cenários: (i) OTA não é usado, use DAP para fazer upload do programa:
Nessa situação, o bootloader verifica a assinatura da imagem padrão 2 e o endereço OTA. Uma vez que o endereço OTA foi removido, a imagem padrão 2 será selecionada para execução.
(ii) a imagem OTA é transferida para o Ameba, o endereço OTA está configurado corretamente, o pino de recuperação não está configurado:
O Ameba recebeu imagem atualizada via OTA, a assinatura da imagem padrão 2 seria definida como assinatura antiga.
Bootloader verifica a assinatura da imagem padrão 2 e o endereço OTA. Ele descobrirá que o endereço OTA contém uma imagem OTA válida. Como o pino de recuperação não está definido, ele escolhe a nova imagem (ou seja, imagem OTA) a ser executada.
(iii) a imagem OTA é transferida para o Ameba, o endereço OTA está configurado corretamente, o pino de recuperação está configurado:
O Ameba recebeu imagem atualizada via OTA, a assinatura da imagem padrão 2 seria definida como assinatura antiga.
Bootloader verifica a assinatura da imagem padrão 2 e o endereço OTA. Ele descobrirá que o endereço OTA contém uma imagem OTA válida. Em seguida, verifique o valor do pino de recuperação. Se o pino de recuperação estiver conectado a LOW, a nova imagem (ou seja, imagem OTA) será executada. Se o pino de recuperação estiver conectado a HIGH, a imagem antiga (ou seja, a imagem padrão 2) será executada.
Etapa 4: Exemplo
Para usar o recurso OTA, atualize o firmware DAP para a versão> 0.7 (v0.7 não está incluído). O firmware DAP padrão de fábrica é a versão 0.7. Siga as instruções para atualizar o firmware DAP:
Abra o exemplo: "Arquivo" -> "Exemplos" -> "AmebaOTA" -> "ota_basic"
Preencha as informações de ssid e senha no código de amostra para conexão de rede.
Existem alguns parâmetros relacionados ao OTA:
§ MY_VERSION_NUMBER : Na primeira versão, precisamos definir o endereço OTA e o PIN de recuperação. Uma vez que desta vez carregamos via USB é a primeira versão, não precisamos alterar este valor.
§ OTA_PORT : Arduino IDE encontrará o Ameba via mDNS. O Ameba dirá ao Arduino IDE que abre a porta TCP 5000 para aguardar a imagem OTA.
§ RECOVERY_PIN : Configure o pino usado para recuperação. Usamos o pino 18 aqui.
Em seguida, usamos o programa de upload USB para Ameba. Clique em Ferramentas -> Portas, verifique a porta serial a ser usada:
Observe que o Arduino IDE usa uma porta para upload de programa e outputlog. Para evitar a situação em que o registro não pode ser gerado quando usamos OTA, usamos outro terminal de porta serial (por exemplo, termo Tera ou massa) em vez de monitor serial para observar a mensagem de registro.
Em seguida, clique em upload e pressione o botão reset.
Na mensagem de registro:
1. Entre “===== Enter Image 1 ====” e “Enter Image 2 ====”, você pode encontrar “Flash Image 2: Addr 0xb000”. Isso significa que o Ameba determina inicializar a partir da imagem padrão 2 em 0xb000.
2. Depois de “Enter Image 2 ====”, você pode encontrar “This is version 1”. Esta é a mensagem de log que adicionamos no esboço.
3. Após o Ameba ser conectado ao AP e obter o endereço IP “192.168.1.238”, ele ativa o mDNS e aguarda o cliente.
Em seguida, modificamos "MY_VERSION_NUMBER" para 2.
Clique em "Ferramentas" -> "Porta", você pode ver uma lista de "Portas de rede". Encontre "MyAmeba em 192.168.1.238 (Ameba RTL8195A)", MyAmeba é o nome do dispositivo mDNS que definimos no código de amostra e "192.168.1.238" é o IP da Ameba.
Se você não conseguir encontrar a porta de rede da Ameba, confirme:
- se o seu computador e o Ameba estão na mesma rede local?
- tente reiniciar o Arduino IDE.
- verifique a mensagem de log no Serial Monitor para ver se o Ameba está conectado ao AP com sucesso.
Em seguida, clique em upload. Desta vez, o programa será carregado via TCP. No terminal de log, você pode ver as informações de conexão do cliente.
Quando a imagem OTA é baixada com sucesso, o Ameba irá reiniciar e o log seguinte será mostrado no terminal de log.
- Entre “===== Enter Image 1 ====” e “Enter Image 2 ====”, você pode ver uma mensagem de log “Flash Image 2: Addr 0x80000”. Isso significa que o Ameba determina inicializar a partir da imagem OTA em 0x80000.
- Depois de “Enter Image 2 ====”, o log “This is version 2” é a mensagem que adicionamos no sketch.
Para recuperar a imagem anterior após o download da imagem OTA para o Ameba, conecte o pino de recuperação que definimos no esboço (ou seja, pino 18) para ALTO (3,3 V) e pressione reset.
Em seguida, a imagem padrão 2 será escolhida durante a inicialização. Observe que a imagem OTA baixada não é excluída, uma vez que o pino de recuperação seja desconectado de HIGH, a imagem OTA será executada.
Resumimos o fluxo de desenvolvimento usando OTA na figura a seguir.
Recomendado:
Programando ATmega328 com Arduino IDE usando cristal de 8 MHz: 4 etapas
Programando ATmega328 com Arduino IDE usando Cristal de 8 MHz: Neste Instuctable, estarei cobrindo um guia passo a passo de programação de um ATmega328P IC (o mesmo microcontrolador presente no Arudino UNO) usando Arduino IDE e um Arduino UNO como programador para se tornar um Arduino personalizado, para fazer seus projetos
PROGRAMANDO AT89S52 USANDO ARDUINO: 4 etapas
PROGRAMANDO AT89S52 USANDO ARDUINO: Programação In-System (ISP), também conhecida como In-Circuit Serial Programming (ICSP), é a capacidade de alguns dispositivos lógicos programáveis, microcontroladores e outros dispositivos incorporados de serem programados enquanto instalados em um sistema completo, em vez de exigir o chi
Programando Arduino com Sphero RVR: 4 etapas
Programando Arduino com Sphero RVR: No ano passado, em outubro, o Sphero RVR foi lançado. Este era um robô como nenhum outro robô. Em primeiro lugar, você pode programá-lo com Micro: bit, Raspberry PI e Arduino. Você também pode fazer com que ele execute várias funções diferentes. Os LEDs também podem mudar de cor
Programando um Arduino usando outro Arduino para exibir um texto de rolagem sem uma biblioteca: 5 etapas
Programando um Arduino usando outro Arduino para exibir um texto em rolagem sem uma biblioteca: Sony Spresense ou Arduino Uno não são tão caros e não requerem muita energia. No entanto, se o seu projeto tem limitação de energia, espaço ou até mesmo orçamento, você pode querer considerar o uso do Arduino Pro Mini. Ao contrário do Arduino Pro Micro, Arduino Pro Mi
Programando o ATTiny85, ATTiny84 e ATMega328P: Arduino como ISP: 9 etapas (com imagens)
Programando o ATTiny85, ATTiny84 e ATMega328P: Arduino como ISP: Prefácio Recentemente, tenho desenvolvido alguns projetos de IoT baseados em ESP8266 e descobri que o processador central estava lutando para realizar todas as tarefas que eu precisava para gerenciar, então decidi distribuir alguns dos as atividades menos importantes para um micr