【M5】ATOM LiteをM5StickCの代替えにした<ほぼそのまま動く>

 

M5StcikCを5個もそろえてしまったが、クランクに仕込むには、液晶DISPLAYはいらないし、サイズが未だ大きすぎなので、今春発売になったATOM Liteを試してみました。1個980円なので、M5StickC(1800円)1個分で2個弱買えるので抜群のコストパフォーマンスです。M5StickCかM5Stackをお持ちの方なら、2個めからATOMを複数個そろえると、並み居る自作CPUの中でもコストパフォーマンス最高に使えると思います。ただし、ESP32ベースなので全体的に電池食いますので、LiPo電池前提です。
SwitchScienceさんのページ

■私の使い方で使えるか確認してみました。
私の使い方は無線システムとしてM5Stackと2台のM5StickC
をESP-NOWで接続して同時に2個からの高速データ通信を1台のM5Stackで受信する用途です。ここ3年間Xbee、BlueToothでトライしてできなかったのですが、ESP-NOWで同期精度と信頼性を実現できてます。


25x25x10というけど相当小さいです。使い出がありそうです。
下手な無線モジュール独立でつけるより、EPS32-pico-D4のほうがサイズパフォーマンス良いので、実装を小さくしたい場合はよいです。

●ATOMとM5StickCの違いの解説がありました。
https://lang-ship.com/blog/work/m5stack-atom-matrix-atom-lite/

CPUが同じでフラッシュも同じで、その他がついてない
GPIOピンがM5StickCより2本多いので、SPIとi2cが使えそう。(要確認)

 

 

●ATOM LiteをM5StickCの代替えで使う場合の注意
M5社では、まだ、ArduinoIDE用のATOMライブラリーが完成できてないみたいです。一応ライブラリーでM5Atomはインストールするのですが、そのままで、include <M5Atom.h>は動作しませんでした。=>あと数か月で動作するようになると思います本日が6月30日だから夏秋ごろかな。
このような場合、WEBで検索して無理やりさがして使いこなす努力はしないことにしてます。現在使っている方法で、使えなければ、使えるようになるまで放置しておくことにして、無駄な時間をかけないようにしてます。
■mbedも放置状態
mbedStudioですが、これは2年待ってますがまだまともになってきません。mbedは,OS2ユーザーが切り捨てられる傾向にあって、昔のプログラムが動作しなくなってきてます。そうなると、過去資産が使えなくなるので、ユーザーは減ると思います。ARM社の凋落に比例してます。新たなRTOSのプログラムを作るときだけ使ってARMの将来があるのかウォッチしていきます。
=>ということで、今まで使っていた、include <M5StickC.h>を使って動作するか試してみました。
現在のM5StickCで動作させているESP-Nowが動作するか確認しました。

 

●LangShip様のESP-Nowのサンプルプログラムで変更箇所
https://lang-ship.com/blog/work/m5stickc-esp-now-1/
M5StickCの場合は、一切変更しないで、上記リンクのブログ記事からコピペして、コンパイルOKで動作したのですが、
 AtomLiteの場合もコンパイルOKで一応動作します。
しかし、メインボタンのGPIO番号が違うのでそこだけ変更すれば、完全互換でOKでした。

ボタンの違い M5StickC Atom Lite
メインボタン
(真ん中にある大きい)
M5.BtnA=>GPIO37 GPIO39
右ボタン
(右側にある小さい)
M5.BtnB=>GPIO39 無し

 なので、ESP-Nowsend動作ボタンの指定を
if ( M5.BtnA.wasPressed() ) {  //M5StickC用

if ( M5.BtnB.wasPressed() ) {  //M5Atom用

に変更しておけば、他は、完全に同じで動作しました。DIPLAYはないので、M5.Lcd命令は無視されます

●動作確認
上記ボタン文だけ変更して、それぞれに書き込んでボタンを押すとFF6
個(ブロードキャスト相当)を送信します。受信して、送信元のMACアドレスをTeraTermへSerial.printしてくれます。

●以後
  ATOM Liteをあと3個購入して、クランクとフレームについているM5Stcikと交換します。

 

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です