父子家庭ではないですが、家事・育児に翻弄されててなかなか製作もブログ更新も出来ずにいて、ちびちび書いております。
前回、新幹線のお弁当箱で車内チャイムを再生する物を製作しましたが、今回は至って普通の感じにおもちゃのMP3プレーヤーを作ってみました。
最近3歳になったばかりのうちの子がアンパンマンの歌を歌い出すようになったので、自分で好きな音楽を再生して歌えるように、「アンパンマン」の4曲と「おかあさんといっしょ」で流れる3曲の計7曲再生できるおもちゃです。
1. 前回からの新機能
大したことではないですが、以前製作した新幹線バージョンは遊んだら電源を切らずに放置するため、3日もすればバッテリー切れとなることが多く、今回はオートパワーオフ機能を追加してみることにしました。
今回もMP3プレーヤーは、DFPlayer miniを使用します。以前2つ買って1つ余っていたのでね。
このDFPlayerは、16番ピンがBUSYという機能になっていて、音楽が再生中だとLow、停止中だとHighになるようなので、ここを監視してパワーオフのトリガーとしました。
オートパワーオフ機能のタイマーとしてはタイマーIC NE555を使う手もあるのでしょうが、今回は勉強も兼ねてPICを使います。Mac使いの私としては、PIC書き込みで色々試行錯誤する羽目になりましたが、こちらは後日記載したいと思います。
2. 回路設計
電源部
今回もリチウムイオン電池18650を使って、充電して使えるものを設計。そのため充電・保護回路とDC-DCステップアップコンバータを組み込みます。
充電回路はAmazonで購入した充電モジュールを利用して、DC-DCコンバータは昔ダイソーで買った乾電池で充電できる充電器からモジュールを取り出し使いました。
DC-DCコンバータは最初HT7750Aを使おうと考えてましたが最大出力電流が200mAで、DFPlayerは再生音量によっては200mAを超える場合もあるため断念しました。しかも部品調達や製作時間を考えると110円で済んでしまうのは、ダイソー様々です。
タイマー部
今回はできるだけ消費電力を抑えたく、充電モジュールとステップアップ回路を分け、ステップアップ回路前にタイマースイッチで電源ON/OFFコントロールしています。
タイマースイッチ部は、MOSFETフォトリレーを使用して、電磁リレーのような回路にしました。
電源SWをONにするとPICが起動し、最初にフォトリレーをONにして、DFPlayerに電源供給します。
同時にPICではタイマーを開始し、5分間再生ボタンを押されなければフォトリレーをOFFにし、PICはスリープモードへ。
ウェイクアップ機能は持たせず、単純に電源SWをOFF/ONして再立ち上げとしました。
DFPlayer部
音源7つと曲停止ボタンを含め、8つのボタンを用意。
抵抗の使い方は前回と変えて、3kΩを直列接続して抵抗値を変える方法にしてみました。わざわざ6kとか9kとか買い揃えるより、3k使い回しの方が節約?なので。
以上の設定で、以下の回路図としました。
3. PICプログラミング
タイマーは555を使えば良いのだろうけど、今回はPICの勉強も兼ねてプログラミングでやってみました。初めてのPICはLチカから入るのが定番?の様だけど。
以前からPICを使いたくてPICKIT4を購入していたんだけど、Macとの相性が悪いのかデバイスの認識はするけど色々やってみても書き込みが上手く出来ないことがやってみて分かったこと。今回は仕方なくWindowsで対処しましたが、いつかMacで完結したい。(Mac(IntelCPU&BigSur)でPICKIT4使う方法をご存知の方いればコメントにアドバイスください。)
PICは12F683を使用。GPIO設定としては、GP0にフォトリレーのON/OFF制御、GP2にDFPlayerの状態チェックとしました。
以下プログラム
/*
* File: main.c
* Author: WingBIRD
*
* GPIO
* GP0:フォトカプラ (1)anode pin
* GP2:DFPlayer busy pin
*
* TIMER0割り込み
* クロック1MHz→1クロック1μs→1命令サイクル4μs
* プリスケーラレートを16とする
* TMR0割り込み 4μs×16×256=16.384ms
* 1000ms÷16.384ms=61.035回数えると1s
*
* Created on December 22, 2020, 12:23 PM
*/
// PIC12F683 Configuration Bit Settings
#pragma config FOSC = EXTRCCLK // Oscillator Selection bits (EXTRC oscillator: External RC on RA5/OSC1/CLKIN, CLKOUT function on RA4/OSC2/CLKOUT pin)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON // Power-up Timer Enable bit (PWRT enabled)
#pragma config MCLRE = OFF // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD)
#pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled)
#pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled)
#pragma config BOREN = ON // Brown Out Detect (BOR enabled)
#pragma config IESO = OFF // Internal External Switchover bit (Internal External Switchover mode is disabled)
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled)
// INCLUDE Files
#include <xc.h>
#include <pic.h>
#include <pic12f683.h>
#define _XTAL_FREQ 1000000
static unsigned int PC_OFF_count; //300回(300s)数えるカウンタ
static unsigned int count; //16,384msを61回(1s)数えるカウンタ
//TMR0割り込み処理
static void __interrupt Timer0 (void){
INTCONbits.T0IF = 0; // TMR0割り込み禁止
count++;
//countが61(1s)
if (count == 61){
count = 0; //countを0に戻す。
PC_OFF_count++; // 300sカウンタ
}
}
void main(void) {
OSCCON = 0b01000000;
ANSEL = 0b00000000;
TRISIO = 0b00001100;
CMCON0 = 0b00000111;
GPIO = 0;
GP0 = 1; //Pin7をON: フォトカプラをON
OPTION_REG = 0b10000011; // プリスケーラは16
TMR0 = 0x00; //TMR0は0からスタート
INTCONbits.T0IE = 1; // TMR0割り込み許可
INTCONbits.GIE = 1; // すべての割り込み許可
count = 0;
PC_OFF_count = 0;
while(1){
//DFPlayerのbusy pinがbusy(Low)の場合(=GP2)、PC_OFF_countを0にしスリープカウントダウンをリセットする
if (GP2 == 0){
PC_OFF_count = 0;
}
//無操作で5min経ったらスリープ
if (PC_OFF_count == 300){
PC_OFF_count = 0;
GP0 = 0;
INTCONbits.GIE = 0;
asm("sleep");
}
}
}
4. 音源
音源は「アンパンマン」と「おかあさんといっしょ」のCDから7曲拝借。
「パジャマでおじゃま」を歌いながら着替えをすると、自分で服を着ようとするのでパパリクエストで強制収録しました。
5. 組み立て
部品一覧
部品の殆どは、いつもお世話になっている秋月電子通商さんで入手してます。
部位 | 部品 | 個数 | メモ |
---|---|---|---|
電源部 | 18650バッテリー | 1 | |
18650電池ケース | 1 | ||
充電・保護回路モジュール | 1 | Amazonで以下製品を購入 | |
スライドスイッチ | 1 | ||
タイマー部 | 12F683 | 1 | |
セラミックコンデンサー 0.1uF | 1 | ||
抵抗 220Ω | 2 | ||
フォトリレー TLP241A | 1 | ||
DC-DCコンバータ | 1 | ダイソーで購入した乾電池式充電器からGet! | |
音源部 | DFPlayer mini | 1 | 以前購入していた最後の1個 |
抵抗 3kΩ | 5 | ||
抵抗 33kΩ | 1 | ||
プッシュスイッチ | 8 | ||
スピーカ 8Ω0.5W | 1 | ||
その他 | ケース | 1 | 小学生の時に購入し30年近く未使用だった物 を再利用。黄ばんでいたので塗装しました。 |
組み込み&ケース加工
ケースの開口部を考えながら各部品の配置を考えるのは楽しいところですが、いつもながら開口作業は面倒くさい上、綺麗に穴が開けられないのが悩みです。あと、どうやって基板等を固定するか、内部のネジ受けの部分も上手く設定できない。
なので、今回は全てグルーガンで止めてやりました。
高温タイプのホットボンドだと結構頑丈になるようで、ホットボンドを垂らす付近のケース部分を少しサンドペーパーで荒らして固定。あまりにも汚いので、すみませんが内部の写真公開は無しとさせていただきます。
コメント