2021年3月28日日曜日

CAN送受信OK...M5stack+M5StickC plus

今回は

前回M5stackとMCP2562というCAN トランシーバーを使って送受信試験をしましたが、うんともすんとも言わずで終わりました。デジタルオシロ等あれば、確認できるのですが持ち合わせていません。出来合いのモジュールがあることがわかり、それらを使って送受信の確認をしてみます。

M5stack commとM5stickC+CAN moduleで送受信

M5stickC Plusの準備

CAN moduleを購入し、GROVEコネクタにて接続します。GROVEコネクタの実態はI2C接続です。M5stickC Plus側は、GND,5V,SDA,SCLの4線です。このコネクターは、HY2.0-4Pという規格だそうです。名前のとおりピンのピッチが2mmとちょいと狭いです。汎用のコネクタは、はまりません。メス配線コネクターも市販のものは大抵2.54mmなので、この2mmピッチのコネクターが必要です。配線には専用ケーブルを用意するか、手持ち組み合わせて工夫が必要です。0.54mmなんとかなるかと思いましたが、なりませんでした。

CANモジュールはGROVEケーブルを介して外付けなのでちょいとでかくて、M5StickCと同じくらいの大きさです。モジュールの先端は内部と電気的に分離されてCAN BUSになっておりGND、CAN_H、CAN_Lを接続します。

ソフトウェアは、参考が多いArduinoにします。参考リンクのソースそのままで送信プログラムは動きました。ボタンAとBを押せば、それぞれ異なるメッセージがID 0x0でCAN BUSに送信されます。

M5stack+commu moduleの準備

M5stackにスタックできるcommuモジュールを購入しました。これは、esp32とSPI接続してそれぞれのドライバーにつながっていて、以下のインターフェースが入出力できます。

  • I2C x 2
  • CAN × 1
  • RS485 × 1
  • TTL × 1

モジュールを本体の底にガチャっと差すだけでOKです。配線間違いの可能性を低減できます。本体とドッキングしたときの側面4方向です。バッテリーモジュールも接続してます。これで、150mA→750mAに容量が上がります。

ソフトウェアはサンプルコードが各種提供されているの、それを参考に作成します。ほぼそのままですが。

CAN送受信試験

送信機と受信機ができたので、送受信できるか確認します。CAN_H、CAN_L、GNDをそれぞれ接続して、CAN_HとCAN_Lの間に120Ωの抵抗を終端として入れます。全体の接続は以下のとおりです。

全体構成とそれぞれの部位は、以下のとおりの構成です。

配線の長さが短いので配線は撚らなくても(twist pairにしなくても)大丈夫です。

送信機は、以下のとおりAとB2種類のメッセージを送信します。

受信機は、2種類の8バイトメッセージを受信してます。

送信機からCAN ID 0x0 にAとBを加えて異なるメッセージを送信すると、受信機側でそれぞれ受信していることが確認できました。

CAN送信機のトランシーバーをMCP2562に変更

送受信確認できたので、以前うんともすんとも言わなかったトランシーバーに変更してみます。再度データーシートを見直すとVDDとVIOが内部で繋がっていないことがわかりました。MCP2561は繋がっているようです。よく確認が必要です。VIOへ配線を追加して、トランシーバーを変更して送受信すると、問題なく送受信確認できました。

一式ちゃんと動くセットがあると、デバッグしやすいです。デジタルオシロ買わずになんとかここまで進んだ感じです。オシロがあればもう少し早くここまでたどり着いたかもです。引き続き購入は検討します。

今日のまとめ

M5stack+commuモジュールとM5StickC+CANモジュールを使ってCAN送受信の確認ができました。また、以前動かなかったmcp2562トランシーバも動作確認ができました。

更にCANメッセージの内容を確認してソフトウェアを改良しつつ、バイクからデータを吸い出せるように引き続き検討したいと思います。

参考リンク

M5StickC PlusでCAN通信 - Embedded &oT

M5Stack Commuモジュール - スイッチサイエンス

2021年3月20日土曜日

VScode+docker拡張機能がいけてる

VScodeとdockerのマリアージュ

VScodeのdocker拡張機能がMicrosoftから配布されており、VScode上でdockerコンテナの管理がいい感じです。今回試したのは以下の図のとおりの接続イメージです。Win10上のVScodeからPi4bにsshで接続します。pi4b上のdocker-compose.ymlをup,downしたり、簡単にbash attachすることができます。

同様にコンテナコントロールは、ローカルでもリモートでもOKです。Win10で動いているWSL2上のdockerも管理できます。kubenetesを使うと、もっとまとめて管理ができるのかもです。今後試してみたいと思います。armとIntelが混在すると面倒かもしれません。

VScodeの画面はこのような

pi4bでは、dockerとdocker-composeが動いているという前提です。どちらもapt-get installにて簡単にインストールできます。docker-composeで使用するymlファイルを選んで右クリック「up」すると、ymlの設定に沿ってコンテナが立ち上がります。

dockerコンテナの稼働状況は左エリアにそれぞれ表示されます。

左エリアのコンテナを右クリックすると、それぞれのコンテナが吐き出すログ見たりshell attachやinspectで動作状況の表示などかゆいところに手が届きます。

まとめ

docker初心者ですがVScodeとdockerのマリアージュはすばらしいです。ローカルもリモートも同じ環境で管理できるのはよいです。環境は出来たので、dockerの使い方や設定ファイルの書き方を更に勉強していきたいと思います。

2021年3月13日土曜日

M5stackにM5stickC plusな話題

M5stackとは

2017年に中国深圳にてJimmy Laiさんが資金調達して生産し始めた製品です。マイコンにespressif社のesp32を使用して5x5cmのケースにセンサーやLCD、プッシュボタンをレイアウトしたIoTのベースキットのようなものです。ソフトウェアはarduinoやmicropythonで開発が可能であり、サンプルも充実してます。ちょっとした試作やお勉強にはぴったりな製品です。日本でもSwitch Science社が取り扱っており、Amazonでも購入することが可能です。

写真は右がM5stickC plus、左がM5stack greyです。

今の取り組み

とりあえずはサンプルコードを動かしながら各種機能を確認してます。以前9軸センサーの表示を書きましたが、CAN送受信機、傾斜計、センサー送信機等並行して進めています。Arduinoは先人が多くサンプルコードも機能ごとにたくさ‘んアップされています。

大きく分けて3種類

M5シリーズは大きく分けて3種類あります。定番はM5stackシリーズ、ちょいと小型のM5stickシリーズ、更に小型のATOMシリーズです。それぞれには、バッテリーの大きさやセンサーや液晶の違いで数種類バリエーションがあります。どれもマイコンはesp32なので開発は同じ環境で可能です。

開発環境はVScodeでしょ

堅実な開発環境は、ArduinoIDEです。ライブラリーの追加等は非常にやり易いし、サンプルを読み込むのも簡単です。エディターがベタな感じでいけてないのが難点です。

流行りはVScodeに拡張機能PlathomeIOを使った環境ですが、ちょいと製品発表とはリンクせずワンテンポ遅れます。この前発売された500円マイコンボードのPi picoも無理やり使うことができますが、ラインアップにはまだ入ってません。今回購入したM5stickC plusもボードの選択肢にはまだ入っておらず、似ているM5stickCを選ぶとTFT画面がきちんと表示されません。

M5stickCとM5stickC plusは、ちょいと違います

購入したのはM5stickC plusです。M5stickCとの違いは、TFT画面が気持ち大きいのと、リポバッテリー容量が気持ち大きい点です。

M5stickC

0.96インチ 80×160 TFT (ST7735S)

80 mAh LiPoバッテリー

M5stickC Plus

1.14 インチ 135x 240 LCD (ST7789v2)

120mAh バッテリー内蔵

バッテリー容量は、ほんと気持ち程度です。TFTは大きさも違うしドライバーも違うので、M5stickCのバイナリーをM5stickC Plusに書き込むと表示は出来ますが、こんな感じで悲しくなります。TFT_clockのサンプルコードを書き込んだ例です。M5stickC.hを読んでバイナリーを作成するとこうなります。

M5stickCPlus.hを読み込むと以下のようにちゃんと表示されます。

VScode+PlathomeIOでは、まだライブラリーが整理されてません。読み込むヘッダーファイルを以下のように区別すれば、make出来るのと出来ないのがありますがそれなりに実行ファイルを作ってくれます。

#include <M5StickC.h>
#include <M5StickCPlus.h>

時間が経てば整理されてくると思います。ArduinoIDEを使えば問題はありません。

今日のまとめ

M5シリーズのざっくりまとめと、M5stickCとPlusの違いについてまとめました。VScode+PlathomeIOでは、M5stickC plusのライブラリーが追い付いていません。もう少し時間がかかるようです。

ページ引っ越しました

このページは、以下に引っ越しました。内容も逐次移行中です。引き続きよろしくお願いします。  https://hkaji.github.io →こちら