Esquema de ligação de uma protoboard

Esquema de pinos do Arduino UNO

Esquema de pinos do Arduino Nano

Esquema de pinos do ESP32 (Modelo com 30 pinos)


Plataforma para simulação de projetos: https://www.tinkercad.com/
Código para Arduino Nano / Uno com medidor de temperatura, pressão atmosférica, umidade e um display.
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_BMP280.h>
#include "DHT.h"
/*
---- DHT22 ---
ALIMENTAÇÃO: 3.3V (APESAR DE FUNCIONAR COM 5V, NO MODULO NAO FUNCIONOU) E GND
PINO NA PLACA: D4
PINO NO ARDUINO: D2
---- DHT11 ---
ALIMENTAÇÃO: 3.3V (TEORICAMENTE FUNCIONA COM 5V TAMBÉM ) E GND
PINO NA PLACA: DATA
PINO NO ARDUINO: D4
---- BMP280 ----
ALIMENTAÇÃO: 3.3V E GND
PINO NA PLACA: SDA, SLC
PINO NO ARDUINO: A4, A5
---- DISPLAY SSD1306 128X32 ----
ALIMENTAÇÃO: 3.3V (PADRÃO SEM MÓDULO) OU 5V E GND
PINO NA PLACA: SDA, SLC
PINO NO ARDUINO: A4, A5
*/
#define DHT11_PIN 4
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 32
DHT dht11(DHT11_PIN, DHT11);
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, -1);
Adafruit_BMP280 bmp;
//variáveis que serão utilizadas
bool DISPLAY_FALHOU = false;
float bmp280_temp, bmp280_press, dth11_humi, dth11_tempC;
void setup() {
Wire.begin();
Serial.begin(9600);
dht11.begin(); // initialize the DHT22 sensor
if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
Serial.println("Display não encontrado");
DISPLAY_FALHOU = true;
}
if (!bmp.begin(0x76)) {
Serial.println("BMP280 não encontrado");
DISPLAY_FALHOU = true;
}
display.clearDisplay();
}
void loop() {
bmp280_temp = bmp.readTemperature();
bmp280_press = bmp.readPressure() / 100.0;
// read humidity
dth11_humi = dht11.readHumidity();
// read temperature as Celsius
dth11_tempC = dht11.readTemperature();
display.setTextColor(SSD1306_WHITE);
//verifica se teve falha no display
// if(DISPLAY_FALHOU == true){
// }
display.clearDisplay();
display.setTextSize(2);
display.setCursor(0, 0);
display.print( (bmp280_temp), 1);
display.setTextSize(1);
display.print(" C ");
display.setTextSize(2);
display.print(dth11_humi, 0);
display.println(" %");
display.setTextSize(2);
display.setCursor(0, 16);
display.print(bmp280_press, 0);
display.println(" hPa");
display.display();
delay(5000);
//// check if any reads failed
if (isnan(dth11_humi) || isnan(dth11_tempC)) {
display.setTextSize(2);
display.clearDisplay();
display.setCursor(0, 0);
display.println("Falha ");
display.println("DHT 11");
display.display();
delay(3000);
}
// desliga
display.ssd1306_command(SSD1306_DISPLAYOFF);
delay(3000);
// liga novamente
display.ssd1306_command(SSD1306_DISPLAYON);
}