ハードウェアからサーバ・アプリまでワンストップで開発

STM32F3のボード

1つ前のエントリで「F3のボードは作ったことがある」と書いたので、一つだけ紹介しておきます。

某センサーデバイスの「騒音センサー」です。

左上にある真鍮色をしたものは、アナログマイクです。このマイクで拾った音声をFFTして、周波数分析をするというものです。

実際のアートワークは他の人がやっていますが、回路設計とファームウェアの開発を弊社で行いました。

もう少し詳しく説明すると、マイクで拾った音声を増幅します。これはSTM32F303にあるPGA(Programable Gain Amp)を2段使います。PGAそのものはOpAMPみたいなものなのですが、マイコン上のものなので3.3Vの片電源です。これをオーディオアンプとして使うのは、ちょっとだけ厄介です。とは言えバイアスをかけてやるだけなのですが。

これをマイコン上のADCで変換します。STM32F303には12bitのADCが載っています。このデータをマイコンのDSPを使ってFFTを行います。今して思えば、ADCが16bitのものを使えば、もうちょっとダイナミックレンジが取れて良かったかなと思います(最近のSTM32F3にはそういったものがあります)。FFTそのものは、標準のライブラリを使っています。自分で書いてもどうってことはないと思いますが、ライブラリはDSP機能を使っているのだという話なのでライブラリのものを使うことにしました。実際どうなんでしょうね。

ホストとのインターフェイスはI2Cです。インターフェイス用のレジスタを作ってやります。このモジュールはI2C slaveとして動作するようになっています。ホストからは「環境音の周波数分析をしてくれるI2Cデバイス」と見えるわけです。プロセッサは高機能ですが、これ以外の処理をさせるわけでもないので、RTOSは使っていません。

ボードの右端にあるスルーホールはプログラム用のSWDです。奥と手前にある端面スルーホールは「あると何か遊べるかな?」と考えていくつかI/Oが引き出してあります。ホスト接続用のコネクタは裏面にあります。SWDつけましたが、実際にはプログラムの書込みにしか使っていないので、UARTでDFUでも良かったかなとも思います。

STM32F3はアナログ回路(PGA)も載っていて、こういったセンサーを作る時には便利なので好きなマイコンです。まぁ、オーディオで使うためには、バイアスかけたりしないと具合が悪かったりするのが厄介と言えば厄介です。そのうち「フリスクサイズのオシロスコープ」とか作りたいなと思ってますが、いつになるでしょう。

こういったものは回路の着想は一瞬なのですが、アナログが絡むと結局試行錯誤が必要になりますね。ゲインの設定はレジスタだけですが、「実際マイクからどれくらいの出力があるの?」というあたりは、筐体をどうするかにも関係しますから。回路を設計している時は、Nucleoを使いながら随分な量の試行錯誤をしました。出来てしまうとどうってことないですけど。

この時はいろんな都合からアートワーク以降は他の人がやっていますが、弊社で行うことも可能です。こういったものを作る仕事があれば、お問い合わせ下さい。

最近のエントリー

レビュー等の依頼について

オープンソースのノートアプリ「SiYuan」 - CasaOS AppStoreレビュー

お気に入りの色さがし1

創立記念日

現在の営業品目(2)

現在の営業品目(1)

SPDX License Listをデータ化した

Orange Pi5でC3TR-Adapterを試す

CasaOS上で会計システム「Hieronymus」を動かす

会計システム「Hieronymus」v1.0.0 リリースしました

CasaOSでファイル同期アプリSyncthingをセットアップする

第11回 Freshmeat

オープンソースノーコード「Activepieces」でワークフローを作る

RaspberryPiにパーソナルクラウドOS「CasaOS」を導入する

sequelize-cliでdb:migrateすると「SyntaxError: Unexpected token ':'」が出る

LED行燈の試作(2)

CMSの社内向けサービスのリニューアル

LED行燈の試作(1)

エントリを書くこと

お手軽ポップコーン