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

スマートバス停アーキテクチャモデル:自動日よけ機能搭載

必要な部品と用品

部品 説明 数量
Arduino Nano R3 建築模型用に小型で隠しやすい 1
サーボ MG995 ハイトルクサーボ(日よけの重さ対策) 1
フォトレジスタ(光センサー) 東向きと西向きに各1個 2
雨センサー 1
高輝度白色LED 6
抵抗 220Ω 3
ブレッドボード 1
ジャンパーワイヤー (オス-オス) 27
ねじ端子台 2
9V電池スナップ 2
9V電池 1
単3電池4本ホルダー MG995用外部電源 1

プロジェクト概要

前回のプロジェクト(V1.0)のアップグレード版です。

V1.0からの主な変更点:

V1.0はこちら。

コード

The Code (C/C++)

#include <VarSpeedServo.h>
VarSpeedServo servo;

int easternLight = 0;
int westernLight = 0;
int rainSensed = 0;
int sunshadePosition = 0;
int rainThreshold = 512;
int sunshadeExpanded = 120;
int sunshadeContracted = 60;
int ambientLighting = 0;
int turnOnLightsOn = 150;
int ledIntensity = 0;
int ledPower = 0;
int servoSpeed = 20;
bool debugging = false; // TRUEでシリアルコンソールにデバッグ出力

void setup() {
  pinMode(A4, OUTPUT); // バス停内部照明
  pinMode(A5, OUTPUT); // 街路灯
  pinMode(A1, INPUT);  // 西側光センサー
  pinMode(A2, INPUT);  // 東側光センサー
  pinMode(A3, INPUT);  // 雨センサー アナログ
  pinMode(2, INPUT);   // 雨センサー デジタル
  servo.attach(A0);
  servo.write(sunshadeContracted, servoSpeed, true);

  if (debugging) {
    Serial.begin(9600);
    Serial.println("*** DEBUGGING STARTED ***");
    Serial.println("-------------------------");
  }
}

void oya_mydebug(String text, int value = NULL) {
  if (debugging) {
    Serial.print(text);
    if (value) {
      Serial.print(" = ");
      Serial.println(value);
    } else {
      Serial.println(" ");
    }
  }
}

void expand_collapse(int easternLight, int westernLight) {
  if (easternLight <= westernLight) {
    // 日の出:東の光が弱い=朝
    oya_mydebug("It's sunrise");
    if (sunshadePosition != sunshadeExpanded) {
      servo.write(sunshadeExpanded, servoSpeed, true);
      oya_mydebug("Sunshade expanded");
    }
  }
  if (easternLight > westernLight) {
    // 日没:西の光が弱い=夕方
    oya_mydebug("Sun is going down");
    if (sunshadePosition != sunshadeContracted) {
      servo.write(sunshadeContracted, servoSpeed, true);
      oya_mydebug("Sunshade contracted");
    }
  }
}

void loop() {
  // センサー値取得
  easternLight = analogRead(A2);
  westernLight = analogRead(A1);
  rainSensed = analogRead(A3);
  sunshadePosition = servo.read();
  ambientLighting = (easternLight + westernLight) / 2; // 平均輝度

  oya_mydebug("easternLight", easternLight);
  oya_mydebug("westernLight", westernLight);
  oya_mydebug("rainSensed", rainSensed);
  oya_mydebug("sunshadePosition", sunshadePosition);
  oya_mydebug("ambientLighting", ambientLighting);

  // 雨判定
  if (rainSensed < rainThreshold) {
    // 雨の場合:日よけを展開
    oya_mydebug("It's raining...");
    if (sunshadePosition != sunshadeExpanded) {
      servo.write(sunshadeExpanded, servoSpeed, true);
      oya_mydebug("Sunshade expanded");
    }
  } else {
    // 雨でない場合
    oya_mydebug("It is not raining...");
    if (ambientLighting <= turnOnLightsOn) {
      // 暗くなってきたら照明点灯
      oya_mydebug("It's getting dark, turning on the lights");
      ledPower = ((turnOnLightsOn - ambientLighting) * 4);
      oya_mydebug("ledPower", ledPower);
      analogWrite(A5, ledPower);
      analogWrite(A4, ledPower);
      expand_collapse(easternLight, westernLight);
    } else {
      // 十分な日光あり
      oya_mydebug("A lot of sunshine, turn off lights");
      analogWrite(A5, 0);
      analogWrite(A4, 0);
      expand_collapse(easternLight, westernLight);
    }
  }

  if (debugging) {
    Serial.println("********************");
    Serial.println(" ");
    delay(5000);
  } else {
    delay(100);
  }
}

回路図

スマートバス停アーキテクチャモデル:自動日よけ機能搭載

製造プロセス

  1. ライオネル模型列車:歴史、製造、そして未来
  2. Google Coral Edge TPU搭載リサイクル仕分けロボット
  3. DIY自動列車制御システム – Arduinoで実現するシンプル・信頼性・カスタマイズ自在なレイアウト運転
  4. ArduinoとHC-SR04で作るサーボ駆動障害物回避ロボット
  5. Arduinoで作る全自動植物水やりシステム - 湿度センサーとRTCで最適制御
  6. サーボプレスの基礎:パワー、精度、効率を解説
  7. サーボモーターの仕組みと重要性
  8. 精度最大化:ギアヘッドとサーボモータの最適ペアリング
  9. ECS G86 主軸停止機能付きボーリングサイクル
  10. SPRINT 20 リニア旋盤:高精度部品向け高速自動旋削
  11. スマート消耗品で経常収益を最大化:機械メーカーのゲームチェンジャー