Você está na página 1de 18

Arduino, Internet das Coisas e Computação vestível

Você está em » Home : Placas Arduino e ESP :: Internet das Coisas (IoT)

Home
[Voltar] [Avançar]
Cronograma de aula

WeMos D1 R2 Wifi ESP8266


Conteúdos relacionados
» Acionamentos e Mecanismos
Descrição
» Projeto de produto II
WeMos D1 R2 é uma placa que trabalha de forma
Sobre eletrônica
similiar ao Arduino Uno R3 e ao NodeMCU associada ao
Volts, resistência e Ampéres módulo ESP8266 Wifi para realizar a conexão com a
Diodos, resistores, etc. rede WIFI para atender diversos projetos voltados para
» Transistor como chave Internet das Coisas (IOT – Internet of Things). Ele pode
Potenciômetro utilizar sensores, módulos e shields, mas deve-se
observar as pinagens do shields pois algumas podem
Circuito Integrado 555
ser diferentes, já que o Wemos tem apenas uma
Multímetro
entrada analógica. Possui 4Mb de memória flash. A

Linguagem de programação tensão de operação é de 3.3V, mas a alimentação pelo


seu conector JP4 pode ser feita até 24V, pois ele tem
Função
um C.I regulador de tensão na sua entrada que diminui
Comentários
a tensão para 3.3V. Para a gravação do programa pode
Estruturas de Controle
ser utilizado tanto a IDE do Arduino através da porta
Bibliotecas Micro-usb quanto pelo próprio WIFI, mais conhecido
Plataformas de como OTA.
desenvolvimento

Placas Arduino e ESP Especificações


Básicas
Microcontrolador: ESP8266EX
» Arduino Uno R3
Tensão de Operação: 3,3V
» Arduino Nano
» Arduino Mini Tensão de Entrada: 9-24V

Avançadas Portas Digitais: 11 (podem ser usadas como saída I²C, PWM e one-wire)
» Arduino Mega Portas Analógicas: 1
Internet das Coisas (IoT) Memória Flash: 4MB
WeMos D1 Mini Pro Wifi
»
ESP8266
» WeMos D1 R2 Wifi ESP8266
» Wifi ESP8266 NodeMCU
WiFi ESP32 Bluetooth
»
NodeMCU

Computação vestível
(Wearable)
» Arduino Gemma
» Lilypad Arduino Usb
» Lilypad Arduino

Shield (Escudo)

Comunicação
» Ethernet Shield W5100

Saúde
» Shield OpenBCI (EEG)

Motores, CNC e Impressão


3D
» Arduino Shield - CNC V3
» Motor Shield L293D
» Shield Ramps 1.4

Diversos
» Shield Rele 5V 4 canais
» Shield Arduino Multifunções

Módulos

Luz, presença e distância Alimentação


» Módulo Fotodiodo
O WeMos D1 R2 pode ser alimentado pelo seu conector JP4 com tensão entre 9V e 24V. Ele possui um C.I regulador de
» Motion detector HC-SR501
tensão na sua entrada que diminui a tensão para 3.3V.
» Módulo Sensor Infravermelho
Módulo Foto Interruptor KY-
»
010 Biblioteca
Módulo Sensor de Luz LDR
» O Módulo Wifi ESP8266 NodeMCU pode ser programado usando Lua ou na linguagem padrão do Arduino com a mesma IDE.
KY-018

Velocidade, movimento e Para tanto, a partir de 2016 a Arduino IDE foi adaptada para o ESP8266. Hoje existem inúmeras bibliotecas que já foram
toque
Módulo Acelerometro adaptadas e muitas aplicações já estão disponíveis. O link GitHub ESP8266 Arduino é o Repositório para ESP8266/Arduino,
»
Giroscópio
onde estão as Bibliotecas, códigos de exemplos e todos outros arquivos necessários para usar a Arduino IDE com o ESP8266.
» Módulo Joystick KY-023
» Módulo Touch Sensor 12 Key
Por exemplo: Driver para SSD1306 e SH1106 (128x64, 128x32 ou 64x48 pixel) OLED display para rodare no ESP8266/ESP32
Flexão, Posição e localização
» Sensor Flexível
Configuração da IDE do Arduino para o NodeMCU
» Módulo Sensor Magnetômetro
» Módulo Sensor Ultrassônico Na Arduino IDE altere as preferências do sistema adicionando a URL
Módulo Sensor Efeito Hall KY- "http://arduino.esp8266.com/stable/package_esp8266com_index.json" aos Gerenciadores de Placas da IDE. Após,
»
003
é necessário instalar a placa através do Gerenciador de Placas (Menu » Ferramenta » Placa ... » Gerenciador de
Pressão, Umidade e Placas). Procure na lista o título "esp8266 by ESP8266 Community" e instale.
Temperatura
» Sensor BME280

Comunicação
» Módulo Bluetooth
» Módulo wifi ESP8266
» Módulo de comunicação RFID
Controle Remoto Ir +
»
Receptor Ir
Módulos Transmissor e
» Receptor (TX / RX) RF
433MHz

Visualização
Display Oled 0,96 (Azul e
»
Amarelo)
» Display Oled 0,96 (Branco)
» Módulo Matriz de LED 8×8
» Display 7 Segmentos 1 Dígito
Módulo linha de LED RGB
»
WS2812

Áudio
» Módulo Buzzer Ativo KY-012
» Módulo MP3 Mini DFPlayer
» Módulo Player - WTV020M01
» Módulo Amplificador
» Mini Alto Falante 0.5w 8Ohms

Outros
Projeto(s) relacionado(s)
» Módulo Relé 5V
» Módulo Carregador bateria
Motores
» Motor de Passo 28BYJ-48 Projeto localizando Redes WiFi
» Micro Servo Motor SG90
O projeto usa WeMos D1 Wifi ESP8266 ou ESP8266 NodeMCU para detectar Redes Wifi. Quanto utilizar a placa WeMos D1
» Servo Motor Mg996R
Wifi ESP8266 configurar no Arduino IDE a placa como WebMos D1 R1. Quanto utilizar a placa ESP8266 NodeMCU configurar
Componentes diversos no Arduino IDE a placa como NodeMCU 0.9 (ESP-12 Modulo).
» Chave Táctil ou Push Button
» Led RGB Alto Brilho
» Células solares // Projeto: Localiza redes WiFi
» Baterias: Lí-ion, LiPo e NiMH // Autor: André Silveira
// Data: 22/08/2019
» Trava elétrica solenóide
» Fonte DC #include "ESP8266WiFi.h"

Projetos diversos void setup() {


Serial.begin(115200);
1. LEDs WiFi.mode(WIFI_STA); // Defina o WiFi para o modo estação
1.1. Liga LED com Chave WiFi.disconnect(); // Desconecta se o sistema estiver conectado
»
Táctil delay(100);
» 1.3. Led RGB pulsante Serial.println("Configuração pronta");
}
1.4. Controla Led RGB com
»
potenciômetro
void loop() {
1.5. Sinalização luminosa Serial.println("Inicia escaneamento");
»
para bicicleta
1.6. Projeto iluminação de int n = WiFi.scanNetworks(); // Retorna número de redes localizadas
»
Linha de LED RGB Serial.println("Escaneamento terminou");
1.7. Projeto Linha de LED vai
» if (n == 0) {
e vem alternando cores RGB
Serial.println("Nenhuma Rede foi localizada");
1.8. Projeto anel LED RGB
» } else {
WS2812
Serial.print(n);
1.9. Detector de Som com Serial.println("Redes localizadas");
»
sensor KY-038

2. Energia e Bateria for (int i = 0; i < n; ++i) {


Serial.print(i + 1);
2.1. Recarga da bateria de
» Serial.print(": ");
Lítio
Serial.print(WiFi.SSID(i)); // Imprime Nome da Rede Wifi
» 2.2. Painel de Energia Solar Serial.print(" (");
3. Som e música Serial.print(WiFi.RSSI(i)); // Imprime Intensidade do sinal
Serial.print(")");
» 3.1. Global Sounds
Serial.println((WiFi.encryptionType(i) == ENC_TYPE_NONE) ? " " : "*");
» 3.2. Projeto Do Ré Mi delay(10);
3.3. Player de música com }
» }
teclado
Serial.println("");
» 3.4. Teclado de Piano
» 3.5. Cartaz interativo delay(5000);
}
» 3.6. Bengala para cegos
» 3.7. Piano com chave táctil
3.8. Caixa de música com
»
autômato

4. Visualização
9.1. Localiza Redes Wifi
» 4.1. Desenhando na tela Oled
4.2. Placar Eletrônico com
»
Display 7 Segmentos
4.3. Placar Eletrônico com
»
Max7219
» 4.4. Cofre eletrônico

5. Motores
5.1. Garra controlada por
»
potenciômetro
5.2. Controlando Servos com
»
Joystick
5.3. Liga e desliga Motor DC
»
através do Monitor Serial
5.4. Controle de giro de
»
motor de passo com botões
» 5.5. Mini Plotter
» 5.6. Hand robot InMoov
Servidor Web para uma estação Metereológica
5.7. Controlando sentido do
»
motor com Relé
O projeto usa WeMos D1 Wifi ESP8266 ou ESP8266 NodeMCU, Módulo Sensor DHT11 e Display Oled 0,96 128x64 para
» 5.8. WALL-E Robot Replica
informar a temperatura e umidade através de IP da Internet (Servidor Web) em uma relação Servidor/Cliente. Quanto
5.9. Exoesqueleto para
» utilizar a placa WeMos D1 Wifi ESP8266 configurar a placa no Arduino IDE como WebMos D1 R1. Quanto utilizar a placa
amplificar a força da mão
ESP8266 NodeMCU configurar a placa no Arduino IDE como NodeMCU 0.9 (ESP-12 Module).
5.10. Controlando velocidade
»
de um motor
O que é um Servidor Web?
6. Acelerometro e Giroscópio
Um computador responsável por fornecer e receber dados dos diversos clientes, atuando como centralizador de informação
6.1. Acelerometro e
»
Giroscópio na Rede. Para tanto, utiliza um conjunto de protocolos de comunicação entre computadores chamado de TCP/IP (Protocolo
6.2. Aciona uma Lâmpada de controle de transmissão): TCP (Transmission Control Protocol) e IP (Internet Protocol).
» com Relé e Sensor de
Movimento
6.3. Detecta movimento e
»
acende LED

7. Temperatura, umidade,
etc.
» 7.1. Acende lâmpada quando
escurece
7.2. Informa temperatura,
» umidade e luminosidade com
sensor DHT11 e LDR
7.3. Informa temperatura,
» umidade e luminosidade com
Shield Arduino Multifunções
» 7.4. Termômetro digital

8. Interruptores e
liberadores
8.1. Sistema de alarme para
»
cofre
8.2. Estação sanitária
» automatizada: dispenser de
sabonete ou álcool gel
8.3. Aciona Lâmpada e motor
» com transistor TIP 120 sem
arduino A relação Servidor/Cliente

8.4. Aciona motor com A relação entre os computadores que hospedam sites (Servidores) e os navegadores que utilizamos em nossos
»
transistor TIP 120 e arduino computadores ou celulares (Clientes) é chamada de Servidor/Cliente. Neste tipo de relação, utiliza-se o procotolo o HTTP
8.5. Emprego de um (Hypertext Transfer Protocol) para estabelecer a comunicação. Ele é responsável pelo tratamento dos pedidos e respostas
»
capacitor
entre cliente e servidor na World Wide Web. Nesse contexto, chamamos os servidores de Servidores Web.
8.6. Regulador de tensão
»
elétrica

9. Redes Wifi
» 9.1. Localiza Redes Wifi
9.2. Servidor Web para uma
»
estação Metereológica
9.3. Servidor Web que
»
controle LED RGB

10. Rede Ethernet


10.1. Acendendo LEDS com
»
Shield Ethernet

11. RFID
11.1. Lê identificador da TAG
»
RFID
11.2. Cancela Controlada por
»
RFID

12. Controle
Remoto/Receptor Ir
12.1. Identifica código do
»
controle
12.2. Acende e apaga LEDs
»
pelo controle
13. Outros
» 13.1. Pisca-pisca com CI 555
13.2. Higienizador de
»
máscara Covid
13.3. Broche vagalume com
»
sensor LDR e CI 555
13.4. Rogue Router (Roteador
»
vampiro)
13.5. Open Sourcing Brain-
»
Computer Interfaces
13.6. Fluidic Control Board:
»
Soft Robotics Toolkit

Bibliografia e outros recursos

Onde comprar?
/*
Programa: Servidor Web para uma estação Metereológica com sensor DHT11
Autor: André Luis Marques da Silveira
Data: 22/09/2019
*/

#include "Wire.h" // Biblioteca para enviar e receber dados TWI/I2C


#include "Adafruit_GFX.h" // Biblioteca para processamento gráfico
#include "Adafruit_SSD1306.h" // Biblioteca do controlador SSD1306
#include "ESP8266WiFi.h"

#include <DHT.h>
#define DHTPIN D5
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);

Adafruit_SSD1306 display(128, 64); // Cria objeto display

const char* ssid = "NOME DO SERVIDOR";


const char* password = "SENHA DO SERVIDOR";
int porta = 80;

// --- Caso ocorra problemas com a porta 80, utilize 8082 ou 8089 ---- //
// --- A chamada, por exemplo fica: http://192.168.0.15:8082 ---- //

WiFiServer server(porta);

void setup() {

// --- Inicializa Sensor DHT11 ---- //

dht.begin(); // Inicializa biblioteca WIRE


Wire.begin(); // Inicializa biblioteca sensor DHT11
pinMode(DHTPIN, INPUT); // Define pino do Sensor DHT11

// ---- Inicializa tela Oled ---- //

display.begin(SSD1306_SWITCHCAPVCC, 0x3C); // Inicializa a tela com endereço I2C "0x3C"


display.setTextColor(WHITE); // Define cor do texto
display.setRotation(0); // Configura orientação
display.setTextWrap(false);
display.setTextSize(1); // Define tamanho da fonte do texto
display.dim(0); // Define brilho (0 é máximo)
display.clearDisplay(); // Limpa a tela
display.drawRect(0,0,128,15,WHITE); // Posição (x0,y0,x1,y1)
display.setCursor(4,4); // Posição do cursor na tela
display.print("Rede:"); // Escreve texto no display
display.println(ssid); // Escreve no da Rede Wifi
display.display(); // Mostra texto no display

// ---- Inicializa serial ---- //

Serial.begin(9600);
Serial.print("Conectando a rede Wifi ");
Serial.println(ssid); // Escreve nome da Rede Wifi na Serial

// --- Conecta Rede Wifi ---- //

int a = 0;
WiFi.begin(ssid, password); // Passa parâmetros para fazer conexão com a Rede sem fio
while (WiFi.status() != WL_CONNECTED) { // Testa status da conexão
a = a + 1;
if (a < 60) {
Serial.print(".");
} else {
Serial.println(".");
a = 0;
}
delay(100);
}

Serial.println("Conectado a rede");
Serial.println("");
Serial.println("Servidor iniciado");

// ---- Inicia Servidor Web para receber dados em "WiFiServer server(porta)" ---- //

server.begin();

// ---- Escreve na serial o IP recebido da rede sem fio (AUTOMÁTICO) ---- //

Serial.print("IP para se conectar ao NodeMCU: ");


Serial.print("http://");
Serial.println(WiFi.localIP());

// ---- Escreve na tela Oled o IP recebido da rede sem fio (AUTOMÁTICO) ---- //

display.setCursor(0,25);
display.print("IP:");
display.print(WiFi.localIP());
display.print(":");
display.println(porta);
display.display();
}

void loop() {
WiFiClient client = server.available(); // Verifica se algum cliente está conectado ao servidor
if (!client) { // Cliente não conectado, reexecuta processo
delay(10);
return;
}

// --- lê sensor DHT11 - temperatura e umidade --- //

float h = dht.readHumidity(); // Temperatura em Celsius


float t = dht.readTemperature(); // Temperatura em Fahrenheit (isFahrenheit = true)
float f = dht.readTemperature(true);

Serial.println("Novo cliente se conectou!");


Serial.print(" Temperatura: ");
Serial.print(t);
Serial.print(" Umidade: ");
Serial.println(h);

display.fillRect(0,40,128,64,BLACK); // fillRect(x,y,width,height,color)
display.setCursor(11,42); // Posição do cursor na tela
display.print("Temperatura:"); // Escreve texto no display
display.setCursor(85,42); // Posição do cursor na tela
display.print(t); // Escreve texto no display

display.setCursor(24,52); // Posição do cursor na tela


display.print("Umidade:"); // Escreve texto no display
display.setCursor(76,52); // Posição do cursor na tela
display.print(h); // Escreve texto no display

display.display(); // Mostra texto no display

// ---- Enquanto cliente estiver conectado aguarda 1 milisegundo ---- //

while(!client.available()){
delay(1);
}

String request = client.readStringUntil('\r'); // Faz leitura da primeira linha da requisição Web


Serial.println(request); // Escreve requisição na Serial
client.flush(); // Aguarda até todos dados serem enviados ao cliente

// ---- Monta protocolo de comunicação HTTP e conteúdo HTML para cliente ---- //

client.println("HTTP/1.1 200 OK");


client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<HEAD>");
client.println("<TITLE>Leitura da temperatura</TITLE>");
client.println("<META http-equiv=Content-Type content='text/html; charset=iso-8859-1'>");
client.println("<META HTTP-EQUIV='refresh' CONTENT='5'>");
client.println("</HEAD>");
client.println("<body>");
client.println("<h1><center>Bom-dia!</center></h1>");
client.println("<h2><center>Data e Hora</center></h2>");
client.println("<p><center id='datetime'></center></p>");
client.println("<script>");
client.print("var dt = new Date();");
client.print("document.getElementById('datetime').innerHTML = (('0'+dt.getDate()).slice(-2))+'/'+");
client.print("(('0'+(dt.getMonth()+1)).slice(-2))+'/'+(dt.getFullYear())+' - ");
client.print("'+(('0'+dt.getHours()).slice(-2))+':'+(('0'+dt.getMinutes()).slice(-2));");
client.println("</script>");

client.println("<h2><center>Temperatura</center></h2>");
client.println("<p><center>");
client.println(t);

client.println("Celsius</center></p>");
client.println("<p><center>");
client.println(f);
client.println("Fahrenheit </center></p>");

client.println("<h2><center>Umidade</center></h2>");
client.println("<p><center>");
client.println(h);
client.println("</center></p>");

client.println("</body>");
client.println("</html>");

Serial.println("Cliente desconectado ");


Serial.println("");
delay(20);
}
9.2. Servidor Web para uma estação Metereológica

Servidor Web que controla cor de LED RGB

O projeto usa WeMos D1 Wifi ESP8266 ou ESP8266 NodeMCU para controlar a cor de um LED RGB através de IP da Internet
(Servidor Web) em uma relação Servidor/Cliente. Quanto utilizar a placa WeMos D1 Wifi ESP8266 configurar a placa
no Arduino IDE como WebMos D1 R1. Quanto utilizar a placa ESP8266 NodeMCU configurar a placa no Arduino IDE como
NodeMCU 0.9 (ESP-12 Module).
/*
Programa: Servidor Web Servidor Web que controla cor de LED RGB
Autor: André Luis Marques da Silveira
Data: 22/09/2019
*/

#include <ESP8266WiFi.h>

const char* ssid = "NOME DO SERVIDOR";


const char* password = "SENHA DO SERVIDOR";

int PinoLedRed = D3; // Pino do Led vermelho


int PinoLedGreen = D2; // Pino do Led verde
int PinoLedBlue = D1; // Pino do Led azul

int StatusRed = 0;
int StatusGreen = 0;
int StatusBlue = 0;

WiFiServer server(80);

void setup() {

Serial.begin(9600);
Serial.print("Conectando a ");
Serial.println(ssid);

pinMode(PinoLedRed, OUTPUT);
pinMode(PinoLedGreen, OUTPUT);
pinMode(PinoLedBlue, OUTPUT);

analogWrite(PinoLedRed, 0);
analogWrite(PinoLedGreen, 0);
analogWrite(PinoLedBlue, 0);

int a = 0;
WiFi.begin(ssid, password); // Informa nome servidor e senha para acessar Rede
while (WiFi.status() != WL_CONNECTED) { // Testa status da conexão
a = a + 1;
if (a < 60) {
Serial.print(".");
} else {
Serial.println(".");
a = 0;
}
delay(10);
}

Serial.println("");
Serial.println("Conectado a rede");
Serial.println("");
Serial.println("Servidor iniciado");
// ---- Inicia Servidor Web para receber dados em "WiFiServer server(porta)" ---- //

server.begin();

// ---- Escreve na serial o IP recebido da rede sem fio (AUTOMÁTICO) ---- //

Serial.print("IP para se conectar ao NodeMCU: ");


Serial.print("http://");
Serial.println(WiFi.localIP());
}

void loop() {

// ---- Verifica se algum cliente está conectado ao servidor ---- //

WiFiClient client = server.available();


if (!client) {
delay(1);
return;
}

// ---- Enquanto cliente estiver conectado aguarda 1 milisegundo ---- //

while(!client.available()){
delay(1);
}

// ---- Le primeira linha do pedido ---- //

String request = client.readStringUntil('\r');


Serial.println(request);
client.flush();

// ---- Processa pedido do LED VERMELHO ---- //

if (request.indexOf("/LedRed=ON") != -1) {
Serial.println("LedRed=on");
StatusRed = 255;
}
if (request.indexOf("/LedRed=OFF") != -1) {
Serial.println("LedRed=off");
StatusRed = 0;
}

// ---- Processa pedido do LED VERDE ---- //

if (request.indexOf("/LedGreen=ON") != -1) {
Serial.println("LedGreen=on");
StatusGreen = 255;
}
if (request.indexOf("/LedGreen=OFF") != -1) {
Serial.println("PinoLedGreen=off");
StatusGreen = 0;
}

// ---- Processa pedido do LED AZUL ---- //

if (request.indexOf("/LedBlue=ON") != -1) {
Serial.println("LedBlue=on");
StatusBlue = 255;
}
if (request.indexOf("/LedBlue=OFF") != -1) {
Serial.println("LedBlue=off");
StatusBlue = 0;
}

client.println("HTTP/1.1 200 OK");


client.println("Content-Type: text/html");
client.println("");
client.println("<!DOCTYPE HTML>");
client.println("<html>");
client.println("<HEAD>");
client.println("<TITLE>Controla LED RGB pela WEB</TITLE>");
client.println("<META http-equiv=Content-Type content='text/html; charset=iso-8859-1'>");
client.println("</HEAD>");
client.println("<body>");

client.println("<center>");
client.println("<h1>Olá cliente!</h1>");
client.println("<p>Seja bem vindo!</p>");

client.print("<p><br>Estado dos LEDs: ");


if (StatusRed == 255) {
client.print("vermelho On / ");
analogWrite(PinoLedRed, 255);
} else {
client.print("vermelho Off / ");
analogWrite(PinoLedRed, 0);
}

if (StatusGreen == 255) {
client.print("verde On / ");
analogWrite(PinoLedGreen, 255);
} else {
client.print("verde Off / ");
analogWrite(PinoLedGreen, 0);
}
if (StatusBlue == 255) {
client.print("azul On<br></p>");
analogWrite(PinoLedBlue, 255);
} else {
client.print("azul Off</p>");
analogWrite(PinoLedBlue, 0);
}

client.println("<p><br>Pino D3 - Vermelho ");


client.println("<a href=\"/LedRed=ON\"\"><button>On</button></a>");
client.println("<a href=\"/LedRed=OFF\"\"><button>Off</button></a></p>");

client.println("<p>Pino D2 - Verde ");


client.println("<a href=\"/LedGreen=ON\"\"><button>On</button></a>");
client.println("<a href=\"/LedGreen=OFF\"\"><button>Off</button></a></p>");

client.println("<p>Pino D1 - Azul ");


client.println("<a href=\"/LedBlue=ON\"\"><button>On</button></a>");
client.println("<a href=\"/LedBlue=OFF\"\"><button>Off</button></a></p>");

client.println("</center>");
client.println("</html>");

Serial.println("Cliente desconectado");
Serial.println("");
}
9.3. Servidor Web que controle LED RGB

[Voltar] [Avançar]

© Copyright 2018 / 2023 - André Luis Marques da Silveira

Você também pode gostar