ArduinoによるOLED表示機の作り方(ハードウェア編)
本日は、シリアル信号を受信して小型OLEDに文字を表示する方法を紹介いたします。
Arduinoに限定するわけではありませんが、ある程度の大きさのROMとRAMが無いとu8glibなどのグラフィックライブラリを使うことが出来ません。ライブラリを使うとソフトウェアがめっちゃ簡単になります。
購入してみたのはコチラ。3個で1230円。1個あたり410円です。SDカードをスリムにしたくらいのサイズ感。Arduino pro mini互換を謳っていてUSBシリアル変換ICが載っていないタイプです。低消費電力に期待して購入しました。その結果は後述します。
OLEDは128x32ピクセルの細長いタイプです。こちらから買いました。 3つで1180円。1枚あたり393円です。4ピンヘッダが付いていましたが、この写真では取り去ったところです。
I2Cのプルアップ抵抗を探せ!
このOLEDはI2C接続なので、Arduino Pro Mini基板(以降 ProMini)にプルアップ抵抗があるのか確認してみたところ、なんと裏面に半田ランドがありました。
素晴らしい! ここに10kΩのチップ抵抗をつけてみます。もしかすると、ATmega328Pの内部プルアップだけでもOKかもしれません。
どうも1005チップサイズのランドだったようで1608ではちょっとムズかったです。でも、とりあえず付きました。普通のリードタイプの抵抗ならピンヘッダの穴を利用して5Vからプルアップすれば良いです。
プルアップ抵抗をつけなくてもI2C通信OKでした。
ProMini基板とOLED基板を接続
配線はI2Cの2本と、GND、5V。合計4本です。A4=SDA、A5=SCLというのはArduino界ではメジャーなアサインらしいです。
接続はポリウレタン線を使うと簡単です。
エナメル線のような絶縁被服は半田コテでハンダを盛りながら熱を10秒くらい加えると、そこだけ剥がれてくれます。被服がなくなると半田がついて銀色になるので分ります。元の銅色の部分は絶縁被服があるのでショートしません。
ProMini基板にはピンヘッダが付録してあり、必要な部分だけ付ければ良いです。今回は書込みポート側だけ付けました。
早速、動作確認。イニシャル時にメモリ領域をクリアしていないので、この写真のように砂嵐っぽい画面が出ますが正常です。初期化に失敗していると何も出ません。
合体
動作確認OKだったので、OLEDの裏面にスポンジタイプの両面テープをつけて、
ぐいっと曲げると、ProMini基板と一体化できます。
MUSES72323基板との接続
実は、ProMini基板の書込みポート側に電源ポートとUARTがアサインされているので「メス-メス」配線材で簡単に接続できます。
シンプルですね。ただ、この基板をアンプへどう固定するのか!? そこが一番悩ましいです。
< デバッグ用ポートの中央3本をProMini基板へ接続する >
MUSES72323基板側のデバッグコネクタに接続すればOKなんですが、当初予定していなかった電流が流れるため、5Vをリード線で直結してあげる必要があります。
改造は
パターンカット:1ヵ所
リード線追加 :1ヵ所
です。
無改造でも一応動作しましたが、可変抵抗を読むADコンバータの基準も同じ5Vを使っているため、Arduinoの動作電流に釣られてボリューム値がチラチラとふらつく事がありました。上記の改造で解消します。
ProMini基板の消費電流
ProMini基板とOLEDを合わせた5Vの消費電流を計測してみたところ27mA程度流れていました。OLED単体も同様に計測すると15mAだったのでAVRマイコンは10mA以上流れていることになります。
MUSES72323をコントロールしているPICは実測0.9mAなので10倍以上の電流です。AVRマイコンを16MHzフル回転させているので当然ですね。プログラム上でクロックを変更できればやってみたい。OLEDは輝度を落とす方法を見つけました。
長くなってきたため、
Arduinoの書込み方などは、また別記事にいたします。
Arduino UNOを書込み機代わりにしてArduino Pro Miniへプログラムを書き込む
Arduino UNOを書込み機代わりにしてArduino Pro Miniへプログラムを書き込むときの接続は以下のようにします。
RX-RX
TX-TX
と、ぶつけるような配線にするところがミソです。詳細はこちらへ
コネクタ部にマジックで書いた文字はシリアル変換の書込み機のピンの名称です。気にしないでください。
にほんブログ村
ブログランキングに参加中です。 めざせ1位!
もしよろしければ「ぽちっと」お願いします。
« MUSES72323コントローラのプログラム変更 ボリューム表示が可能になる? | トップページ | Arduino UNOでArduino ProMiniにプログラムを書く方法 »
「電子ボリューム」カテゴリの記事
- MUSES72323 Balanceボリュームの表示機追加について(2022.12.24)
- MUSES72323 バランスボリュームもうじき頒布開始(2022.11.26)
- MUSES72323バランスボリューム基板 進捗(3)(2022.05.14)
- MUSES72323バランスボリューム基板 進捗(2)(2022.05.08)
- MN型ボリュームとは(2022.05.03)
「Arduino」カテゴリの記事
- MUSES72323 Balanceボリュームの表示機追加について(2022.12.24)
- BlueSnowDACにIRリモコンを増設する方法 Seeeduino XIAO(メニュー操作編)(2021.11.27)
- BlueSnowDACにIRリモコンを増設する方法 Seeeduino XIAO(ソフトウェア編)(2021.11.24)
- BlueSnowDACにIRリモコンを増設する方法 Seeeduino XIAO(準備とハードウェア編)(2021.11.23)
- ArduinoによるOLED表示機 電流削減に挑戦してみました(2021.02.21)
コメント
« MUSES72323コントローラのプログラム変更 ボリューム表示が可能になる? | トップページ | Arduino UNOでArduino ProMiniにプログラムを書く方法 »
こんにちは
PGA 2311 でも使えるようになりませんか、、
とお願いモードです。ファームの書き換えはPICKITあるけど、、
投稿: ひろせ | 2021年2月18日 (木) 05時59分
たかじんさん
こんばんは
私も ひろせさんに1票です
ArduinoによるOLED表示機をアマゾンで購入しましたので3セット保有しています
今回の、MUSES72323基板の頒布には乗り遅れましたが、次回の頒布で入手出来ると
確信しますが、2セット余りますので宜しくお願いいたします。
投稿: kamo | 2021年2月18日 (木) 19時49分
ひろせさん
kamo さん
PGA2311基板は電源が+5Vと-5Vの2系統のみで、コントローラも同じ+5V電源を使用しています。
コントローラは、低速クロックで動作させて1mA以下の消費電流に抑えていますが、PGA2311は内蔵オペアンプがあるため8~10mAほど消費し、合計で10mA程度です。
シャント抵抗には15mAほど流す設定にしていて発熱がそこそこ高く、さらに追加で27mAもの電流は許容できません。というか電圧降下しますね。
ですので、表示部専用でレギュレータを増設するのと、コントローラの足から直接配線を引き出すなどの改造を行なえば可能と言えば可能です。
何か良いアイデアはございますでしょうか?
書き換え用のhexファイルの公開は、電子ボリュームコントローラだけを販売している業者が複数あるので、若干やりにくいですね。
よろしくお願いします。
投稿: たかじん | 2021年2月18日 (木) 20時13分
たかじんさん
一人歩きの懸念了解いたしました
ご丁寧に回答頂きありがとうございました
投稿: kamo | 2021年2月18日 (木) 21時24分
たかじんさん
MUSES72323 ボリューム基板を、サブウーファ用のローパスフィルタの音量調整に利用しています。 まだ、各種の測定はしていませんが、使用上は問題ないことの確認がすみました。 再現性よく調整するためには、本記事の表示機能があった方がよさそうです。
1) 記事中の Arduino pro mini互換 基板は入手できなくなっています。
また、記事では、Arduino UNO を使ってプログラム書き込みをしていますが、Arduino UNO の値段を考えると、下記のようなセットが良さそうに見えるのですが、いかがでしょうか。 なお、[K-09951] は売り切れ中です。
https://www.amazon.co.jp/waves-Arduino-%E4%BA%92%E6%8F%9B%E3%83%9C%E3%83%BC%E3%83%89-16MHz-USB%E3%82%B7%E3%83%AA%E3%82%A2%E3%83%AB/dp/B01CX2AQEW
2) Arduino pro mini互換 基板への配線は、どれぐらい伸ばせるのでしょうか。 調整中のみ使用できればよいので、外部端子に出すことを考えていました。
以上、ご教示いただけたら、ありがたいです。 よろしくお願いします。
投稿: n'Guin | 2023年6月29日 (木) 13時35分
n'Guinさん
確かにpro mini互換基板は市場から消えていますね。 UNOで書き込んでいるのはたまたま私がUNOをもっていたからです。
専用の書き込み機の方が良いと思います。 書き込み機もセットでpro mini互換が安く売っていたのですが、2年でずいぶんと状況が変わってしまいました。
配線長は特に気にしていませんでしたが、UART信号はわりと伸ばしやすいと思います。 50cmくらいは余裕です。 1mでも平気かもしれません。
ご想像のとおり、伸ばすとノイズをひろいやすくなるので、アンプにとってはあまり良くありません。調整が終わりましたら短くして筐体に収めておくことをお勧めいたします。
投稿: たかじん | 2023年6月29日 (木) 20時58分
たかじんさん
アマゾンのサイトで検索すると何個かヒットしますが、これらは使える可能性のある物でしょうか。
投稿: 天 婦羅夫 | 2023年6月30日 (金) 01時32分
たかじんさん
さっそくのご解答ありがとうございます。
昨日、単身赴任先から自宅に戻って、最適なところを耳で確認していますが、ずれたら再度同じところにセットするのに、ちょっと自信がありません。
やってみようと思います。 当初、必要時だけ外部端子を通して付けることを考えた(筐体の穴開けをしたくない)のですが、DC Arrow の無効電流(インピータンスを下げるための)を利用して、三端子レギュレータで、別に電源を作って、表示させようと思います。
いつもながらありがとうございました。
投稿: n'Guin | 2023年6月30日 (金) 06時53分
天 婦羅夫さん
Atmega328P 5V 16MHz でしたら使えると思います。 確かに高いものは売っていますね。記事中に書いたような1枚400円ちょっとというのは見なくなりました。
n'Guin さん
表示があった方が再現性は高くなりますよね。 表示部を別電源にするのは良いアイデアと思います。 Arduinoの消費電流は、どうしても下がりきらないですし。
投稿: たかじん | 2023年7月 1日 (土) 10時07分
たかじんさん
なんでも値上がりしましたね。
ラズパイ Zero Wがスイッチサイエンスに売れ残ってたので買いましたが、記憶にないですが、以前はこんな値段だったかなと。
CFA-02が売り切れたようです。 なかなか人気ですね。
投稿: 天 婦羅夫 | 2023年7月 1日 (土) 18時33分
天 婦羅夫さん
日本もアメリカや韓国と同程度インフレしていれば価格上昇が相殺されていたんでしょうけどね。
Pi4の4BG版は、ちょっと値下がり傾向のようです。 3月くらいで1.4万円だったけど、今見たら1万円ちょっとで購入できるみたいです。 6千円くらいまで戻れば良いですね。
CFA-02の赤基板、3倍速そうです!
投稿: たかじん | 2023年7月 2日 (日) 09時11分
たかじんさん
先に示した Amazon の基板のセットで試しました。
USBシリアル書き込み基板のためのドライバを商品の説明通りにダウンロードしてインストールし、あとはたかじんさんの説明通りに Hallo World を表示させることができました。 留意事項は、USBシリアル書き込み基板の COM port 番号をデバイスマネージャで確認したぐらいでしょうか。
あとは、たかじんさんのプログラムを導入して、デバッグも正常に行えました。
±版のDC Arrow と同等回路のドライバに、2SC2240/2SA970 BL の手持ちを使っていましたが、ドライバ - アース間の抵抗を、改良版のように470Ωにすると、コレクタ損失がオーバーしそうなので、2SC945/ 2SA733 を購入し、修正してから、表示機を取り付けたいと思います。
さて、この表示機の電源は、±版のDC Arrow の無効電流(インピータンスを下げるための)を利用して、三端子レギュレータで別に作り、MUSES72323基板からは電源を取りません。 この場合、MUSES72323基板のアースと Arduino 互換基板アースの処理はどうするのがセオリーなのでしょうか。
例えば、アナログ回路のように、MUSES72323基板のアースと Arduino 互換基板アースを数Ωの抵抗でつないだほうが安定するでしょうか。 それとも、そこまで考える必要はないのでしょうか。
やってみて考えろと言われそうですが・・・・
投稿: n'Guin | 2023年7月 2日 (日) 17時53分
たかじんさん、みなさん
自己レスです。 アースの件は、MUSES72323 基板からのアース配線は不要で安定しているようです。
基板をシャーシに固定するのに、ホットボンドを使ったら、表示されなくなりました。 再度書き込みしたら、復活しました。 ホットボンドの熱で、メモリ内容が破壊されたのかもしれません。
# 本来的に、ホットボンドでの固定はまずい?
さて、表示機能ができてよかったです。 本当に、調整は、表示器がないとむずかしいようです。 聴感での調節になりますが、どんな音楽を聴いても満足できるのは、数dB の範囲しかありません。 foobar2000 で、スペクトラムアナライザを出しておいて、20-40Hz がどれぐらい含まれているかを見ていると、調整がうまく進むようです。
やはり、サブウーファが加わると、雰囲気感がよく出ます。 高域がシャープに聞こえる感じがします。
投稿: n'Guin | 2023年7月11日 (火) 13時04分
n'Guin さん
返信遅れてすみません。
結果的にうまくいったようで良かったです。
ホットボンドで画面が出なくなるのは、奇妙な現象ですね。 再書き込みするとOKというと、フラッシュメモリが壊れた可能性が高いように感じますが、何とも説明がつかないです。
100℃くらいの温度ではフラッシュメモリのデータは壊れないとは思うのですけどね。
それはさておき、調整の方もうまくいったようでなによりです。
サブウーファー追加で高域も聴感上で変化するのは面白いですね。
投稿: たかじん | 2023年7月11日 (火) 20時34分
たかじんさん
画面が出なくなる現象とは、最初のMUTE表示は出るけど、その後 dBだけで、数字が表示されないという現象でした。 謎ですが、その後は問題なしです。
投稿: n'Guin | 2023年7月15日 (土) 16時27分
n'Guin さん
なるほど、通信がうまく拾えていない様子ですね。 プログラムし直すと治るというのも不思議です。 単に通信配線の接触不良あたりなのかな、、、っと思たりもします。
投稿: たかじん | 2023年7月16日 (日) 18時59分
たかじんさん
上述の状況で、再度、USB経由で Aruduino 開発環境をつないで、デバッグで数字を出そうとしましたが、表示が出ませんでした。 壊れてしまったのかと思って、再書き込みしたら、大丈夫だったという次第です。
いずれにせよ、現在は大丈夫なので、謎のままですが、これでよいかと(笑)
投稿: n'Guin | 2023年7月18日 (火) 11時41分