ESP8266 - AWS IoT
Este tutorial ensina você a usar o ESP8266 com o AWS IoT Core. Especificamente, vamos abordar os seguintes tópicos em detalhes:
- Estabelecer a conexão entre o ESP8266 e o AWS IoT Core.
- Programar o ESP8266 para transmitir dados ao AWS IoT Core.
- Programar o ESP8266 para receber dados do AWS IoT Core.
Seguindo estes passos, você terá uma compreensão completa de como integrar o ESP8266 ao AWS IoT Core para uma comunicação sem falhas.

Hardware Necessário
Or you can buy the following kits:
| 1 | × | DIYables Sensor Kit (18 sensors/displays) |
Sobre o ESP8266 e o AWS IoT
O ESP8266 estabelece uma conexão com o AWS IoT Core por meio do protocolo MQTT. Embora existam bibliotecas que simplificam essa conexão, ela é mais complexa do que conectar a um broker MQTT local, como o Mosquitto no seu PC. Essa complexidade surge das rigorosas medidas de segurança do AWS IoT Core, que exigem etapas de configuração para obter as credenciais de autenticação e a autorização a serem integradas ao código do ESP8266. Em essência, o processo envolve dois passos principais:
- Configurar o AWS IoT Core: Este passo configura o AWS IoT Core para gerar as credenciais de autenticação necessárias, que depois serão incorporadas ao código do ESP8266.
- Escrever o Código do ESP8266: Depois de obter as credenciais de autenticação do AWS IoT Core, o passo seguinte é escrever o código do ESP8266. Esse código integra os protocolos essenciais de autenticação e comunicação necessários para uma interação sem falhas com o AWS IoT Core.
Vamos analisar cada passo de perto para entendê-lo melhor.
Configurando o AWS IoT Core para uso com o ESP8266
Os objetivos deste passo incluem:
- Criar uma representação do dispositivo ESP8266 no AWS IoT Core, chamada de "Thing."
- Configurar a autorização necessária para permitir que o dispositivo ESP8266 se conecte, publique e assine tópicos do/no AWS IoT Core, conhecida como "Policy."
- Gerar as credenciais da AWS necessárias para a autenticação, conhecidas como "Certificates." Essas credenciais serão baixadas e integradas ao código Arduino do ESP8266.
Abaixo estão as instruções para configurar o AWS IoT Core para uso com o ESP8266 por meio do AWS IoT Console. Observe que, embora a Interface do Usuário possa mudar com o tempo, o processo deve continuar semelhante às instruções fornecidas abaixo:
- Faça login no AWS IoT Console
- Crie uma Thing indo em Manage All devices Things

- Clique no botão Create things.
- Selecione Create single things e clique no botão Next.

- Especifique o Thing name, por exemplo, ESP8266-thing e clique no botão Next na parte inferior da página.

- Gere as credenciais selecionando a opção Auto-generate a new certificate e clique no botão Next.

- Agora, um Certificate é criado e vinculado à Thing.
- Crie uma policy clicando no botão Create policy.

- Uma nova aba será aberta

- Especifique o Policy name, por exemplo, ESP8266-policy e clique no botão JSON.
- Copie o conteúdo da policy JSON abaixo e cole-o na área Policy document:
- Clique no botão Create na parte inferior da página para criar a policy.
- Agora, uma Policy é criada e anexada ao Certificate. Feche essa página e volte para a página da Thing.
- Marque a ESP8266-policy e clique no botão Create thing para criar a Thing.

- Uma janela popup aparece, permitindo que você baixe os arquivos de credenciais. Baixe todos os arquivos e guarde-os em um local seguro no seu PC, mantendo-os em sigilo.

- Em seguida, clique no botão Done.
Entre os arquivos baixados, há três arquivos que serão usados no código do ESP8266 nos próximos passos:
- AmazonRootCA1.pem
- xxxxxxxxxx-certificate.pem.crt
- xxxxxxxxxx-private.pem.key
Esses arquivos podem ser abertos por qualquer editor de texto, como o Bloco de Notas ou o Notepad++
Escrevendo o código do ESP8266 para se conectar ao AWS IoT Core
Passos Rápidos
Para começar com o ESP8266 no Arduino IDE, siga estes passos:
- Confira o tutorial como configurar o ambiente para o ESP8266 no Arduino IDE se for a primeira vez que você usa o ESP8266.
- Conecte a placa ESP8266 ao seu computador usando um cabo USB.
- Abra o Arduino IDE no seu computador.
- Escolha a placa ESP8266 correta, como (por exemplo, NodeMCU 1.0 (ESP-12E Module)), e a respectiva porta COM.
- Abra o Library Manager clicando no ícone Library Manager na barra de navegação à esquerda do Arduino IDE
- Digite MQTT na caixa de pesquisa e procure a biblioteca MQTT de Joel Gaehwiler.
- Clique no botão Install para instalar a biblioteca MQTT.

- Digite ArduinoJson na caixa de pesquisa e procure a biblioteca ArduinoJson de Benoit Blanchon.
- Clique no botão Install para instalar a biblioteca ArduinoJson.

- Copie o código acima e cole-o no Arduino IDE.
- Crie o arquivo secrets.h no Arduino IDE:
- Clique no botão logo abaixo do ícone do Serial Monitor e escolha New Tab, ou use as teclas Ctrl+Shift+N.
- Dê ao arquivo o nome secrets.h e clique no botão OK
- Copie o código abaixo e cole-o no arquivo secrets.h criado.
- Atualize as seguintes informações no secrets.h
- O WIFI_SSID e o WIFI_PASSWORD da sua rede WiFi
- O AWS_CERT_CA, o AWS_CERT_CRT e o AWS_CERT_PRIVATE. Essas informações estão nos arquivos que você baixou no passo anterior.
- O AWS_IOT_ENDPOINT. Essa informação pode ser encontrada no AWS IoT Console, indo em Setting, como na imagem abaixo:
- Compile e faça o upload do código para a placa ESP8266 clicando no botão Upload no Arduino IDE



Enviando dados do ESP8266 para o AWS IoT
O código do ESP8266 acima lê periodicamente dados de um pino analógico e os envia ao AWS IoT a cada 4 segundos. Se você abrir o Serial Monitor no Arduino IDE, verá o log como abaixo:
Para verificar se os dados foram recebidos pelo AWS IoT, siga estes passos:
- No AWS IoT Console, navegue até Test MQTT Test Client

- Clique no botão Subcribe to a topic.
- Digite esp8266/esp8266-to-aws no Topic filter. Você pode mudar o tópico, mas ele DEVE ser igual ao tópico no código do ESP8266.
- Clique no botão Subcribe.
- Você poderá ver os dados enviados pelo ESP8266 no AWS IoT Console.
Enviando dados do AWS IoT para o ESP8266
Você pode enviar dados do AWS IoT Console para o ESP8266 seguindo estes passos:
- No Arduino IDE, abra o Serial Monitor
- No AWS IoT Console, navegue até Test MQTT Test Client

- Clique no botão Publish to a topic.
- Digite esp8266/aws-to-esp8266 no Topic name. Você pode mudar o tópico, mas ele DEVE ser igual ao tópico no código do ESP8266.
- Opcionalmente, você pode alterar o payload da mensagem ou simplesmente mantê-lo como padrão.
- Clique no botão Publish.
- Veja o Serial Monitor no Arduino IDE e você verá a mensagem enviada pelo AWS IoT Console.
Faça mais com a AWS
Agora, você pode estabelecer uma comunicação bidirecional entre o ESP8266 e o AWS IoT Core. Isso significa que você pode enviar dados do ESP8266 para o AWS IoT Core e receber dados do AWS IoT Core no ESP8266. Além disso, você pode configurar IoTRules, permitindo que o ESP8266 se conecte perfeitamente a outros serviços da AWS, como Lambda, DynamoDB, Amplify e RDS. Com as IoTRules, você pode automatizar ações com base nos dados recebidos do ESP8266, possibilitando uma ampla variedade de aplicações e integrações IoT.