USBシリアル変換モジュール(ちょっとまとめ)

冬休みに買い漁って、届いたものにUSBシリアル変換モジュールがある。
こういうやつ。

これ、意外といくつあっても足りない。自分の場合、失くしやすいという原因もある。PC回りがブラックホール状態なんで。
それ以外にトラブルがあったときに差し替えてみたり、端子形状で使い分けたりというのがよくある。
接続する怪しいパチもんArduinoもどきやESPなんちゃらのシリーズのせい。

 

まずドライバの件。過去にちょくちょくメモった記事が潜ってきたので、自分用まとめ。
●必須なのはFDTIのドライバ。以前はMacに合わなくて苦労したけど、昨年バージョンアップされて現状、トラブルはない。
公式サイトはときどきチェックしてる。
 http://www.ftdichip.com/Drivers/VCP.htm

 

●あと怪しいArduinoご用達、CH34xのドライバ。
自分は以前gitからダウンロードしたものを入れてそのままだけど、新しいものもどっかにあるかも。
 https://github.com/adrianmihalko/ch340g-ch34g-ch34x-mac-os-x-driver

 

●MacとIchigoJamを接続するのに使ったのはCP2102のドライバ。
公式のものは以下。
 https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers
ちとバージョンが古い感じがするけど、これで問題なく使えてる。

だいたい上記三種類のドライバを入れておくと、格安ボードやモジュールでも認識してくれてる。自分の環境では。

 

それとモジュール本体の件。
あんまり必要ないと思ってたけど、3.3Vと5Vの切り替えがたま〜に必要だったので、先日届いたボードと一緒にジャンパーではなくスイッチで切り替えられるやつを買ってみた。

これはいい!と思ったんだけど、USB端子がminiなんだな…。でもAliExpressから安く買うと、そういうの多い。
…とか文句が多いが、こういう収集自体も結構楽しんでる。安いし。

Sponsered Link

OTTO Robotのその後

だいぶ前に、OTTOというロボットを作って遊んでたことは書いたと思う。

 https://www.hackster.io/otto/otto-build-your-own-robot-in-two-hours-5f2a1c

あれからもこそこそ3Dプリンタで一部改善されたボディを出力しつつ、パーツ集めていじってた。

 

今度はLEDのマトリクスを含んだバージョンを作成しようとしてるところ。

 https://github.com/OttoDIY/PLUS

ここのMatrix codesを使用。

最初にOTTO_FULL_MOUTH_HI.inoをコンパイルしたところ、

 OTTO_FULL_MOUTH_HI:188: error: 'otto' was not declared in this scope
  Otto.putAnimationMouth(otto,i);

というエラーが。

結局、

 exit status 1
 'otto' was not declared in this scope

で止まってしまった。

ざっと検索したところ、どうやらライブラリが読み込めてないエラー。

試しに別のOTTO_todo_MINE_MOUTH.inoをコンパイルしたところ、これは通った。

何が違う??と思ったけど、Otto.putAnimationMouth(otto,i);の行が引っかかってるぐらい。

ここはもう少し突っ込んで調べないと、原因がわからなさそう。しばらく保留にしておく。

 

最終的に、コンパイルしてLEDもまともに動いたスケッチはZOWI_BASE_v2_MATRIX.inoというやつ。

内容的には同じような感じ。ロボットの配線もそのまま使えるので、これで組み立てかけている。

しかし動作確認しながら組み立ててたところ、どうやら電源が弱いと動かないことが判明。

LEDが増えただけで電力不足になった。安物の9V電池だとすぐLEDのみの表示になってしまう。

そもそも公式の組立図見てると、長持ちしそうな単三電池4本使ってるしなあ。

ただ、格安のサーボモータの動きもなんか怪しいのも確か。同じスケッチ使っても、動きに個性がありすぎ。

 

安物のパーツをかき集めて作ると結構大変、ということはよく解った。いつものことだが。

そのうちまともに動くロボットができたら、またTwitterに載せて自慢するかも。

Sponsered Link

Arduinoのコンパイルエラー(Serial.h)

よくわかってる人なら周知の話なんだろうけど、自分は初めて知ったので一応メモしておく。

(また別のスケッチをコンパイルしたら忘れそうだ)

以前もTime.hで引っかかったのと同じような感じ。

 

前回のTEA5767モジュールをまだいじってるんだけど、拾ってきたスケッチを片っ端からコンパイルしていたら出てきたエラー。

 fatal error: Serial.h: No such file or directory

 #include <Serial.h> 

 ^

 compilation terminated. 

こんな感じのやつ。

よくライブラリが足りない時に出て来るエラー。でも前のとはちょっと違う。

 

じゃあSerial.hを拾ってきてインクルードすればいいのか、と思って探しかけたけど、前の経験からしてそういう問題ではなさそう。

それより、Serial.hって普通は標準で付いてくるライブラリじゃなかったっけ?

…と、疑問に思ったので検索してみたところ、いつものArduinoのフォーラムで同じことを聞いていたのを見つけた。

 https://forum.arduino.cc/index.php?topic=486176.0

単純に、「#include <Serial.h>」は削除しちゃっていいらしい。

理由もちゃんと書いてあって、HardwareSerial.hの中ですでに定義されているため不要とのこと。

さらにHardwareSerial.hはArduino.hに含まれていると。

まあとにかくわざわざ宣言する必要はないよということらしい。なるほど。

実際、コメントアウトではなく削除してコンパイルしたところ、エラーは出なくなった。

 

スケッチの履歴を見ると2,3年前ぐらいで、前のエラーが出たやつと同じ時期に作成された感じ。そんなに古いスケッチじゃないと思うけど、そうでもないのか。

Arduino IDEをバージョンアップさせるたびこんなことやってるんで、こまめにチェック、というほどでなくてもたまには起動して勉強しないとなあ。

で、肝心のTEA5767はまだうまく動かない。先にこっちだな。

Sponsered Link

TEA5767とArduino

ここんとこAliExpressからパーツが次々届くので、せっせといじり中。

ただ、届くのに一ヶ月とか時間がかかるせいで、何がしたくて買ったのか覚えてないものも多々ある。

 

たぶんD1 miniとかでラジオを作ってみようと思って買ったのは、TEA5767というICのモジュール。

封筒に基板とアンテナが別々に入ってやってきた。

アンテナ付きでも3ドル程度。とってもお手軽。

 

簡単にArduinoで動作チェックをしようと思ったが、ボリュームやLCD付けたりと凝った接続とスケッチが多い。

単純にこのモジュールとArduinoだけの接続のものを画像検索で探して見つけた。

 http://www.ardumotive.com/how-to-use-the-tea5767-fm-radio-module-en.html

スケッチと、必要なライブラリは上記のページ内にリンクがあるのでそこからダウンロード。

自分の環境ではTEA5767.hのライブラリだけなかったので読み込み。

 

最初、接続は格安Arduino UNOもどきで実験してみた。

これで合ってるはずなのに、どうしてもシリアルモニタに何も表示されない。

スケッチはそのまんまだし、配線も4本だけで単純すぎて、チェックしようがない。

試しに別のArduinoを接続してみたところ、反応があった。

Arduino Nanoだけど、接続する端子は当然同じ。

Arduinoの方が壊れてたか。そういえば前にも動作しなかったことがあったっけ。

壊れたやつはもったいないので、いずれ修理することにする。

 

とにかく上記の状態で、シリアルモニタを見てみると

 Current freq: 96.00MHz Signal: MONO 10/15

とか、現在の周波数が表示されてるはず。

シリアルモニタから+かーを入れて送信すると、周波数が変化するんで動作が確認できる。

 

これならラジオ聴けるかな?と思ってスピーカーとアンテナと繋げて周波数は最寄りのFM局にしてみたんだけど、ノイズだけでどうも受信できてないみたいだ。

一応動くということだけで、ちゃんと使えるようにするにはもうちょい考えないとダメか。

Sponsered Link

Arduino用2.4inchTFT LCDシールド(2枚目その後)

なんかだいぶ前にいじってたLCDシールドの件、再び。

結局、自作のBMPファイルを表示できずに挫折したやつです。

 

ちょっとしたフォトフレームを作りたくなったので、お手軽にArduino UNOに接続できるLCDを引っ張り出してきた。

新しいもの買うより、こういうシールドやモジュール使った方が楽なので。

でも一旦挫折したLCD相手では、正直無理かなと思ってた。

が、以前から参考にさせていただいているホームページの記事で、ふと見つけた記載にショックを受けた。

 http://nopnop2002.webcrow.jp/Arduino-Hard/ArduinoTFTShield.html

0xC505という数字にピンときた。

自分は当時、FT1505Cと判断しちゃったけど、これってR61505シリーズなのか?

 

試しに、自分の環境でも確認用のスケッチを走らせることにした。

 https://github.com/prenticedavid/MCUFRIEND_kbv/tree/master/examples/LCD_ID_readreg

LCDを乗せたArduino UNOを接続し、上記を実行。すると…

 

Read Registers on MCUFRIEND UNO shield
controllers either read as single 16-bit
e.g. the ID is at readReg(0)
or as a sequence of 8-bit values
in special locations (first is dummy)
 
reg(0x0000) C5 05    ID: ILI9320, ILI9325, ILI9335, ...
reg(0x0004) 00 00 00 00    Manufacturer ID
reg(0x0009) 00 01 00 01 00    Status Register
reg(0x000A) 00 00    Get Power Mode
reg(0x000C) 00 00    Get Pixel Format
reg(0x0061) 00 00    RDID1 HX8347-G
reg(0x0062) 00 01    RDID2 HX8347-G
reg(0x0063) 00 00    RDID3 HX8347-G
reg(0x0064) 00 00    RDID1 HX8347-A
reg(0x0065) 00 00    RDID2 HX8347-A
reg(0x0066) 00 00    RDID3 HX8347-A
reg(0x0067) 00 00    RDID Himax HX8347-A
reg(0x0070) 00 00    Panel Himax HX8347-A
reg(0x00A1) 00 00 00 00 00    RD_DDB SSD1963
reg(0x00B0) 00 00    RGB Interface Signal Control
reg(0x00B4) 00 00    Inversion Control
reg(0x00B6) 00 00 00 00 00    Display Control
reg(0x00B7) 00 00    Entry Mode Set
reg(0x00BF) 00 00 00 00 00 00    ILI9481, HX8357-B
reg(0x00C0) 00 00 00 00 00 00 00 00 00    Panel Control
reg(0x00C8) 00 00 00 00 00 00 00 00 00 00 00 00 00    GAMMA
reg(0x00CC) 00 00    Panel Control
reg(0x00D0) 00 00 00    Power Control
reg(0x00D2) 00 00 00 00 00    NVM Read
reg(0x00D3) 00 00 00 00    ILI9341, ILI9488
reg(0x00D4) 00 00 00 00    Novatek ID
reg(0x00DA) 00 00    RDID1
reg(0x00DB) 00 00    RDID2
reg(0x00DC) 00 00    RDID3
reg(0x00E0) 16 06 16 06 16 06 16 06 16 06 16 06 16 06 16 06    GAMMA-P
reg(0x00E1) 07 88 07 88 07 88 07 88 07 88 07 88 07 88 07 88    GAMMA-N
reg(0x00EF) 00 02 00 02 00 02    ILI9327
reg(0x00F2) 00 71 00 71 00 71 00 71 00 71 00 71    Adjust Control 2
reg(0x00F6) 00 52 00 52    Interface Control

 

と出力された。赤字の部分から、やっぱりR61505Wだと判明。

2年越しに正体がわかった瞬間でした。やれやれ。

 

しかし書き込みができるライブラリやスケッチが見つからない。

ILI9325用のライブラリが使えるらしいんだけど、うまく動かなかった。コンパイルでエラーは出ないんだけど、画像が出ない。

探し回ったというほどでも無いけど、R61505Wで検索したら見つかった。

 https://github.com/prenticedavid/MCUFRIEND_kbv

上記をダウンロードして、ライブラリを読み込んだ後にshowBMP_kbv_Uno.inoを開いてコンパイル。

無事完了したので、320x240の自作ビットマップ(Photoshopでセーブ時に24bit、詳細モードで16bitのX1R5G5B5を選択)にしてSDカードに保存、LCDに挿しておく。

 

これで書き込みしたところ、あっさり表示されるようになってしまった。

嬉しいけど、あの努力はなんだったんだという、いつもの感じ。

画質は良く無いです、でもこの画像、昔のガラケーから取り出したやつなんで元々こんなもん。

4枚ほど画像を入れて見たけど、多少ドットがおかしくなったりちょっと安定しない。

この手のLCD、もうちょい買ってみようかな。多分また苦労するんだろうけど。

Sponsered Link