LoginSignup
1
0

More than 1 year has passed since last update.

ESP8266のmicropythonからDFPlayer miniを使う

Last updated at Posted at 2021-09-23

はじめに

 本記事はESP8266を使って天気予報読み上げスピーカーが動くまでの過程を記録したものです。興味本位にmicropythonを使ったことで無用な苦労をしたので、同じ轍を踏まないように記録を公開します。

準備する

配線する

LOLIN D1mini の場合
(ESP-WROOM-02に変更予定)

image.png

no D1 mini Pin DFPlayer Pin 備考
1 5v vcc 3.3vだと動かなかったので5V
2 G GND
3 D4 RX ESP8266のUART1はTXのみ有効なためRXは未接続※1
4 - SPK_1 スピーカーに接続
5 - SPK_2 スピーカーに接続

※1 micropython公式のESP8266のUART (シリアルバス)を参照しました。

タクトスイッチはGPIO14(D5)に接続しました。

3. 確認する

配線が完了したらESP8266 + DFPlayerの動作確認をします。

3.1. ここからmicropython-defplayerminiをダウンロードします。

(lavronさんに感謝!)

3.2. ライブラリはEPS32用なので少しだけ手を加えます。

ESP8266のUARTはPIN指定ができないようです。

dfplayermini.py
        #self.uart = UART(1, 9600, tx=pin_TX, rx=pin_RX)
        self.uart = UART(1, 9600)

3.3. SDカードに適当なmp3ファイルもしくはwavファイルを入れてDFPlayerにセットします。

3.4. WebREPLのSend a File機能を使ってESP8266にdfplayermini.pyを転送します。

image.png

3.5. ファイル転送を確認します。

>>> uos.listdir()
['a.py', 'boot.py', 'dfplayermini.py', 'webrepl_cfg.py']    

3.6. ライブラリを動作させます。

pin番号を指定していますが先の修正でライブラリ内では未使用です。気になる場合はコンストラクタの引数を削除してください。

>>> from dfplayermini import Player
>>> music = Player(pin_TX=17, pin_RX=16)
>>> music.volume(15)
>>> music.play(1)

3.7. 無事音が鳴りました!

続いてタクトスイッチの動作を確認します。

3.8. WebREPLの挿入モードを使って下記のコードをコピペします。

Ctrl + Eで挿入モード開始、Ctrl + Dで保存終了です。

test.py
from machine import Pin

def test():
    p0 = Pin(14, Pin.OUT)
    while True:
        p0_v = p0.value()
        if p0_v == 1:
            print("ON")
            break

3.9. コピペした関数を実行します。

test.py
>>>                                                                             
paste mode; Ctrl-C to cancel, Ctrl-D to finish                                  
=== from machine import Pin                                                     
===                                                                             
=== def test():                                                                 
===     p0 = Pin(14, Pin.OUT)                                                   
===     while True:                                                             
===         p0_v = p0.value()                                                   
===         if p0_v == 1:                                                       
===             print("ON")                                                     
===             break                                                           
>>> test()                                                                      
ON                                                                              
>>>                                                                             

3.10. タクトボタンを押下するとOKを表示して終了します。

3.11. これでボードの確認は完了です。

これでハード側の準備は完了しました。

次回はソフトの作成についての記事を投稿します。

1
0
0

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
1
0