工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

IoTスマート街路灯:インテリジェントで省エネなLEDシステム

部品と材料

Arduino UNO WiFi Rev.2×1
LED(汎用)×1
LDR(光依存抵抗)1MΩ×1
Digilent IR近接センサー×1
Espressif ESP8266 ESP-12E×1
抵抗 1kΩ×1

必要な工具と機械

アプリとオンラインサービス

プロジェクト概要

問題定義

前述の通り、多くの都市で街路灯は都市の巨大な支出の一つです。ナトリウム蒸気ランプは消費電力が大きく、莫大なコストがかかります。街路灯にかかる費用を国家の他の開発に回せます。現在は手動システムで、夕方に点灯、朝に消灯という運用です。このため点灯・消灯の間に大量のエネルギーが浪費されます。これが自動システムへの移行の主な原因の一つで、電力浪費が少なく、多くの金銭的コストを削減できます。既存システムのその他のデメリットは以下の通り。

既存システムのデメリット

提案システムのメリット

光センサーによる自動化で、エネルギー節約と安全確保だけでなく、さらなるメリットがあります。

A. LDR入力

光依存抵抗(LDR)はフォトレジスタとも呼ばれ、抵抗率が電磁放射の関数となるデバイスです。つまり人間の目と同様に光に敏感なデバイスです。フォトコンダクター、導電セル、単にフォトセルとも呼ばれます。高抵抗の半導体材料で作られています。LDRは光伝導の原理で動作します。光伝導とは、物質が光を吸収すると伝導率が低下する光学現象です。しかし、光がLDRに当たると抵抗が下がり、電流が最初のトランジスタのベース、次に2番目のトランジスタのベースへ流れます。プリセット抵抗で抵抗を上げ下げして、回路の感度を調整できます。LDRがArduinoに応答を送ります。

B. IRセンサー

赤外線センサーは、赤外線を放射および/または検出することで周囲の特定の特性を検知する電子機器です。物体の熱を測定し、動きを検知することもできます。赤外線は人間の目に見えません。電磁スペクトルでは、赤外線は可視光より波長が長く、マイクロ波より短い領域です。赤外線領域は約0.75〜1000µmです。IRセンサーは赤外線を検出し、電流に変換、電圧または電流検出器で検知します。IRセンサーがArduinoに応答を送ります。

C. LED

発光ダイオード(LED)は、活性化すると光を発する接合ダイオードです。両端に電圧をかけると、電子がLED内部の正孔と再結合し、光子の形でエネルギーを放出して光ります。つまり、2端子の半導体光源です。

LEDは照明システムを表し、発光量は環境光量と直接関係します。外部光が少なければLEDは最大強度で発光し、逆もまた然り。

D. ESP8266

ESP8266はEspressif Systemsが開発したWi-Fi搭載のSoC(System on Chip)モジュールです。主にIoT(モノのインターネット)組み込みアプリケーションの開発に使用されます。

ESP8266の機能:

Tensilica Xtensa L106ベースの32ビットRISC CPUを採用、80MHz動作(オーバークロックで160MHz)。64KBブートROM、64KB命令RAM、96KBデータRAM。外部フラッシュメモリはSPIでアクセス可能。

ESP8266モジュールは低コストのスタンドアロン無線トランシーバーで、エンドポイントIoT開発に使用できます。

ESP8266モジュールと通信するには、マイクロコントローラーがATコマンドセットを使用する必要があります。マイクロコントローラーは指定ボーレートのUARTでESP8266-01モジュールと通信します。

多くのサードパーティ製造業者がこのチップベースの様々なモジュールを生産しているため、ピン構成も様々です:

ESP8266-01モジュールピン説明

コード

IOT smart light(メイン制御コード)

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() {
  smooth = smooth - (beta * (smooth - analogRead(A0))); delay(1);
  LDR = round(((float)smooth / 1023) * 100);
  if (LDR <= 40) brightness=0;
  else { brightness = map(LDR, 40, 100, 0, 255); }
  
  checkSensors();
  
  if (carPresent == 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) {
      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);
    }
  }
  
  String data = (String)ledState+","+(String)brightness+";";
  Serial.print(data);
  delay(100);
}

void checkSensors() {
  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 if (digitalRead(sensor1) == 0) { // 後続車あり
      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 if (digitalRead(sensor2) == 0) { carPresent = 0; carPresent1 = 1; }
  }
}

Code part 2(ThingSpeak送信コード)

#include 
// ネットワーク情報
const char* ssid = "ardent";
const char* password = "12345678";
String ledState = "";
String brightness = "";
char thingSpeakAddress[] = "api.thingspeak.com";
String writeAPIKey = "NUEBLW9OA58DLL4N"; // ご自身のチャネルWrite APIキーに変更
WiFiClient client;

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

void loop() {
  filterData();
  HTTPPost();
  delay(15000); // ThingSpeakへの投稿頻度制御(削除する場合はさらに遅延を追加)
}

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[0];
    buffer.remove(0, i1 + 1);
    brightness = buffer;
  }
}

回路図

回路図画像を参照してください。

製造プロセス

  1. スマート信号機:IoTで実現する適応型街路灯
  2. スマートホーム連携向けマルチポジション温度センサーシステム
  3. MotionSense: ArduinoとESP8266で作るスマート侵入検知システム
  4. 3Dプリンター火災予防:スマートセンサーセーフティシステム
  5. Arduino Nanoで構築するスマートホーム植物自動水やりシステム
  6. Arduinoで作る斥力式磁気浮上装置: シンプル回路とDIYガイド
  7. 高度なリモートコントロールグリッパーロボット: 精密ハンドリング向け
  8. 高度なマイクロコントローラー実験:ESP32、Arduino、PIC、センサーモジュール
  9. DIY POVグローブ - Arduino Megaで作るLED球体ディスプレイ
  10. Arduino Yunとシャーププラズマクラスター連携 スマート空気清浄機システム
  11. CoroFenceサーマルディテクター:Grid-EYE & PIRセンサー搭載IoT体温監視