神か〜みたいな人しか見かけないので素人がセットアップをしてみます.
だいたいの手順
- 買います.M5Stack Grayとプロトキットを買いました.
https://www.switch-science.com/catalog/list/770/ - 環境のセットアップを行います.公式のセットアップを参考にしました(後述)
http://m5stack.com/assets/docs/index.html - サンプルを読み込んで,そこそこにいじります(後述)
環境のセットアップ
macOS High Sierra環境で行いました.
http://m5stack.com/assets/docs/index.html を見つつ進めます.
ドライバのダウンロードとインストール (Installing the USB Driver)
https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers から適切なものを持ってきます.
do NOT use the Windows 10 Universal (v10.1.1) driver!
とのことなのでWindowsの人は注意が必要そうです.
※macOSの場合,インストール中にセキュリティ警告が出るので,システム環境設定→セキュリティとプライバシーから許可を出さないといけないという別の注意があります.
ESP32 Arduino Coreの導入 (Installing the ESP32 Arduino Core)
OSごとに手順が異なります.
macOSの場合は https://github.com/espressif/arduino-esp32/blob/master/docs/arduino-ide/mac.md#installation-instructions-for-mac-os を参照して進めます.
- Arduino IDEの導入(まだの場合)
- おまじないを実行
ターミナルを開いて以下をペーストし,EnterでOKとのこと
mkdir -p ~/Documents/Arduino/hardware/espressif && \
cd ~/Documents/Arduino/hardware/espressif && \
git clone https://github.com/espressif/arduino-esp32.git esp32 && \
cd esp32 && \
git submodule update --init --recursive && \
cd tools && \
python get.py
このあと,Arduino IDEをすでに開いている場合は再起動しておきます.
Arduino用ライブラリのダウンロード (Download Library)
Arduino IDEから行う方法をなぞります.
- Arduino IDEを起動して,
スケッチ
→ライブラリをインクルード
→ライブラリを管理
を選択 - 検索フィルタに
m5stack
と打ち込んで,M5Stack
を選択し,インストール
をクリックし,インストールします. - インストールが完了したらサンプルやらなんやらが使えるようになります.
DHT12向けサンプルを読み込んでいじる
まずは動かしてみる
M5StackのUSB-Cポート横の穴に温湿度センサを繋いで,USBケーブルでPCに繋いでおきます.
Arduino IDEを開き,ファイル
→スケッチ例
から「カスタムライブラリのスケッチ例」にあるM5Stack
→Modules
→DHT12
を選びます.
サンルが開いたら,ツール
→ボード
からESP32 Arduino
→M5Stack-Core-ESP32
を選びます.ついでにツール
→シリアルポート
→/dev/cu.SLAB_USBtoUART
も選んでおきます.
準備ができたらウィンドウ左上にある「→」ボタンを押しましょう.動きますね.ただ,ちょっと表示が変な上に,画面をいっぱいにしてもリフレッシュされません.
そこでこんなふうに変えてみました
ちょっとしたタイポ(M5.Lcd
にすべき部分がSerial
になっている)のと画面がいっぱいになっているかの判定がないのが原因なのでちょっといじってみました.
ついでにFやKでの温度をシリアルに流すのも止めてしまいました.
# include <M5Stack.h>
# include "DHT12.h"
# include <Wire.h> //The DHT12 uses I2C comunication.
DHT12 dht12; //Preset scale CELSIUS and ID 0x5c.
// 画面に何行表示したかのカウント
int count = 0;
void setup() {
M5.begin();
Wire.begin();
Serial.println("Testing DHT12 lib:");
M5.Lcd.println("Testing DHT12 lib:");
}
void loop() {
//Read temperature with preset scale.
Serial.print("Temp.: ");
M5.Lcd.print("Temp.: ");
Serial.print(dht12.readTemperature());
M5.Lcd.print(dht12.readTemperature());
//Read humidity.
Serial.print("*C Humid: ");
M5.Lcd.print("*C Humid: ");
Serial.print(dht12.readHumidity());
M5.Lcd.print(dht12.readHumidity());
Serial.println("%RH");
M5.Lcd.println("%RH");
// 表示回数の更新
count++;
delay(5000);
// 1文字の高さが8pxなので30行出すといっぱいになる
// 30行表示したら画面をクリアして,一番上から再開
if(count == 30){
count = 0;
Serial.println("Clear LCD Output...");
M5.Lcd.fillScreen(0x0);
M5.Lcd.setCursor(0, 0);
}
}
以上!これで画面いっぱいになったらクリアしてくれます.