2020年2月23日日曜日

SSD1309な1.54インチOLEDをI2C接続に改造してみた。

SPI接続の1.54インチOLEDモジュールをI2C接続に改造してみた。
前回テスターで確認してみた感じだとSSD1309自体はI2Cにも対応してるんだけど、基板上でSPIモードに固定されてそうだったので基板を改造したI2Cに対応させてみた。

一応SSD1309な1.54インチのOLEDモジュールも何種類かあってSPIとI2Cが切り替えられるようなモジュールも存在しているのでI2C対応はできるはず!ということで調べてみると24PinのOLEDモジュールの仕様書的なものがあったのでその通りに配線してみた。

しかしBS1(LCD側の6番ピン)がどうやらコネクタの下でGNDに直結されてそうなのでOLEDモジュール自体を剥がして基板だけにしてみた。
OLEDディスプレイ自体は両面テープで固定されていたけど隙間からアルコールを数滴垂らして薄いコーキングヘラでゴシゴシしていたら剥がれた。糸とかのほうがいいかも。
OLEDディスプレイ自体は割れやすそうなので注意かも。
v1.54" OLED Ver1.0
やっぱり表面には出ていなかったので、コネクタを剥がしてみた。予想通りコネクタの下で6番Pin(写真だと右から6番目)がGNDにつながっていた。
とりあえず6番Pinがコネクタの下で6Pinに接続されているのをパターンカットしてコネクタを戻した。6番Pinのパターンカットが失敗しているとI2Cの改造で3.3VとGNDがショートしてしまうのでちゃんとテスターチェック。
そんでもって5番PinがVDDなのでコネクタを取り付けたあとに5番Pinとショートさせた。さらにI2Cの場合はSDAとしてPin14とPin15を使用するので14がSDAにつながっていたので14と15をハンダでショートさせて使用した。
あとはI2CタイプのSSD1306モジュールのようにパワーオンリセット回路を追加した。手持ちの部品で1uFと2.2kΩで試してみたんだけど不安定だったので、1uFと10kΩの簡易CRリセット回路にしてみた。面実装のダイオードが手持ちでなかったのでダイオードはつけてない。ダイオードを付ける場合はカソード側をVCCで抵抗と並列につなぐ。
でもとりあえずこれで電源とI2Cの2本、計4本でマイコンに接続できる。
SPIだと画面を高速で切り替えられていいんだろうけど、あんまりスピードが必要ない用途にはやっぱりピン数が少なくて良いI2Cが便利かも。

ちなみにソフトウェアの方は基本的にはSSD1306とSSD1309は同じコマンドに対応しているので互換性があるっぽい。リセットの回路はSSD1306と同じ定数ではうまくリセットできないことが多かったので違いはそのへんかな?

SSD1306のライブラリでそのまま動かすことができた。u8g2では
U8G2_SSD1309_128X64_NONAME0_F_HW_I2C u8g2(U8G2_R0);
という設定も用意されているけどSSD1306のままでも行けた。

SSD1306搭載の0.96インチOLEDモジュールの置き換えとしてはSH1106搭載の1.3インチよりもこのSSD1309搭載の1.54インチのほうがソフトがそのまま使えて便利かも。画面も大きいし。


2020年2月22日土曜日

SSD1309な1.54インチOLEDモジュールを使ってみた。

この前SSD7789なIPS LCDを試してみたけど、やっぱりOLEDのほうが今までのソフトを流用できたりして便利なので1.54インチのOLEDディスプレイをポチってみた。
これもSPI接続。700円ぐらいだった。

NFP0301-04A
形状は0.96インチとか1.3インチのSSD1306モジュールと同じ感じでそのまま大きくしたような形。ピンヘッダはハンダ済みだった。

裏面。SSD1306とかSH1106だとPCBに直接フレキがハンダされているけどSSD1309はコネクタ式になっていた。フレキに書いてあるNFP0301-04AはLCDの品番なのかな?
3.3Vレギュレータ(ME6206A33XG-662K)も乗っているのでVDDに5V入れても大丈夫そう。左側はほぼOLED用の12.5Vを作り出す昇圧回路っぽい。C5は4.7uF程度のコンデンサが入ってるはずなんだけど未実装。動いているので良し…
一応SSD1309もi2cには対応しているんだけどこのモジュールだとBS1(LCD側の6番ピン)がGNDに直付けでモードを変更できなさそう。一旦コネクタ外さないとパターンカットもできなさそうだし…
I2Cで使うときはD1(LCD側14番)とD2(LCD側15番)をがSDAのIn OutになってショートしてSDAとして使うらしい。このモジュールだとD2がつながっていないけどこれは簡単にショートできそう。コネクタ剥がすの大変そう。

I2Cはちょっと大変そうだったので、とりあえずSPIで動作確認。今回もArduino環境でESP-WROOM-32を使用した。ライブラリはu8g2を使わせてもらった。
Hardware SPIを使用したかったのでVSPIに接続。SCL(SCLK)は18、SDA(MOSI)は23。DCとRSTは適当なピンを使用した。

さすが1.54インチ。この大きさだと結構文字が見やすい。SSD1309だと2.42インチもあるけどこっちは結構高いので1.54インチは結構コスパいいかもしれない。

SPI使うような高速書き換えしないのでI2Cで使えるように改造できれば手軽に使えて便利なんだけどなぁ

2020年2月15日土曜日

ST7789な1.3インチIPS LCDを試してみた。

0.96インチのOLED LCD(SSD1306)をよく使っていたんだけどももう少し大きいLCDが欲しくなって1.3インチ版を購入したんだけど、そのときにカラーなのに1.3インチ単色OLEDより安いLCDを見つけてしまった。それがこちらのST7789なIPS LCD。
ちなみにSPI接続。

結構小さい。
ストレートのピンヘッダも付属してきた。

今回入手したタイプはCSがないタイプ。ピンヘッダはケースに搭載したときに高さを控えられるようにL字タイプを下向きにつけてみた。部品に当たらないようにちょっと斜め向き。

今回はESP-WROOM-32に接続してテスト。
Arduino-ST7789-Libraryを使用させてもらった。このライブラリはAdafruit GFX Libraryも必要。
Hardware SPIを使用したかったのでVSPIに接続。SCL(SCLK)は18、SDA(MOSI)は23。DCとRSTは適当なピンを使用した。

さすが240x240の解像度。このサイズの文字でも潰れずに読める。
IPSだから発色もきれいだし視野角も広くて良いなぁ。
よくあるArduino向けのTN型カラーLCDって結構視野角が狭い気がするし。

ちなみにサイズ比較をしてみた。
おなじ1.3インチでもスクエアなのでサイズが結構違う気がする。

2020年2月7日金曜日

USB2CANをWindowsで使ってみた。

ラズパイ用のUSB2CANをWindowsでも使ってみた。Innomakerの純正ツールは少し使いにくかったので、microbusというツールを使ってみた。


USB2CANはWindows 10に接続すると自動でドライバがインストールされて、ユニバーサル シリアル バス デバイスの中に"USB2CAN v1"と"USB2CAN firmware upgrade interface"として認識される。

あとはmicrobus_0_2_1_dist_win32.rarをダウンロードしてきて解凍して、microbus.exeを実行する。
署名がないアプリなので、Windows Difenderに警告されるけど詳細情報をクリック。
すると実行ボタンが出てくるので実行できる。

ツールが起動したら再生ボタンを押すとデバイス設定画面が出る。
USB2CANはcandoAPIを介して認識されるのでcando0のBitrateを選択してOKを押すとモニタリングが開始できる。

同じIDからのデータを順次更新していくタイプの表示にしたい場合はaggregate by IDにチェックを入れると良い。
あとは右下からデータ送信もできる。
シンプルで使いやすいかも。

dbcファイルをインポートできるようなのでOBD2の解析にも使えるのかな

2020年2月1日土曜日

Vgate ScanをiOS対応にしてみた

BLEモジュールを入手したのでELM327搭載のOBD2スキャンツールであるVgate Scanに搭載してみた。
Vgate ScanはBluetooth ClassicのSPPにしか対応してない上にMFi認証を撮っているわけではないのでiOSでは使えない。ということでBLEにしてしまえばMFi認証なしでもiOSで接続できてしまうのでBLE対応に改造してみた。

Vgate ScanはELM327をArduinoで使いたいがために数年前にバラバラにされていたので有線にしていたところのケーブルを外してBLEのモジュールをつけるだけ。

BLEのモジュールには毎度おなじみのHM-10、ではなくて結局HM-10クローン。(写真左)一応商品名にはAT-09とかHM-10とか書いてあったけど詳細はよくわからない。
まぁ結局外部クリスタルが載っていないのでクローンなのは画像でわかっていたけれども、お値段送料込みで1.5ドルだし仕方ない。
ちなみにもともとついていたBluetoothモジュール(写真右)はHC-05のクローン?
自称AP-09の裏面にはLB-BT05っていうシルクが入っていてもう訳がわからない。

搭載前にボーレートとかの設定を済ませておきたかったのでICクリップで挟んで接続してみた。
バージョンはv5.3らしい?
そしてコマンドリストはCC41-Aに似てるけどなんか違う?
CC41-Aの新しいバージョンなのかな?

ついでなので更にICクリップを3つほど追加で接続して例によって本家HM-10ファームを焼いてみた。
v707にするとデフォルトのBaudrateが115200らしいのでそこら変注意かも?
ELM327のBaudrateは38400に設定されているのでAT+BAUD2で変更しておいた。

準備ができたのでVgate Scanに搭載。
HM-10とHC-05は電源とUARTのピンアサインが同じなのでそのまま付くから便利。
数年ぶりに組み立てられたVgate Scan。買ってからもはや7年半位経つっぽい。
とりあえず電源をつないでCar Scannerというアプリで接続してみたらとりあえずELM327まで認識した。ちなみにELM327 v1.4bだった。


車につないでみるとちゃんと認識して情報見れるようになっていた。
例によって見れる情報は車によってまちまちっぽいけど。

2020年1月25日土曜日

HM-10クローンのファームウェアを書き換えてみた

だいぶ前にHM-10だと思って買ったCC41-AというBLEモジュールがAndroid10端末でうまくペアリングできなくて、調べてみるとどうやらファームウェアが悪そうなのでアップデートしてみた。
iPhoneだと問題ないんだけどねぇ

CC41-AってのはHM-10というBLEモジュールのクローンでクリスタルが内蔵クロックになっていたりとコスト削減されていてファームウェアもHM-10とは違う模様。
本家HM-10のファームが乗るらしいので試しにHM-10のファームにアップデートしてみた。
今回はArduinoのフォーラムを参考にさせてもらった。レスを見てるとなんかうまく行ってない人もいるっぽいので自己責任ですね。

TiのCC2541というチップと搭載しているらしいんだけど書き込み機とか持ってないのでArduinoで互換のライタを作れるみたいなのでそちらを使用させてもらった。

まずはCCLoaderをダウンロードしてArduinoの互換ライタを準備
ファームウェアはHM-10の製造元のHuamaoのサイトからダウンロードできるけど、ブートローダーが含まれているものが必要らしいのでCCLoaderに付属のものを使用させてもらった。

自分が持っているCC41-Aモジュールはブレークアウト基板付きのモジュールだったので熱収縮チューブをカットして端子を露出させる。

そしたらデバッグ用の端子3箇所にリードをはんだ付け。
とりあえずこれを先程のファームを書いたArduinoに接続。

まぁ確かに5VのArduinoにダイレクトに接続するのはよくなさそうだけどみんなこれで壊れてないようなので面倒だしダイレクト接続で…

これでPCにつないで先程のCCLoaderのなかのCCLoader_x86_64.exeでこれまた付属のCC2541hm10v540.binを書き込む。

コマンドプロンプトを開いて
CCLoader_x86_64.exe 5 CC2541hm10v540.bin 0
のような感じで実行。この場合5はArduinoがCOM5だからで、0はArduinoがAtmega328系だから。パスなどは適宜…
とりあえずこれでブートローダー込のHM-10ファームが書き込めたのでHuamaoの公式ページから最新のHM-10用v707ファームをダウンロードしてきてアップデートしてみた

HM-10化したモジュールをUARTでPCに接続してボーレート9600でAT+SBLUPを送信。
あとは公式アップデータでアップデートするだけみたい。

これで最新のHM-10になったぞ…

ATコマンドが結構変わってたりするのでHM-10の情報を参考にするとそのまま使えそう。
クローンだとボーレート関連の番号が公式と全然違ったりするからこまるよな…

2020年1月18日土曜日

中華Bluetoothモジュールを試してみた

知り合いのスピーカーを修理していて、ついでにBluetooth化もしたいということだったので試しにHW-770という激安Bluetoothモジュールを使ってみた。
CSRでも結構安いんだけど、作動なのでそこらへんの回路作るのが面倒だったのでためしに…


ICにはAS19AP22623-25A4という刻印がされているけど、刻印からICは特定できなかった…
どうやらJLのAC690xシリーズらしい?
ICも中華メーカーっぽい。これで送料含んで200円しないぐらいだった。
対応コーデックは書いてなかった…
電源は3.7V~5Vらしい。

早速電源を入れてペアリングしてみると中国語訛りの英語でしゃべる。
音質はなんかイコライザがかかってるような感じがするけどPC用スピーカーで使うんだし問題なさそう。イヤホンつないでみたけどホワイトノイズは感じられなかった。

データシートとかをネットで検索しているとラダー抵抗でスイッチを組めば再生とか一時停止みたいなコントロールもできそうな感じ。基板上にはTPがついているのでそこからケーブル出せそう。

青色LEDが一個ついていてペアリング待ちは早点滅、ペアリング済みは点灯、再生中は点滅みたいな感じになってるみたい。