最終更新日
記事公開日

ミッキーが喋るトンネルを作ってみた

前回、ウッディーを喋らせてみたのですが「音が小さい」「音質が悪い」「背の低い車両では反応しない」と不完全なものだったので、今回はその改良版です。

トンネルを車両が通過すると、ミッキーのボイスが再生されます。

「 プラレール ディズニードリームレールウェイ トゥーンタウン ベーシックセット by タカラトミー 」に付属されているトンネルを使用しました。

プラレール ディズニードリームレールウェイ トゥーンタウン ベーシックセット by タカラトミー


作り方[目次]

配線・回路図

ミッキーが喋るトンネルの配線・回路図
ミッキーが喋るトンネル(部品実装面)
ミッキーが喋るトンネル(ケーブル配線面)

使用部品

  • 赤外線LED(OSI5FU5111C-40)
  • 赤外線受信センサ(OSRB38C9AA)
  • DFPlayer mini +  MicroSDカード
  • 電源用スイッチ
  • 電池ケース(単三×3)
  • Raspberry Pi Pico

プログラム(MicroPython)

# ハードウェア関連のライブラリを読み込み
from machine import UART, Pin, ADC, PWM

# 時間関連のライブラリを読み込み
import time

# UART初期設定(UART番号,クロックレート,TXピン:GP4/6Pin,RXピン:GP5/7Pin)
uart = UART(1,baudrate=9600,tx = Pin(4),rx = Pin(5))

# ステータス確認用LED
# ラズパイPico本体に搭載されているLEDを出力ピンに設定
led = Pin(25, Pin.OUT)

# 赤外線受信センサーに接続するピン
# アナログ-デジタル変換を行うピンをADC0(31Pin)に設定
sens = ADC(0)

# 赤外線LEDを接続するピン
# PWM制御を行うピンをGP17(22Pin)に設定
pwm = PWM(Pin(17, Pin.OUT))

# PWM制御の動作周波数(一秒間に繰り返す波の数)を設定
# 値を小さくすると感度が上がる
f = 60000
pwm.freq(f)

# 永久リピート
while True:
    
    # PWM制御にて、赤外線LEDからダミー信号を発信
    # PWMのデューティー比(HIGHとLOWの比率)をHIGH:1/3、LOW:2/3に設定
    # 16bitの最大値 = FFFF(16進数)= 65535(10進数)
    # 65535 * 0.3333 = 21845(10進数)= 5555(16進数)
    pwm.duty_u16(0x5555)
    
    # 赤外線LEDからのダミー信号を受信して、AD変換
    # read_u16() ・・・アナログ値を読込み[0-65535]の整数を返す関数
    # 16bit・2進数の最大値:1111111111111111 ⇒ 10進数の最大値:65535
    # 電圧の最大値3.3Vを「65535」に置き換え
    adc = sens.read_u16() * (3.3 / 65535)

    # 赤外線受信センサーがの値が1.0Vより小さいときに実行(赤外線通信を受信している)
    if adc > 1.0:
        
        # ステータス確認用LEDを点灯
        led.value(1)

    # 赤外線受信センサーがの値が1.0Vより大きいときに実行(赤外線通信が遮断されている)
    else:

        # DFPlayerに送るシリアルデータの作成(一曲ずつ再生)
        sdata = bytearray([0x7E,0xFF,0x06,0x01,0x00,0x00,0x02,0xEF])

        # DFPlayerにシリアルデータを送信
        uart.write(sdata)
        
        # ステータス確認用LEDを消灯
        led.value(0)
        
        # 赤外線通信を区切る
        pwm.duty_u16(0)
        
        # 音が途切れないよう音の長さ分だけ待機
        time.sleep(10)

解説

赤外線LEDから常に信号が出ていて、赤外線受信センサーは常にその信号を受信しています。

ところが車両が通過すると、LEDとセンサー間の通信が遮断され、通信が途絶えます。

その瞬間を検知して、音声が再生される仕組みになっています。

さらに詳しい解説は、下記の記事をご覧ください↓

【通過センサ】赤外線LEDで物体の通行を検知する – マイコン技術Navi

この記事のURLをコピー

メールアドレスは公開されませんのでご安心ください。また、* が付いている欄は必須項目となります。

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。

関連情報

運営者プロフィール
ガッタン

2歳の息子の為に買ったプラレールでしたが、気付いたら自分がドハマりしていました。美しく実用的なレイアウトを追い求める30代・2児の父。職業はIT系フリーランス。電子配線の業務経験あり。