2022年7月26日火曜日

esp32 isr,atp3011/bluetooth / isd 1820 recording / dfplayer

isr interrupt service routineにはハードウエア(GPIO,TouchSensor)とソフトウエア(WDT、タイマー)の4種あり

ESP32 GPIO割込みテスト - JH7UBCブログ (goo.ne.jp) 

ESP32の静電容量タッチインターフェースを使ってLチカ - Qiita

WatchdogTimer (fc2.com) はバグあり、 ARDUINO_ISR_ATTRはIRAM_ATTRに!

Arduino-ESP32 WatchDogTimer - Qiitaを参考に)

タイマー割り込みはバイブルのとおり

---------------------------------------------------------

atp3011:: esp32でも動いたぞ!Nanoでも動いた!

esp8266はだめ。ラズピコ、シャオピコもだめ。ラズパイは動くらしいがそのまま音でる!

Unocloneでは単三x3の補充が正解だった。単三x4はだめ!日本語LSIが壊れる!

#include <SoftwareSerial.h>

SoftwareSerial softSerial(2,4); //RX, TX

void setup() {

  softSerial.begin(9600);

  softSerial.print("?");

}

void loop() {

  softSerial.print("ie'----i\r");

  delay(2000);

}

----------------------------------------------------------

 ESP32とBluetoothSerialで文字列を送受信する - Qiitaで手軽にできた

つぎにdrv8835と連携してみる バイブルにあったarduino bluetooth controllerでも

操縦できた(bluetooth serial terminalはもちろんOKだった)

--------------------------isd 1820 recording module-----------------------

まず、電池 単三x3 で、Recで10秒録音して

ISD1820 レコーディングモジュールの使用方法 - 電子工作入門 - 基礎からの IoT 入門 (keicode.com) を参考にして、PLをHighにしてdelayかけてLowにすると再生できた

動作電圧も5v直接でOKだった(分圧必要と書いてあるが、Amazon商品で3~5Vだった)

ーーーーーーーーーdfplayer miniーーーーーーーーーーーーーーーーーー

小型のMP3プレーヤーモジュールDFPLayerの使い方 - hrendoh's tech memo

アルディーノ系の解説、未体験状態!

【Raspberry Pi Pico】UART通信でDFPlayerを制御する – マイコン技術Navi (ekit-tech.com) 

mp3/0001.mp3と命名しないと成功しなかった!ラズピコは3vから取ること!

xiao rp2040は5vからとること!

ーーーーーーラズピコの場合ーーーーーーーーーーーーーーーーーーー

from machine import UART,Pin

uart=UART(1,baudrate=9600,tx=Pin(4),rx=Pin(5))

sdata=bytearray([0x7E,0xFF,0x06,0x01,0x00,0x00,0x00,0xEF])

uart.write(sdata)

xiao rp2040は以下のようにUARTを変更して成功

# ハードウェア関連のライブラリを読み

from machine import Pin,UART

import utime


# UART初期設定(UART番号,クロックレート,TXピン:GP4/6Pin,RXピン:GP5/7Pin)

# uart = UART(1,baudrate=9600,tx = Pin(4),rx = Pin(5)) # for pico

uart = UART(0,baudrate=9600,tx = Pin(0),rx = Pin(1)) # for xiao


# シリアルデータの作成(一曲だけを再生)

#sdata = bytearray([0x7E,0xFF,0x06,0x01,0x00,0x00,0x00,0xEF]) # 01::next command


# 曲を指定して再生

# コマンド:0x03(ダイレクト再生コマンド)

# 下位ビット:0x02(曲の番号を指定)

sdata = bytearray([0x7E,0xFF,0x06,0x03,0x00,0x00,0x02,0xEF])

# シリアルデータの送信

uart.write(sdata)

utime.sleep(3)

# command : 0x0E is pause

sdata = bytearray([0x7E,0xFF,0x06,0x0E,0x00,0x00,0x00,0xEF])

uart.write(sdata)

utime.sleep(2)

# command : 0xD is playback

sdata = bytearray([0x7E,0xFF,0x06,0x0D,0x00,0x00,0x00,0xEF])

uart.write(sdata)

utime.sleep(3)

# command : 0x0A is standby

sdata = bytearray([0x7E,0xFF,0x06,0x0A,0x00,0x00,0x00,0xEF])

uart.write(sdata)

CMD Function Description     Parameters(16 bit)
0x01 Next 0x02 Previous 0x03 Specify tracking(NUM)     0-2999 0x04 Increase volume 0x05 Decrease volume 0x06 Specify volume                 0-30 0x07 Specify EQ(0/1/2/3/4/5) Normal/Pop/Rock/Jazz/Classic/Base 0x08 Specify playback mode (0/1/2/3) Repeat/folder repeat/single repeat/ rando

0x09 Specify playback         source(0/1/2/3/4) U/TF/AUX/SLEEP/FLASH 0x0A Enter into standby – low power loss 0x0B Normal working 0x0C Reset module 0x0D Playback 0x0E Pause 0x0F Specify folder to playback     1~10(need to set by user) 0x10 Volume adjust set     {DH=1:Open volume adjust }{DL: set volume gain 0~31} 0x11 Repeat play             {1:start repeat play}{0:stop play}

0 件のコメント:

コメントを投稿