#m5stackが楽しそう
m5stackが楽しそうだったのでarduino勉強がてら色々調べて遊んでみようと思って調べたことを並べています。
自分用の備忘録。
-
遊んだもの
-
Arudino
を使って作ってみた -
ESP-IDF
で調べたり試したりしてみた
-
とりあえず今までやったことを並べています。
それぞれ別記事で詳細とソースを公開しています.
他に、以下のことをやってみたいなぁと思っています。
- ロジックアナライザ
- サーボモーター制御
##開発環境
まず、開発環境については以下で進めています。
- 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に出ている。
- GPIO14,18,23,27,32,33を使っている。SPI接続の
- スピーカー
- GPIO25をDACとして使っている様子。
NS4148
っていうAMPでスピーカに入れる電圧を制御しているっぽい。
- GPIO25をDACとして使っている様子。
- 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で制御してる感じ
- LCD
調べてみると、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
でプロジェクトを作るとFreeRTOS
とArudino 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種類くらいデフォルトでフォントが入っているようですね。
#今後について
またわからなくなったり気になることができたらここに追記していこうと思います。
各テストについてはその都度更新していこうと思います。
やる気が続いていたら・・・