電子趣味の部屋

電子系のガジェットやアプリ開発等の趣味の話題を書いてます

mbedで迷ったらこれ STM32 NUCLEO-F446RE

mbedを使いたいと思った時に迷ったら、ST Nucleo Board STM32F446REがおすすめです。

このボードは低価格でArduino互換のピンソケットを持ったSTM32 NUCLEOシリーズのボードです。

CPUはFPUも内蔵されているARM32bit Cortex-M4を搭載し、動作周波数もmbedの中では比較的高速な最大180MHzです。

メインメモリも128KBでフラッシュも512KBと十分です。さらにDAC2ch搭載しているので、ステレオの自作音源制作もできます。NUCLEOは低価格で前から人気だったのですが、メモリを大きいものを選択するとCPUが遅いものだったり、DACをあきらめたり、融通の利く汎用的なスペックがなかなかなかったのですが、今回の機種でやっと一通り満足できるスペックで良いものが発売されたと思います。

もしmbedで迷ったらぜひST Nucleo Board STM32F446REを検討してください。

ST Nucleo Board STM32F446REのスペック

CPU STM32F446RET6
CPUコア ARM32bit Cortex-M4(+FPU)
周波数 最大180MHz
CPU電源 1.7V-3.6V
フラッシュ 512KB
SRAM 128KB+4KB(Buckup)
タイマー(AdvancedControl) x2
タイマー(General Purpose) x10
タイマー(Basic) x2
SPI x4
I2S x2
USART x4
UART x2
USB OTG x1
CAN x2
SAI x2
SPDIF-Rx x1
HDMI-CEC x1
QuadSPI x1
GPIO x50
ADC 12bitx3 16ch
DAC 12bit 2ch

ST Nucleo Board STM32F446RET6

ST Nucleo Board STM32F446RET6

ArduinoでFM音源シールド作成2 (YM2151)

ArduinoでFM音源シールド作成 (YM2413)に続き、今度はX68000等に搭載されていたYM2151(OPM)でFM音源シールドを作成しました。

今回はYM2151Shield | Web::ooISHooを参考にさせて頂きました。
回路図はここのサイトにあるYM2151ShieldKitManual-0.1.pdfを拝借し、arduinoとYM2151とDACのYM3012の回路はそのままです。

アンプ部は面倒だったので、中国から仕入れたデジタルアンプ基板を使いました。
秋月電子通商にあるPAM8403 D級ステレオアンプモジュールや、AmazonにあるEasyWordMall PAM8403 5V 電力 オーディオ アンプ ボード PAM8403 5V 電力 オーディオ アンプ と同じものと思われます。
この基盤はどうもLRのGNDを別にそれぞれのGNDに接続しなければいけないようです。ミニピンジャックは秋月にある変換基板とのセットを使用しているのですが、この基板はLRのGNDが結線されているので、うまく動作しませんでした。いろいろ試行錯誤した結果、LRどちらかのみGNDに接続するだけで問題なく動作するようになりました。

テストとして、今回はArduino UNOを使用しています。YM2151Shield | Web::ooISHooにあるArduinoFileUploaderでMDXファイルを転送し、MDXプレイヤースケッチを動かしてみました。
最新版のarduinoの開発環境ではコンパイルに失敗するので、Arduino - OldSoftwareReleasesから1.0系をダウンロードしてコンパイルしました。

2つのFM音源シールド作成を通して、FM音源の扱い方もわかってきたので、SDカードからMDXを読んで演奏できるプレイヤーもそのうち作ってみたいと思います。


【永久保証付き】Arduino Uno

【永久保証付き】Arduino Uno

結局HP50gを手に入れました。

HP49g+はかなり古く、価格に釣られて程度が悪いのを購入したせいか、早くもキーの反応が悪くなったり、液晶にライン欠けが生じるようになってしまいました。
AmazonでHP50gの相場を見ていたところ、1万円前後まで価格が下がってたので、今度は新品で買っちゃいました。

今まではRPN計算専用機になってしまってたのですが、これを機にもっと使ってみようと思い、RPL言語でライブラリを作ることをやってみました。
例としておなじみのBMIの計算をするライブラリを作ってみます。

まず、BMIの計算

これをRPNで計算日本人20代男性の平均身長と平均体重の値で計算すると下のようになります。

身長と体重はパラメータとして渡すとすると、ライブラリ部分は下のように定義します。

ライブラリに変数として名前を付けます。(今回の名前は"BMI")
BMI [STO]

ライブラリを実行するときままずパラメータとなる値をスタックに積んでから実行します。
66
1.71
BMI

これで、22.5710475018という計算結果が得られます。

RPLは見た目とっつきにくい感じですが、実際に触ってみたら単純で分かりやすいものでした。
基本的によく使う計算式を追加していけば良い感じだと思います。

hp 50G F2229AA ABA

hp 50G F2229AA ABA

FM音源YM2413をmbed(NUCLEO-F446RE)で簡単に動かしてみる

NUCLEO-F446REで遊んでいたら、DAC出力で音を鳴らして遊んでるとヘッドホンでは十分なボリュームで出力できたのでちょっと実験してみました。

FM音源のYM2413の出力をそのままF446REのADCで読み取って、出力量を調整してからDACで出力する。
これをするとアンプ回路が省けると思い回路を組んでみました。

使った部品は、
NUCLEO-F446RE
YM2413
OSC 3.579545MHz
コンデンサ 22pF x2
ボリューム用可変抵抗1kΩ
ヘッドフォン端子
以上、これだけです。

結論として、満足のいく結果にはなりませんでした。
一定間隔毎の割り込み処理でADCから読み取った値を増幅してDACから出力したのですが、ADCが思ったより遅く、間隔を短くできませんでした。一応動くようにしたところ、音質は満足できないものでした。もうちょっと間隔を短くできたのですが、音質は向上した代わりに、変な高音ノイズが発生したりと調整が難しく、素直にアンプ回路を組んだほうが色々工夫するよりも結局プログラミングも楽になると思います。

今回実験したソースをアップします。
特にコメントもなく、内容も中途半端なものですが、参考にどうぞ。
SimpleYM2413Shield_zip_nucleo_f446re.zip 直


ST Nucleo Board STM32F446RET6

ST Nucleo Board STM32F446RET6

ALTERA DE0 でMSXのファイル化したROMを起動

1chipMSXにはSCCのROMを接続する機能があり、SCCのメモリ管理の機能とワークメモリを利用してROMファイルを起動できます。
今回は非メガROMのグラディウスを起動してみます。

ALTERA DE0のMSXMSXで遊ぶ! Mega Flash ROM - 電子ガジェットいろいろ で作成したROMを起動してみました。

まずはROMLOADをROMLOAD - ROM image loading tool | The New Imageより入手
DE0のSW5をONにSW4をOFFにセット(ESE-SCC: 1024K+SCC-Iをslot2にセット)
起動するファイル名を"GRADIUS.ROM"とすると、以下のコマンドを実行します。

ROMLOAD GRADIUS.ROM

ロード終了後、BUTTON0でリセット

起動できました。


ALTERA DE0 でMSX

ずっと眠ってたALTERA DE0を見つけたので、何か面白いことはできないかと思い、MSXを再現してみました。

ソースは以下のリンク先から入手できます。
OneChipMSX on Altera DE0
どうやら1ChipMSXのソースを元にカスタマイズしているようです。
入手したソースは以下のリンク先を参考にコンパイルします。
http://www.mztn.org/1chipMSX/make_msx.html
そのままコンパイルしたものは独自のタイトル画面でちょっと気持ち悪いので、
emsx_top.hexを以下のリンク先で別に入手したものを使いました。
http://www5d.biglobe.ne.jp/~hra/note/onechipmsx/

DE0はオーディオジャックはありませんが、音声はGPIO1の14ピン(PIN_W17)から出力されています。
スピーカーをPIN_W17とGNDに接続すれば、そのまま音声がなると思いますが、結構大きかったので、可変抵抗を挟んででボリューム調整できるようにしました。

基本的に1ChipMSX用のソフトは動きます。
MSX-DOS2も1ChipMSX用のものでSDカードから起動できました。
ツール参考
http://free.flop.jp/1chipmsx/index.php?%E5%90%84%E7%A8%AE%E3%83%84%E3%83%BC%E3%83%AB

EP16.COMファイル化したディスクステーションを起動してみました。

完全に動作しています。FM音源も聞けてます。
これで実物の1ChipMSXよりさらに小さいMSXを手に入れることができました。

久しぶりにFPGAを触って面白くなったので、他のレトロPCも動かしてみたいと思います。

Xperia Z3 Compactで余計なドコモアプリを無効化 (SO-02G)

サブ機として使っているAndroid機をXperia Z3 Compact SO-02Gに変えました。

MVMOでデータ通信のみで運用しているため、ドコモ関連のアプリはいらないので消すことにしました。
いつも通りroot化しようとしたところ、まだちょっとややこしいので、adbコマンドから無効化することにしました。
各所で調べたアプリを無効化した時のadbコマンドをメモ代わりに書いておきます。
ここで書いたいくつかは効きませんでしたが、結構すっきりしました。

adb shell pm hide com.nttdocomo.android.pf.dcmwappush
adb shell pm hide com.nttdocomo.android.dcmvoicerecognition
adb shell pm hide com.nttdocomo.android.pf.dcmippushaggregator
adb shell pm hide jp.co.nttdocomo.carriermail
adb shell pm hide com.nttdocomo.android.sdcardbackup
adb shell pm hide com.nttdocomo.android.lac
adb shell pm hide com.nttdocomo.android.remotelock
adb shell pm hide com.nttdocomo.android.cloudset
adb shell pm hide com.nttdocomo.android.mediaplayer
adb shell pm hide com.nttdocomo.android.applicationmanager
adb shell pm hide com.nttdocomo.android.atf
adb shell pm hide jp.co.nttdocomo.anshinmode
adb shell pm hide com.nttdocomo.android.tapandpay
adb shell pm hide com.nttdocomo.android.hcebridge
adb shell pm hide jp.co.nttdocomo.Koe_no_Takuhaibin_pi
adb shell pm hide jp.co.nttdocomo.lcsappsub
adb shell pm hide com.nttdocomo.android.docomo_market
adb shell pm hide com.nttdocomo.android.wipe
adb shell pm hide com.nttdocomo.android.apnmng
adb shell pm hide com.nttdocomo.android.voiceeditor
adb shell pm hide com.nttdocomo.android.initialization
adb shell pm hide jp.co.nttdocomo.lcsapp
adb shell pm hide com.nttdocomo.android.docomoset
adb shell pm hide com.nttdocomo.android.store
adb shell pm hide com.nttdocomo.android.rwpushcontroller
adb shell pm hide com.threelm.dm.app.docomo
adb shell pm hide com.nttdocomo.android.apnsw
adb shell pm hide com.sonyericsson.docomo.settings
adb shell pm hide com.nttdocomo.android.iconcier_contents
adb shell pm hide com.nttdocomo.android.screenlockservice
adb shell pm hide com.nttdocomo.android.schedulememo
adb shell pm hide com.nttdocomo.android.settings.lac
adb shell pm hide com.nttdocomo.android.accountauthenticator
adb shell pm hide com.nttdocomo.android.databackup
adb shell pm hide jp.co.nttdocomo.bridgelauncher
adb shell pm hide com.nttdocomo.android.socialphonebook
adb shell pm hide com.nttdocomo.android.dhome
adb shell pm hide com.nttdocomo.android.bugreport
adb shell pm hide com.nttdocomo.android.osv.res.overlay_305
adb shell pm hide com.nttdocomo.android.idmanager
adb shell pm hide com.nttdocomo.android.osv
adb shell pm hide com.sonyericsson.android.servicemenu.product.res.overlay.docomo
adb shell pm hide com.android.contacts
adb shell pm hide com.android.dialer

docomo Xperia Z3 Compact SO-02G White

docomo Xperia Z3 Compact SO-02G White