M5StickC(その1)

先日、M5StickCも購入した。

AliExpressで、アクセサリー付きを選択。

AliExpress.com Product - New Arrival ! 2019 M5StickC ESP32 PICO Mini IoT Development Board Finger Computer with Color LCD

このアクセサリー付きが在庫なしだったので、出てきたのを見計らって注文した。

その後一週間かからないぐらいで届いたので、やっぱり公式の通販は安心感がある。

 

袋から出したらさっそくウチの猫の攻撃を受けたが、USBを接続したら画面表示が出たので動作は無事っぽい。

写真撮ると画面が白くなっちゃったけど、wifiチェックの画面が出てた。

ドキュメントも一応確認。

 https://docs.m5stack.com/#/en/core/m5stickc

 

テスト用のサンプルプログラムを求めて、githubを探す。

 https://github.com/m5stack/M5StickC

上記中のexampleから、Hello Worldを表示させるだけのスケッチを使う。

いつも通り、自分が慣れてるArduino IDEで書き込み。

 

その前にライブラリを追加。

そのまんま、ライブラリマネージャでM5StickCで検索すると出てくるのでこれをインストール。

スケッチを書き込む時には、ハードウェアを選択。

これはM5Stackの設定ができていれば出てくるはず。

(いつの間にか入ってたの知らなかった…)

書き込みには微妙に時間がかかった。

というより、もう終わったかな?と思ってから、ちょっと時間がかかった。

一瞬失敗したかと思ったけど、ちゃんとHello Worldが表示されてます、見辛いけど。

どうやら問題なさそうですね。(一度落としたけど)

 

ちっちゃいものはやっぱり楽しい。

M5Stackでもまだ遊びきれてないですが、並行してこのM5Stickもいじっていきます。

Sponsered Link

M5Stack(その17)

サーボネタのメモがまだ続く。
M5StackのServoモジュールはすでに持ってるんだけど、また別のものを購入。

Servo Driver Shield、こっちのやつです。
https://www.switch-science.com/catalog/5411/

徐々に在庫なくなってるので、滑り込みセーフだったかも。

AliExpressのセールでさんざん買いあさったせいで軍資金が尽きてたけど、Paypalに返金があったので購入。
しかも注文して2日で届いた。ネコポスでも早い。
ゴールデンウィーク中、引きこもっていじりたかったからうれしい。

 

すでに似たようなのを持ってるのにどうしてもこのモジュールが欲しかったのは、AdafruitのPWM Servo Driverが使えるというのもある。
過去にいろいろいじってたAdafruitのサンプルプログラムをちょっと改変すれば簡単に使えそうだったので、試してみたくなった。
ちょっと今サーボモータにハマってるのもあるし。

 

Adafruitのライブラリは以下。

 https://github.com/adafruit/Adafruit-PWM-Servo-Driver-Library

ここにある、一番シンプルなサンプルスケッチのservo.inoを使用。
元は複数のサーボモータを順に動かすんだけど、一つにしてちょっといじった。

M5Stackにはせっかくボタンがあるので、動きをコントロールできるようにした。

以下のような感じ。

 

#include <M5Stack.h>
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>

Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x72);

#define SERVOMIN  150 // this is the 'minimum' pulse length count (out of 4096)
#define SERVOMAX  600 // this is the 'maximum' pulse length count (out of 4096)

uint8_t servonum = 1;

void setup() {
  M5.begin();

M5.Lcd.setTextFont(4);
M5.Lcd.setCursor(50, 100);
M5.Lcd.println("M5Stack Servo test!");

  pwm.begin();
  
  pwm.setPWMFreq(60);  // Analog servos run at ~60 Hz updates

  delay(10);
}

void setServoPulse(uint8_t n, double pulse) {
  double pulselength;
  
  pulselength = 1000000;   // 1,000,000 us per second
  pulselength /= 60;   // 60 Hz
  pulselength /= 4096;  // 12 bits of resolution
  pulse *= 1000000;  // convert to us
  pulse /= pulselength;
  pwm.setPWM(n, 0, pulse);
  }

void loop() {
  M5.update();
 
 if (M5.BtnA.wasReleased()) {
  for (uint16_t pulselen = SERVOMIN; pulselen < SERVOMAX; pulselen++) {
  pwm.setPWM(servonum, 0, pulselen);
  }

} else if (M5.BtnB.wasReleased()) {
  for (uint16_t pulselen = SERVOMAX; pulselen > SERVOMIN; pulselen--) {
  pwm.setPWM(servonum, 0, pulselen);
  }
}
}

それとサーボホーンが動くだけでいいのに、わざわざアームを3Dプリンタで出力。

 https://www.thingiverse.com/thing:2302957

SG90をひとつ使うだけのちっちゃいやつなので、出力も作るのも簡単でした。

 

ツイッターに投稿したやつ。

角度を調整しなかったもんだから、ギリギリまで広がっちゃう。(今だにプログラムがよくわかってないんで)

でもちゃんと動作してるので、とりあえず問題ない。

 

最初に購入したほうのモジュールでもまだまだやりたいことがあるし、宿題が多くなってきたけど楽しい。

動くものってやっぱり面白い。でももっと勉強しないとなあ…。

Sponsered Link

M5STACKの保護フィルム

前にM5Stackの画面にヒビを入れたので、ちょっと懲りて画面の保護フィルムを買ってみました。

(ヒビというか、割れちゃったんだけど…これ以上傷が付くのももったいないし)

クリーナー用の小さい布付き。

購入したのはどんな画面の保護フィルムも売ってる(かどうかはわからないが)、ビザビの楽天市場店。

もちろんamazonにもあります。

今回は値段の差がちょっとある二種類を購入。どちらも低反射のタイプ。

値段が1000円前後なので、いつも中国から安物保護フィルムを買ってる自分としては高いなあと思う。

でもスマホとは違って持ち歩くわけでもないのに結構傷つけてるので、もう少し大切にしてあげないとなあと反省して購入。

 

画面のツヤと、フィルムのマット感の差。

貼っちゃうと、当たり前だけどサイズぴったりでもうわからないので。

こっちは低反射だけのタイプ。

自分は反射しない方が好きなので、これは嬉しい。

 

もう一方の傷修復タイプ(ちょっと値段が高い)は、M5Stack Grayが新しく届く予定なのでそれに貼るつもり。

壊したやつとは別にまだ持ってたのに、またうっかり注文してしまった…。
こうやって手持ちのM5Stackが増えてくんだな。困らないけど。

Sponsered Link

M5STACK(その16)

しつこいですが、ESP-CAMの画像をM5Stackに表示させるメモ、解決編。
結局、M5Stackはほぼ問題なく、ESP-CAMに書き込むファームウェアを変えるだけで終わりました。

ESP-CAMは以前取り上げた、ESP-IDFで書き込む方法の「esp-who」にあるサンプルプログラムを使えばOKでした。
 https://github.com/espressif/esp-who
にある、
 https://github.com/espressif/esp-who/tree/master/examples/single_chip/camera_web_server
です。

 

参照したサイトの説明通り、githubからクローンして~/esp-who/tree/master/examples/single_chip/camera_web_serverのフォルダ内でmenuconfigで設定を書き換え、フラッシュしてmonitorでURLを確認。
この画像を参照するURLで、
 http://IPアドレス/capture
と、IPアドレスの末尾に/captureを追加すると、取得した画像のみweb上で見ることができました。
(どこかのESP32関連のフォーラムに書いてあったんだけど、場所忘れた…)
形式はjpgになってるようです。というか、なってた。

画像サイズは元の
 http://IPアドレス
側で設定できるので、その場で変えられて便利。

 

M5Stackのスケッチも、参照先のURLをcapture付に変更して書き込み。
画像サイズはM5Stack用に320x240にして、無事表示することができました。

謎の物体が映ってますが、一応ポンデライオンのフィギュアを写そうとしたんです…。

難点は見ての通り、ESP-CAM本体の配線が邪魔なことですね。
書き込みは終わってるので、動作をmonitorで見る必要がなければ電源GND以外のピンは抜いても良さそうですが。

スッキリした基板がいいなら、やはりM5StackオフィシャルのESP32-CAMを使用するのがいいと思います。

Sponsered Link

M5STACK(その15)

M5Stackの話だけど、実質ESP-CAMの話の続き。

やってみたことメモ。(まだ続く)


せっかくなので、ESP-CAMで撮った画像をM5Stackに画像を転送しようと考えた。
というより下記のページを見つけたので、これだったら同じことができるかな?と単純に考えた。
 https://www.instructables.com/id/M5Cam-X-M5Stack/

M5StackにはArduino IDE用のスケッチが用意されてた。

 https://github.com/moononournation/M5Stack-Cam-Viewer

SSIDやパスワードなんかを修正してこれをM5Stackに書き込んだらOK…とは、いかなかった。 

環境が違うのに、そんなに簡単に行くわけないか。

 

しかしスケッチ自体は普通にコンパイルできていて、エラーが出てるわけではない。
シリアルモニタを見ると、以下のような状態。

 entry 0x40078ad0
 M5Stack initializing...OK
 E (707) wifi: misc_nvs_load 208 ret=4364
 E (707) wifi: wifi_init 1420 ret=4364

とにかくjpeg画像を探しに行ってもらわないと困るのに、その手前で止まっているようだ。
また壊したかな?とドキドキしたが、wifiを使うほかのスケッチを試しに書き込んだら動いたので、これだけの問題らしい。

 

検索してみても、該当するエラーがあまり見られない。
ESP32関連で、どうもフラッシュメモリをクリーンすると動くようになる、という書き込みはあった。
でもこのArduinoの環境で、どう対応するかなと考えていたが、よく参照させていただいているmeg-tecさんのブログにそれらしき解決策があった。

 ESP32 ( ESP-WROOM-32 , M5Stack )自分的 トラブルシューティング まとめ

 https://www.mgo-tec.com/blog-entry-trouble-shooting-esp32-wroom.html/2

上記の、

 9.今まで問題無かったのに、急に Wi-Fi ( WiFi )に繋がらなくなった

を参考にさせていただきました。

対策その2の最後を参照してスケッチに一行追記したところ、これが正解だったようだ。

 WiFi.disconnect(true); ←こっちを追加

 WiFi.begin(ssid, password);

ESP32はちょっとクセがあるというか、この手の問題に引っ掛かりやすい気がする。

 

スケッチを書き込み直して、再度シリアルモニタを確認すると、
 M5Stack initializing...OK
 [HTTP] begin...
 [HTTP] GET..

 [HTTP] GET... code: -11
 [HTTP] GET... failed, error: read Timeout

となり、ちゃんと画像を探しに行ってる。
しかし画像にアクセスする前に接続が切れている。

今度は別の問題かと思い、検索すると似たような(?)対策を行なっている人発見。

 https://qiita.com/ktetsuo/items/03365a9123a04481809d

上記を参照したけど、結果は同じだった。

 

やっぱり何よりアクセスというか、データ自体が重いようだ。実際、webブラウザから見ても重いし。

とにかく画像サイズが大きいので、これをなんとかしないといけないな。

引き続き、もうちょっと実験中。

Sponsered Link