先日行われた『ゆかり公式生放送を見る忘年会』にてこんなレシートを作ってみました。
割烹着ゆかりさんのお店...割烹ゆかり。そのままですね。
会場が和室だったので「それならやるしかないやん!」って思いつきでサーマルプリンタを買って使ってみたところ案外使えました。
買ったのはコレ↓
Aibecy POS-5805DD USBサーマルプリンタ
USB接続だけで良いならもう少し安いものがありますが、Bluetoothに対応していたこととバッテリ内蔵、あと見た目がこっちのほうが良いという点で選びました。
型番で調べてみると一応日本語も印刷できるっぽい、程度の認識で購入したので思い通りに印刷できるようになるまで苦労するorダメかもと思っていました。
ところがWindows用ドライバを使ってみるとInkscapeから直接印刷できて拍子抜けしてしまう程簡単でした。導入まで一癖あるのでメモを残しておきます。
USB接続の場合、サーマルプリンタの電源をONにして、PCに接続。デバイスマネージャーに"プリンターが接続されていません"と表示されることを確認します。
Bluetooth接続の場合、プリンタの電源を投入。まずはペアリングを行います。
BluetoothPrinterを選択。PINは1234
Bluetooth設定を開いて方向が発信のCOMポート番号を確認。この場合COM5。
amazon商品ページ説明欄からドライバをダウンロードして実行。
Portsに確認したCOMポート番号を選択して、OSはWindows10、Select PrinterはPOS-58を選択してBegin Setupをクリック。
そしてCOM(232C)接続...
電圧を確認したところTTLレベルではなく、±5.4Vが出ているので232Cレベル変換が必要です。
そしてピンアサインは下記の通り。マニュアルに載っておらず、調査したものです。
1:GND
2:TXD(プリンタからの出力)
3:RXD(プリンタへの入力)
4:???
1番にGNDがあることによって、USBとCOM両方を同じPCのUSBポートに接続すると+5VとGNDがショートするという恐ろしい仕様になっております。
通信仕様はボーレート115200bps,データ8bit,ストップ1bit,パリティなし
FRDM-K64Fボードと232Cレベル変換ICを介して接続してみたところうまく動きました。
使わせて頂いたソースはこれ。
https://os.mbed.com/users/aross34/code/Thermal_HelloWorld/
AdafruitThermal.cppの29行目のボーレートを115200に変更して動作しました。
ただし一部のコマンドが動いていないようで、真ん中あたりのLarge,Midium,smallはそれぞれ文字の大きさが変わるようですが、変わっていません。
Android端末からBluetoothで印刷する場合、ペアリングを行うところまでは普通のbluetoothデバイスと同じです。印刷はサーマルプリンタ用アプリを使用します。
画像を印刷するだけであれば iPrint が簡単かつ綺麗に印刷できました。
2017年12月28日木曜日
2017年12月27日水曜日
ルータをRT-AC68Uに更新してDDNS更新させるようにした
先日のamazonサイバーマンデーでASUSのルータ『RT-AC68U』がちょっとお安くなっていたのでポチっちゃいました。今まで使ってたNECのAtermWG1800HPが時々再起動しないといけなかったりしたので替え時でした。
11ac対応してりゃいいや、レビュー悪くなさそうだし、2系統WAN使えるユニークな機能もあるやんくらいの認識で、買ってから気づいたのですがこのルータ、SSHで中のLinux触れるようになってました。
それなら今までバッファローのNAS『LS410DX』のLinuxでやっていたDDNS更新をやらせたろ!ということでやってみました。アップデートあるたびにHDD抜いて中のLinuxに潜れるようにってやるの面倒だしね。
ASUSが提供するDDNS使いたかったけど、振られたIPをDDNS更新に使うが、au光のHGWからルータへはローカルIPが振られるため使えない環境です。
なので外部へグローバルIPを確認しに行き、そのIPでieserver.netのDDNSを更新するようにしました。
SSHを有効にする設定は”管理”のシステムタブから。ポートはLANオンリーでも一応変えておく。(そして時間経つと変えたことを忘れて入れねー!ってなりそう)

接続はいつものTeraTermで。ユーザー名とパスワードは管理画面に入るものと同じ。

こちらのブログ記事によると起動時に①USBマウント時に実行されるスクリプトを作成、設定して、②crontabに直接書き込んで定期的に実行する方法があるらしい。
How to schedule cron jobs on an ASUS wireless router
ただcrontabへ書き込むところまではできるものの、実行されない...。
なのでUSBマウント時に実行されるスクリプトから直接watchコマンドで定時実行するようにした。
下記2つのシェルスクリプトを作って...
watch.sh
USBマウント時のスクリプトに設定。
ルータに手頃なUSBメモリつないで再起動。
ログ参照するとマウント後にスクリプトを実行しています。
11ac対応してりゃいいや、レビュー悪くなさそうだし、2系統WAN使えるユニークな機能もあるやんくらいの認識で、買ってから気づいたのですがこのルータ、SSHで中のLinux触れるようになってました。
それなら今までバッファローのNAS『LS410DX』のLinuxでやっていたDDNS更新をやらせたろ!ということでやってみました。アップデートあるたびにHDD抜いて中のLinuxに潜れるようにってやるの面倒だしね。
ASUSが提供するDDNS使いたかったけど、振られたIPをDDNS更新に使うが、au光のHGWからルータへはローカルIPが振られるため使えない環境です。
なので外部へグローバルIPを確認しに行き、そのIPでieserver.netのDDNSを更新するようにしました。
SSHを有効にする設定は”管理”のシステムタブから。ポートはLANオンリーでも一応変えておく。(そして時間経つと変えたことを忘れて入れねー!ってなりそう)
接続はいつものTeraTermで。ユーザー名とパスワードは管理画面に入るものと同じ。
こちらのブログ記事によると起動時に①USBマウント時に実行されるスクリプトを作成、設定して、②crontabに直接書き込んで定期的に実行する方法があるらしい。
How to schedule cron jobs on an ASUS wireless router
ただcrontabへ書き込むところまではできるものの、実行されない...。
なのでUSBマウント時に実行されるスクリプトから直接watchコマンドで定時実行するようにした。
下記2つのシェルスクリプトを作って...
bootinit.sh
#!/bin/shlogger watch.sh_Start
/jffs/bootinit/watch.sh &
watch.sh
#!/bin/sh
watch -n 1800 -t /jffs/bootinit/ieserver.sh
USBマウント時のスクリプトに設定。
nvram set script_usbmount=/jffs/bootinit/bootinit.sh
nvram commit
ルータに手頃なUSBメモリつないで再起動。
ログ参照するとマウント後にスクリプトを実行しています。
Dec 27 23:24:54 disk monitor: be idle
Dec 27 14:24:56 usb: USB vfat fs at /dev/sda1 mounted on /tmp/mnt/sda1.
Dec 27 14:24:56 *****: watch.sh_Start
Dec 27 14:24:57 rc_service: hotplug 736:notify_rc restart_nasapps
Dec 27 23:24:57 iTunes: daemon is stoped
Dec 27 23:24:57 FTP Server: daemon is stoped
Dec 27 23:24:58 Samba Server: smb daemon is stoped
Dec 27 23:24:58 kernel: gro disabled
Dec 27 14:24:58 *****: DNS Update done
Dec 27 23:24:58 Timemachine: daemon is stoped
Dec 27 23:24:58 miniupnpd[725]: shutting down MiniUPnPd
2017年8月14日月曜日
サンコーのネック冷却クーラーにヅラ毛が絡まった
隙間から毛を抜いてみたものの、回転しなくなっていたため分解しました。
まず冷却面の黒いネジ3箇所を外します。
ファンを固定しているネジ2本外して
取れました。あちゃー。
絡まっていた毛を取り除いて電源ON。回りました。交換せずに済んでよかった。
で、戻そうとした矢先に内部の配線が気になりました。
ファンの他に赤線1本、黒線3本あるのです。
内側の冷却面のネジ2本も外してみると、首のアルミ材に温度センサと思わしきものが熱伝導グリスと共に入ってました。
白く厚いペルチェ素子に配線が赤と黒1本ずつ。
恐らく残り1本は放熱側にペルチェ素子があり、冷却側と直列に接続していると思われます。
2017年1月3日火曜日
Pushbullet+自前デバイスでプッシュ通知を受け取る
Pushbulletを使ってプッシュ通知をスマホ等へ送る例は見当たりますが、逆にプッシュ通知を受け取る例がなかったのでやってみました。
-なんでこんなことを?
ホームオートメーションやりたくなりまして、IFTTTやLINE BOTなどといったスマホへプッシュ通知送れるwebサービスを利用して楽しつつ、やりたいことを実現するためには以下3点の要件を満たす必要がありました。ワガママですね。
websocketでイベント受信→チャットテキストを取得するデモをnode.jsとpushbullet-bashを組み合わせて書いてみました。ラズパイ3上で動作しました。
スクリプトとフォルダ配置はこんな感じで。
~/.config/pushbulletはpushbullet-bashがAPIキーを参照するのでAPIキーを記述すること。
~/
├ .config/pushbullet
└ pushbullet/
├ pushbullet-bash/
└ script/
├ pushbullet_websock.js
└ getLastPush.sh
テキスト送るとこんな感じ。
-なんでこんなことを?
ホームオートメーションやりたくなりまして、IFTTTやLINE BOTなどといったスマホへプッシュ通知送れるwebサービスを利用して楽しつつ、やりたいことを実現するためには以下3点の要件を満たす必要がありました。ワガママですね。
- Android・iOS・PCのマルチプラットフォーム対応
- 自前デバイス(Linux鯖など)からプッシュ通知を送れる
- 逆にAndroid等からチャットを送れる
websocketでイベント受信→チャットテキストを取得するデモをnode.jsとpushbullet-bashを組み合わせて書いてみました。ラズパイ3上で動作しました。
スクリプトとフォルダ配置はこんな感じで。
~/.config/pushbulletはpushbullet-bashがAPIキーを参照するのでAPIキーを記述すること。
~/
├ .config/pushbullet
└ pushbullet/
├ pushbullet-bash/
└ script/
├ pushbullet_websock.js
└ getLastPush.sh
テキスト送るとこんな感じ。
おしおし、websocketでpushbulletから通知もらって、そこからチャットの内容取りにいけた。これでPC・android・iOS+自前のデバイスで双方向にチャットのやりとりできる。 pic.twitter.com/hbrXesk8pK
— エン.129 (@en129) 2017年1月3日
2016年12月18日日曜日
FRDMボードのデバッガチップを復旧させた話
この記事はmbed adventカレンダー2016 18日目の記事です。
長くなったのでいきなり3行でまとめると...
・FRDM-K64Fボードのファーム飛んだ
・Keil uVision5+サポートするデバッガ(J-Link、LPC-Link2、他mbedボードのCMSIS-DAPデバッガ)で復旧できた
・ARMバンザイ、mbedバンザイ
こんな人に特にオススメの記事となっています
・FRDMボードのファームふっ飛ばして積み基板にしている人
・keil uVision5からhexファイルの書き込み方について知りたい人
最近FRDM-K64Fボードを買いまして、早速Lチカ!...の前にファームのアップデートを
Windows10マシンにて試みたところ、ファームが吹っ飛びました。
この件調べるまで知りませんでしたが、どうもOpenSDAブートローダーとWindows10の相性が悪いらしいです。
http://www.nxp.com/jp/products/software-and-tools/run-time-software/kinetis-software-and-tools/ides-for-kinetis-mcus/opensda-serial-and-debug-adapter:OPENSDA
ページ上方の続きを表示をクリックすると...
oh...
復旧の方法については調べたところ、主に2通りの方法があるようです。
①J-LinkやULINK2等の外部デバッガよりブートローダー書き込み
https://community.nxp.com/docs/DOC-330935
②別なFRDMボードからブートローダー書き込み
https://mcuoneclipse.com/2016/06/26/how-to-recover-the-opensda-v2-x-bootloader/
J-Link EDUを買って復旧することに成功しましたが、
LPC-Link2(CMSIS-DAPファーム、もしくは他のmbedボードでSWD信号引き出せられるもの)
+Keil uVision5
+ubuntu(VirtualBox上からでもOK、もしくはwindows7、Mac、Linux等の別マシン)
からでも復旧できることが分かったのでその方法を記載しておきます。
LPC-Link2とFRDMボードを接続しておきます。
電源はFRDMボードにUSBから供給するのでLPC-Link2のJP2はオープンにしておきます。
uVisionからバイナリファイル書き込み方法は以下を参照しました。
µVision4 User's Guide (Japanese): HEX ファイル
http://www.keil.com/support/man/docs/uv4jp/uv4jp_fl_hexdownload.htm
書き込みプロジェクト作成前にK20シリーズのDFPをインストールしておきます。
メイン画面のPack Installerをクリック
画面左側のツリーよりNXP→K20 Seriesを選択、右側のKeil::Kinetis_K20_DFPのInstallをクリック
インストール完了したらPack Installerを閉じます。
Reload Packs?と問い合わせが出るのではいをクリック。
いいえをクリックしてしまったらuVision5を再起動。
Keil uVision5で書き込み用プロジェクトの作成
タイトルバー下のメニューよりProject→New uVision Project
適当なフォルダにOpeSDAFirmwareWriteなど、適当な名前でプロジェクト作成。
Select Device画面でSearch欄にMK20DX128xxx5と入力。
ツリーのMK20DX128xxx5をクリックしてOKをクリック。
コンポーネントは何も追加せずOKをクリック
OpenSDAブートローダーのダウンロード
http://www.nxp.com/jp/products/software-and-tools/run-time-software/kinetis-software-and-tools/ides-for-kinetis-mcus/opensda-serial-and-debug-adapter:OPENSDA
復旧対象のボードを選択して、OpenSDA bootloaderのバイナリをダウンロード。
解凍して、プロジェクト作ったフォルダにk20dx128_bootloader_0x5000.axfをコピーします。
Options fot Targetをクリック。
Outputタブを選択し、Name of Exe~欄にダウンロードしたOpenSDA bootloaderのバイナリ名(k20dx128_bootloader_0x5000.axf)を入力します。
DebugタブにてデバッガをCMSIS-DAP Debuggerに変更。
Settingsをクリック。
Connectをunder Reset、ResetをHW RESETに変更
メイン画面に戻り、Downloadボタンを押せばbootloaderが書き込まれます。
正常に書き込まれればBuild Outputはスクリーンショットと同じ内容になるはずです。
SWDケーブルを外してSW1を押しながらmicroUSBケーブルを接続し、
WindowsからBOOTLOADERドライブが認識されれば正常に書き込みできています。
VirtualBox上のubuntuから復旧させる場合、仮想マシンの設定より
USBデバイスフィルタを登録しておきます。
Windowsにブートローダードライブが認識されている状態でMBED CMSIS-DAPを追加します。
この設定をした状態でubuntuを起動、再度SW1を押しながらFRDMボードのUSBを接続すれば
自動的に仮想マシンのubuntuへ接続されます。
Windows10において対策版のOpenSDAブートローダーがリリースされるまで、JLinkかP&E Microどちらかを使うことが推奨されているので今回はJLinkを使います。
https://www.segger.com/downloads/jlink
J-Link OpenSDA - Board-Specific Firmwaresより対象のボード用バイナリをダウンロードします。
今回はFRDM-K64F用のバイナリをダウンロードします。
ダウンロードしたバイナリ(02_OpenSDA_FRDM-K64F.bin)をBOOTLOADERドライブにD&D
USBケーブルを抜き、そのまま差せば...復旧しました!
LチカもOK!
で、ここまでやってようやく気づいたのですが、uVision5がサポートするデバッガなら、どれでも復旧できたんじゃね?と
SWDコネクタ出ているLPCXpresso824-MAXボードからでも...
SWD関係のピンを引き出したmbed LPC1114ボードからでも...
nucleo-F401REボード上のST-Linkからでも...
復旧できました!!
なんのためにJ-Link買ったんだろ。なんでもデバッグできるデバッガ手に入ったしいいや。
長くなったのでいきなり3行でまとめると...
・FRDM-K64Fボードのファーム飛んだ
・Keil uVision5+サポートするデバッガ(J-Link、LPC-Link2、他mbedボードのCMSIS-DAPデバッガ)で復旧できた
・ARMバンザイ、mbedバンザイ
こんな人に特にオススメの記事となっています
・FRDMボードのファームふっ飛ばして積み基板にしている人
・keil uVision5からhexファイルの書き込み方について知りたい人
最近FRDM-K64Fボードを買いまして、早速Lチカ!...の前にファームのアップデートを
Windows10マシンにて試みたところ、ファームが吹っ飛びました。
この件調べるまで知りませんでしたが、どうもOpenSDAブートローダーとWindows10の相性が悪いらしいです。
http://www.nxp.com/jp/products/software-and-tools/run-time-software/kinetis-software-and-tools/ides-for-kinetis-mcus/opensda-serial-and-debug-adapter:OPENSDA
ページ上方の続きを表示をクリックすると...
oh...
復旧の方法については調べたところ、主に2通りの方法があるようです。
①J-LinkやULINK2等の外部デバッガよりブートローダー書き込み
https://community.nxp.com/docs/DOC-330935
②別なFRDMボードからブートローダー書き込み
https://mcuoneclipse.com/2016/06/26/how-to-recover-the-opensda-v2-x-bootloader/
J-Link EDUを買って復旧することに成功しましたが、
LPC-Link2(CMSIS-DAPファーム、もしくは他のmbedボードでSWD信号引き出せられるもの)
+Keil uVision5
+ubuntu(VirtualBox上からでもOK、もしくはwindows7、Mac、Linux等の別マシン)
からでも復旧できることが分かったのでその方法を記載しておきます。
ブートローダー復旧編
LPC-Link2とFRDMボードを接続しておきます。
電源はFRDMボードにUSBから供給するのでLPC-Link2のJP2はオープンにしておきます。
uVisionからバイナリファイル書き込み方法は以下を参照しました。
µVision4 User's Guide (Japanese): HEX ファイル
http://www.keil.com/support/man/docs/uv4jp/uv4jp_fl_hexdownload.htm
書き込みプロジェクト作成前にK20シリーズのDFPをインストールしておきます。
メイン画面のPack Installerをクリック
画面左側のツリーよりNXP→K20 Seriesを選択、右側のKeil::Kinetis_K20_DFPのInstallをクリック
インストール完了したらPack Installerを閉じます。
Reload Packs?と問い合わせが出るのではいをクリック。
いいえをクリックしてしまったらuVision5を再起動。
Keil uVision5で書き込み用プロジェクトの作成
タイトルバー下のメニューよりProject→New uVision Project
適当なフォルダにOpeSDAFirmwareWriteなど、適当な名前でプロジェクト作成。
Select Device画面でSearch欄にMK20DX128xxx5と入力。
ツリーのMK20DX128xxx5をクリックしてOKをクリック。
コンポーネントは何も追加せずOKをクリック
OpenSDAブートローダーのダウンロード
http://www.nxp.com/jp/products/software-and-tools/run-time-software/kinetis-software-and-tools/ides-for-kinetis-mcus/opensda-serial-and-debug-adapter:OPENSDA
復旧対象のボードを選択して、OpenSDA bootloaderのバイナリをダウンロード。
解凍して、プロジェクト作ったフォルダにk20dx128_bootloader_0x5000.axfをコピーします。
Options fot Targetをクリック。
Outputタブを選択し、Name of Exe~欄にダウンロードしたOpenSDA bootloaderのバイナリ名(k20dx128_bootloader_0x5000.axf)を入力します。
DebugタブにてデバッガをCMSIS-DAP Debuggerに変更。
Settingsをクリック。
Connectをunder Reset、ResetをHW RESETに変更
メイン画面に戻り、Downloadボタンを押せばbootloaderが書き込まれます。
正常に書き込まれればBuild Outputはスクリーンショットと同じ内容になるはずです。
SWDケーブルを外してSW1を押しながらmicroUSBケーブルを接続し、
WindowsからBOOTLOADERドライブが認識されれば正常に書き込みできています。
アプリケーション復旧編
OpenSDAアプリケーション書き込み用にWindows10ではないマシン(VirtualBox上のubuntu、別マシンのWindows7など)で以降は作業します。VirtualBox上のubuntuから復旧させる場合、仮想マシンの設定より
USBデバイスフィルタを登録しておきます。
Windowsにブートローダードライブが認識されている状態でMBED CMSIS-DAPを追加します。
この設定をした状態でubuntuを起動、再度SW1を押しながらFRDMボードのUSBを接続すれば
自動的に仮想マシンのubuntuへ接続されます。
Windows10において対策版のOpenSDAブートローダーがリリースされるまで、JLinkかP&E Microどちらかを使うことが推奨されているので今回はJLinkを使います。
https://www.segger.com/downloads/jlink
J-Link OpenSDA - Board-Specific Firmwaresより対象のボード用バイナリをダウンロードします。
今回はFRDM-K64F用のバイナリをダウンロードします。
ダウンロードしたバイナリ(02_OpenSDA_FRDM-K64F.bin)をBOOTLOADERドライブにD&D
USBケーブルを抜き、そのまま差せば...復旧しました!
LチカもOK!
で、ここまでやってようやく気づいたのですが、uVision5がサポートするデバッガなら、どれでも復旧できたんじゃね?と
SWDコネクタ出ているLPCXpresso824-MAXボードからでも...
SWD関係のピンを引き出したmbed LPC1114ボードからでも...
nucleo-F401REボード上のST-Linkからでも...
復旧できました!!
なんのためにJ-Link買ったんだろ。なんでもデバッグできるデバッガ手に入ったしいいや。
2016年12月3日土曜日
へぇボタンをmbedで改造して任意SE鳴らせるようにしてみた
この記事はmbed adventカレンダー2016 3日目の記事です。
ある時へぇボタンの声をVOICEROID結月ゆかりさんに差し替えられない?と相談されまして、
それをmbed nucleo F303K8で作りました。
鳴ってる様子はこちら
へえボタンケースを追加工してmicroSDカードとロータリーディップスイッチ、音量調整用可変抵抗を取り付けています。


回路図

PDF版;https://drive.google.com/file/d/0B_nriOFsja6DNlRFazhraVllaFE/view?usp=sharing
・microSD
・スピーカー駆動用アンプ
・SE選択用ロータリーディップスイッチ
・へぇボタンについていたプッシュスイッチ信号横取り
・へぇボタン電源の単3電池4本
以上をmbed nucleoF303K8に接続して作り上げました。
改造というより中身ほぼ総取り替えですね(;´Д`)
初めてnucleoF303K8を使いましたが、、、注意して使わなければならないことにいくつかブチ当たりました。いずれもnucleoボードの回路図を注意して見ないとわからないことばかりでした。
まとめたツイート
https://twitter.com/i/moments/edit/804529900371591168
そのほかにも...
・電源をVINからではなく、+5Vから供給した場合、ST-Linkに電源供給されないためかResetがLに落ちっぱな状態になり動作しない
→ST-Linkからのリセット線の0Ωジャンパ外して引き出し、外部スイッチで接続・切り離しできるようにした
・ST-LinlとA7(PA2)はUART_TX、A0(PA0)はMCOとして接続されており、空きポートだと思って使うとトラブルの元になる→A0はSB17をカットして対応、A7は元々空きだったので痛い目見ず済んだ。
ある時へぇボタンの声をVOICEROID結月ゆかりさんに差し替えられない?と相談されまして、
それをmbed nucleo F303K8で作りました。
鳴ってる様子はこちら
へえボタンケースを追加工してmicroSDカードとロータリーディップスイッチ、音量調整用可変抵抗を取り付けています。

ハード

回路図

PDF版;https://drive.google.com/file/d/0B_nriOFsja6DNlRFazhraVllaFE/view?usp=sharing
・microSD
・スピーカー駆動用アンプ
・SE選択用ロータリーディップスイッチ
・へぇボタンについていたプッシュスイッチ信号横取り
・へぇボタン電源の単3電池4本
以上をmbed nucleoF303K8に接続して作り上げました。
改造というより中身ほぼ総取り替えですね(;´Д`)
初めてnucleoF303K8を使いましたが、、、注意して使わなければならないことにいくつかブチ当たりました。いずれもnucleoボードの回路図を注意して見ないとわからないことばかりでした。
まとめたツイート
https://twitter.com/i/moments/edit/804529900371591168
そのほかにも...
・電源をVINからではなく、+5Vから供給した場合、ST-Linkに電源供給されないためかResetがLに落ちっぱな状態になり動作しない
→ST-Linkからのリセット線の0Ωジャンパ外して引き出し、外部スイッチで接続・切り離しできるようにした
・ST-LinlとA7(PA2)はUART_TX、A0(PA0)はMCOとして接続されており、空きポートだと思って使うとトラブルの元になる→A0はSB17をカットして対応、A7は元々空きだったので痛い目見ず済んだ。
を作りました。
ソフト
https://developer.mbed.org/users/nameless129/code/F303_WAVPlayer/
実機のへぇボタン同様SEを連打して鳴らせたかったのとwavファイルの勉強兼ねて再生用ライブラリを作りました。
なるべく環境に依存する部分を組み込まないように作ったので他のPSoCやAVR等で使えるとはずですが、まだライブラリを独立させて試していないのでそれはまた近いうちに公開予定です。
なるべく環境に依存する部分を組み込まないように作ったので他のPSoCやAVR等で使えるとはずですが、まだライブラリを独立させて試していないのでそれはまた近いうちに公開予定です。
2016年9月10日土曜日
I2SオーディオI/F WM8731をraspberry piで鳴らす
MFTで買ったDm9RecordsのI2SオーディオI/F基板PIAiFを鳴らしました。
http://www.dm9records.com/index.php/release/sound/piaif/
参考:
https://github.com/raspberrypi/linux/issues/1302
https://github.com/raspberrypi/linux/issues/1420
1. /boot/config.txtを編集
編集箇所は以下4つ
#を消してI2CとI2Cを有効に
dtparam=i2c_arm=on
dtparam=i2s=on
raspberry pi オンボードのオーディオを無効に
(有効でも可。その場合再生する際にデバイス指定する必要がある)
# dtparam=audio=on
openGLドライバを無効に
I2Cドライバと同時に使えないらしいです。
# dtoverlay=vc4-kms-v3d
以下を追記
#dm9 PIAiF enable
dtoverlay=rpi-proto
2.raspberry pi再起動
3.DACが認識されているか確認
pi@raspi3:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpiproto [snd_rpi_proto], device 0: WM8731 HiFi wm8731-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
4.Output Mixer HiFi Playback SwitchのIDを確認
pi@raspi3:~ $ amixer controls
numid=2,iface=MIXER,name='Master Playback ZC Switch'
numid=1,iface=MIXER,name='Master Playback Volume'
numid=4,iface=MIXER,name='Line Capture Switch'
numid=5,iface=MIXER,name='Mic Boost Volume'
numid=6,iface=MIXER,name='Mic Capture Switch'
numid=8,iface=MIXER,name='ADC High Pass Filter Switch'
numid=3,iface=MIXER,name='Capture Volume'
numid=10,iface=MIXER,name='Playback Deemphasis Switch'
numid=14,iface=MIXER,name='Input Mux'
numid=13,iface=MIXER,name='Output Mixer HiFi Playback Switch'
numid=11,iface=MIXER,name='Output Mixer Line Bypass Switch'
numid=12,iface=MIXER,name='Output Mixer Mic Sidetone Switch'
numid=7,iface=MIXER,name='Sidetone Playback Volume'
numid=9,iface=MIXER,name='Store DC Offset Switch'
5.Output Mixer HiFi Playback SwitchをONに。
これがOFFのままだとdmesgでI2S SYNC errorが出ます。
amixer cset numid=13 on
6.再生してみる。
mplayer hoge.wav
7.楽しい!! ✌(‘ω’✌ )三✌(‘ω’)✌三( ✌’ω’)✌
オンボード出力が有効の場合、カードIDを調べて
pi@raspi3:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: sndrpiproto [snd_rpi_proto], device 0: WM8731 HiFi wm8731-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
ここではcard 1が外付けDACに該当するので
mplayer -ao alsa:device=hw=1,0 hoge.wav
http://www.dm9records.com/index.php/release/sound/piaif/
参考:
https://github.com/raspberrypi/linux/issues/1302
https://github.com/raspberrypi/linux/issues/1420
1. /boot/config.txtを編集
編集箇所は以下4つ
#を消してI2CとI2Cを有効に
dtparam=i2c_arm=on
dtparam=i2s=on
raspberry pi オンボードのオーディオを無効に
(有効でも可。その場合再生する際にデバイス指定する必要がある)
# dtparam=audio=on
openGLドライバを無効に
I2Cドライバと同時に使えないらしいです。
# dtoverlay=vc4-kms-v3d
以下を追記
#dm9 PIAiF enable
dtoverlay=rpi-proto
2.raspberry pi再起動
3.DACが認識されているか確認
pi@raspi3:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpiproto [snd_rpi_proto], device 0: WM8731 HiFi wm8731-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
4.Output Mixer HiFi Playback SwitchのIDを確認
pi@raspi3:~ $ amixer controls
numid=2,iface=MIXER,name='Master Playback ZC Switch'
numid=1,iface=MIXER,name='Master Playback Volume'
numid=4,iface=MIXER,name='Line Capture Switch'
numid=5,iface=MIXER,name='Mic Boost Volume'
numid=6,iface=MIXER,name='Mic Capture Switch'
numid=8,iface=MIXER,name='ADC High Pass Filter Switch'
numid=3,iface=MIXER,name='Capture Volume'
numid=10,iface=MIXER,name='Playback Deemphasis Switch'
numid=14,iface=MIXER,name='Input Mux'
numid=13,iface=MIXER,name='Output Mixer HiFi Playback Switch'
numid=11,iface=MIXER,name='Output Mixer Line Bypass Switch'
numid=12,iface=MIXER,name='Output Mixer Mic Sidetone Switch'
numid=7,iface=MIXER,name='Sidetone Playback Volume'
numid=9,iface=MIXER,name='Store DC Offset Switch'
5.Output Mixer HiFi Playback SwitchをONに。
これがOFFのままだとdmesgでI2S SYNC errorが出ます。
amixer cset numid=13 on
6.再生してみる。
mplayer hoge.wav
7.楽しい!! ✌(‘ω’✌ )三✌(‘ω’)✌三( ✌’ω’)✌
MFTで買ったDm9RecordsのDAC鳴ったどー! わーい!— エン.129 (@en129) 2016年9月10日
ラズパイオンボとは音やっぱり違いますね pic.twitter.com/8hyxsROvoz
オンボード出力が有効の場合、カードIDを調べて
pi@raspi3:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: ALSA [bcm2835 ALSA], device 0: bcm2835 ALSA [bcm2835 ALSA]
Subdevices: 8/8
Subdevice #0: subdevice #0
Subdevice #1: subdevice #1
Subdevice #2: subdevice #2
Subdevice #3: subdevice #3
Subdevice #4: subdevice #4
Subdevice #5: subdevice #5
Subdevice #6: subdevice #6
Subdevice #7: subdevice #7
card 0: ALSA [bcm2835 ALSA], device 1: bcm2835 ALSA [bcm2835 IEC958/HDMI]
Subdevices: 1/1
Subdevice #0: subdevice #0
card 1: sndrpiproto [snd_rpi_proto], device 0: WM8731 HiFi wm8731-hifi-0 []
Subdevices: 1/1
Subdevice #0: subdevice #0
ここではcard 1が外付けDACに該当するので
mplayer -ao alsa:device=hw=1,0 hoge.wav
登録:
投稿
(
Atom
)





























