Introduction
M5Stack/M5Camera/M5Stick/M5Atom/M5Stamp
それぞれコンパクトなケースに沢山の機能が詰まった魅力的なIoTデバイス
マイコン世代のひとはM5と聴くと
SORD m5を思い出すはずw
解析と動くロボットの製作などしています。
内容は
Indexにまとめています。お好みの内容をまったりとご覧下さい。(^_^)
備忘録も兼ねています。バージョンなどの違いによって使い方が変わっている可能性もあるのでご注意ください。
長くなったのでMicroPython編は別ページにまとめました。
公開している内容を著者に無断で転載あるいは商業目的で利用することを禁止します。
改造等は個人の責任のもとに行って下さい。発生した事故、故障などに対して一切の責任を持ちません。
公開している内容のアイデアを流用した作品、および公開している独自の解析結果を含む情報を、SNS、ブログ、書籍などで発表する際はご一報ください。こちらのサイトへのリファレンス(リンク)を加えてください。
改造により電波法違反となる可能性があります。当サイトでは適時、ダミーロードなどの電波を微弱化する処置、および電磁波シールドを使用しての電磁波漏洩対策等を行っており電波法の適用範囲内で実験しています。改造は自己責任でお願いします。
技適(工事設計認証)に関する情報 →
Index
ハード編
MicroPython編
M5Stack / M5GO
ドローンTelloをM5Stackで飛ばしてみました。(バイナリーモード) (2018/06/12)Index
M5Stack(M5GO)でTelloのバイナリモードを使ったコントロールに成功しました!
ファームはオフライン版のm5stack-20180419-v0.3.9.binを使いました。
バイナリモードなのでカクカクしないでスムーズに動きます。
MPU9250の傾きでTelloを制御します。
Aボタン長押しでコネクト
Bボタン長押しで離陸
Cボタンで着陸
前後の傾きで前後移動※
左右の傾きで左右移動※
Aボタンを押しながら前後の傾きで上昇下降※
Aボタンを押しながら左右の傾きで左右旋回※
※傾き角度で速度調整
Telloのバイナリ制御はPingguSoft-pytello-09d98e0e1646からMicroPythonに移植しました。
PingguSoft-pytello-09d98e0e1646.zip
M5Stack用のモーターモジュールを自作してみました。(2018/06/24)Index
M5Stackのコンパクトな筺体にあわせて出来るだけ小さくレゴ互換のモーターモジュールを作ってみました。
設計当時、M5Stack界隈初のロボットカー!M5BALAより先行!
ケースの内幅は50.4mmです。バッテリーはケースに入ることを確認してください。
LiPo 3.7V 〜1000mAh 503450(厚さ5mm x 34mm x 50mm)
LiPo 3.7V 1000mAh〜1200mAh 603450(厚さ6mm x 34mm x 50mm)
千石電商でも扱っているようです。
パチパチクラッピー[トール君]を自走式にしました。(2018/07/01)
いちぶでは有名なパチパチクラッピー[トール君]を自走式にしました。(^_^)
クラッピーもサーボでパチパチします。メカも完全内臓、元のスプリングを生かしているのでしっかりパチパチします。そして!手動でもパチパチ出来るステルス改造になっています (^_^)
インターフェースをI2C(Grove) にしたのでM5Stackに直結出来ます。
ご要望が多いので内部機構を公開、サーボーを完全に内蔵して、さらに手動でも動くようにするために、最初にレバーなどの部品を採寸して図面化しました。ここから追加パーツを設計して作っています。
New AIBO風のシッポを付けました。(2018/07/18)
パチパチクラッピー[トール君]の目を動くようにしました。(2018/08/11)
M5Stack WALL-E完成しました!(2018/07/24)
WALL-E LEGO(21303)についてはこちらでも解説しています!
Raspberry Pi を使ってみる
M5Stackで家のドアをメイドカフェ風に改造してみた。 (2018/10/19)Index
ドアに取り付けると開け閉めの方向を検知してキズナアイの声で「いってらっしゃいませご主人様」「おかえりなさいませ主人様」と言ってくれるのでお手軽にメイドカフェ風のドアに変わります。(^_^)
音割れ対策として音声ファイルは波形編集ソフトを使って音量を下げています。
(量子化ビット数が犠牲になります。)
import machine
from machine
import Pin
import time
from time
import sleep, sleep_ms
machine.freq(240)
buttonA = Pin(39, Pin.IN)
buttonB = Pin(38, Pin.IN)
buttonC = Pin(37, Pin.IN)
if not buttonA.value():
while(True):
pass
import display
tft = display.TFT()
ips_check = Pin(33,Pin.IN,Pin.PULL_DOWN)
if ips_check.value():
display_type = tft.M5STACK_IPS
else:
display_type = tft.M5STACK
Pin(33,Pin.OUT)
tft.init(display_type, width=240, height=320, rst_pin=33,
backl_pin=32, miso=19, mosi=23, clk=18, cs=14, dc=27,
bgr=True, backl_on=1, rot=tft.LANDSCAPE, splash=False)
tft.image(0,0,"kizuna.jpg")
tft.font(tft.FONT_Ubuntu, rotate=0, fixedwidth=True, transparent=False)
Neopixel = machine.Neopixel
np = Neopixel(Pin(15), 10,Neopixel.TYPE_RGB)
np.show()
np.set(1, 0x000000,0,10,True)
try:
i2c = machine.I2C(sda=21, scl=22)
except:
print("I2C Error")
print(i2c.scan())
imu_name = ""
try:
imu_type = i2c.readfrom_mem(0x68, 0x75, 1)[0]
except:
imu_type = 0
if imu_type == 0x19:
import mpu6886
imu = mpu6886.MPU6886(i2c,address=0x68,
accel_fs = mpu6886.ACCEL_FS_SEL_16G,
gyro_fs = mpu6886.GYRO_FS_SEL_500DPS,
accel_sf = mpu6886.SF_G,
gyro_sf = mpu6886.SF_DEG_S
)
imu_name = 'MPU6886'
elif imu_type == 0x71:
import mpu6500
import mpu9250
mpu = mpu6500.MPU6500(i2c,
accel_fs = mpu6500.ACCEL_FS_SEL_16G,
gyro_fs = mpu6500.GYRO_FS_SEL_500DPS,
accel_sf = mpu6500.SF_G,
#accel_sf = mpu6500.SF_M_S2,
gyro_sf = mpu6500.SF_DEG_S,
)
imu = mpu9250.MPU9250(i2c, mpu6500=mpu)
imu_name = 'MPU9250'
else:
try:
imu_type = i2c.readfrom_mem(0x6C, 0x30, 1)[0]
except:
imu_type = 0
if imu_type == 0x18:
import sh200q
imu = sh200q.SH200Q(i2c,
accel_fs = sh200q.ACCEL_FS_SEL_16G,
gyro_fs = sh200q.GYRO_FS_SEL_500DPS,
accel_sf = sh200q.SF_G,
gyro_sf = sh200q.SF_DEG_S, #Raw
)
imu_name = 'SH200Q'
dac=machine.DAC(Pin(25))
while True:
if imu.gyro[1]<-40:
dac.wavplay('okaeri.wav')
sleep(4)
dac.stopwave()
dac.write(0)
sleep(8.5)
if imu.gyro[1]>40:
dac.wavplay('itte_.wav')
sleep(4)
dac.stopwave()
dac.write(0)
sleep(8.5)
sleep(
0.1)
M5Stackで動画再生 (2019/04/09-)Index
詳しくは→
MicroPython編「イメージデータを連続表示する」
M5Stack用のプロトモジュールケース (2018/10/25)Index
ケースを自作する方のためにプロトモジュールケースのCADデータを公開します。
実物を採寸してCAD化しています。FDMの3Dプリンタで出力しやすいように最適化しています。
爪の部分も出力されます。
編集可能なigesファイルを置いておきます。
M5Stack社がモデルデータを公開しました(2021/11/04) →
M5_Hardware
M5Stackのスリム化+バッテリー容量アップ (2019/11/23-)Index
バッテリー容量を1200mAhにバッテリーに合わせてスリムケースを作ります。
物理スイッチもつけました。(Linkman SS-12E01G3)
あわせてキャラメルイエローに塗装しています。
バッテリーはAPPLE iPod 616-0206 交換バッテリー(ロワジャパン)です。コネクタは3Pなので2Pに換装が必要です。
カッターの刃先などで外して2Pのコネクタに交換できます。
固定ボルトはM5Stack(BASIC)のボトムのものが使えます。
ケースデータのSTLファイルを置いておきます。 3Dプリンタ(FDM)で出力出来るように調整しています。
Stack-chan サイドリポ ポケット版 (2021/12/31)Index
スタックちゃんにLi-Po用のサイドポケットをつけてみました。1000mAhくらいのリポが入ります。中心軸付近に格納するので重量バランスは良い感じ(サーボに優しい)
石川さんの本家
SG90版の改変バージョンになります。bracket_SG90_fは円柱部分が11mm短くなります。
ケースデータのSTLファイルを置いておきます。 3Dプリンタ(FDM)で出力出来るように調整しています。
M5Camera
M5CameraとM5Stackの双方向通信 (2019/01/23)Index
M5Cameraで撮影したデータをM5StackにWiFiで送信します。逆にM5StackからのDUALSHOCKデータをM5Cameraに送信します。
詳しくは→
MicroPython編「撮影データを取得する」
M5Cameraのバッテリー駆動電圧アップ (2019/03/23)Index
M5Cameraにはバッテリーを繋ぐことが出来ます。USBコネクタから電力を供給すると充電されます。(TP4057経由)
M5Cameraには5Vの昇圧回路がないため、回路の途中に昇圧回路を入れてバッテリーからの電力供給でも安定した5Vが出力されるようにしました。
M5Tankを作ってみた。 (2020/05/31-)Index
超小型戦車を作りました。M5Cameraを内蔵しているのでカメラ画像を見ながら操縦できます。
M5StickC
M5StickCの解析 (2019/06/06-)Index
M5Stackファミリー最新のM5StickCが国内販売されました。小さくても拡張性が考慮されているのでとても魅力的なアイテムです。M5Stack、M5Stick(無印)と比べると次の基本仕様が変更されています。
これにより今までと勝手が変わっています。
M5StackからM5StickC[無印]で変わったところ (2019/06/06-)
MCU | ESP32-PICO-D4 ← ESP32-DOWDQ6/ESP-WROOM-32 (アンテナ面、アンテナ側IC大) |
USBシリアル変換 | Silicon Labs(CP2104) ← FTDI(TFT面、IC大) |
パワーマネジメント | AXP192 ← IP5306(アンテナ面、IC中) |
IMU | SH200Q / MPU6886 ← MPU9250(TFT面、IC小) |
リアルタイムクロック | BM8563 追加(アンテナ面、IC小) |
TFTスクリーン | ST7735S[R] ← ILI9341 |
M5StickCピンマップ(構成図?)公式資料
いまのところ次のロットが確認されています。
他にもあるかもしれません
リリース | IMU | シリアル 変換IC | RTC 電池 | 液晶 (種類) | 基板 | 裏面ラベルと特徴 |
2019.3 初期ロット | SH200Q | M5 1915 | あり | 0 | 赤 | M5STICK●C 5V← G0の外部プルアップ抵抗(680Ω)がない |
2019.8 | MPU6886 | M5 1915 | あり | 1,2 | 赤 | M5STICK●C 5V← |
2019.10 | MPU6886 | M5-A 1955 | なし | 3 | 赤 | M5STICK●C 5V← :固定ネジあり |
未入手 | MPU6886 | ? | ? | ? | 黄? (新) | M5STICK●C 5V← :固定ネジあり OFF時に5Vと3.3Vが端子から出力されない? |
2020? | MPU6886 | M5-A 1955 | あり | 4 | 黄 (新) | M5STICK●C 5V← :固定ネジあり OFF時に5Vと3.3Vが端子から出力されない |
いまのところ次の種類が確認されています。
他にもあるかもしれません
識別 | 主な搭載ロット | 裏面 | 側面 | 特徴 |
0 | 2019.3 | 赤 | 白 | 液晶の発色が綺麗? |
1 | 2019.8 | 黒 | 白 | |
2 | 2019.8 | 黒(LH096T印字) | 白 | 信号特性が異なっている? |
3 | 2019.10 | 黒 | 白 | 最低動作電圧が1.8V→2.4Vになっている |
4 | 2020? | 黒 | 黒 | 表示が他と比較して暗い(下記写真、液晶1と比較) |
IMU(SH200Q)
加速値、ジャイロ値ともに個体差があります。
キャリブレーションされていません
IMU(MPU6886)
madgwickフィルタを使ったときにドリフトが起きる個体がありました。(ドリフト量は大きいです)
ロットが同じMPU6886でも差違があったのでジャイロ値のキャリブレーションがされていない可能性が高いです。(加速値はキャリブレーションされているようです)
静止状態のジャイロ値の測定結果(測定レンジ ±500°/secのRawデータ)
X | Y | Z | 備考 |
274 | -210 | 478 | OK |
-48 | -700 | -500 | Frisk |
720 | 178 | 470 | LH096T |
-828 | -800 | 200 | Perfect |
800 | -600 | -5 | LEGO 9748改 |
52 | -366 | 692 | Frisk2 |
-582 | -373 | 91 | 2019.10 |
平均値(小数点以下切り捨て)
M5StickCのトラブル対策 (2019/06/06)
今のところ下記の症状は対処方法が分りました。
@ 電源を入れても画面が真っ黒のまま反応しない
バッテリーの残量が少ない場合に起きるようです。しっかり充電して再度電源を投入しても反応が無いときはesptoolを使ってファームを上書きすると、書き込み後に起動します。(バックアップを忘れずに)
A esptoolを使うとエラーが発生する。
USBシリアル変換ICが変わった事によりOSの環境によって発生するようです。ボーレートを下げることで正常に動作します。(750000、500000、250000、115200)
M5StickCの電圧レギュレータ(DCDC)を調べてみる。 (2020/02/15)
電圧レギュレータ(DCDC)は
MPS MP1541 (写真の黄色丸のなか)
刻印が"B3JC"しかなかったので苦労しました…
MP1541DJ-LF-Z データシート
パワーマネジメントIC AXP192
M5StickCの
2019.10リリース以前のロットでは電源がOFFの状態のときでも常に5V出力端子からバッテリー電圧が出力され続けます。
GroveかHATになにか繋いでいると動いていないときでも内部バッテリーを消費してしまうので、この問題に対処しました。
解析してしらべたDCDC(MPS MP1541)のEN端子を使って、PchパワーMOSFET(AO3415A)をスイッチングします。
EN端子はハイ・アクティブなので、Nch MOSFET(AO3400A)を使ってEN端子のシグナルを反転してプルアップしてからPchパワーMOSFETに繋いでいます。
5V出力端子は端子をカットして基板から切り離して、PchパワーMOSFETのドレインと繋ぎます。
M5StickC PLUSで変わったところ (2020/07/23-)
TFTスクリーンが大きくなったM5StickCの新バージョンM5StickC PLUSが登場!
TFTスクリーン | ST7789V2 (1.14inch / 135 x 240dot) ← ST7735S[R] (0.96inch / 80 x 160dot) |
ブザー | 追加 |
IO出力 | G25を追加 (G36とシェア) |
バッテリー | 120mAh ← 80/95mAh |
M5StickC 内臓バッテリーの過放電問題 (ERROR 22)
購入後のテストプログラムが入っている状態でUSBなどの外部電源で起動した際にERROR 22(Bat Vol error / check hardware)が発生したら内臓バッテリーが過放電保護モードになっています。
数ヶ月間、充電をしないと発生する可能性が高いです。
「バッテリーは過放電保護されている必要があります。バットと5Vピンを1秒間ショートさせてから、再度充電してください。」
手順に従って充電することで復活しても、リチウムイオンポリマー電池が膨張することがあります(無印は顕著)膨張するとケースの合わせ目の隙間が拡がります。発火したケースもあるため、そのまま使用することは危険です。日本の正規代理店では「初期不良のご相談は、商品到着より30日以内」と明記されています。
M5Friskを作ってみた。(2019/06/28-)Index
フリスクケースにM5StickCを入れて007の秘密兵器っぽく改造しました。
フリスクのCM(Hello,idea編)をスタンドアローンで再生しています。
スピーカー追加、スイッチ、背面拡張コネクタを移設、LiPoを80mAhから300mAhにアップしています。
M5StickCの外付けバッテリーを作ってみた。 (2020/02)Index
ダイソーの300円モバイルバッテリーを改造して、レゴに付けられる小さいバッテリーを作りました。
M5StickCにあわせてコンパクトにするため、もともと入っていたリチウムイオン電池18650を取り出して18350(1200mAh)に入れ替えました。物理スイッチからM5StickCの電源のON/OFFが出来ます。
M5StickCでUSBの電圧を確認して電圧が低下したらシャットダウンします。
内部のリポで起動したときはシャットダウンしません。これで電源にまつわるトラブルから解放されます
M5StickCをレゴ マイクロスカウト(LEGO 9748)にいれてみた。(2020/03/07)Index
M5StickCをマイクロ・スカウタに[無理矢理…]入れてみました!!
M5StickCでレゴ フィアット500(LEGO 10271)を走らせてみた。(2021/11/01)Index
ルパンの愛車で有名なFIAT500、以前にM5Atomでラジコン化していたのですが、C_BACK_DRIVERを入手したのでリニューアル、レゴFIAT500のディテールを崩さないように頑張りました。
M5Stack Japan Creativity Contest 2024でM5でラジコン化したレゴ FIAT500が入賞しました! (2024/9/18)
M5Stack Japan Creativity Contest 2024 国際化対応賞を頂きました (^_^)v
Jimmy社長から「内部の細かい製作過程が丁寧で可愛い作品です。」とコメントを頂きました。
とっても光栄で嬉しいです!素敵なお言葉、ありがとうございます。
M5Atom-Lite / M5Atom-Matrix / M5Atom-Echo
M5Atomの解析 (2020/04/14-)Index
M5AtomシリーズのUSBシリアル変換IC(M5カスタム) (2020/06/28-)
USBシリアル変換IC(M5カスタム)のロットによりデバイスドライバの挙動が若干異なります。
リリース | USBシリアル変換IC | 特徴 |
Light-? | M5-A 1955 | M5StickC 2019.10リリース以降と同じ |
Matrix-? | M5A1 0120 | M5-A 1955と同系統? |
Echo-? | M5A1 1220 | M5 1915と同系統? |
ICはCH552(金剛ひかりさん解析 2019/2/25) ファームウェアのソースコードも公開されています。
ch55x_esp - CH55xシリーズMCUに基づくUSB-シリアルブリッジ。
ICをよーく見るとM5とレーザー刻印された下にうっすらと552Tの文字が見えます。
M5Atomのバッテリーを作ってみた (2020/04/16-)Index
M5Atomの電池ボックス (2020/04/16)
M5Atomにあわせて小さな電池ボックスを作りました。ON/OFF用の物理スイッチもつけました。背面の端子はサイドから出しています。
電源出力は背面の5V端子に繋がります。
サイドに使っているコネクタはNeltron Industrial Co., Ltd.
6604S-40になります。
M5Atomの電池ボックス (お手軽版) (2020/06/05)
M5Atom用の簡易電源を作りました。(作ったというか両面テープで貼っただけ…)
共立エレショップ スイッチ付コイン電池ケース 2032×2用(黒) CR2032-2 BK
共立エレショップ コイン電池ホルダ スイッチ&リード線タイプ CR2032-1CL
駆動時間のチェック
DUALSHOCK3の受信機として使って駆動時間をざっくり調べてみました。
import machine
from machine import Pin
Neopixel = machine.Neopixel
np = Neopixel(27, 1,Neopixel.TYPE_RGB)
np.set(0, 0x000000,01,True)
import dualshock3_r
ds=dualshock3_r.DUALSHOCK3()
import sixaxis
import ubinascii
print(ubinascii.hexlify(sixaxis.read_mac(),':').decode())
def hid_handler(arg):
global sixaxis
global ds
global np
if(arg[0]==sixaxis.L2CAP_DATA_PACKET):
ds.set_switch(arg[2][2:])
if ds.check_sw(ds.SW_TRIANGLE):
np.set(0, 0x000100,0,1,True)
if ds.check_sw(ds.SW_CIRCLE):
np.set(0, 0x010100,0,1,True)
if ds.check_sw(ds.SW_CROSS):
np.set(0, 0x000001,0,1,True)
sixaxis.setup(handler=hid_handler)
sixaxis.power_control(sixaxis.POWER_ON)
np.set(0, 0x000100,0,1,True)
while True:
sixaxis.run_noloop_execute(10)
packet=sixaxis.read_buffer()
詳しくは→
MicroPython編「MicroPythonでBluetoothを使う」
イメージファイル
atom_bt_test.zip
M5Atom Liteに9軸センサーを追加してみた。(2020/04/20)Index
M5Atom Liteに9軸センサを追加しました。ちょっとケースを削ったけど奇跡的なマッチング!
M5Atomのレゴマウンタを作ってみた。(2020/04/22)Index
バッテリーとサーボドライバを組み合わせるとレゴ互換で最小クラスのシステムが作れます!
レゴマウントのSTLファイルを置いておきます。 お取り扱いは自己責任で、リンクはこちらに
M5Atom WALL-E完成しました!(2020/04/23)Index
WALL-E LEGO(21303)の外観をほとんどそのままにして、キャタピラ、アーム、ヘッド(上下左右)を動くようにしました!DUALSHOCK3でコントロールします。
WALL-E LEGO(21303)についてはこちらでも解説しています!
Raspberry Pi を使ってみる
M5Atom 2足歩行ロボ NanoWalker U800(2020/05/11-)Index
ちっちゃい2足歩行ロボNanoWalker U800をつくりました!
いつものようにプレステ3のコントローラ(DUALSHOCK3)で操作します。
レゴのミニフィグを乗せてもちゃんと歩きます。(^_^)
バッテリーはLi-Po(200mAh)になりました(物理スイッチ & そのまま充電可能です)
公開している内容を著者に無断で転載あるいは商業目的で利用することを禁止します。
公開している内容のアイデアを流用した作品、および公開している独自の解析結果を含む情報を、SNS、ブログ、書籍などで発表する際はご一報ください。こちらのサイトへのリファレンス(リンク)を加えてください。
WALL-Eと共演 (^_^) (2020/05/25)
今週のビックリドッキリメカ 発進!
M5Atom Echoでサウンドエフェクトが出るようにしました。(2020/06/10)
M5Stack Japan Creativity Contest 2020でNanoWalker U800が入賞しました! (2020/10/03)
M5Stack Japan Creativity Contest 2020 同点3位で入賞しました (^_^)v
Jimmy社長から「この作者は小型ロボット設計と制作のエキスパートです。我々も学ぶべきところがあり尊敬しています。」とコメントを頂きました。
身に余る光栄、嬉しいです!ありがとうございます!
M5Stack Japan Creativity Contest 2020 入賞発表 !
NanoWalker U800に乗ったレゴのミニフィグにライトセーバーを振回させてみました。 (2021/1/21)
スターウオーズのジェダイの騎士風にライトセーバーを振り回します。
M5Atomでプッシュフォン型キーボードを作ってみた (2020/07/21)Index
プッシュフォンのメカをそのまま使用してBluetoothキーボードにしました。懐かしのプッシュホンの感覚を楽しめます。
小型バッテリー搭載。(Atomの下の黒い箱)
小型バッテリー→
M5Atomの電池ボックス LIR2032(3.6V/40mAh)×2対応バージョン
プログラムの解説→ MicroPython編「MicroPythonでBluetoothを使う」
M5Atomでサーマルプリンタに印刷してみた (2021/12/01)Index
M5Atomに小型のサーマルプリンタを繋いで管理人さんを[高速]出力してみました。
ドライバをMicroPythonのモジュールにしたのでUIFlowからの印刷も出来ます。
同種のサーマルプリンタは、大まかに2種類の制御基板が使われていて
コマンド仕様が異なります。
いずれも十分に余裕のある電源を使わないと正常に印刷されません。
M5Atomでキビキビ動くNanoRollingを作ってみた。 (2021/02/07-)Index
Nanoシリーズ第2弾!NanoRollingを作りました。
モーター軸でそのまま駆動しています。お尻のロッドで姿勢を変えることが出来ます。
オプションのLEGOスプリングシューター[15301]を装備して発射可能!
M5Atomでミニフィグを動かしてみた。 (2021/02/07-)Index
レゴのミニフィグは動かすことに成功しました!
頭、両手、足(ツイストのみ)が動きます。
小さいのでメカの組み込みに苦労しました。
M5AtomS3の解析Index
回路図が非公開なので憶測ですが… MPU6886は別基板なのでLDOで3.3Vを作っていると思われます。5V直結のデバイスはないと予測して、試しに8Vまで流したところ動作しました。(非推奨です)
M5AtomS3版にNanoRollingをバージョンアップしてみた。 (2023/04/12)Index
NanoRollingをM5AtomS3に対応しました。
ESP32S3はBluetooth Classicに対応していないのでDUALSHOCK3が使えないため、Wi-Fi化したDUALSHOCK2を使ってコントロールしています。
M5Stack Japan Creativity Contest 2023でNanoRollingが入賞しました! (2023/10/11)
M5Stack Japan Creativity Contest 2023 視覚効果賞を頂きました (^_^)v
Jimmy社長から「実践力と設計力が非常に優れています」とコメントを頂きました。
とっても光栄で嬉しいです!ありがとうございます!
M5Atomシリーズ用のミニフィグアダプタ (2023/05/6-)Index
M5Atomシリーズ用のミニフィグアダプタを作りました!
AtomS3に解析結果から判断してLIR2032(3.7V/45mAh/充電可能)×2直列を5V端子に直結しています。(非推奨です)
M5Stamp
M5Stampで最小級NanoTankを作ってみた。 (2022/02/07-)Index
Nanoシリーズ第3弾!M5Stamp Picoを使ってアトムサイズ(24mm×24mm)に収まる最小級のNanoTankを作りました。
モーターを互い違いに配置してモーターケースを軸に使う新機軸の設計で省スペースに収めています。
モーターは4段プラネタリーでトルクフル、モーターコントローラを介さずに直接ESP32のピンに直結しています。ESP32のI/O,PWM制御により正転逆転、速度調整もできます。
使用部品
M5Stamp Pico
6mmギヤードモーター精密ミニマイクロ遊星減速機ギアモーターDC3V(4ステージ)
ファンルーム シリコンバンド単色 ブラック
Li-po 401422(4.0x14x22mm) 95mAh (M5StickCから取り外したバッテリー)
STLデータ
NanoTank STLデータ
公開している内容を著者に無断で転載あるいは商業目的で利用することを禁止します。
公開している内容のアイデアを流用した作品、および公開している独自の解析結果を含む情報を、SNS、ブログ、書籍などで発表する際はご一報ください。こちらのサイトへのリファレンス(リンク)を加えてください。
NanoTankでライントレースしてみました。 (2023/5/-)
カラーセンサーをセンターマウントしています。
単眼センサーでも、意地悪なコースでスムーズにライントレース出来ます。
次はトレースしたラインを使ったAIでマッピングにチャレンジしてみたい…
TechGlassTubeを作ってみた。 (2022/02/09-)Index
作成中…
ガラス瓶のなかにM5Stampはそのまま入ります。
M5Stack(私設)サポートセンター
M5Atom Echo スピーカーの保護対策 (2020/06/9-)Index
M5Atom Echoは小さい筐体にスピーカーとマイクが入ったスマートスピーカー向けのモジュール
現在スピーカーの定格入力がアンプ出力より低いためスピーカーが劣化/破損する問題が発生しています。
スピーカーが破損してショート状態になってしまうと、ケースが変形するほどの高熱となりとても危険です。
対策1 : M5Atom Echoに出力するデータをプログラムで調整する
プログラムで出力データを調整します。56%以内に収めれば壊れることはありません。
i2s_write…ではじまる関数に渡す値をビットシフトをするなどして出力を下げることができます。
wav,mp3などのファイルデータは波形編集ツールを使って事前に振幅を下げることができます。
対策2 : M5Atom Echoに供給する電圧を下げる (2020/06/13)
NS4168の動作電圧は3.0V〜5.5Vです。Echo内部では5V端子に接続されているので5V端子(背面もしくはGrove/USB)への供給電圧を3.8V程度に下げることでスピーカーの定格入力に合せます。
本体改造をしないで対応できます。(PC接続時にはUSBから5Vが供給されるので注意が必要)
対策3 : M5Atom Echo内部のNS4168に供給する電圧を3.3Vに下げる (2020/06/13)
NS4168の6番ピンの足をあげて3.3Vに繋ぎます。これでスピーカーの定格に収まります。
対策4 : スピーカーを交換する (2020/06/10-)
NS4168の定格出力以上のスピーカーに交換します。交換可能なスピーカーの仕様は8Ω1.25w以上となります。元のスピーカーの仕様は8Ω0.7w(20mm×10mm)です。(公式アナウンス)
3,4枚目の写真 : レイアウトを変更してφ18(最大φ21)のスピーカーを格納、音質良好!スイッチも押せます。
M5AtomシリーズのUSBシリアル変換IC(CH552)によるWi-Fi問題Index
ユーザーの調査により問題が発覚
最初にそーたメイ(@sohta02)さんが解析して詳しく報告しました。(2021/3/4〜)
Wifi電波の到達距離が他のESP32デバイスと比較して極端に短い(アクセスポイントから数m程度)問題
USBシリアル変換IC(CH552)から仕様外の電圧がESP32に流入することで問題が発生するとの報告です。M5Atom以外に一部のM5Stickでも発生するようです。
そーたメイ(@sohta02)さんの追加調査により「IO0=4.2V以上のとき一気にWiFiが悪化する」と判明しています。(2021/11/23)
安定化電源で確認しました。USBコネクタからの給電だと5.12VでIO0=4.2VとなりNG(USBの規格は電圧誤差±5%なので5.25Vまでは基準内)、5Vピンに直接5Vを給電するとIO0=4.3VとなりNG
USBシリアル変換IC(CH552)のソースコード公開 (2021/11/16-)
日本のユーザーからの呼びかけにM5Stack社が対応してくださり、ソースコードを公開してくれました!
USBシリアル変換IC(CH552)の対策済みファームウェア (2021/11/20)
M5Stack社公開したソースコードは指定されたコンパイラ(SDCC)ではビルド出来ないものだったため、Kenta IDA(@ciniml)さんが金剛ひかりさんのソースコードを修正して対策版のバイナリーを用意してくれました。
USBシリアル変換IC(CH552)のファームウェア更新手順 (2021/11/20-)
そーたメイ(@sohta02)さんの調査により通常のUSBケーブルで上書きできるM5Atom/M5Stickがごく僅かであることが判明しました。
専用ケーブルにより書き込みが可能になります。
ファームウェアを更新することによりUSBシリアル変換IC(CH552)からESP32に流れる電圧は約3.3Vになり仕様内に収まり、Wi-Fi問題は解決します。
そーたメイ(@sohta02)さんが考案した専用ケーブル
USBシリアル変換IC(CH552)を3.3Vで駆動する (2021/11/16)
M5Atomのパターンを解析してCH552への供給電源を5Vから3.3Vに変更する方法を調べた結果、赤の箇所をパターンカットして黄色ラインを接続することで3.3V駆動に変更することが出来ます。上記の3.3Vで駆動するための追加ソースコードを修正したファームウェアへの更新が必須となります。
M5Stack / M5Stick / M5CameraのI2C(Grove)コネクタ
M5Stackの製品の本体にはI2C(Grove)のコネクタが搭載されています。ここに外部モジュールを接続できます。
端子それぞれの割り当てはこちらになります。
M5Stack社の一部のケーブルは白と黄が逆になっています。カットして使う際は注意が必要です。
M5StackのI2C(Grove)を調べてみる。Index
シグナル(SCL,SDA)は3.3KΩのプルアップ抵抗で3.3Vにプルアップされています。
電源出力は5Vとシグナルの3.3Vと電圧が異なっているので注意が必要です。
5VでプルアップするとESP32に定格を越えた電圧が入力されてしまいます。プルアップ抵抗が内蔵されているI2Cデバイスもあるので注意が必要です。
M5StickCのI2C(Grove)を調べてみる。 (2020/02/06)Index
シグナル(SCL,SDA)はプルアップされていません。
シグナルはショットキーバリアダイオードで保護されています。(写真の黄色丸のなか)
5Vとの電圧の差違は吸収されます。
M5CameraのI2C(Grove)を調べてみる。Index
シグナル(SCL,SDA)は3.3Vにプルアップされています。
電源電圧とシグナル(3.3V)の電圧が異なっている際は注意が必要です。
M5Cameraにはバッテリー接続端子がありますが5Vの昇圧回路がありません。バッテリー駆動時はバッテリー電圧が端子に出力されます。
ファームウェアのバックアップ / リストア
esptoolのインストールIndex
@ CP210x USB - UART ブリッジ VCP ドライバのインストール
SILICON LABSのサイトからダウンロードしてインストールします。
OSに合わせて選択します。Windows 7/8/8.1(v6.7.6)を使いました。
A Pythonのインストール
OSに合わせて選択します。バージョン3.6.5を使いました。
Windows環境の際はインストーラ版を使って Customize installation -> "Advanced Options" -> "Add Python to environment variables"のチェックが必要です。
B esptoolのインストール
pip install esptool
エラーが発生する際は下記の実行が必要な場合があります。
python -m pip install --upgrade pip
esptool.py -p COM3 -b 921600 erase_flash
COM3 任意のCOMポート
esptool.py -p COM3 -b 921600 read_flash 0 0x400000 firmware.bin
COM3 任意のCOMポート
0x400000 ファームウェアのサイズ(4MB / 8MB)
firmware.bin 任意のファイル名
何度もバックアップに失敗する場合はOSの再起動を行います。
esptool.py -p COM3 -b 921600 write_flash 0 firmware.bin
COM3 任意のCOMポート
firmware.bin バックアップしたファイル名
書き込み後に起動しない場合などは先に消去してから再実行してください。
16MBのフラッシュではリストアに数分間掛かることがあります。
Other
M5Stack Makeyユニットのプログラム書き換え (2019/07)Index
MakeyユニットはArduino Unoと同じATmega328Pを搭載しているのでarduinoのスケッチを書き込むことができます。少々てこずったので手順をメモしておきます。
M5Stack(M5GO)の初期不良(発売初期の問題、今は品質が安定しているようです。)
とっても素敵で魅力的なM5Stackですが製造時の不具合が多数報告されています。
とくにM5GOの初期生産分での不具合の報告が多いようです。
私が購入したM5GOも不具合品でした。先に購入したM5Stack Facesのハンダのクオリティと比較してもM5GOは雑に感じました。
不具合品は直接製造メーカーに連絡すれば交換してくれるとの事です。
スイッチサイエンスさんで購入した人はスイッチサイエンスさんで交換対応して貰えます。
主な不具合(※印は実際に遭遇)
初期のM5Stack(Fire)のロットIndex
リリース | IMU | 特徴 |
初期ロット | MPU9250 | PSRAMが認識しない |
| MPU9250 | バッテリー残量が取得できない |
| MPU9250 | |
2019/8〜 | SH200Q | Kxxxxxxxx / SH200Qのシール |
2019/8〜 | MPU6886 | Kxxxxxxxxのシール |
2019/8〜 | MPU6886 | Kxxxxxxxxのシール / IPS液晶 |