Pi-Top(その20)

前の続き。いったん区切ったのは、むちゃくちゃ疲れたから。
原因は単純で、キーボードを接続するコネクタが外れてた、それだけ。

試しに外付けでマウスを使ってみたら、カーソルが動いたので気が付いた。
そういえば最初に作成するときも、このコネクタが抜けやすい&ケーブルが短いのですごく苦労したんだった。
一度組み立ててしまえば外れることはないんだけど。

 

で、コネクタを挿すためだけに上部のキーボード部分を外したんだけど、これが苦労の原因。
とにかく硬くて外れない。どうしたもんかと1時間ぐらい格闘した。
当時組み立てたとき、どういう力で押し込んだんだろう自分。
最初は壊れたらどうしようと恐る恐る力を入れてたんだけど、最終的にマイナスドライバーでこじって開けた。
おかげで樹脂を削りまくってしまった。
これからPi-Topを購入する人は、後々改造するときのために緩めにしておいたほうがいいと思う。
(初代と二代目とは構造違うかもだけど)

 

キーボード裏のコネクタ。これが外れただけで大騒ぎ。

コネクタを挿入し、本体にキーボードを元に戻して電源を入れる。
最初画像が乱れたりして不安になったけど、最終的にはちゃんと起動できた。
wifiの設定してPi-Topのアカウントにログインし、Doc画面が起動。

お疲れ様でした。

しかし日本語環境が選べないので英語のまま。
でもPythonもScrachiも入ってるんで単体のアプリを動かすぶんには問題ない。
また以前のように、勉強用に使います。

 

正直、新しいほうとかPi-CEEDに惹かれなくもなかったんだけど、今はそれほど興味はない。
この子で充分…というより、もっと小さいやつがあったらいいな。

Sponsered Link

ArduinoのI2C関連メモ

Mongoose OSからちょっと離れるけど、せっかくなのでArduinoのI2Cについて調べていた。
OLEDのアドレスで引っかかってた件で気になった。
そういえばArduinoとかでOLEDを表示させる際のスケッチは、普段何気なくコピペしてたので深く考えることがなかった。
というわけで検索して発掘したURLを、自分用にだけどちょっとだけメモっておくことにする。

 

基本はArduinoでI2C通信を使うためのライブラリ、Wire.h。
これについては公式を見たほうがいいかな。
 https://www.arduino.cc/en/Reference/Wire

ちなみにMongoose OSでもArduinoの一般的なライブラリを使ってる。
(全部ではないらしいけど、標準的なのはカバーしてるっぽい)
そもそもスケッチの互換性が一応あるみたい。
当然書き込むボードはESP32とかESP8266になるけど。
ついでに調べてフォーラム見てみたけど、ちと微妙…かな。
 https://forum.mongoose-os.com/discussion/253/arduino-compatibility-is-awesome

 

横道にそれたけど、デバイスのアドレスとかで検索してたら、ArduinoのI2Cに絞ってまとめられてて解りやすいところ。
具体的な使い方。
 https://qiita.com/MergeCells/items/20c3c1a0adfb222a19cd
上記の説明が自分的には一番しっくりきた。
というか、参考になる別サイトへのリンクもあって正直もうここだけで充分じゃんと思った。
しかしやっぱり自力でスケッチを作成してみるのが一番勉強になるよなあ。

 

デバイスのI2Cのアドレス確認は、Arduinoの以下のスケッチで確認できる。
 http://playground.arduino.cc/Main/I2cScanner
接続するとシリアルモニタで確認できる。便利。
ソフトは書けないんでいつもコピペばかりだけど、できるなら自分もこういうシンプルなのを目指したい。

Sponsered Link

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