O blog da AWS
AWS IoT com Mongoose OS rodando em ESP8266 e ESP32
Por Tim Mattison (Tradução de David Reis). Tim é um Arquiteto de Soluções de Parceiros da AWS que está focado em IoT.
Para acessar o texto original, clique aqui.
Bem-vindo ao primeiro post de uma série sobre a conectividade de microcontroladores com o AWS IoT. O objetivo desta série é mostrar como nossos parceiros de firmware e hardware estão trabalhando juntos para tornar possível iterar e desenvolver projetos de IoT rapidamente sem sacrificar a segurança.
Introdução
O AWS IoT define um nível elevado para segurança. Hoje, requer Transport Layer Security (TLS) versão 1.2 com autenticação mútua. No passado, as exigências computacionais significavam que certos dispositivos poderiam não ter memória ou CPU suficiente para se conectarem diretamente. Esses dispositivos normalmente se conectam ao AWS IoT através de um gateway ou proxy que manipula a segurança e a autenticação em seu nome. Um dispositivo muito popular no Brasil, o Espressif ESP8266, tinha essa limitação por um bom tempo, mas isto mudou recentemente.
O primeiro passo em nossa jornada de IoT é passar do modelo de “segurança por proxy” e realizar a autenticação mútua e criptografia no próprio microcontrolador. Neste post, vamos mostrar-lhe como usar o seu ESP8266 (ou ESP32) para conectá-lo diretamente ao AWS IoT usando o Mongoose OS. Mongoose OS é um sistema operacional de código aberto para microcontroladores que enfatiza a conectividade em nuvem. Ele foi desenvolvido pela Cesanta, uma empresa de software embarcado baseada em Dublin e um Parceiro de Tecnologia Avançado da APN.
Objetivos
Quando você concluir as etapas deste artigo, você terá:
- Certificados para o seu ESP8266 que serão registrados no AWS IoT e armazenados em seu computador local
- Uma imagem de firmware para o ESP8266 que pode se conectar diretamente ao AWS IoT e pode ser configurada com o seu endpoint do AWS IoT,
- Wi-Fi SSID e senha Wi-Fi sem fazer reflash
- Um ambiente de compilação que você pode usar para desenvolver um novo firmware
Pré-requisitos
Para este tutorial, você precisará:
- A AWS CLI configurada com credenciais válidas na conta AWS que você pretende usar
- Uma placa NodeMCU baseada em ESP8266 (você também pode usar um ESP32, consulte a seção “Suporte ao ESP32”)
- Um cabo USB para conectar a placa NodeMCU ao computador
- mos – a ferramenta de flash do Mongoose OS
- Uma cópia do repositório do Mongoose OS hospedado no GitHub, que você pode obter com o comando
git clone https://github.com/cesanta/mongoose-os
Algumas notas antes de começar
Você deve executar todos os comandos nestas instruções no mesmo shell de linha de comando.
Assumimos que a aplicação mos
está no path do seu computador. Se não estiver, você precisará referenciá-lo diretamente ou adicioná-lo ao seu path.
O aplicativo mos
irá criar uma política AWS IoT na sua conta chamada mos-default
. Esta é uma política aberta apenas para fins de desenvolvimento. Não use essa política em uma implantação de produção ou em uma conta que manipula dados de produção. Se você preferir criar sua própria política, consulte Políticas de Exemplo (Example Policies) na documentação do AWS IoT para saber mais.
Se o aplicativo mos
não detectar sua porta serial, leia a seção “Solução de problemas – Instalando Drivers Seriais” na última parte do tutorial.
Etapa 1 – Construa e abra o Mongoose OS
1. Navegue até o repositório git no seu shell.
2. Navegue até o diretório de exemplo do firmware c_mqtt:
$ cd fw/examples/c_mqtt
3. Criar o firmware:
4. Faça o flash do firmware:
5. Configure o Wi-Fi substituindo SEU_WIFI_SSID
e SUA_SENHA_WIFI
pelos valores apropriados para o seu ambiente:
6. Gere os certificados, envie-os para a placa NodeMCU e configure os parâmetros MQTT substituindo REGIAO (ex: us-east-1) pelo nome da região que você deseja usar com AWS IoT:
7. Abra um console serial para monitorar o dispositivo:
$ mos console
Etapa 2 – Interagir com o dispositivo
1. Efetue o login no console AWS IoT e, em seguida, escolha Test para acessar o cliente MQTT.
2. Na seção Publish, defina o tópico como /request .
3. Na área de texto abaixo do tópico, escreva:
4. Escolha o botão Publish to topic.
Neste ponto, o LED azul existente na placa NodeMCU será ligado.
O LED azul está conectado a GPIO2, porém a lógica está invertida, isto é, configurando-a para o estado 0 o LED azul será ligado.
5. Na área de texto abaixo do tipo de tópico:
6. Selecione Publish to topic novamente. O LED irá desligar.
Suporte ao ESP32
O Mongoose OS suporta várias arquiteturas. Tudo o que mostramos até agora irá funcionar em placas Espressif ESP32 também. A única coisa que você precisará alterar é o flag -arch e o nome do dispositivo serial. Para o ESP32, crie o firmware com este comando:
mos build --arch esp32
Solução de problemas – instalação dos drivers serial
Se sua porta serial não foi detectada automaticamente, talvez seja necessário instalar um driver de porta serial. Olhe para a placa NodeMCU e identifique seu chip serial. Os dois chips mais comuns são o CP2102 eo CH340. O CP2102 tem esta aparência:
Se você tiver o CP2102, você precisa baixar os drivers seriais da Silicon Labs.
Se você tiver o CH340, baixe o driver apropriado para seu sistema operacional. Drivers para Windows e driver para MacOS são fornecidos atualmente para este chip.