M5StackでAE-MOTOR88302個をBlinkで遠隔操作 [Arduino&M5Stack]
注意
Arduinoでは、16進数を右に1ビットシフトする
配線
2つのモータードライバーに並列に5V GND SCL SDAを配置
絵は後程追加
ディスプレイにも電圧が表示されます
ソースコード
//参考 //https://spiceman.jp/arduino-drv8830-program/ //https://yujimiyano.tumblr.com/post/89433536983/konashi-2-i2c-ae-drv8830-dc //https://makers-with-myson.blog.ss-blog.jp/2014-05-15 // #include <Wire.h> #include <M5Stack.h> // I2Cアドレス #define DRV8830_1 0x64 // DRV8830のI2Cアドレス1 #define DRV8830_2 0x61 // DRV8830のI2Cアドレス2 #define CONTROL 0x00 // CONTROLレジスタのサブアドレス #define FAULT 0x01 // FAULTレジスタのサブアドレス int power1_1 = 0; // +-63諧調あるがBlynkでは+-10諧調 int power1_2 = 0; // power1_1の値が変わっているかを調べるために変数power1_2を作成 //⇑左(0x64) //⇓右(0x61) int power2_1 = 0; int power2_2 = 0; // #define BLYNK_PRINT Serial #define BLYNK_USE_DIRECT_CONNECT //#include <M5Stack.h> //追加部分 上記にあるので削除 #include <BlynkSimpleEsp32_BLE.h> //追加部分 #include <BLEDevice.h> //追加部分 #include <BLEServer.h> //追加部分 char auth[] = "k2sr_8wGTqfHzV9oTpD5Z4f-vh1vUu3i";//追加部分 // void setup() { M5.Speaker.begin(); // これが無いとmuteしても無意味です。 M5.Speaker.mute(); Serial.begin(9600); //追加部分 //Serial.begin(115200); Blynk.setDeviceName("Blynk"); //追加部分 Blynk.begin(auth); //追加部分 Wire.begin(); //I2Cを使う宣言 M5.begin(); //M5 Stackを使う宣言 M5.Lcd.setTextColor(YELLOW), M5.Lcd.setTextSize(3), M5.Lcd.setCursor(100, 0); M5.Lcd.print("MOTOR"); powerdisplay(); } void loop() { Blynk.run(); //追加部分 M5.update(); if (power1_1 != power1_2) { powerdisplay(); if (power1_1 > 0) { writeRegister(1 ,CONTROL, 0x04 + power1_1, 0x01); } else if (power1_1 == 0) { writeRegister(1 ,CONTROL, 0x00, 0x00); } else if (power1_1 < 0) { writeRegister(1 ,CONTROL, 0x04 + power1_1 * -1, 0x02); } power1_2 = power1_1; } if (power2_1 != power2_2) { powerdisplay(); if (power2_1 > 0) { writeRegister(2 ,CONTROL, 0x04 + power2_1, 0x01); } else if (power2_1 == 0) { writeRegister(2 ,CONTROL, 0x00, 0x00); } else if (power2_1 < 0) { writeRegister(2 ,CONTROL, 0x04 + power2_1 * -1, 0x02); } power2_2 = power2_1; } delay(100); } void writeRegister(byte MotorNumber , byte reg, byte vset, byte DATA) { int vdata = vset << 2 | DATA; Serial.println(String(vdata, HEX)); if (MotorNumber == 1) { Wire.beginTransmission(DRV8830_1); Serial.println("MOTOR_A"); } else if (MotorNumber == 2) { Wire.beginTransmission(DRV8830_2); Serial.println("MOTOR_B"); } Wire.write(reg); Wire.write(vdata); Wire.endTransmission(true); } void powerdisplay() { M5.Lcd.fillRect(0, 80, 320, 160, BLACK); M5.Lcd.setTextColor(YELLOW), M5.Lcd.setTextSize(3.5), M5.Lcd.setCursor(20, 80), M5.Lcd.print("M1:") , M5.Lcd.print(power1_1); if (power1_1 == 0) { M5.Lcd.print("(0.00V)"); } else if (power1_1 > 0) { M5.Lcd.print("("), M5.Lcd.print(power1_1 * 0.08 + 0.4), M5.Lcd.print("V)"); } else if (power1_1 < 0) { M5.Lcd.print("(-"), M5.Lcd.print((power1_1 * -1) * 0.08 + 0.4), M5.Lcd.print("V)"); } M5.Lcd.setCursor(20, 160), M5.Lcd.print("M2:") , M5.Lcd.print(power2_1); if (power2_1 == 0) { M5.Lcd.print("(0.00V)"); } else if (power2_1 > 0) { M5.Lcd.print("("), M5.Lcd.print(power2_1 * 0.08 + 0.4), M5.Lcd.print("V)"); } else if (power2_1 < 0) { M5.Lcd.print("(-"), M5.Lcd.print((power2_1 * -1) * 0.08 + 0.4), M5.Lcd.print("V)"); } } //追加部分 BLYNK_WRITE(V0) { //V0の値を取得する power1_1 = param[0].asInt(); // V2の値をPowerに入れる Serial.print("1_"); Serial.println(power1_1); } BLYNK_WRITE(V1) { //V0の値を取得する power2_1 = param[0].asInt(); // V2の値をPowerに入れる Serial.print("2_"); Serial.println(power2_1); }
M5Stackで2つの温度センサー(SHT31 HIH6130)で温度・湿度測定・Ambientクラウド送信・SD保存 [Arduino&M5Stack]
今回は、温度センサーを2つ動かしました
おんなじセンサーが見あたらなかったので、2種類の温度センサーを使いました。
SHT31 https://akizukidenshi.com/catalog/g/gK-12125/
HIH6130 https://www.switch-science.com/catalog/1104/
センサーについては↑をご覧ください
今回の機能
・M5Stackでコンパクトに
・X分おきの温度・湿度計測
・SDに書き込み
・見やすいやつ
・データ化できる形式(","区切り)
・ネットに接続で時刻取得
・Ambientクラウドに送信
ネット機能についてはオフラインでも飛ばして使用できます。よって、オンラインでないといけないというわけではありません。
オンライン機能についての注意
ここでのWifiは、モバイルでのルーターのみ使えます。スマホなどのテザリングだと、うまくいきません(うまくいってたら教えてください)
Arduino IDEの設定
「ツール」タブをこのように設定してください(COMは例です 別の番号になる人もいると思います)
Ambientの設定
Ambientは、初期の設定が必要です
1.Ambientにログイン
Ambientでログインまたはアカウント作成(無料)してください
サイト https://ambidata.io/
↑ログイン方法
チャンネルがない人はここでチャンネルを作ってください。ある人は、チャンネルの「チャンネルID」「ライトキー」をメモって下さい(画像粗くてすみません)
配線
M5Stackの横に、「5V」「GND」「SCL」「SDA」というI2c通信のピンがあるので、これをつなげます。
並列に2つのセンサーにつなげます(4種類のみでいいです)
絵は後日記載
ソースコード
SDは入れておいてください
結果
起動すると、左下に「deep sleep >>> ON」と出てきます。この時に左のボタンを長押しすると、ONとOFFをトグルできます。ですが、普通はONのままです。内臓電池が持ちます。
5秒後にデータをとってLCD表示します
そして、Wifiにつなげようとします。
接続されれば、Ambient送信・時刻受信・SD記録(時刻あり)します
接続されなければ SD記録(時刻なし)します
5分間(初期値) スリープ(deep sleep >>> ONの場合・deep sleep >>> OFFならそのまま)します
おんなじセンサーが見あたらなかったので、2種類の温度センサーを使いました。
SHT31 https://akizukidenshi.com/catalog/g/gK-12125/
HIH6130 https://www.switch-science.com/catalog/1104/
センサーについては↑をご覧ください
今回の機能
・M5Stackでコンパクトに
・X分おきの温度・湿度計測
・SDに書き込み
・見やすいやつ
・データ化できる形式(","区切り)
・ネットに接続で時刻取得
・Ambientクラウドに送信
ネット機能についてはオフラインでも飛ばして使用できます。よって、オンラインでないといけないというわけではありません。
オンライン機能についての注意
ここでのWifiは、モバイルでのルーターのみ使えます。スマホなどのテザリングだと、うまくいきません(うまくいってたら教えてください)
Arduino IDEの設定
「ツール」タブをこのように設定してください(COMは例です 別の番号になる人もいると思います)
Ambientの設定
Ambientは、初期の設定が必要です
1.Ambientにログイン
Ambientでログインまたはアカウント作成(無料)してください
サイト https://ambidata.io/
↑ログイン方法
チャンネルがない人はここでチャンネルを作ってください。ある人は、チャンネルの「チャンネルID」「ライトキー」をメモって下さい(画像粗くてすみません)
配線
M5Stackの横に、「5V」「GND」「SCL」「SDA」というI2c通信のピンがあるので、これをつなげます。
並列に2つのセンサーにつなげます(4種類のみでいいです)
絵は後日記載
ソースコード
#include "ClosedCube_SHT31D.h" #include <M5Stack.h> #include <WiFi.h> #include <Ambient.h> #include "time.h" ClosedCube_SHT31D sht3xd; const char* fname = "/temperature_Humidity_log.txt"; //Filepass 普通のデータ const char* fname2 = "/temperature_Humidity_log_data.txt"; //Filepass2 ","区切りデータ long timer = 300; //データを取る時間(X秒おき)。timer > 10 const char* ssid = "***************"; //Wifi SSID const char* password = "***************"; //Wifi パスワード WiFiClient CLIENT; Ambient ambient; //ambientオブジェクト作成 unsigned int channelid = ****; //ambient チャンネルID const char* writekey = "****************"; //ambient ライトキー #define HIH6130_ADDR 0x27 byte type = 0; void setup() { //Wire.begin(); M5.begin(); M5.Power.begin(); M5.Lcd.clear(BLACK); Serial.begin(115200); sht3xd.begin(0x45); // SHT-31起動 I2C address: 0x44 or 0x45 } void loop() { M5.Lcd.setTextSize(2.5), M5.Lcd.setTextColor(WHITE); if (type == 0) { M5.Lcd.setCursor(0, 220), M5.Lcd.println("deep sleep >>> ON"); } else { M5.Lcd.setCursor(0, 220), M5.Lcd.println("deep sleep >>> OFF"); } delay(5000); M5.update(); if (M5.BtnA.isPressed()) { M5.Lcd.clear(BLACK); if (type == 0) { type = 1; M5.Lcd.setCursor(0, 220), M5.Lcd.println("deep sleep >>> OFF"); } else { type = 0; M5.Lcd.setCursor(0, 220), M5.Lcd.println("deep sleep >>> ON"); } } unsigned int dac[4]; int i, t, h; float temp, humi; Wire.beginTransmission(HIH6130_ADDR); Wire.endTransmission(); delay(100); Wire.requestFrom(HIH6130_ADDR, 4); for (i = 0 ; i < 4; i++ ) { dac[i] = Wire.read(); } Wire.endTransmission(); h = ((dac[0] & 0x3f) << 8) | dac[1]; humi = (float)(h) / 16383 * 100; t = (dac[2] << 6) | (dac[3] >> 2); temp = (float)(t) / 16383 * 165 - 40; printResult(sht3xd.readTempAndHumidity(SHT3XD_REPEATABILITY_LOW, SHT3XD_MODE_CLOCK_STRETCH, 50), temp, humi); delay(5000); if (type == 0) { M5.Power.deepSleep(SLEEP_SEC(timer - 10)); } else { delay((timer - 10) * 1000); M5.Lcd.clear(BLACK); } // delay(250); // printResult("Pooling Mode", sht3xd.readTempAndHumidity(SHT3XD_REPEATABILITY_HIGH, SHT3XD_MODE_POLLING, 50)); // delay(250); } void printResult( SHT31D result, float HIH_6130_temp, float HIH_6130_humi) { if (result.error == SHT3XD_NO_ERROR) { float SHT31D_temp = result.t; float SHT31D_humi = result.rh; M5.update(); Serial.println("--------------------------------------------------"); Serial.println("SHT31D"); Serial.print("Temperature:"); Serial.print(SHT31D_temp); Serial.print("C ,Humidity:"); Serial.print(SHT31D_humi); Serial.println("%"); Serial.println(""); Serial.println("HIH6130"); Serial.print("Temperature:"); Serial.print(HIH_6130_temp); Serial.print("C ,Humidity:"); Serial.print(HIH_6130_humi); Serial.println("%"); M5.Lcd.setTextColor(WHITE); M5.Lcd.setTextSize(2); M5.Lcd.setCursor(50, 0); M5.Lcd.print("Temperature | Humidity"); M5.Lcd.setCursor(0, 100); M5.Lcd.print("SHT31D "); M5.Lcd.setTextColor(YELLOW); M5.Lcd.print(SHT31D_temp); M5.Lcd.print("C | "); M5.Lcd.print(SHT31D_humi); M5.Lcd.print("%"); M5.Lcd.setTextColor(WHITE); M5.Lcd.setCursor(0, 130); M5.Lcd.print("HIH6130 "); M5.Lcd.setTextColor(YELLOW); M5.Lcd.print(HIH_6130_temp); M5.Lcd.print("C | "); M5.Lcd.print(HIH_6130_humi); M5.Lcd.print("%"); M5.Lcd.setTextSize(2); M5.Lcd.setTextColor(WHITE); M5.Lcd.setCursor(0, 180); M5.Lcd.print("wifi connect"); WiFi.disconnect(true); WiFi.begin(ssid, password); Serial.println("wifi connect..."); byte wifitime = 0; M5.Lcd.setTextSize(1.5); while (wifitime < 20) { //接続待ち delay(500); wifitime += 1; M5.Lcd.print("."); if (WiFi.status() == WL_CONNECTED) { wifitime = 20; } } Serial.println("FINISH"); M5.Lcd.setTextSize(2); M5.Lcd.println(""); if (WiFi.status() == WL_CONNECTED) { M5.Lcd.print("wifi connect success"); ambient.begin(channelid, writekey, &CLIENT); ambient.set(1, double(SHT31D_temp)); ambient.set(2, double(SHT31D_humi)); ambient.set(3, double(HIH_6130_temp)); ambient.set(4, double(HIH_6130_humi)); ambient.send(); const char* ntpServer = "ntp.nict.jp"; const long gmtOffset_sec = 3600 * 9; const int daylightOffset_sec = 0; configTime(gmtOffset_sec, daylightOffset_sec, ntpServer); struct tm timeinfo; if (!getLocalTime(&timeinfo)) { M5.Lcd.println("Failed to obtain time"); return; } // テキストサイズ指定 M5.Lcd.setTextSize(3); // カーソル位置を設定 M5.Lcd.setCursor(30, 30); M5.Lcd.printf("%04d/%02d/%02d" , timeinfo.tm_year + 1900 , timeinfo.tm_mon + 1 , timeinfo.tm_mday ); M5.Lcd.setCursor(30, 60); M5.Lcd.printf("%02d:%02d:%02d" , timeinfo.tm_hour , timeinfo.tm_min , timeinfo.tm_sec ); Serial.print(String((timeinfo.tm_year + 1900)) + "/" + String(timeinfo.tm_mon + 1) + "/" + String(timeinfo.tm_mday) + " " + String(timeinfo.tm_hour) + ":" + String(timeinfo.tm_min) + ":" + String(timeinfo.tm_sec) + " " ); File file; file = SD.open(fname, FILE_APPEND); if (file) { file.println(""); file.println(String((timeinfo.tm_year + 1900)) + "/" + String(timeinfo.tm_mon + 1) + "/" + String(timeinfo.tm_mday) + " " + String(timeinfo.tm_hour) + ":" + String(timeinfo.tm_min) + ":" + String(timeinfo.tm_sec) + " " ); file.close(); } file = SD.open(fname2, FILE_APPEND); if (file) { file.print(String(SHT31D_temp) + "," + String(SHT31D_humi) + "," + String(HIH_6130_temp) + "," + String(HIH_6130_humi) + ","); file.println(String((timeinfo.tm_year + 1900)) + "/" + String(timeinfo.tm_mon + 1) + "/" + String(timeinfo.tm_mday) + " " + String(timeinfo.tm_hour) + ":" + String(timeinfo.tm_min) + ":" + String(timeinfo.tm_sec) + " " ); file.close(); } WiFi.disconnect(true); } else { M5.Lcd.print("wifi connect error"); File file; file = SD.open(fname, FILE_APPEND); if (file) { file.println(""); file.close(); } file = SD.open(fname2, FILE_APPEND); if (file) { file.println(String(SHT31D_temp) + "," + String(SHT31D_humi) + "," + String(HIH_6130_temp) + "," + String(HIH_6130_humi)); file.close(); } } File file; file = SD.open(fname, FILE_APPEND); if (file) { file.println("SHT31D: " + String(SHT31D_temp) + "C " + String(SHT31D_humi) + "%"); file.println("HIH_6130: " + String(HIH_6130_temp) + "C " + String(HIH_6130_humi) + "%"); file.close(); } } else { Serial.print(": [ERROR] Code #"); Serial.println(result.error); File file; file = SD.open(fname, FILE_APPEND); if (file) { file.println(""); file.close(); } } }
SDは入れておいてください
結果
起動すると、左下に「deep sleep >>> ON」と出てきます。この時に左のボタンを長押しすると、ONとOFFをトグルできます。ですが、普通はONのままです。内臓電池が持ちます。
5秒後にデータをとってLCD表示します
そして、Wifiにつなげようとします。
接続されれば、Ambient送信・時刻受信・SD記録(時刻あり)します
接続されなければ SD記録(時刻なし)します
5分間(初期値) スリープ(deep sleep >>> ONの場合・deep sleep >>> OFFならそのまま)します
M5Stack同士でシリアル通信 [Arduino&M5Stack]
今回は、M5Stack同しでシリアル通信をして、文字列を送信&受信してみました
参考
http://robooptions.blog.fc2.com/blog-entry-9.html
この場合はM5StickCでしたが、M5Stackでやってみました。今はまだシリアル通信でしかできないけど、そのうち、CardKB(M5StackのGroveキーボード)やディスプレイ表示でやりたいです。
スレーブのBluetooth用MACアドレスを調べる
スレーブのM5Stackにこのコードを記述
するとシリアルモニタに「1A:2B:3C:4D:5E:6F」のようなアドレスが出るのでこれを使って…
マスター側
スレーブ側
動作すると、シリアルでの会話(SEND: READ:が出ます)や、M5Stackに過去の履歴の表示ができます。
バグ
・早く送信しまくるとバグる
・;(セミコロン)は送信不可(バグる)
・ディスプレイ表示▲
参考
http://robooptions.blog.fc2.com/blog-entry-9.html
この場合はM5StickCでしたが、M5Stackでやってみました。今はまだシリアル通信でしかできないけど、そのうち、CardKB(M5StackのGroveキーボード)やディスプレイ表示でやりたいです。
スレーブのBluetooth用MACアドレスを調べる
スレーブのM5Stackにこのコードを記述
void setup(void) { Serial.begin(115200); Serial.println("-----------------"); uint8_t macBT[6]; esp_read_mac(macBT, ESP_MAC_BT); Serial.printf("%02X:%02X:%02X:%02X:%02X:%02X\r\n", macBT[0], macBT[1], macBT[2], macBT[3], macBT[4], macBT[5]); } void loop() { delay(1000); }
するとシリアルモニタに「1A:2B:3C:4D:5E:6F」のようなアドレスが出るのでこれを使って…
マスター側
//This example code is in the Public Domain (or CC0 licensed, at your option.) //By Victor Tchistiak - 2019 // //This example demostrates master mode bluetooth connection and pin //it creates a bridge between Serial and Classical Bluetooth (SPP) //this is an extention of the SerialToSerialBT example by Evandro Copercini - 2018 // #include "BluetoothSerial.h" #include <M5Stack.h> BluetoothSerial SerialBT; String MACadd = "1A:2B:3C:4D:5E:6F";//スレーブのアドレス uint8_t address[6] = {0x1A, 0x2B, 0x3C, 0x4D, 0x5E, 0x6F};//スレーブのアドレス //uint8_t address[6] = {0x00, 0x1D, 0xA5, 0x02, 0xC3, 0x22}; String name = "OBDII"; char *pin = "1234"; //<- standard pin would be provided by default bool connected; String History[10] = {"", "", "", "", "", "", "", "", "", ""}; void setup() { M5.begin(); Serial.begin(115200); SerialBT.begin("ESP32test", true); Serial.println("The device started in master mode, make sure remote BT device is on!"); M5.Lcd.setTextSize(3), M5.Lcd.setCursor(50, 80), M5.Lcd.print("Connected..."); connected = SerialBT.connect(address); M5.Lcd.setTextSize(2); if (connected) { M5.Lcd.clear(); } else { while (!SerialBT.connected(10000)) { M5.Lcd.clear(); Serial.println("Failed to connect. Make sure remote device is available and in range, then restart app."); M5.Lcd.setTextColor(RED), M5.Lcd.setCursor(0, 80), M5.Lcd.print("Failed to connect"); } } delay(3000); M5.Lcd.clear(); M5.Lcd.setTextColor(WHITE), M5.Lcd.setTextSize(2), M5.Lcd.setCursor(0, 0); // disconnect() may take upto 10 secs max if (SerialBT.disconnect()) { Serial.println("Connected Succesfully!"); M5.Lcd.setTextColor(GREEN), M5.Lcd.setCursor(0, 80), M5.Lcd.print("Connected Succesfully!"); } //this would reconnect to the name(will use address, if resolved) or address used with connect(name / address). SerialBT.connect(); } void loop() { if (Serial.available()) { String datastring = Serial.readStringUntil(';'); Serial.print("SEND:" + datastring); add("SEND:" + datastring); SerialBT.print(datastring); //Serial.print("myself:"); //Serial.print(Serial.readStringUntil(';')); } if (SerialBT.available()) { String datastring = SerialBT.readStringUntil(';'); Serial.print("READ:" + datastring); add("READ:" + datastring); } delay(20); } void add(String addstring) { History[9] = History[8]; History[8] = History[7]; History[7] = History[6]; History[6] = History[5]; History[5] = History[4]; History[4] = History[3]; History[3] = History[2]; History[2] = History[1]; History[1] = History[0]; History[0] = addstring; M5.Lcd.fillRect(0, 0, 320, 180, BLACK); M5.Lcd.setTextColor(WHITE), M5.Lcd.setTextSize(2), M5.Lcd.setCursor(0, 0); M5.Lcd.print(History[0]); M5.Lcd.print(History[1]); M5.Lcd.print(History[2]); M5.Lcd.print(History[3]); M5.Lcd.print(History[4]); M5.Lcd.print(History[5]); M5.Lcd.print(History[6]); M5.Lcd.print(History[7]); M5.Lcd.print(History[8]); M5.Lcd.print(History[9]); M5.Lcd.fillRect(0, 180, 100, 100, BLACK); }
スレーブ側
//This example code is in the Public Domain (or CC0 licensed, at your option.) //By Evandro Copercini - 2018 // //This example creates a bridge between Serial and Classical Bluetooth (SPP) //and also demonstrate that SerialBT have the same functionalities of a normal Serial #include "BluetoothSerial.h" #include <M5Stack.h> String History[10] = {"", "", "", "", "", "", "", "", "", ""}; String sendstring = ""; #if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED) #error Bluetooth is not enabled! Please run `make menuconfig` to and enable it #endif BluetoothSerial SerialBT; void setup() { M5.begin(); Serial.begin(115200); SerialBT.begin("ESP32test"); //Bluetooth device name Serial.println("The device started, now you can pair it with bluetooth!"); } void loop() { if (Serial.available()) { String datastring = Serial.readStringUntil(';'); Serial.print("SEND:" + datastring); add("SEND:" + datastring); SerialBT.print(datastring); //Serial.print("myself:"); //Serial.print(Serial.readStringUntil(';')); } if (SerialBT.available()) { String datastring = SerialBT.readStringUntil(';'); Serial.print("READ:" + datastring); add("READ:" + datastring); } delay(20); } void add(String addstring) { History[9] = History[8]; History[8] = History[7]; History[7] = History[6]; History[6] = History[5]; History[5] = History[4]; History[4] = History[3]; History[3] = History[2]; History[2] = History[1]; History[1] = History[0]; History[0] = addstring; M5.Lcd.fillRect(0, 0, 320, 180, BLACK); M5.Lcd.setTextSize(2), M5.Lcd.setCursor(0, 0); for (byte i = 0; i = 9; i++) { if (History[i].charAt(0) == 'S'){ M5.Lcd.setTextColor(WHITE); }else{ M5.Lcd.setTextColor(YELLOW); } M5.Lcd.print(History[i]); } }
動作すると、シリアルでの会話(SEND: READ:が出ます)や、M5Stackに過去の履歴の表示ができます。
バグ
・早く送信しまくるとバグる
・;(セミコロン)は送信不可(バグる)
・ディスプレイ表示▲
M5Stackで温度・湿度計 SD保存・ネットクラウド保存付きを作りました [Arduino&M5Stack]
どうも8√3です。
今回は、タイトルのとうり、Arduinoを使ってM5Stackを動かし、温度・湿度計を作りました。また、SD保存、クラウド保存も実現させました
------------------------------------------------------------------------------------------------------------------------------------------------------
目次
1.使うものは…
1-1.M5Stack Glay
1-2.温湿度をはかるSHT31
1-3.Ambientの設定など
2.配線
3.使うライブラリ
3-1.M5Stack.h(インストール必要)
3-2.ClosedCube_SHT31D.h(インストール必要)
3-3.Ambient.h(インストール必要)
3.4.Wire.h(元から入っている)
3-5.WiFi.h(元から入っている)
3-6.time.h(元から入っている)
4.コーディング
4-1.表示+SD保存
4-2.表示+SD保存+Ambient
5.結果
6.さいごに
------------------------------------------------------------------------------------------------------------------------------------------------------
1.使うものは...
ここでは、使用するものを紹介します
1.M5Stack Glay
M5stackの基本形です。M5stack Cなどでもよいですが、文法や、字の書く場所などが変わってきます。
2.温湿度をはかるSHT31
今回使う温湿度計です。小さいです。
写真:後程
3.Ambient
今回、クラウドデータに保存するためのサーバーです。ここで、初期設定をしておきます
1.Ambientに行く
https://ambidata.io/
↑ここへアクセス
2.ログインまたはアカウント作成
メールアドレスとパスワードの設定のみです。
今回は、タイトルのとうり、Arduinoを使ってM5Stackを動かし、温度・湿度計を作りました。また、SD保存、クラウド保存も実現させました
------------------------------------------------------------------------------------------------------------------------------------------------------
目次
1.使うものは…
1-1.M5Stack Glay
1-2.温湿度をはかるSHT31
1-3.Ambientの設定など
2.配線
3.使うライブラリ
3-1.M5Stack.h(インストール必要)
3-2.ClosedCube_SHT31D.h(インストール必要)
3-3.Ambient.h(インストール必要)
3.4.Wire.h(元から入っている)
3-5.WiFi.h(元から入っている)
3-6.time.h(元から入っている)
4.コーディング
4-1.表示+SD保存
4-2.表示+SD保存+Ambient
5.結果
6.さいごに
------------------------------------------------------------------------------------------------------------------------------------------------------
1.使うものは...
ここでは、使用するものを紹介します
1.M5Stack Glay
M5stackの基本形です。M5stack Cなどでもよいですが、文法や、字の書く場所などが変わってきます。
2.温湿度をはかるSHT31
今回使う温湿度計です。小さいです。
写真:後程
3.Ambient
今回、クラウドデータに保存するためのサーバーです。ここで、初期設定をしておきます
1.Ambientに行く
https://ambidata.io/
↑ここへアクセス
2.ログインまたはアカウント作成
メールアドレスとパスワードの設定のみです。