Integração Arduino IoT Cloud com Amazon Alexa: Guia Passo a Passo
Componentes e Materiais
| Arduino MKR WiFi 1010 | × | 1 |
| Arduino MKR ENV Shield | × | 1 |
| Protoboard (genérica) | × | 1 |
| LED Alta Luminosidade, Branco | × | 1 |
| Jumpers (genéricos) | × | 1 |
| LED RGB cátodo comum | × | 1 |
| Resistor 220 ohm | × | 1 |
Aplicativos e Serviços Online
- Arduino Web Editor
- Arduino IoT Cloud
- Arduino Amazon Alexa Official Arduino Skill
Sobre o Projeto
Introdução: Primeiros Passos
Neste tutorial vamos usar o Arduino IoT Cloud. Se você é novo no Arduino IoT Cloud, aconselhamos primeiro dar uma olhada neste projeto introdutório, que dará uma visão geral e guiará você pelo processo de configuração da placa suportada, Things e Properties do IoT Cloud e colocará você a bordo.
Parte 1: Arduino IoT Cloud
Na página principal do IoT Cloud, criaremos um novo Thing e atribuiremos um nome significativo. Em seguida, selecionaremos a placa que vamos usar. Se você não vir sua placa, pode ter pulado a adição de um novo Dispositivo seguindo o procedimento que inicia após clicar no botão ADD DEVICE, na seção Devices.
Uma vez feito, adicionaremos três propriedades ao nosso Thing. As duas primeiras representarão as lâmpadas, a última a temperatura.
O tipo ColoredLight nos permite controlar uma Luz RGB, permitindo controlar seu brilho e cor. Defina como ReadAndWrite porque precisaremos controlar seu comportamento usando Alexa.
O tipo DimmedLight é de certa forma semelhante ao acima, mas permite apenas controlar o brilho de uma Luz.
A última propriedade a adicionar é a temperatura. Vamos adicioná-la como ReadOnly, já que só queremos saber seu valor, não defini-lo. Como tipo, podemos usar Sensor de Temperatura (Celsius), mas fique à vontade para definir como Fahrenheit se preferir.
Veja como a visualização do Dashboard do seu Thing deve ficar neste momento:

Ao adicionar propriedades, certifique-se de usar apenas tipos listados na seção Smart Home, caso contrário não funcionarão com Alexa.

Agora vá ao Web Editor clicando no botão Edit Sketch na visualização de edição do seu Thing.
Parte 2: Arduino Web Editor
No Web Editor, precisamos adicionar algum código ao Sketch gerado automaticamente para nós.
Como queremos ler alguns dados ambientais (nomeadamente temperatura, mas fique à vontade para adicionar luz, umidade e pressão se quiser), importaremos a biblioteca Arduino_MKRENV no topo do nosso Sketch:
#include <Arduino_MKRENV.h>
Então definimos algumas constantes para os pinos da placa que serão usados para luzes R, G, B e branca, assim o código fica mais legível:
#define PIN_MEETING_ROOM 5
#define PIN_LOUNGE_AREA_R 2
#define PIN_LOUNGE_AREA_B 3
#define PIN_LOUNGE_AREA_G 4
Agora na função setup podemos inicializar o Arduino MKR ENV Shield com:
if (!ENV.begin()) {
Serial.println("Failed to initialize MKR ENV shield!");
while (1);
}
Desta forma, se o shield não estiver instalado, a execução do Sketch será bloqueada.
Não precisamos especificar que pinMode precisa ser OUTPUT porque usaremos analogWrite() para definir a intensidade do nosso LED branco ou das cores individuais do RGB.
Na função loop vamos ler a temperatura a cada segundo:
temperature = ENV.readTemperature();
delay(1000);
Finalmente é hora de implementar nossas funções de callback: aquelas que serão executadas sempre que uma mudança no valor de uma Property for puxada do IoT Cloud.
Temos que implementar onMeetingRoomChange e onLoungeAreaChange:
void onMeetingRoomChange() {
uint8_t brightness = map(meetingRoom.getBrightness(), 0, 100, 0, 255);
if (meetingRoom.getSwitch()) {
Serial.println(brightness);
analogWrite(PIN_MEETING_ROOM, brightness);
} else {
analogWrite(PIN_MEETING_ROOM, LOW);
}
}
Com o código acima, primeiro lemos o valor de brilho da nuvem e o mapeamos para um valor utilizável, então verificamos se o interruptor da luz está ligado. Se estiver, podemos acender a luz usando o brightness lido antes. Caso contrário, desligamos a luz.
O princípio de funcionamento é o mesmo para o outro callback:
void onLoungeAreaChange() {
uint8_t r, g, b;
loungeArea.getValue().getRGB(r, g, b);
if (loungeArea.getSwitch()) {
Serial.println("R:" + String(r) + " G:" + String(g) + " B:" + String(b));
analogWrite(PIN_LOUNGE_AREA_R, r);
analogWrite(PIN_LOUNGE_AREA_B, b);
analogWrite(PIN_LOUNGE_AREA_G, g);
} else {
Serial.println("Lamp Off");
analogWrite(PIN_LOUNGE_AREA_R, 0);
analogWrite(PIN_LOUNGE_AREA_B, 0);
analogWrite(PIN_LOUNGE_AREA_G, 0);
}
}
A única diferença notável é o fato de que, em vez de apenas brilho, temos três componentes diferentes: eles são a representação da cor RGB da luz. Claro, podemos definir cores personalizadas por nome no app Alexa, então não teremos que dizer manualmente quais quantidades de Vermelho, Verde ou Azul queremos definir.
Parte 3: Configuração da Skill Amazon Alexa
Agora precisaremos do app Amazon Alexa, que pode ser baixado da Apple App Store ou Google Play Store. Uma vez instalado, faça login com sua conta existente ou crie uma nova.
Vamos passar pelos passos necessários para instalar a Skill Arduino Alexa. Seguiremos a sequência de imagens abaixo para ver todos os passos necessários.









Parte 4: Configuração de Dispositivos Amazon Alexa
Após esperar um pouco, você deve ver que alguns dispositivos foram encontrados.

Ao tocar em Choose Device (Escolher Dispositivo), você será apresentado à página de configuração listando todos os dispositivos disponíveis (Eles serão nomeados de acordo com como nomeamos nossas propriedades no Arduino IoT Cloud).

Escolha um dispositivo e toque em Set Up Device (Configurar Dispositivo). Se quiser, também pode adicioná-lo a um grupo (Assim você pode controlar e organizar seus dispositivos mais facilmente), caso contrário pule esta parte.

Repita o processo de Configuração para cada dispositivo que deseja controlar.
Finalmente a visualização do dispositivo deve ficar assim:

Agora podemos finalmente começar a pedir coisas como "Alexa, qual a temperatura no escritório?" ou "Alexa, acenda a luz na sala de reuniões."

Divirta-se brincando com Alexa e IoT Cloud. Se tiver dúvidas ou construir este projeto, avise nos comentários abaixo.
A Equipe Arduino
Código
Arduino
O código completo é gerado automaticamente pelo Arduino IoT Cloud com as callbacks implementadas conforme mostrado acima.
Esquemáticos

Processo de manufatura
- Fog vs. Cloud: Otimizando Implantações IoT para Velocidade e Escala
- Infineon Nomeada Advanced Technology Partner pela Amazon Web Services
- Controle seu Chromecast com Amazon Alexa usando Raspberry Pi e Python
- Controle seu Ventilador de Teto com Alexa: Guia Passo a Passo
- Monitor de Frequência Cardíaca IoT em Tempo Real com Arduino e MAX30100
- Controle IoT Remoto de Braço Robótico Personalizado
- Controlar LEDs com Alexa via Raspberry Pi – Guia Passo a Passo Fácil
- Construa uma Torre de Sensores com Arduino Cloud: Monitoramento de Temperatura, Movimento e Gás
- Sistema de Controle de Piscina com Azure IoT: Sensores Inteligentes e Monitoramento Remoto
- Aproveitando o Poder da Nuvem para IoT: Desbloqueando Conectividade Perfeita e Insights de Dados