0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

東京メトロ7000系の車掌スイッチを動かす

Posted at

東京メトロ7000系の車掌スイッチと思われる車掌スイッチ(S5138R)を入手できたので動かしてみましょう。

車掌スイッチとは?

電車のドアを開閉するスイッチになります。
東京メトロ7000系の車掌スイッチは開ボタンにマイクロスイッチがついており、これを廻すことでドアチャイムが鳴るようになっています。
また、開ボタン、閉ボタンを押す事で、開閉のLEDが点灯するようになっています。
今回は、これを実装していきましょう。
車掌スイッチ
内部

構成

今回は以下の図のような構成にしました。
image.png
マイコンボードはRaspberryPiPicoをMP3プレイヤーは入手しやすいDFR0534 MP3ボイスモジュールを使用しました。

動作内容

今回は、以下のような動作をするようにします。

  • 開ボタン:開ランプ点灯
  • 閉ボタン;閉ランプ点灯
  • マイクロスイッチ:ドアチャイム鳴動

使用ドアチャイム

ドアチャイムはフリー素材として公開されている
横浜急行こうきち さん 【フリー素材】鉄道ドアチャイム集
https://www.youtube.com/watch?v=2ydbACsZaGo
こちらから7000系のドアチャイムを切り出して使いました。

配線

今回入手した車掌スイッチは2つのコネクタが使用されていました。
image.png
コネクタは以下のように配線されていました。
image.png
今回は、以下の組み合わせにしました。

  • 開スイッチ:L124-L125
  • 閉スイッチ:D3109-D374
  • マイクロスイッチ:271-D02
  • 開LED:DL260
  • 閉LED:D07
  • 東武LED:D362a
  • GND:260G
    コネクタ

マイクロスイッチのテスト

最初にRaspberryPiPicoの入力とマイクロスイッチを接続、DFR0534とは適当なピンを接続します。
RaspberryPiPicoとDFR0534はUARTで接続します。

プログラム

スイッチでUARTの送信をするプログラムを作ります。

#define microsw 15

void setup() {
  Serial2.setTX(8);
  Serial2.setRX(9);
  Serial2.begin(9600);
  Serial.begin(115200);
  pinMode(microsw, INPUT_PULLUP);
  volume(0x1E);//Volume settings 0x00-0x1E
}

void loop() {
  if (digitalRead(microsw) == LOW)  {
    Serial.println("microsw");
    play(0x01);//Play the specified audio:0x01-file0001
  }
  delay(250);
}

void play(unsigned char Track){
  unsigned char play[6] = {0xAA, 0x07, 0x02, 0x00, Track, Track + 0xB3};
  Serial2.write(play, 6);
}
void volume( unsigned char vol){
  unsigned char volume[5] = {0xAA, 0x13, 0x01, vol, vol + 0xBE};
  Serial2.write(volume, 5);
}

開閉スイッチを実装する・・・その前に

次に、開閉スイッチに応じてランプが点灯するようにします。
しかし、残念な事に、開ボタンを押す際に
マイクロスイッチが
ON⇒OFF⇒開ボタン⇒マイクロスイッチON⇒OFF
となる為、開ボタンを押すたびにドアチャイムが流れてしまいます。
この為、プログラムを修正しましょう。
MP3モジュールの状態を確認するプログラムを実装しましたが、うまく動かないので
Delayでストップさせ、開閉スイッチの入力を割込みで動かす事にしました。

#define microsw 15
#define leftsw 13
#define rightsw 19
#define lightled 25
volatile int state = LOW;

void setup() {
  Serial2.setTX(8);
  Serial2.setRX(9);
  Serial2.begin(9600);
  Serial.begin(115200);
  pinMode(microsw, INPUT_PULLUP);
  pinMode(leftsw, INPUT_PULLUP);
  pinMode(rightsw, INPUT_PULLUP);
  pinMode(lightled, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(leftsw), leftled, FALLING);
  attachInterrupt(digitalPinToInterrupt(rightsw), rightled, FALLING);
  volume(0x1E);//Volume settings 0x00-0x1E
}

void loop() {
  if (digitalRead(microsw) == LOW)  {
    Serial.println("microsw");
    play(0x01);//Play the specified audio:0x01-file0001
  }
  delay(2000);
}

void play(unsigned char Track){
  unsigned char play[6] = {0xAA, 0x07, 0x02, 0x00, Track, Track + 0xB3};
  Serial2.write(play, 6);
}
void volume( unsigned char vol){
  unsigned char volume[5] = {0xAA, 0x13, 0x01, vol, vol + 0xBE};
  Serial2.write(volume, 5);
}

void leftled() {
  Serial.println("leftled");
  digitalWrite(lightled,HIGH);
}
void rightled() {
  Serial.println("rightled");
  digitalWrite(lightled,LOW);
}

開閉スイッチを実装する

それでは開閉ランプを点灯できるようにします。
残念ながら東武のランプは100V仕様の為、点灯できません。
開閉ランプは24Vで点灯します。
今回もトランジスタアレイのTBD62783で24Vの+を出力します。
これで開閉ボタンを押すとランプが点灯するようになります。
なお、今回MP3モジュールはソフトウェアシリアルで動作させています。
制御基板

ソフトウェアシリアルの詳細はこちら

Raspberry Pi PicoのPIOを使った例

プログラム

#include <SoftwareSerial.h>
#define microsw 10
#define opensw 11
#define closesw 18
#define openled 9
#define tobuled 8
#define closeled 7
SoftwareSerial SoftSerial(12, 13);
volatile int state = LOW;

void setup() {
  pinMode(microsw, INPUT_PULLUP);
  pinMode(opensw, INPUT_PULLUP);
  pinMode(closesw, INPUT_PULLUP);
  pinMode(openled, OUTPUT);
  pinMode(tobuled, OUTPUT);
  pinMode(closeled, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(opensw), openop, FALLING);
  attachInterrupt(digitalPinToInterrupt(closesw), closeop, FALLING);
  Serial.begin(115200);
  SoftSerial.begin(9600);

  volume(0x1E);//Volume settings 0x00-0x1E
}

void loop() {
  if (digitalRead(microsw) == LOW)  {
    Serial.println("microsw");
    play(0x01);//Play the specified audio:0x01-file0001
    delay(2500);
  }
  delay(100);
}

void play(unsigned char Track){
  unsigned char play[6] = {0xAA, 0x07, 0x02, 0x00, Track, Track + 0xB3};
  SoftSerial.write(play, 6);
  Serial.println("Sound");
}
void volume( unsigned char vol){
  unsigned char volume[5] = {0xAA, 0x13, 0x01, vol, vol + 0xBE};
  SoftSerial.write(volume, 5);
}

void openop() {
  Serial.println("Open Door");
  digitalWrite(openled, HIGH);
  digitalWrite(tobuled, HIGH);
  digitalWrite(closeled, LOW);
}
void closeop() {
  Serial.println("Close Door");
  play(0x01);//Play the specified audio:0x01-file0001
  digitalWrite(openled, LOW);
  digitalWrite(tobuled, LOW);
  digitalWrite(closeled, HIGH);
}

動作の様子

閉ボタンを押すとドアチャイムと閉ランプが
開ボタンを押すと開ランプが
マイクロスイッチを廻すとドアチャイムが鳴るようになりました。
DSC_0617 (2).JPG

東武[開]表示灯

東武[開]表示灯を100Vで点灯させた様子です。
DSC_0651 (2).JPG

車掌操作板を作る

今回は引き続き、ユニット化します。
まずは、3Dプリンタでベースを作りモジュール化しました。
モジュール
次に、DIYショップで買った木板を用意しました。
素地では綺麗では無いので軽く塗装し、必要な箇所に穴やニゲを作りました。
木板
最後に組み立てて完成です。
DSC_0643 (3).JPG

製作動画

0
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?