FC2ブログ

名張市つつじが丘おもちゃ病院

三重県名張市つつじが丘でおもちゃの病院を開院しています。年中無休で修理は無料、部品代のみ実費です。おもちゃの修理依頼は tutuji@cb4.so-net.ne.jp へメールにてご連絡下さい。なお、宅配便での受け付けは行っておりません。このブログにはおもちゃ等の修理事例やツール製作などを載せていきます。故障診断や修理方法の改善等、ご意見をお寄せ下さい。

電子オルゴール+音声再生のファームウェア Ver5_4

電子オルゴール+音声再生のファームウェア Ver5_4の紹介

【前振り】
お馴染みの 電子オルゴール+音声再生 の話だが、またまたバージョンアップしたので改めて紹介する。
Ver5_3に対してVer5_4では下記の改善を施した。

・外部のI2Cフラッシュメモリに格納した音声データを再生する機能を追加した。

・従来の電子オルゴール、およびPICプログラムメモリ上に置いた音声データの再生とコンカレントに実行可能。

現在のところPICのみのサポートで、LPCへの移植は未実施。より大きなメモリを持つデバイスが出回るのを待つ。

【I2Cフラッシュメモリのサポート】
①I2Cフラッシュメモリは、秋月で安価に購入できるMicrochip社の24FCxxx系を利用する。

②24FCxxx系のブロックサイズが512kbitであることから、音声データのサンプル数は最大64kとする。8kspsの場合は8秒間になる。複数ブロックの連続再生はサポートしない。

③再生終了時コールバック関数を利用して、複数の音声データを切れ目なく再生することが可能。

④ランダムアクセスでは時間が掛かり過ぎるので、同時には1音声しか再生できない。

【コスト評価】
①必要メモリが32kバイトであれば16F1705(2015年秋月価格110円)が最も廉価な選択になる。

②64kバイトなら18F28K20(2015年秋月価格210円)が廉価だ。16F1823(2015年秋月価格100円)と24FC512(2015年秋月価格140円)の組み合わせではコストメリットが無い。複数デバイスで構成するのは、相互乗り入れしている路線で初乗り運賃を二重に払わされるようなものだ?

③更に大きなメモリ容量が必要な場合は、I2Cフラッシュメモリを並べるよりもSDメモリカードを利用する方がコストパフォーマンスがよい。しかし、到底100円台には収まらないのでおもちゃ修理の手段としては欠格してしまう。

④現時点での結論としては、ジャンク品でもない限りI2Cフラッシュメモリを使った音声再生はおもちゃ修理には不適当ということになる。

【演奏音のサンプル】
効果音、女性の声、ワンワンと電子オルゴールをコンカレント実行したサンプルの再生音はこれ

【旧バージョン】
当記事では 旧バージョンの Ver5_3 に対する改善点を紹介している。Ver5_3 については ここ を参照

【I2Cフラッシュメモリとの接続】
①24FCxxxとはSDAとSCLの2本の信号線で接続する。それぞれの信号線は外部プルアップする必要がある。プルアップ抵抗は、24FCxxxのDC特性がLレベル出力2.1mA@Vcc2.5V、3.0mA@Vcc4.5Vであること、および信号波形の実測結果から4.7kΩとした。
下図がプルアップ抵抗が10kΩのときのI2C信号波形で、上段の黄色がSDA、下段の赤色がSCLを示す。10kΩでも実用レベルになっている。
電子オルゴール+音声再生Ver5_4(I2C波形)

回路図
電子オルゴール+音声再生Ver5_4(回路図)
②24FCxxxの読み書きは既定の手順で行う必要があるので、その手順に合致するステートマシンをファームウェア上に構築する。このステートマシンはオルゴールエンジン内部での取り扱いとして、コールバック関数とAPI関数には意識させない。

③I2C通信は随時の中断はできない。スレーブからの読み込みステートではSDAの制御権がスレーブ側にありマスタ側からは制御できないため、ストップコンディションを実行できない。そのため、中断要件が発生したときは中断要求を表示するのみに留め、ステートマシンの中断可能なステートにて中断要求の表示をポーリングしてストップコンディションへ遷移するように作り込んだ。

④コールバック関数とAPI関数の機能とインタフェースは従前と同等とした。

⑤音声データのインデックスには、I2Cフラッシュメモリに送る コマンド+アドレス のフィールドを設けた。これでI2Cライン上の複数のデバイスを識別している。

【サンプルコード】
電子オルゴール+音声再生Ver5_4音声インデックスサンプルコード

電子オルゴール+音声再生Ver5_4サンプルコード

【おもちゃ修理への応用】
①本システムの開発プロジェクト一式は ここから ダウンロードできる。おもちゃ病院でのおもちゃ修理に自由に使うことができる。但し、使用した結果について、当方は一切の責任を負わない。

②おもちゃの修理に本システムを応用する場合、アプリケーションは個々のおもちゃに特化して開発し、その中に本システムを組み込んでAPI関数とコールバック関数を使うことで利用する。

③アプリケーション開発ができない場合は、当方へファームウェア全体の開発を依頼することができる。 「故障したICやマイコンの代替品をお作りするサービス」 を参照
スポンサーサイト
  1. 2015/11/26(木) 21:00:47|
  2. 電子オルゴール+音声
  3. | コメント:0

JOZENラジコン(TOYOTA86)プロトコル

JOZENのラジコンが今まで見たことが無いICを使用していたので、プロトコルを調査した。
本調査では、静岡おもちゃ病院様から送信機のエンコード信号の音声データを提供していただいた。

【分析方法】
特筆すべきは、フリーのサウンド編集ツールを使って信号波形を分析したことだ。
エンコード信号のWAVファイルをサウンド編集ツールに喰わせて、信号波形を表示した。
時間の尺度が表示されるので、パルス巾を定量的に把握できる。
全体では数10秒もの長い信号波形の一部をズームアップして分析することができ、オシロスコープよりも使い勝手が良かった。

なお、エンコード信号の採取は送信機のエンコーダ出力ピンから直接取出しても構わないし、検波出力信号でもよい。後者については 「超簡易版ラジコンモニターの製作」 を参照。

【調査対象】
調査対象のラジコンはメーカーがJOZENであること以外は詳細が不明である。
車体には「TOYOTA86」の表示があった。
詳細が不明のため、商品特定の一助として画像を掲載しておく。

①外観
JOZENラジコン(TOYOTA86)プロトコル外観1

JOZENラジコン(TOYOTA86)プロトコル外観2

JOZENラジコン(TOYOTA86)プロトコル外観3

②送信機内部
JOZENラジコン(TOYOTA86)プロトコル送信機1

JOZENラジコン(TOYOTA86)プロトコル送信機2
エンコーダICの刻印は「KN」

③受信機内部
JOZENラジコン(TOYOTA86)プロトコル受信機1

JOZENラジコン(TOYOTA86)プロトコル受信機2

JOZENラジコン(TOYOTA86)プロトコル受信機3
デコーダICの刻印も「KN」

【プロトコル分析】
①フレーム列の開始部分
JOZENラジコン(TOYOTA86)プロトコル分析1
・先頭に開始フレームが1個ある。
・その後は通常フレームが周期90msで繰り返される。

②通常フレームの構成
JOZENラジコン(TOYOTA86)プロトコル分析2
・通常フレームは プリアンブル・リーダー・データ(16ビット) で構成されている。
・プリアンブルは H0.42ms・L0.42ms が4回
・リーダーは H3.4ms
・データ(コード値0)は L0.82ms・H0.82ms
・データ(コード値1)は L0.82ms・H1.64ms

③開始フレームの構成
JOZENラジコン(TOYOTA86)プロトコル分析3
・プリアンブルとリーダーは無く、14ビットのデータのみである。
・コード値は 00000010010101 固定値である。

④エンコード波形とコード
・送信機の操作によるエンコード信号は通常フレームに含まれている。

・前進:0100000010010101
JOZENラジコン(TOYOTA86)プロトコル分析4

・後退:1000000011010101
JOZENラジコン(TOYOTA86)プロトコル分析5

・右:0001000001100101
JOZENラジコン(TOYOTA86)プロトコル分析6

・左:0010000001110101
JOZENラジコン(TOYOTA86)プロトコル分析7

・前右:0101000010100101
JOZENラジコン(TOYOTA86)プロトコル分析8

・前左:0110000010110101
JOZENラジコン(TOYOTA86)プロトコル分析9

・後右:1001000011100101
JOZENラジコン(TOYOTA86)プロトコル分析10

・後左:1010000011110101
JOZENラジコン(TOYOTA86)プロトコル分析11

⑤フレーム列の終了部分
JOZENラジコン(TOYOTA86)プロトコル分析12
・送信機の操作が終わった(前進・後退・右・左のどの操作も無くなった)ときには停止フレームが送信される。
・停止フレームは通常フレームに続いて、19回繰返される。
・繰返し周期は通常フレームと同じ90ms。

・停止:0000000001010101
JOZENラジコン(TOYOTA86)プロトコル分析13

⑥評価
先頭の4ビットで車の制御が可能なように見える。
JOZENラジコン(TOYOTA86)プロトコル分析14
  1. 2015/11/16(月) 14:30:18|
  2. レガシーラジコン
  3. | コメント:0

電子オルゴール+音声再生のファームウェア Ver5_3

電子オルゴール+音声再生のファームウェア Ver5_3の紹介

前振り
お馴染みの 電子オルゴール+音声再生 の話だが、またまたバージョンアップしたので改めて紹介する。
Ver5_2に対してVer5_3では下記の改善を施した。

・ピッチベンドの表現を可能とした。これによりパトカーや消防自動車のサイレン音等を電子オルゴールで演奏できるようになった。

・音源のサンプル数の精度を大幅に改善した。これによって電子オルゴールの音質向上が図れる。

キッズドライバー(アガツマ)ハンドルの修理」で上記の機能が必要になったため、今回の機能改善を行った。

ピッチベンド機能
①効果音の発声はPCM録音再生方式が一般的だが、廉価な1チップマイコンでは内蔵メモリが少ないため音声データを保持することができない。音声データに比べて音符データは遥かに小さいので、効果音を音符で表現することで電子オルゴールで効果音を演奏させる方式を採る。

②パトカーや消防自動車のサイレン音は音高が滑らかに変化する。そのため、音符をピッチベンド演奏することでサイレン音を表現することができる。

③音高の表現は、音源サンプルデータを読み出すスピードを制御することで行っている。そのスピードを滑らかに変化させればピッチベンド演奏になる。

④ピッチベンドの波形をPCMデータで保持し、それを順番に読み出して、その値で音源サンプルデータの読み出しスピードを加減することでピッチベンド機能を実現した。

音源サンプル数の高精度化
①例えばA(ラ)の音高は440Hzだが、これを44.1kspsでサンプリングすると1サイクルのサンプル数は100.23個になり、整数以下の端数が生じる。これをサンプル数100として処理すると音源波形の繰り返し時に不連続性を生じ、音質の低下を招く。

②通常音源のサンプル数は100程度になるので、整数以下の端数を切り捨てることで1%の誤差が生じることになる。

③サンプル数を管理する変数を、PICでは1バイト拡張して1/256の精度、LPCでは2バイト拡張して1/65536の精度に改善した。

演奏音のサンプル
パトカー、消防自動車および救急車のサイレン音を電子オルゴールで演奏したサンプルの再生音はこれ

旧バージョン
当記事では 旧バージョンの Ver5_2 に対する改善点を紹介している.。Ver5_2 については ここ を参照

曲目の一覧
現在保有している曲データは以下の通りである。ここに無い曲は需要の都度作成して行く予定だ。

アイアイ
あめふりくまのこ
あわてんぼうのサンタクロース
アンニローリ
アンパンマンたいそう
アンパンマンマーチ
いとまきのうた
ウィンターワンダーランド
おつかいありさん
おべんとうばこのうた
おめでとうクリスマス
おんまはみんな
かいばのおけで
かえるの合唱
きらきら星
げんこつ山のたぬきさん
こどもとこどもがけんかして
サンサンたいそう
サンタが町にやってきた
ジングルベル
ぞうさん
ダビデの村の
チューリップ
トーマスのテーマ
トーマスのテーマ2
どんぐりころころ
トントンひげじいさん
ハローキティ
ひいらぎ飾ろう
ブンブンブン
ミッキーマウスマーチ
むすんでひらいて
メリーさんの羊
もみじ

鬼のパンツ
犬のおまわりさん
幸せなら手をたたこう
山の音楽家
車のクラクション音
手をたたきましょう
小さな世界
証城寺の狸囃子
森の熊さん
星に願いを
星の世界
清しこの夜

大きな栗の木の下で
大きな古時計
蝶々
冬のうた
猫ふんじゃった
勇気100%
勇気リンリン

おもちゃ修理への応用
①本システムの開発プロジェクト一式は ここから ダウンロードできる。おもちゃ病院でのおもちゃ修理に自由に使うことができる。但し、使用した結果について、当方は一切の責任を負わない。

②おもちゃの修理に本システムを応用する場合、アプリケーションは個々のおもちゃに特化して開発し、その中に本システムを組み込んでAPI関数とコールバック関数を使うことで利用する。

③アプリケーション開発ができない場合は、当方へファームウェア全体の開発を依頼することができる。 「故障したICやマイコンの代替品をお作りするサービス」 を参照
  1. 2015/11/03(火) 17:26:16|
  2. 電子オルゴール+音声
  3. | コメント:0

プロフィール

大泉茂幸

Author:大泉茂幸
名張市つつじが丘おもちゃ病院
名張市つつじが丘南3番町129
tutuji@cb4.so-net.ne.jp
090-5534-6494
連絡は上記のメール、またはSMSでお願いします。

子どもの頃から趣味は電子工作一筋でやってきました。理科離れが進む中で科学技術に興味を持つ子どもが少しでも増えて行くことを願って、子ども達に電子工作の活動の場を提供しています。

1981年からおもちゃ病院の活動を始め、2014年に三重県名張市への移住を機に「つつじが丘おもちゃ病院」を開院しました。自分でおもちゃを設計し製作する【おもちゃ工房】と、マイコンを応用した電子工作を楽しむ【マイコンクラブ】も併設しています。新規参加メンバーを募集しています。

当ブログで公開している技術情報や成果物のご利用および再配布はフリーです。読者様の技術活動のお役に立てば幸いです。ご利用いただいた結果や感想等を記事へのコメントやメールでフィードバックしていただけると有難いです。

カテゴリ

おもちゃ修理技術 (83)
¦ ・電子オルゴール+音声 (28)
¦ ・音声再生・録音再生 (4)
¦ ・2.4GHzラジコン (29)
¦ ・レガシーラジコン (12)
¦ ・赤外線リモコン (4)
¦ ・RFID (3)
¦ ・タッチセンス (3)
ツール製作 (22)
¦ ・プログラマー (15)
¦ ・USB-シリアル変換 (3)
¦ ・その他のツール (4)
修理事例 (149)
¦ ・マイコン換装 (69)
¦ ・電子・電気修理 (58)
¦ ・メカ修理 (22)
製作記事 (4)
PIC開発 (4)
おもちゃ病院 (8)
ドクター研修会 (2)
未分類 (2)

最新記事

最新コメント

月別アーカイブ

訪問者数

検索フォーム

RSSリンクの表示

リンク

このブログをリンクに追加する

ブロとも申請フォーム

この人とブロともになる

QRコード

QR