Internet das Coisas (IoT) com ESP8266 e Adafruit IO
- Descrição
- Currículo
- FAQ
- Revisões
Explore o futuro da conectividade com o curso “Internet das Coisas (IoT) com ESP8266 e Adafruit IO”. Prepare-se para uma jornada prática e empolgante, mergulhando no universo da integração de tecnologias para monitoramento de variáveis e acionamentos remotos via internet. Este curso é a porta de entrada para desvendar os segredos da IoT, utilizando o poderoso ESP8266 e a plataforma Adafruit IO.
Ao longo do treinamento, você aprenderá a transformar ideias em realidade, conectando dispositivos de forma inteligente e eficiente. Desde a configuração do ESP8266 até a criação de painéis personalizados no Adafruit IO, cada passo será guiado de maneira clara e prática. Descubra como coletar e analisar dados de sensores em tempo real, controle remotamente seus dispositivos e crie soluções inovadoras para monitoramento e automação.
A experiência interativa proporcionada pelo curso permite que você adquira habilidades essenciais para enfrentar desafios reais de projetos IoT. Esteja pronto para explorar um ecossistema vibrante, onde a comunidade Adafruit e o poder do ESP8266 se combinam para abrir as portas para um mundo de possibilidades.
Seja você um entusiasta, desenvolvedor ou profissional em busca de conhecimento prático em IoT, este curso é a sua oportunidade de mergulhar em uma jornada emocionante, conectando-se ao futuro da tecnologia. Prepare-se para se destacar no universo da Internet das Coisas com o curso “IoT com ESP8266 e Adafruit IO”.
-
3Instalando o ambiente de programação: Arduino IDEVídeo Aula
-
4Instalando a placa ESP8266 na IDE ArduinoVídeo Aula
http://arduino.esp8266.com/stable/package_esp8266com_index.json
-
5Instalando as bibliotecas na IDE ArduinoVídeo Aula
-
6O que é Adafruit IOVídeo Aula
-
7O que é ESP8266 NodeMCUVídeo Aula
-
11Entrada Digital - FuncionamentoVídeo Aula
-
12Entrada Digital - HardwareVídeo Aula
-
13Entrada Digital - Sketch / CódigoVídeo Aula
/* Internet das Coisas (IoT) com ESP8266 e Adafruit IO
* Autor: Eduardo de Castro Quintino
* Biblioteca da Placa: "esp8266 by ESP8266 Community versão 3.1.2"
* Placa: "NodeMCU 1.0 (ESP-12E Module)"
*
* ENTRADA DIGITAL
*/
// ======================================================================
// --- Dados de Acesso da Plataforma Adafruit IO ---
// visite io.adafruit.com para para criar a sua conta.
// Você necessitará dos dados Adafruit IO key.
#define IO_USERNAME "educastroeng" //sua informação
#define IO_KEY "33bc3654d2c84e8ab85bd130b99f4001" // sua informação
// ======================================================================
// --- Dados de Acesso do seu roteador ---
#define WIFI_SSID "internetdascoisas" // Informação da SSID do seu roteador
#define WIFI_PASS "12345678" // senha de acesso do seu roteador
#include "AdafruitIO_WiFi.h" // inclui biblioteca
AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
// ======================================================================
// --- Mapeamento de Hardware ---
#define entradaPin 5 //D1 - Entrada Digital
// ======================================================================
// --- Feeds ---
//IMPORTANTE devem ser criados os feeds com o mesmo nome na AdafruitIO
AdafruitIO_Feed *estadoentrada = io.feed("estadoentrada"); //pub
// ======================================================================
// --- Variáveis Globais ---
bool estadoatualentrada = false;
bool ultimoestadoentrada = false;
// ======================================================================
// --- Void Setup ---
void setup() {
// --- Configuração IO ---
pinMode(entradaPin, INPUT);
Serial.begin(115200); // inicializa serial
// aguarda serial ser aberta
while(! Serial);
// conecta a io.adafruit.com
Serial.print("conectando com Adafruit IO");
io.connect();
// aguarda conexão
while(io.status() < AIO_CONNECTED) {
Serial.print(".");
delay(500);
}
// nós estamos conectados
Serial.println();
Serial.println(io.statusText());
}
// ======================================================================
// --- void loop ---
void loop() {
//io.run(); é necessário para todos os esboços.
// deve estar sempre presente no topo do seu loop
//função. mantém o cliente conectado a
// io.adafruit.com e processa todos os dados recebidos.
io.run();
// condições para tratamento da leitura do status da máquina
if(digitalRead(entradaPin) == HIGH)
estadoatualentrada = true;
else
estadoatualentrada = false;
// retorna se o valor não mudou
if(estadoatualentrada == ultimoestadoentrada)
return;
//publica o estado atual da leitura digital onde é lido
// se a entrada está ligada ou desligada
estadoentrada->save(estadoatualentrada);
// armazena o último estado lido
ultimoestadoentrada = estadoatualentrada;
}
// ======================================================================
// --- Fim do código da programação =) ---
-
14Entrada Digital - Integrando na plataforma Adafruit IOVídeo Aula
-
15Saída Digital - FuncionamentoVídeo Aula
-
16Saída Digital - HardwareVídeo Aula
-
17Saída Digital - Sketch / CódigoVídeo Aula
/* Internet das Coisas (IoT) com ESP8266 e Adafruit IO
* Autor: Eduardo de Castro Quintino
* Biblioteca da Placa: "esp8266 by ESP8266 Community versão 3.1.2"
* Placa: "NodeMCU 1.0 (ESP-12E Module)"
*
* SAÍDA DIGITAL
*/
// ======================================================================
// --- Dados de Acesso da Plataforma Adafruit IO ---
// visite io.adafruit.com para para criar a sua conta.
// Você necessitará dos dados Adafruit IO key.
#define IO_USERNAME "educastroeng" //sua informação
#define IO_KEY "33bc3654d2c84e8ab85bd130b99f4001" // sua informação
// ======================================================================
// --- Dados de Acesso do seu roteador ---
#define WIFI_SSID "internetdascoisas" // Informação da SSID do seu roteador
#define WIFI_PASS "12345678" // senha de acesso do seu roteador
#include "AdafruitIO_WiFi.h" // inclui biblioteca
AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
// ======================================================================
// --- Mapeamento de Hardware ---
#define saidaPin 4 //D2 - Saida Digital
// ======================================================================
// --- Feeds ---
//IMPORTANTE devem ser criados os feeds com o mesmo nome na AdafruitIO
AdafruitIO_Feed *estadosaida = io.feed("estadosaida"); //sub
// ======================================================================
// --- Variáveis Globais ---
// ======================================================================
// --- Void Setup ---
void setup() {
// --- Configuração IO ---
pinMode(saidaPin, OUTPUT);
Serial.begin(115200); // inicializa serial
// configura um manipulador de mensagens para o feed 'estadosaida'.
// a função handleMessage (definida abaixo)
// será chamado sempre que uma mensagem for
// recebido de adafruit io.
estadosaida->onMessage(handleMessage);
// aguarda serial ser aberta
while(! Serial);
// conecta a io.adafruit.com
Serial.print("conectando com Adafruit IO");
io.connect();
// aguarda conexão
while(io.status() < AIO_CONNECTED) {
Serial.print(".");
delay(500);
}
// nós estamos conectados
Serial.println();
Serial.println(io.statusText());
estadosaida->get(); // lê feed estadosaida
}
// ======================================================================
// --- void loop ---
void loop() {
//io.run(); é necessário para todos os esboços.
// deve estar sempre presente no topo do seu loop
//função. mantém o cliente conectado a
// io.adafruit.com e processa todos os dados recebidos.
io.run();
}
// ======================================================================
// --- void handleMessage ---
// esta função é chamada sempre que uma mensagem de feed 'estadosaida'
// é recebido da Adafruit IO. estava anexado ao
// feed 'estadosaida' na função setup() acima.
void handleMessage(AdafruitIO_Data *data) {
Serial.print("recebido <- ");
if(data->toPinLevel() == HIGH)
Serial.println("HIGH");
else
Serial.println("LOW");
// escreve na saída digital o valor lido
digitalWrite(saidaPin, data->toPinLevel());
}
// ======================================================================
// --- Fim do código da programação =) ---
-
18Saída Digital - Integrando na Plataforma Adafruit IOVídeo Aula
-
19Entrada Analógica - FuncionamentoVídeo Aula
-
20Entrada Analógica - HardwareVídeo Aula
-
21Entrada Analógica - Sketch / CódigoVídeo Aula
/* Internet das Coisas (IoT) com ESP8266 e Adafruit IO
* Autor: Eduardo de Castro Quintino
* Biblioteca da Placa: "esp8266 by ESP8266 Community versão 3.1.2"
* Placa: "NodeMCU 1.0 (ESP-12E Module)"
*
* ENTRADA ANALÓGICA
*/
// ======================================================================
// --- Dados de Acesso da Plataforma Adafruit IO ---
// visite io.adafruit.com para para criar a sua conta.
// Você necessitará dos dados Adafruit IO key.
#define IO_USERNAME "educastroeng" //sua informação
#define IO_KEY "33bc3654d2c84e8ab85bd130b99f4001" // sua informação
// ======================================================================
// --- Dados de Acesso do seu roteador ---
#define WIFI_SSID "internetdascoisas" // Informação da SSID do seu roteador
#define WIFI_PASS "12345678" // senha de acesso do seu roteador
#include "AdafruitIO_WiFi.h" // inclui biblioteca
AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
// ======================================================================
// --- Mapeamento de Hardware ---
#define analogicoPin A0 //A0 - Entrada Analógica
// ======================================================================
// --- Feeds ---
//IMPORTANTE devem ser criados os feeds com o mesmo nome na AdafruitIO
AdafruitIO_Feed *entradaanalogica = io.feed("entradaanalogica"); //pub
// ======================================================================
// --- Variáveis Globais ---
int leituraanalogica = 0; // variável para armazenar o valor lido em A0
// ======================================================================
// --- Void Setup ---
void setup() {
Serial.begin(115200); // inicializa serial
// aguarda serial ser aberta
while(! Serial);
// conecta a io.adafruit.com
Serial.print("conectando com Adafruit IO");
io.connect();
// aguarda conexão
while(io.status() < AIO_CONNECTED) {
Serial.print(".");
delay(500);
}
// nós estamos conectados
Serial.println();
Serial.println(io.statusText());
}
// ======================================================================
// --- void loop ---
void loop() {
//io.run(); é necessário para todos os esboços.
// deve estar sempre presente no topo do seu loop
//função. mantém o cliente conectado a
// io.adafruit.com e processa todos os dados recebidos.
io.run();
// armazena a leitura analógica na variável
leituraanalogica = analogRead(analogicoPin);
//publica o estado atual da leitura analógica onde é lida
entradaanalogica->save(leituraanalogica);
// aguarda
delay(2500);
}
// ======================================================================
// --- Fim do código da programação =) ---
-
22Entrada Analógica - Integrando na plataforma Adafuit IOVídeo Aula
-
23Saída "Analógica" PWM - FuncionamentoVídeo Aula
-
24Saída "Analógica" PWM - HardwareVídeo Aula
-
25Saída "Analógica" PWM - Sketch / CódigoVídeo Aula
/* Internet das Coisas (IoT) com ESP8266 e Adafruit IO
* Autor: Eduardo de Castro Quintino
* Biblioteca da Placa: "esp8266 by ESP8266 Community versão 3.1.2"
* Placa: "NodeMCU 1.0 (ESP-12E Module)"
*
* SAÍDA ANALÓGICA
*/
// ======================================================================
// --- Dados de Acesso da Plataforma Adafruit IO ---
// visite io.adafruit.com para para criar a sua conta.
// Você necessitará dos dados Adafruit IO key.
#define IO_USERNAME "educastroeng" //sua informação
#define IO_KEY "33bc3654d2c84e8ab85bd130b99f4001" // sua informação
// ======================================================================
// --- Dados de Acesso do seu roteador ---
#define WIFI_SSID "internetdascoisas" // Informação da SSID do seu roteador
#define WIFI_PASS "12345678" // senha de acesso do seu roteador
#include "AdafruitIO_WiFi.h" // inclui biblioteca
AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
// ======================================================================
// --- Mapeamento de Hardware ---
#define pwmPin 13 //D7 - Saida PWM
// ======================================================================
// --- Feeds ---
//IMPORTANTE devem ser criados os feeds com o mesmo nome na AdafruitIO
AdafruitIO_Feed *saidaanalogica = io.feed("saidaanalogica"); //sub
// ======================================================================
// --- Variáveis Globais ---
// ======================================================================
// --- Void Setup ---
void setup() {
// --- Configuração IO ---
pinMode(pwmPin, OUTPUT);
Serial.begin(115200); // inicializa serial
// configura um manipulador de mensagens para o feed 'saidaanalogica'.
// a função handleMessage (definida abaixo)
// será chamado sempre que uma mensagem for
// recebido de adafruit io.
saidaanalogica->onMessage(handleMessage);
// aguarda serial ser aberta
while(! Serial);
// conecta a io.adafruit.com
Serial.print("conectando com Adafruit IO");
io.connect();
// aguarda conexão
while(io.status() < AIO_CONNECTED) {
Serial.print(".");
delay(500);
}
// nós estamos conectados
Serial.println();
Serial.println(io.statusText());
saidaanalogica->get(); // lê feed saidaanalogica
}
// ======================================================================
// --- void loop ---
void loop() {
//io.run(); é necessário para todos os esboços.
// deve estar sempre presente no topo do seu loop
//função. mantém o cliente conectado a
// io.adafruit.com e processa todos os dados recebidos.
io.run();
}
// ======================================================================
// --- void handleMessage ---
// esta função é chamada sempre que uma mensagem de feed 'saidaanalogica'
// é recebido da Adafruit IO. estava anexado ao
// feed 'saidaanalogica' na função setup() acima.
void handleMessage(AdafruitIO_Data *data) {
// converte o dado recebido para inteiro
int lendo = data->toInt();
// imprime na serial
Serial.print("recebido <- ");
Serial.println(lendo);
// mapeia o valor recebido de 0 a 100 para 0 a 255
lendo = map(lendo,0,100,0,255);
// escreve no pino PWM o valor recebido
analogWrite(pwmPin, lendo);
}
// ======================================================================
// --- Fim do código da programação =) ---
-
26Saída "Analógica" PWM - Integrando na plataforma Adafruit IOVídeo Aula
-
27Temperatura e Umidade DHT22 - FuncionamentoVídeo Aula
-
28Temperatura e Umidade DHT22 - HardwareVídeo Aula
-
29Temperatura e Umidade DHT22 - Sketch / CódigoVídeo Aula
/* Internet das Coisas (IoT) com ESP8266 e Adafruit IO
* Autor: Eduardo de Castro Quintino
* Biblioteca da Placa: "esp8266 by ESP8266 Community versão 3.1.2"
* Placa: "NodeMCU 1.0 (ESP-12E Module)"
*
* DHT 22 (TEMPERATURA E UMIDADE)
*/
// ======================================================================
// --- Dados de Acesso da Plataforma Adafruit IO ---
// visite io.adafruit.com para para criar a sua conta.
// Você necessitará dos dados Adafruit IO key.
#define IO_USERNAME "educastroeng" //sua informação
#define IO_KEY "33bc3654d2c84e8ab85bd130b99f4001" // sua informação
// ======================================================================
// --- Dados de Acesso do seu roteador ---
#define WIFI_SSID "internetdascoisas" // Informação da SSID do seu roteador
#define WIFI_PASS "12345678" // senha de acesso do seu roteador
#include "AdafruitIO_WiFi.h" // inclui biblioteca
AdafruitIO_WiFi io(IO_USERNAME, IO_KEY, WIFI_SSID, WIFI_PASS);
// ======================================================================
// --- Mapeamento de Hardware ---
#define DHTPIN 12 //D6 - Pino utilizado pelo DHT22
// ======================================================================
// --- Inclusão biblioteca e parâmetros do sensor DHT22 ---
#include <DHT.h>
#define DHTTYPE DHT22 // Define que o sensor é o DHT22
DHT dht(DHTPIN, DHTTYPE);
// ======================================================================
// --- Feeds ---
//IMPORTANTE devem ser criados os feeds com o mesmo nome na AdafruitIO
AdafruitIO_Feed *temperatura = io.feed("temperatura"); //pub
AdafruitIO_Feed *umidade = io.feed("umidade"); //pub
// ======================================================================
// --- Variáveis Globais ---
float temperaturaatual = 0;
float umidadeatual = 0;
unsigned int previousMillis = 0;
unsigned int interval = 5000;
// intervalo de tempo para publicação das variáveis temperatura e umidade
// SUGESTÃO: alterar para 30000, visto que são variáveis lentas
// Mas o importante é verificar a realidade da sua necessidade de projeto
// ======================================================================
// --- Void Setup ---
void setup() {
// --- Configuração IO ---
Serial.begin(115200); // inicializa serial
dht.begin(); // Inicializa a função DHT
// aguarda serial ser aberta
while(! Serial);
// conecta a io.adafruit.com
Serial.print("conectando com Adafruit IO");
io.connect();
// aguarda conexão
while(io.status() < AIO_CONNECTED) {
Serial.print(".");
delay(500);
}
// nós estamos conectados
Serial.println();
Serial.println(io.statusText());
}
// ======================================================================
// --- void loop ---
void loop() {
//io.run(); é necessário para todos os esboços.
// deve estar sempre presente no topo do seu loop
//função. mantém o cliente conectado a
// io.adafruit.com e processa todos os dados recebidos.
io.run();
tempopublicacao(); // chama a função
}
// função para publicar "temperatura" e "umidade" a cada intervalo de tempo
// são variáveis lentas, ou seja, dependendo do processo, demoram a ter variações significativas
// sugestão: entender o processo, mas para a minha aplicação 60 segundos estava perfeita
// para a aula, deixei 5 segundos
void tempopublicacao() {
if (millis() - previousMillis >= interval){
previousMillis = millis();
umidadeatual = dht.readHumidity(); // armazena valor da umidade
temperaturaatual = dht.readTemperature(); // armazena valor da temperatura
temperatura->save(temperaturaatual); // publica o valor da temperatura
umidade->save(umidadeatual); //publica o valor da umidade
//imprimir na serial os valores atuais de temperatura e umidade
Serial.print("Temperatura = ");
Serial.println(temperaturaatual);
Serial.print("Umidade = ");
Serial.println(umidadeatual);
}
}
// ======================================================================
// --- Fim do código da programação =) ---
-
30Temperatura e Umidade DHT22 - Integrando na plataforma Adafruit IOVídeo Aula