Por Fernando Koyanagi

Documentos relacionados
Por Fernando Koyanagi

Por Fernando Koyanagi

Por Fernando Koyanagi

Por Fernando Koyanagi

Por Fernando Koyanagi

Por Fernando Koyanagi. ESP32 + chip SX1276

Por Fernando Koyanagi

PUCRS CURSO DE ENGENHARIA ELÉTRICA

Por Fernando Koyanagi 1

Por Fernando Koyanagi 1

Por Fernando Koyanagi

Integração Arduino - Python Leitura de sensor de umidade e temperatura

Por Fernando Koyanagi 1

MINICURSO ARDUINO AVANÇADO

Por Fernando Koyanagi 1

ETAPAS PARA A CONSTRUÇÃO DA SONDA

Por Fernando Koyanagi 1

Minicurso - Arduino Startup Garagem

Por Fernando Koyanagi

Podem ser substituídos pelo módulo P7-Sensor de Luminosidade da GBK Robotics.

Por Fernando Koyanagi 1

Kit controle remoto IR acionando 3 Led com Arduino

Projeto No. 11 Display de Leds de 7 Segmentos

Por Fernando Koyanagi 1

Por Fernando Koyanagi

Acendendo o Led com Arduino.

Projeto Final de Microcontroladores 2 Alarme de Temperatura

Por Fernando Koyanagi

Projeto No. 19 Contador Binário com Chave Rotativa

Por Fernando Koyanagi

Projeto No. 17 Infravermelho

Projeto No. 10 Relógio com LCD

Over the Air OTA. Por Fernando Koyanagi

Introdução ao Arduino ESCOLA DE ARTES VISUAIS DO PARQUE LAGE. Núcleo de Arte e Tecnologia. julio lucio martin. Aula 07

Por Fernando Koyanagi

Pequenos Projetos com Arduino

KIT INICIANTE V7 PARA ARDUINO

Arduino Lab 07 Leitura de temperatura e indicação em um display GLCD de

Controlando até 68 pontos Com Arduino Mega e ESP8266. Por Fernando Koyanagi

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

introdução Olá, Após alimentar você deve enviar comandos AT para verificar que o modulo está funcionando e comunicando via serial.

Plano de Aula. 1 o semestre. Aula número 011 Periféricos Display LCD, Conversor AD e conversor DA (PWM)

Integração do Arduíno com Elipse Scada para aplicações de força

Guia Arduino para iniciantes: Tudo que você precisa saber para começar

OFICINA Uso da plataforma Arduino no Ensino de Ciências

MINICURSO - PLATAFORMA ARDUINO Eixo de Informação e Comunicação Gil Eduardo de Andrade

TERMÔMETRO COM O LM35 Parte I

int pinosensor = A0; //define a variável como entrada analógica //no pino A0 para o sensor LM35.

Apostila de introdução ao Tinkercad (antigo Circuits.io)

Manual Técnico Arduino Supervisório RTC (Real Time Clock)

Projeto No. 15 Sensor Óptico Reflexivo

Funções dos Microcontroladores Microcontroladores e Microprocessadores Especialização em Automação Industrial

SENSOR DE LUMINOSIDADE Com indicador de intervalo

Instituto Federal de São Paulo IFSP Prof.a Tânia M. Preto. Gráficos no Dev-C++ usando a bibliteca graphics.h. 1. Dicas de instalação:

Oficina de Programação utilizando a plataforma Arduino

Projeto No. 12 Display de Led de 7 Segmentos

Arduino. Aula 3 motores

Arduino Lab 10 Interface com um touch capacitivo, controlador GT801 Goodix

Usando Display Gráfico com C18 e C30

Eletrônica de Potência I Prof. André Fortunato rev. 1-11/2011

Curso de robótica 2. Novos conceitos de programação

ARDUÍNO PROCEDIMENTOS BÁSICOS

DK105 GROVE. Temperatura e Umidade. Radiuino

SENSOR ULTRASSOM HC-SR04

Discentes: Weverton Lima e Juliete Souza Disciplina: Sistemas Embarcados Professor Orientador: Ilton Barbacena

Tutorial Proteus 02. Como simular o Arduino no Proteus ISIS utilizando a biblioteca "Emulater" por João Vitor

MSP430 Lab 05 Biblioteca básica para comunicação com o Display do Nokia5110

Introdução. O que é o Arduino?

Robótica com Arduino

Por Fernando Koyanagi

Por Fernando Koyanagi

Para começar, iremos visualizar todas as informações no monitor serial. Portanto, a primeira montagem que devemos fazer na protoboard é a seguinte:

Arduino. Conectores, Fonte, USB, LEDs. Compilador, Bibliotecas, Editor, Burner

Por Fernando Koyanagi

Programação em Linguagem C

Tutorial Conhecendo o Fritzing (parte 1)

INF1005: Programação 1. Arquivos. 02/05/10 (c) Paula Rodrigues 1

Física Computacional. Prof. Luiz Claudio F. de Souza Luizclaudiofs.blogspot.com

Scaling Up Inclusion: Robotics, a STEM focused Project. Centro de Formação de Associação de Escolas Paços de Ferreira, Paredes e Penafiel

Atividade de laboratório 003. Prof: Carlos Eduardo de Brito Novaes 29 de abril de Alunos RA Nome Curso Semestre

Projeto para interligação do Teclado Matricial 4X3 o módulo PIC PCI-208 Princípio de Funcionamento:

Programas exemplo Gráficos no Dev-C++ usando a biblioteca BGI

Estrutura de Condição. Professor Pedro

Entrada de dados com botões

C:\Users\House\Desktop\fluxo.c 1: /****************************************************************************** 2: * Objetivo: Este projeto visa

EL08D - MICROCONTROLADORES

OpenCV, RaspiCam e WiringPi

O que você pode fazer com o Arduino

Placa de desenvolvimento USB AFSmartBoard utiliza PIC18F4550 da Microchip, microcontrolador com o Flash 32kb, 2048 bytes de memória RAM

Prof. Dr. Rafael Traldi Moura Escola Politécnica da Universidade de São Paulo Departamento de Engenharia Mecatrônica e de Sistemas Mecânicos

Disciplina: Laboratório de Fis26

Oficina de Programação utilizando a plataforma Arduino

Projeto No. 2 Potenciômetro

Transcrição:

Por Fernando Koyanagi

Objetivo Faremos um termômetro digital utilizando um NodeMCU Esp8266, um display OLED e um sensor de umidade e temperatura AM2302 DHT22. No display mostraremos a temperatura e a umidade lida pelo sensor e um gráfico em tempo real.

Display OLED 96 3

Sensor de Umidade e Temperatura AM2302 DHT22 4

Vídeo do projeto funcionando 5

EXEMPLO FUNCIONANDO Em www.fernandok.com Download arquivo PDF dos diagramas Download arquivo INO do código fonte 6

Montagem DHT22 NodeMCU OLED D8 CS D1 DC D3 RES D7 SDA D5 SCL 3,3v VCC GND GND NodeMCU DHT22 D6 Data GND GND 3,3v VCC VCC Resistor 220Ω Data Display OLED 96

Bibliotecas Adicione a seguinte biblioteca DHT sensor library para comunicação com o sensor de umidade e temperatura. Basta acessar Sketch >> Incluir Bibliotecas >> Gerenciar Bibliotecas...

Bibliotecas Adicione a seguinte biblioteca Adafruit-GFX-Library-master. Basta acessar Sketch >> Incluir Bibliotecas >> Gerenciar Bibliotecas...

Bibliotecas Adicione a seguinte biblioteca Adafruit Unified Sensor. Basta acessar Sketch >> Incluir Bibliotecas >> Gerenciar Bibliotecas...

Bibliotecas Adicione também a biblioteca Adafruit-SSD1331-OLED para comunicação com o display oled. Acesse o link e faça download da biblioteca. Descompacte o arquivo e cole na pasta de bibliotecas da IDE do arduino. C:/Program Files (x86)/arduino/libraries

Código Primeiramente vamos adicionar as bibliotecas que serão utilizadas em nosso código. #include <Adafruit_GFX.h> #include <Adafruit_SSD1331.h> // comunicação com o display oled #include <DHT.h> // comunicação com o sensor de umidade e temperatura

Definições Veremos abaixo as variáveis que utilizaremos durante o programa e a instância dos objetos. // pinagem para o NodeMCU ESP8266 #define sclk D5 #define mosi D7 #define cs D8 #define rst D3 #define dc D1 // definição das cores que serão utilizadas #define BLACK 0x0000 #define RED 0xF800 #define CYAN 0x07FF #define YELLOW 0xFFE0 #define WHITE 0xFFFF

Definições Veremos abaixo as variáveis que utilizaremos durante o programa e a instância dos objetos. #define DHTPIN D6 // pino de dados do DHT será ligado no D6 do esp #define DHTTYPE DHT22 // tipo do sensor // construtor do objeto para comunicar com o sensor DHT dht(dhtpin, DHTTYPE); // contrutor do objeto para comunicar com o display OLED Adafruit_SSD1331 display = Adafruit_SSD1331(cs, dc, mosi, sclk, rst); //variáveis que armazenarão os valores lidos da umidade e temperatura int umidade = 0; int temperatura = 0; //variável que armazenará o valor da coordenada Y para desenharmos uma linha de exemplo //que varia os valores de 1 em 1 int linhaexemplo = 20; int fator = 1; //indicará se somaremos ou subtrairemos uma unidade na variável linhaexemplo

Definições Veremos abaixo as variáveis que utilizaremos durante o programa e a instância dos objetos. //variável responsável por contar o número de leituras realizadas e indicador do valor no eixo X int leituraatual = 1; //definições do posicionamento dos eixos X e Y #define POS_X_GRAFICO 5 #define POS_Y_GRAFICO 1 #define ALTURA_GRAFICO 50 #define COMPRIMENTO_GRAFICO 90 //definição da coordenada onde escreveremos os dados de temperatura e umidade #define POS_X_DADOS 10 #define POS_Y_DADOS 54

Setup Na função setup(), faremos a inicialização da variável dht, que é responsável pela comunicação com o sensor de umidade e temperatura, inicializaremos também a variável display que utilizaremos para se comunicar com o display oled. void setup() { //inicializa o objeto para comunicarmos com o sensor DHT dht.begin(); } //inicializa o objeto para comunicarmos com o displa OLED display.begin();...

Setup Vamos a seguir configurar algumas características do display e desenhar os eixos X e Y do gráfico. void setup() {... //pinta a tela toda de preto display.fillscreen(black); //os comandos a seguir irão desenhar as linhas dos eixos cartesianos na cor branca //drawfastvline(x,y,width,color) --> linha vertical display.drawfastvline(pos_x_grafico, POS_Y_GRAFICO, ALTURA_GRAFICO, WHITE); //eixo Y //drawfasthline(x,y,width,color) --> linha horizontal display.drawfasthline(pos_x_grafico, ALTURA_GRAFICO+1, COMPRIMENTO_GRAFICO, WHITE); //eixo X //desenha 2 pixels na tela bem no início do eixo Y para formar uma "seta" display.drawpixel(4,2,white); display.drawpixel(6,2,white); } //desenha 2 pixels na tela bem no final do eixo X para formar uma "seta" display.drawpixel(pos_x_grafico + COMPRIMENTO_GRAFICO-2, POS_Y_GRAFICO + ALTURA_GRAFICO-1,WHITE); display.drawpixel(pos_x_grafico + COMPRIMENTO_GRAFICO-2, POS_Y_GRAFICO + ALTURA_GRAFICO+1, WHITE);...

Setup Vamos a seguir desenhar em tela no lugar específico onde indicaremos o valor da Temperatura (T) e Umidade (U) em tempo real. void setup() {... //configura o tamanho do texto que escreveremos em tela display.settextsize(1); //configura a cor branca para o texto display.settextcolor(white); } //posiciona o cursor para escrita display.setcursor(pos_x_dados, POS_Y_DADOS); display.print("t: "); //indicando a temperatura display.setcursor(pos_x_dados+35, POS_Y_DADOS); display.print(" U: "); //indicando a umidade

loop Na função loop(), vamos recuperar a umidade e temperatura lida pelo sensor e escrever na tela no local específico. A cada intervalo de 5 segundos o valor é lido do sensor e escrito em tela. void loop() { //faz a leitura da umidade umidade = dht.readhumidity(); //faz a leitura da temperatura temperatura = dht.readtemperature(); //limpa a área onde colocamos o valor da temperatura e da umidade display.fillrect(pos_x_dados+15, POS_Y_DADOS, 20, 10, BLACK); display.fillrect(pos_x_dados+55, POS_Y_DADOS, 30, 10, BLACK); //reposiciona o cursor para escrever a temperatura display.setcursor(pos_x_dados+15, POS_Y_DADOS); display.settextcolor(red); display.print(temperatura); display.print((char)247); //escreve o símbolo de grau em tela } //reposiciona o cursor para escrever a umidade display.setcursor(pos_x_dados+55, POS_Y_DADOS); display.settextcolor(cyan); display.print(umidade); display.print("%");...

loop Vejamos abaixo como colocar os pontos no gráfico de acordo com a leitura.... //mapeando o valor das variáveis para colocar no gráfico //necessário pois, o display tem 64px de altura e separamos apenas 50 para o gráfico //umidade pode ser lida de 0-100 int temperaturamepeada = map(temperatura,0,100,0,50); int umidademapeada = map(umidade,0,100,0,50); //desenha na tela o ponto referente aos valores lidos do sensor display.drawpixel(pos_x_grafico+leituraatual, ALTURA_GRAFICO-temperaturaMepeada, RED); display.drawpixel(pos_x_grafico+leituraatual, ALTURA_GRAFICO-umidadeMapeada, CYAN); //desenha na tela o ponto referente a nossa linha de exemplo que fica variando display.drawpixel(pos_x_grafico+leituraatual, ALTURA_GRAFICO-linhaExemplo, YELLOW); //aqui controlamos nossa linha de exemplo, quando chega no valor máximo decrementamos o valor //até um valor mínimo determinado (no nosso caso 10), e a partir daí, incrementa novamente if(linhaexemplo == 50) fator = -1; //decrementa else if(linhaexemplo == 10) fator = 1; //incrementa //soma o valor do fator na linhaexemplo linhaexemplo += fator; //incrementa o contador de leituras realizadas leituraatual++;...

loop Por último vamos escrever nossa lógica para limpar a tela do gráfico assim que atingir seu limite void loop() {... //se a leitura chegar em 90 (número máximo do eixo X) então limparemos a área do gráfico para voltarmos a desenhar. if(leituraatual == 90) { //limpa a área toda do gráfico display.fillrect(pos_x_grafico+1, POS_Y_GRAFICO-1, COMPRIMENTO_GRAFICO, ALTURA_GRAFICO-1, BLACK); leituraatual = 1; //volta o contador de leitura para 1 (nova coordenada X) //como limpamos a área do gráfico, temos que redesenhar os pontos da seta que ficam na área interna do gráfico display.drawpixel(6,2,white); display.drawpixel(pos_x_grafico+comprimento_grafico-2,pos_y_grafico+altura_grafico-1,white); } } //intervalo de tempo para realizarmos nova leitura de dados delay(5000);

Em www.fernandok.com Download arquivo PDF dos diagramas Download arquivo INO do código fonte 22