ころちゃん

木工・電子工作・IoT・作ったもの試したものを記事にして投稿してます

Lチカで信号機を動かす

time 更新日:  time 公開日:2020/01/24

Lチカで信号機を動かす

ラズパイのLチカを応用して、カプセルトイの信号機を制御してみました。

利用したカプセルトイ

ミニチュア灯器コレクション、「歩行者用信号灯器 赤信号点灯」バージョンです。

裏にスイッチがあり、赤のみ点灯する仕組みでした。説明書を見ると、「電池は使いきりで交換できません。電池がなくなった場合、普通のマスコットとしてご使用ください。」と記載がありました。確かに電池交換はできなさそうな構造。

信号機の加工

ラズパイのLチカで動作するように加工します。赤しか点灯しないので、緑のLEDを追加します。電池で動作しているのを、ラズパイのGPIOピンから給電して点灯するよう改造します。

カバーを取り外しばらします。中はボタン電池と抵抗、赤色LEDが入ってました。

緑部分をカッターとやすりを使いくりぬきました。型抜きガムみたですね。

赤色LED部分を外します。抵抗は200Ωの物がついてました。GPIOの出力電圧は3.3V。赤色LEDのVfが1.8Vだとすると、(3.3-1.8)÷200Ω=0.0075A(7.5mA)。この200Ωの抵抗はそのまま使うことにしました。

続いて緑色LEDの加工。電流制限抵抗はパーツケースにあった20Ωを使います。

利用したLEDはこちら。3mm砲弾型です。

電池部分に、緑のLEDを配置、電源供給用の3Pコネクタにはんだ付けしました。左からGND(赤緑共通)、赤用、緑用です。

裏側。スイッチ部分の穴を大きくして、3Pコネクタをはめ込みました。

動作確認

電池で点灯試験。緑の色合いがいい感じ。

ラズパイ動作環境

利用したハードウェアとインストールしたOSは以下の通りです。

ハードウェア Raspberry Pi Zero W
OS Raspbian Stretch with desktop:November 2018

sshでログインできる環境と、GPIOピンを接続するコネクタの準備を予めしておきます。

セットアップの参考

物理結線

利用するピンは、39番、37番、35番の3つです。

下記図のように、39番(GND)を信号機のGNDへ、37番(GPIO26 )を信号機の赤へ、35番(GPIO19)を信号機の緑へそれぞれ接続します。

ジャンパワイヤーで接続したところです。

シェルで動かす

ラズパイにSSHでログインします。

ログイン後、GPIOピンの状態を確認します。

gpio readall

利用するGPIO19とGPIO26の状態が、「IN」の状態になっているのが確認できます。

GPIOとして利用する設定、及びLED側へ出力する設定「OUT」にする設定をします。

echo 19 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio19/direction
echo 26 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio26/direction

点灯させてみます。

//赤を点灯
echo 1 > /sys/class/gpio/gpio26/value
//緑を点灯
echo 1 > /sys/class/gpio/gpio19/value

実際の歩行者用信号灯器を参考に、点滅パターンを考えてみました。下記パターンを無限ループさせます。

while :
do
echo 1 > /sys/class/gpio/gpio19/value
echo 0 > /sys/class/gpio/gpio26/value
sleep 10
echo 0 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 1 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 0 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 1 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 0 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 1 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 0 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 1 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 0 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 1 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 0 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 1 > /sys/class/gpio/gpio26/value
sleep 10
done

パターン通り点滅しました。止める時は「Ctrl」⁺「C」です。

起動時に動作するように設定

ラズパイ起動時に、信号機が動作するようにしてみます。

ホームディレクトリ(/home/pi)にファイル「signal_on.sh」を作成します。

sudo nano signal_on.sh

「Ctrl」⁺「O」で保存、Enterで確定です。

#!/bin/sh
echo 19 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio19/direction
echo 26 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio26/direction
while :
do
echo 1 > /sys/class/gpio/gpio19/value
echo 0 > /sys/class/gpio/gpio26/value
sleep 10
echo 0 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 1 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 0 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 1 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 0 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 1 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 0 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 1 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 0 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 1 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 0 > /sys/class/gpio/gpio19/value
sleep 0.3
echo 1 > /sys/class/gpio/gpio26/value
sleep 10
done

このままでは実行できないので、実行権限(755)を追加します。

sudo chmod 755 signal_on.sh

起動時に「signal_on.sh」が起動するように、/etc/rc.localに下記のように書き込みます。

sudo nano /etc/rc.local

exit 0の前に追記します。

sh /home/pi/signal_on.sh

exit 0

ラズパイを再起動すると、パターン通り点滅します。

割り箸で作った支柱。それらしくなった。

次回、iPadにて遠隔オンオフを試してみます。

sponsored link

down

コメントする




CAPTCHA


管理人

ころちゃん

木工で日用品を作ったり、懐中電灯を改造したりしてます。まだまだ素人ですがどうぞよろしく。

人気記事



sponsored link

アーカイブ