LoginSignup
9
7

More than 3 years have passed since last update.

m5stackで遊ぼう

Last updated at Posted at 2019-08-04

m5stackが楽しそう

m5stackが楽しそうだったのでarduino勉強がてら色々調べて遊んでみようと思って調べたことを並べています。
自分用の備忘録。

とりあえず今までやったことを並べています。
それぞれ別記事で詳細とソースを公開しています.

他に、以下のことをやってみたいなぁと思っています。

  • ロジックアナライザ
  • サーボモーター制御

開発環境

まず、開発環境については以下で進めています。

  • windows 10 Home 64bit
  • Visual Studio Code 1.37.1_(2019/09/08更新)
  • PlatformIO
    • PlatformIOはESP-IDEとarduinoでプロジェクト作成可能

m5stackに乗っているESP32はマルチコアなので、LCD表示用とUARTとかI/o処理でマルチスレッドやってみたい。
arduinoはマルチコアに対応していないようなので気が向いたらESP-IDF使ってみよう・・・
Arduino core for the ESP32はマルチコアに対応しているらしい!!!
以下の記事を参考にしました。

Arduino – ESP32 のマルチタスク ( Dual Core ) を試す
https://www.mgo-tec.com/blog-entry-arduino-esp32-multi-task-dual-core-01.html

PLatFormIOの入れ方は以下の記事を参考にしました。わかりやすかったです。

M5Stackの開発環境を整える - PlatformIO IDE編
https://qiita.com/lutecia16v/items/1c560bdd7eac7ebeaff7

自分の趣味用のPCはうまくいったのですが、会社のPCに入れようとしたらうまくいかなかったです。
オートコンプリート欲しかったからVScodeで作りたかったなぁ

2019.09.16追記)
単純にネットワークをブロッキングされてたから必要なパッケージをダウンロードできなかっただけでした。
ネットワークの知識不足を痛感しました・・・

ちなみに、開発中の新バージョンArduino IDE 1.9だとオートコンプリート機能が付くらしいですが、まだ公式はArduino IDE 1.8.9でした。オートコンプリートについては以下の記事で知りました。

Arduino収めとArduino 1.9の新機能について
http://tekitoh-memdhoi.info/views/779

また、タイマ割込みをテストしていて、arudinoだとタイマ割込みの周期が1usec以下ができないことが判明しました。
タイマ割込み周期を早くしたいので、ESP-IDFの方も挑戦してみることにしましたが、ESP-IDFは使えませんでした。
ESP-IDFについては、コチラで調べたことを並べています、

m5stackについて

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

回路図
https://github.com/m5stack/M5-Schematic/blob/master/Core/Basic/M5-Core-Schematic(20171206).pdf

買ったのはこれ。amazonさんで4200円で買えた。
回路図読んで色々調べたことを列挙します。

  • 搭載CPU:ESP32-D0WDQ6

    • 80Mhz ~240Mhzまでの動作周波数。
    • 540 kByte RAM
    • 440 kByte ROM
    • wifi & BLE module付
  • 標準でCPUと接続されてるもの

    • LCD
      • GPIO14,18,23,27,32,33を使っている。SPI接続のILI9341。GPIO18,23はM5-Busに出ている。
    • スピーカー
      • GPIO25をDACとして使っている様子。NS4148っていうAMPでスピーカに入れる電圧を制御しているっぽい。
    • TF Card (回路図にはmicroSD-SPIってはっきり書いてるけど・・・)
      • GPIO4,18,19,23を使っている。SPI接続。GPIO18,23はM5-Busに出ている
    • ボタン
      • ボタンは4つ付いている。ボタンA,B,CはLCD面についててそれぞれGPIO39,38,37につながっている。
      • 電源ボタンはENピンとIP5306というICにつながっている。
    • その他
      • SPI外部フラッシュがついてる
      • CP2104でUSB-UART変換をしている。
      • 電源周りにはIP5306ってICで制御してる感じ

調べてみると、M5-Busに出てるpinが結構Core部分にも使われている様子です。
この辺はピン設定を気を付けないと動かないことが多そうですね。

余談ですが、ESP32ってUSB-UART変換にFTDIじゃなくてCP2104を使ってることが多い気がします。
なんとなく買ったESP8266のボードもあるんですがそれもCP2104だった気がします。
個人的にはFTDIのほうが使う機会多かったので、少し珍しい気がしました。
流行りなのか、値段なのか、相性なのか・・・

不明点とか調べたこととか

動作クロックについて

ESP-IDFだと動作クロック変更できる関数があるらしいです。
Arduinoもクロック設定できるライブラリがあるそうですが、PlatformIOで対応してるかわからず・・・
動作クロックはタイマ割込みとかの設定にかかわってくるから知りたいけどよくわからなかったです。
ただ、動作クロックを変更するとシリアルのbpsとかずれるようなので良く調べてから試してみようと思います。
(baud rateとか内部クロックに依存するから当たり前っちゃ当たり前)

2019.09.16追記)
FreeRTOSを使っているので、FreeRTOSのコンフィグをいじれば動作クロックを変更できることがわかりました。
ですが、PlatformIOでプロジェクトを作るとFreeRTOSArudino coreがオブジェクトファイルで生成されてしまう為、
元ファイルをいじるには別ファイルでいじったやつを作成して、プロジェクト生成の時に変更して・・・
と手間がかかるので基本的にいじるのは無しの方向で行きます。

CPUのブートについて

SPI-Bootができるようです。
でもDataSheet読んでもどうやってブートしてるのかよくわからなかった・・・
マイコンのブートって難しいですね・・・

初期からはいってるフォントについて

フォントはSDカードでフォント入れて表示!!ってのが調べるとわんさか出てきます。
違うんだ!初期からはいってるフォントはないか調べたいんだ!って調べたら以下が出てきました。
気になる人は読んでみてください。この記事のおかげで自分は諦めがつきました。

M5Stackとフォント [ESP32]
https://hamayan.blog.so-net.ne.jp/2019-03-08

2019.09.16追記)
Arduino IDE のサンプルプログラムの中に各種フォントと文字大きさの変更プログラムがありました。
M5stackのライブラリー内のサンプルプログラムにあるAll_Free_Fonts_Demoで確認できます。
種類としては5種類くらいデフォルトでフォントが入っているようですね。

今後について

またわからなくなったり気になることができたらここに追記していこうと思います。
各テストについてはその都度更新していこうと思います。
やる気が続いていたら・・・

9
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
7