Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Iluminação Pública Inteligente IoT: Sistema LED Eficiente com Arduino

Componentes e Materiais

Componente Quantidade
Arduino UNO WiFi Rev.2 1
LED (genérico, representa luminária) 1
LDR 1MΩ (Sensor de Luz) 1
Sensor IR Proximidade (Detecta veículos) 1
Módulo ESP8266 ESP-12E 1
Resistor 1kΩ 1

Ferramentas Necessárias

Software e Serviços

Sobre o Projeto

Definição do Problema

Iluminação pública é uma das maiores despesas das cidades. Lâmpadas de vapor de sódio consomem muita energia. O sistema manual (ligar ao entardecer, desligar ao amanhecer) desperdiça energia no período de transição. A automação reduz desperdício, custos e mão de obra.

Desvantagens do Sistema Atual

Vantagens do Sistema Proposto

Funcionamento dos Sensores

A. LDR (Sensor de Luz)

Resistor dependente de luz (fotorresistor): resistividade varia com radiação eletromagnética. Funciona como olho humano. Feito de semicondutor de alta resistência. Princípio: fotocondutividade — condutividade aumenta quando luz é absorvida. Luz no LDR → resistência cai → corrente flui → sinal ao Arduino. Preset ajusta sensibilidade.

B. Sensor IR (Proximidade)

Instrumento eletrônico que detecta características do ambiente emitindo/detectando radiação infravermelha. Mede calor e detecta movimento. Ondas IR não são visíveis (espectro: 0.75–1000µm). Luz IR → corrente elétrica → detector de tensão/corrente → sinal ao Arduino.

C. LED (Luminária)

Diodo emissor de luz: emite fótons quando polarizado diretamente. Fonte de luz de dois terminais. Intensidade emitida relaciona-se com luz ambiente: pouca luz externa → LED brilho máximo; muita luz externa → LED apagado/dim.

D. ESP8266 (Comunicação IoT)

SoC Wi-Fi da Espressif para IoT. Recursos: Wi-Fi 2.4GHz (802.11 b/g/n, WPA/WPA2), 16 GPIO, I²C, ADC 10-bit, SPI, I²S, UART, PWM. CPU 32-bit RISC Tensilica Xtensa L106 @ 80/160 MHz. 64KB boot ROM, 64KB RAM instrução, 96KB RAM dados. Flash externo via SPI. Módulo transceiver de baixo custo para endpoints IoT. Comunicação via comandos AT (UART, baud rate definido).

Pinagem ESP8266-01 (8 pinos, 2 GPIO, antena PCB)

Código: Parte 1 — Arduino UNO WiFi Rev.2 (Controle Local)

int smooth; int LDR; int threshold = 40; // limiar luminosidade
int brightness = 0; int ledState = 0;
int sensor1 = 11; int sensor2 = 8; int sensor3 = 9;
int led1 = 5; int led = 6; int led2 = 2;
int carPresent = 0; int carPresent1 = 0;
float beta = 0.65; // fator suavização leitura LDR

void setup() {
  Serial.begin(115200);
  pinMode(sensor1, INPUT); pinMode(sensor2, INPUT); pinMode(sensor3, INPUT);
  pinMode(led, OUTPUT); pinMode(led1, OUTPUT); pinMode(led2, OUTPUT);
}

void loop() {
  // Suavização exponencial da leitura LDR
  smooth = smooth - (beta * (smooth - analogRead(A0)));
  delay(1);
  LDR = round(((float)smooth / 1023) * 100); // 0-100%

  // Mapeia luminosidade para PWM (0-255)
  if (LDR <= 40) brightness = 0;
  else brightness = map(LDR, 40, 100, 0, 255);

  checkSensors(); // Verifica sensores IR (veículos)

  if (carPresent == 1) { // Carro no setor 1
    ledState = 1;
    digitalWrite(led, HIGH); digitalWrite(led1, HIGH);
    analogWrite(led, brightness); analogWrite(led1, brightness);
  } else if (carPresent == 0) {
    ledState = 0;
    digitalWrite(led, HIGH);
    analogWrite(led, ledState);
    if (carPresent1 == 1) { // Carro no setor 2
      ledState = 1;
      if (ledState == 1) {
        analogWrite(led1, brightness); analogWrite(led2, brightness);
      }
    } else if (carPresent1 == 0) {
      ledState = 0;
      digitalWrite(led1, HIGH); digitalWrite(led2, HIGH);
      analogWrite(led1, ledState); analogWrite(led2, ledState);
    }
  }

  // Envia dados para ESP8266 via Serial
  String data = (String)ledState + "," + (String)brightness + ";";
  Serial.print(data);
  delay(100);
}

void checkSensors() {
  // Lógica de 3 sensores IR para detectar presença de veículos em sequência
  if (digitalRead(sensor1) == 0) { // Carro no sensor 1
    if (digitalRead(sensor2) == 1) carPresent = 1; // Ainda não chegou no sensor 2
  } else if (digitalRead(sensor2) == 0) { // Carro no sensor 2
    if (digitalRead(sensor1) == 1) { carPresent = 0; carPresent1 = 1; }
    else { // Carros em ambos sensores
      analogWrite(led, brightness); analogWrite(led1, brightness); analogWrite(led2, brightness);
      digitalWrite(led, HIGH); digitalWrite(led1, HIGH); digitalWrite(led2, HIGH);
    }
  } else if (digitalRead(sensor3) == 0) { // Carro no sensor 3
    if (digitalRead(sensor2) == 1) { carPresent = 0; carPresent1 = 0; }
    else { carPresent = 0; carPresent1 = 1; }
  }
}

Código: Parte 2 — ESP8266 (Envio para ThingSpeak)


#include 

const char* ssid = "ardent";
const char* password = "12345678";
String ledState = "";
String brightness = "";
char thingSpeakAddress[] = "api.thingspeak.com";
String writeAPIKey = "NUEBLW9OA58DLL4N"; // SUBSTITUA PELA SUA CHAVE
WiFiClient client;

void setup() {
  Serial.begin(115200);
  connectWifi();
}

void loop() {
  filterData();
  HTTPPost();
  delay(15000); // ThingSpeak aceita 1 update/15s
}

int connectWifi() {
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(2500);
  }
}

void HTTPPost() {
  if (client.connect(thingSpeakAddress, 80)) {
    String PostData = "api_key=" + writeAPIKey;
    PostData += "&field1=" + ledState;
    PostData += "&field2=" + brightness;
    client.println("POST /update HTTP/1.1");
    client.println("Host: api.thingspeak.com");
    client.println("Connection: close");
    client.println("Content-Type: application/x-www-form-urlencoded");
    client.println("Content-Length: " + String(PostData.length()));
    client.println();
    client.println(PostData);
    client.stop();
  }
}

void filterData() {
  if (Serial.available()) {
    String buffer = "";
    buffer = Serial.readStringUntil(';');
    int i1 = buffer.indexOf(',');
    ledState = buffer.substring(0, i1);
    buffer.remove(0, i1 + 1);
    brightness = buffer;
  }
}

Esquemático

Conexões: LDR no A0, 3 sensores IR nos pinos 8,9,11, 3 LEDs (PWM) nos pinos 2,5,6. Serial (pinos 0/1) conecta ao ESP8266 (TX/RX cruzados).

Considerações Finais

Processo de manufatura

  1. Semáforo Inteligente: Iluminação Pública Adaptativa com IoT
  2. Sistema Multi-Posição de Sensores de Temperatura para Integração em Casa Inteligente
  3. MotionSense: Detecção Inteligente de Intrusão com Arduino e ESP8266
  4. Prevenção de Incêndio em Impressoras 3D: Sistema de Segurança com Sensor Inteligente
  5. Sistema Inteligente de Rega de Plantas com Arduino Nano
  6. Levitação Magnética Repulsiva com Arduino: Circuito Simples e Guia DIY
  7. Robô Garra Controlado Remotamente para Manipulação de Precisão
  8. Laboratório Avançado de Microcontroladores: ESP32, Arduino, PIC e Módulos de Sensores
  9. Globo POV DIY: Arte LED com Arduino Mega – Persistência da Visão
  10. CoroFence Detector Térmico: Sensor PIR Avançado & Integração IoT