산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

IoT 스마트 가로등: 지능형 에너지 절약 LED 시스템

부품 및 소모품

부품 수량
아두이노 우노 와이파이 Rev.2 1
LED (일반) 1
LDR 조도 센서 (1MΩ) 1
IR 근접 센서 (Digilent) 1
ESP8266 ESP-12E 1
1kΩ 저항 1

필요 도구

소프트웨어 및 서비스

프로젝트 배경

문제 정의

도시 가로등은 막대한 전력 비용을 차지합니다. 기존 나트륨 증기등은 전력 소모가 크고, 수동으로 저녁에 켜고 아침에 끄는 방식이라 켜진 시간 동안 에너지가 낭비됩니다. 인력도 많이 필요합니다.

기존 시스템 단점

제안 시스템 장점

핵심 구성 요소 설명

A. LDR 조도 센서 입력

광의존 저항(LDR)은 포토레지스터라고도 하며, 전자기 복사에 따라 저항값이 변하는 소자입니다. 인간 눈과 유사하게 빛에 민감합니다. 빛이 비치면 저항이 낮아져 전류가 흐르고, 프리셋 저항으로 감도 조절 가능. 아두이노에 아날로그 값 전달.

B. IR 근접 센서

적외선 방출/감지로 주변 물체 감지, 열 측정, 모션 감지 가능. 가시광선보다 파장이 긴 적외선(0.75~1000µm) 사용. IR 빛을 전류로 변환해 전압/전류 검출기로 감지. 아두이노에 디지털 신호 전달.

C. LED 조명

순방향 전압 인가 시 전자-정공 재결합으로 광자(빛) 방출. 주변 조도에 따라 밝기 자동 조절: 외부 조도 낮으면 최대 밝기, 높으면 낮춤.

D. ESP8266 와이파이 모듈

Espressif Systems의 Wi-Fi 내장 SoC 모듈로 IoT 임베디드 개발에 널리 사용. 주요 특징:

AT 명령어로 제어, UART 통신. ESP-01(8핀, 2GPIO), ESP-02/03/04 등 다양한 모듈 존재.

ESP8266-01 핀 설명

소스 코드

메인 제어 코드 (아두이노 우노 와이파이)

int smooth; int LDR; int threshold = 40; // 태양광 임계값
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; // 스무딩 계수

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() {
  // LDR 값 스무딩 (지수 이동 평균)
  smooth = smooth - (beta * (smooth - analogRead(A0)));
  delay(1);
  LDR = round(((float)smooth / 1023) * 100); // 0~100% 변환

  // 조도에 따른 밝기 결정
  if (LDR <= 40) brightness = 0;
  else brightness = map(LDR, 40, 100, 0, 255);

  checkSensors(); // 차량 감지 로직

  if (carPresent == 1) { // 1번 센서 구간 차량 있음
    ledState = 1;
    digitalWrite(led, HIGH); digitalWrite(led1, HIGH);
    analogWrite(led, brightness); analogWrite(led1, brightness);
  } else if (carPresent == 0) { // 1번 구간 차량 없음
    ledState = 0;
    digitalWrite(led, HIGH);
    analogWrite(led, ledState);
    if (carPresent1 == 1) { // 2번 구간 차량 있음
      ledState = 1;
      if (ledState == 1) {
        analogWrite(led1, brightness); analogWrite(led2, brightness);
      }
    } else { // 2번 구간도 차량 없음
      ledState = 0;
      digitalWrite(led1, HIGH); digitalWrite(led2, HIGH);
      analogWrite(led1, ledState); analogWrite(led2, ledState);
    }
  }

  // ThingSpeak 전송용 데이터 포맷
  String data = (String)ledState + "," + (String)brightness + ";";
  Serial.print(data);
  delay(100);
}

void checkSensors() {
  // 3개 IR 센서로 차량 위치 추적 (앞차/뒷차 구분)
  if (digitalRead(sensor1) == 0) { // 1번 센서 감지
    if (digitalRead(sensor2) == 1) carPresent = 1; // 2번 센서 아직 미도착
  } else if (digitalRead(sensor2) == 0) { // 2번 센서 감지
    if (digitalRead(sensor1) == 1) { carPresent = 0; carPresent1 = 1; } // 앞차 통과
    else { // 앞차 바로 뒤에 뒷차 있음
      analogWrite(led, brightness); analogWrite(led1, brightness); analogWrite(led2, brightness);
      digitalWrite(led, HIGH); digitalWrite(led1, HIGH); digitalWrite(led2, HIGH);
    }
  } else if (digitalRead(sensor3) == 0) { // 3번 센서 감지
    if (digitalRead(sensor2) == 1) { carPresent = 0; carPresent1 = 0; } // 모든 차 통과
    else { carPresent = 0; carPresent1 = 1; } // 2번 구간 아직 차 있음
  }
}

ESP8266 ThingSpeak 업로드 코드


#include 

const char* ssid = "ardent";
const char* password = "12345678";
String ledState = ""; String brightness = "";
char thingSpeakAddress[] = "api.thingspeak.com";
String writeAPIKey = "NUEBLW9OA58DLL4N"; // 본인 채널 쓰기 키로 변경
WiFiClient client;

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

void loop() {
  filterData();
  HTTPPost();
  delay(15000); // ThingSpeak 업로드 간격 (최소 15초)
}

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 = Serial.readStringUntil(';');
    int i1 = buffer.indexOf(',');
    ledState = buffer.substring(0, i1);
    brightness = buffer.substring(i1 + 1);
  }
}

회로도

브레드보드 회로도 이미지 제공.

제조공정

  1. 스마트 트래픽 라이트: IoT로 구동되는 적응형 가로등 시스템
  2. 스마트 홈 연동을 위한 다중 위치 온도 센서 시스템
  3. MotionSense: 아두이노와 ESP8266으로 만드는 스마트 침입 감지 시스템
  4. 3D 프린터 화재 예방: 스마트 센서 안전 시스템
  5. 아두이노 나노 기반 스마트 홈 식물 자동 급수 시스템
  6. 아두이노 기반 척력 자기 부상: 간단 회로 & DIY 가이드
  7. 정밀 핸들링을 위한 고급 원격 제어 그리퍼 로봇
  8. 고급 마이크로컨트롤러 랩: ESP32, 아두이노, PIC 및 센서 모듈 실습
  9. DIY POV 글로브: 아두이노 메가로 만드는 LED 잔상 아트
  10. CoroFence 열화상 감지기: Panasonic Grid-EYE & PIR 센서 IoT 연동