🙌
M5stickCを始める(arduino開発)/windows OS用
M5stickCとは、M5Stack社が開発、販売をしているIoTデバイス開発ツールキットです。
別機器でM5StickCPlusやM5StickCがありWi-FiとBluetooth機能が追加された物になります。
プログラムはArduino言語を利用して開発します。Arduinoを触るうちにBluetooth通信を行いたいと思い、HC-05を購入していたのですがそれより簡単にできそうだったのでやってみました。
m5stickCdでできること
80×160ピクセル(0.96インチ)のカラー液晶画面搭載
6軸加速度・ジャイロセンサー搭載
マイク&LED搭載
ネットワーク機能(Wi-Fi/Bluetooth)搭載
赤外線送信機(IR)
3つの物理ボタン・Lipoバッテリー(80mAh)内蔵
1ArduinoIDEのインストール
公式サイト
2M5stickCの開発環境構築
ボードの設定
ファイル>環境設定から以下のアドレスを、ボードマネージャーのURLに入力する。
ボードマネージャの追加
内蔵されているESP32というマイクロコントローラを操作するため、
ツール>ボード>ボードマネージャを選択。
検索枠に[ESP32]と入力してインストールする。
ライブラリのインストール
必要なライブラリは
- mtstick
ライブラリマネージャから検索してインストールをする。
M5stickCの有線接続
一応つながっているポートの確認もする。デバイスマネージャで確認できる。
サンプルコードの実行
M5stickCの裏面を確認する。
今回はMPU6886とあるので、ファイル>スケッチ例>M5StickC>Basics>MPU6886を選択して開き、スケッチのコンパイルを行う。
#include <M5StickC.h>
#include "BluetoothSerial.h"
BluetoothSerial SerialBT;
float accX = 0;
float accY = 0;
float accZ = 0;
float gyroX = 0;
float gyroY = 0;
float gyroZ = 0;
float temp = 0;
/* After M5StickC is started or reset
the program in the setUp () function will be run, and this part will only be
run once. 在 M5StickC
启动或者复位后,即会开始执行setup()函数中的程序,该部分只会执行一次。 */
void setup() {
Serial.begin(115200); // 一応Serialを初期化
SerialBT.begin("ESP32");
M5.begin();
M5.Lcd.setRotation(3);
M5.Lcd.fillScreen(BLACK);
M5.Lcd.setTextSize(1);
M5.Lcd.setCursor(40, 0);
M5.Lcd.println("MPU6886 TEST");
M5.Lcd.setCursor(0, 15);
M5.Lcd.println(" X Y Z");
M5.MPU6886.Init();
}
/* After the program in setup() runs, it runs the program in loop()
The loop() function is an infinite loop in which the program runs repeatedly
在setup()函数中的程序执行完后,会接着执行loop()函数中的程序
loop()函数是一个死循环,其中的程序会不断的重复运行 */
void loop() {
M5.MPU6886.getGyroData(&gyroX, &gyroY, &gyroZ);
M5.MPU6886.getAccelData(&accX, &accY, &accZ);
M5.MPU6886.getTempData(&temp);
M5.Lcd.setCursor(0, 30);
M5.Lcd.printf("%.2f %.2f %.2f ", gyroX, gyroY, gyroZ);
M5.Lcd.setCursor(140, 30);
M5.Lcd.print("o/s");
M5.Lcd.setCursor(0, 45);
M5.Lcd.printf("%.2f %.2f %.2f ", accX * 1000, accY * 1000,accZ * 1000);
SerialBT.printf("%.2f %.2f %.2f ", accX * 1000, accY * 1000,accZ * 1000);
M5.Lcd.setCursor(140, 45);
M5.Lcd.print("mg");
M5.Lcd.setCursor(0, 60);
M5.Lcd.printf("Temperature : %.2f C", temp);
//SerialBT.printf("Temperature : %.2f C\n", temp);
delay(100);
}
実行結果
以下のように表示されればオッケー。
Discussion