前回、DFPlayer miniをArduinoで動かしましたが、今回は8ピンのPIC12F1822で動かしました。
前回使ったDFRobotDFPlayerMiniというライブラリは使えないので、同ライブラリを参考にPIC用の関数を書きました。(今はソースコードにテストコードとかがゴチャゴチャ入っているので公開していませんが、それらを整理したら公開したいと思います。)
動作は前回のGetStartedと同じで、ボリュームを20にして、001~004の4曲を8秒間ずつ繰り返し再生するというモノです。
配線図
注意!:単三乾電池は2本ではなく3本使っています。
現在、MPLAB X IDE v.6.05で、最新版がv.6.20だったのでxc8(v.2.41→v.2.46)も合わせてアップデートしたら、MCC(MPLAB Code Configurator)も様子が変わっていて、今回使いたかったPIC12F1822の内蔵クロック8MHzのx4 PLLの設定が出来なくて32MHzでの動作が出来なかった(というか、わからなかった)。
また、今回、EUSARTが使いたかったけど、ボーレートの9600とか設定するのもレジスタでの設定しかなくて、EUSART_is_rx_ready()とかEUSART_is_tx_ready()等のサポート関数の生成もされなかったので、旧版に戻した。
音楽を再生する小さなデバイスを作りたくて、MP3の再生できる小さなモジュールを探していたら、DFPlayer miniというmicroSDカード内のMP3ファイルを再生できるモジュールを見つけたので、今回はそれを紹介します。
今回、購入したのはスピーカーが2つ付属したmicroSDカードスロット大の小さなモジュールです。他にもスピーカーの付属しない3つセットとかもありました。
KeeYees DFPlayer Mini MP3プレイヤー モジュール ミニ 音声モジュール 音源再生モジュール + マグネットスピーカー 磁石内蔵 8オーム 2W 金属シェル
使い方としては「DFPlayer mini」で検索するといろいろ出てきますが、Arduino IDEでライブラリを検索するとDFRobotoDFPlayerMiniというライブラリが出てきたので、それをインストールしました。
サンプルの中にGetStartedというのがあったので、それで試しました。
ソースコードの18行目に回路図のURLが書いてあったので、それを見ながらArduinoと接続して動かしました。
https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299#Connection_Diagram
変更点は、27行目のソフトシリアルに使うピンを(rx)10と(tx)11にして、さらに68行目の3000を8000にしました。
しばらくPICkit3を使っていなかったら、MPLAB X IDE v6.05で使えなくなった。そもそも、MPLAB X IDEもしばらく使っていなかったので、最新版(v6.05)をインストールして、xc8コンパイラもv2.41をインストール。
環境はM1 iMac 24インチにVentura 13.3.1で、USB Aポートが無いので、直に接続できないのでAnker製のUSBハブ経由で接続。以前は、Intel iMacだったのでUSB Aポートがあって直挿ししてた。
macOSのシステムレポートのUSBにはPICkit3が出ているので、USB的には認識されていると思うのだけど、MPLAB X IDEから認識されていないっぽい。
USBに挿すタイミングとMPLAB X IDEを起動するタイミングをいろいろ変えても認識されないので、PICkit3をUSBに接続したままでiMacを再起動して、MPLAB X IDEを起動すると認識された。
ただし、一度でもUSBから抜くと再度iMacを再起動しないと認識されないので、とても不便。
抵抗分圧(抵抗器による分圧回路)は、直列につないだ2つの抵抗器の両端にかかる電圧を、2つの抵抗器の全体と片方の抵抗値の比率により分割する回路の事です。
下の回路図のようにVinにかけた電圧がR1, R2の抵抗器によって分圧されてVoutに出てくるというものです。
次にR1, R2によってどのようにVoutが決まる計算式は次のようになります。
抵抗分圧の応用として、抵抗値の変化を電圧の変化へ変換するというものがあります。
これはセンサーの一部には抵抗値が変化するものがあり、そのセンサーの値をマイコンで扱う場合、マイコンには電圧を読み取る機能があるので、この抵抗分圧回路に組み込んで使います。
今回はR2にボリューム(可変抵抗器)を使います。
Google スプレッドシートでR1とR2の比率を1:10, 1:5, 1:2, 1:1の4つのパターンのR2の変化によるVoutをグラフにしてみました。
1:10はVoutのレンジが広いですが、最初の部分での変化が大きいです。
1:5, 1:2はVoutのレンジもまあまあ確保できて、変化が穏やか。
1:1はVoutのレンジが半分しか無いですが、変化が直線に近いです。
どのくらいのレンジでVoutが欲しいか、またセンサーの取りうる値の範囲、またどの部分の変化を重視するかでR1:R2を決めるといいと思います。
動画はこちらです。
PIC16F1508の4つのPWMにLEDをつないだ状態のICSP回路図をKiCadで描いた。
複数のLEDの光量を制御したいと思って、プロトタイプとしてはArduinoを使うけど、最終的にはPICで実装したいと思って、PWMを4つくらい使えるPICを探していたらPWMが4つあるPIC16F1508を見つけたのでメモ。
Amazonで見つけた超安いUSB接続のロジアナを買ってみた。
sigrokとPulseViewで使えるとの事(どちらも使った事が無いです)。
sigrokのWikiページ のDownloadsからMac OS XのPulseViewとsigrok-cliの両方をダウンロードしてApplicationsフォルダーにコピーした。sigrokはcliと書いてあったので、PulseViewを起動した。
以前からAmazonでちょいちょい出てた熱収縮はんだスリーブを買ってみました。最近、ちょっとケーブルの端子を変換するためにケーブル内部のケーブルをつなぐような事が多かったので。しかし、これを買ってからはそういう事案がなくてまだ試せてません。
以前、探していて見つからず諦めていたALUがちょっと前からヤフオクに出ていたので、「どうしようかなぁ?」と迷っていて様子を見ていました。今更入手しても使わないし。
一時期は8個セットも出ていたので、「あるところにはあるもんだ」と気楽に構えてました。
しかし、いつの間にか8個セットが無くなっていたので、とりあえず売っていた4個セットを入札して無事に落札できました。
まぁ、すぐに使うわけじゃないけど、持っているのと持っていないのとでは大違いなので、まぁ、無事に入手できて良かったなと。