質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
M5Stack

M5Stackは、小型のマイコンモジュールです。拡張モジュールが豊富に用意されており、センサと組み合わせることで測定機能を自由に追加することができます。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

IoT

IoT(Internet of Things)とは、インターネットがコンピュータなどの情報・通信機器のネットワークだけでなく、世の中のある様々なモノに接続されて自動認識・自動制御・遠隔計測などの能力を備えることです。「モノのインターネット」と一般的にいわれます。

マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

Q&A

解決済

1回答

2506閲覧

M5Stack Core2 と M5Stack用温湿度気圧センサユニット Ver.3(ENV Ⅲ)で取得データをmicroSDに連続保存したい

Crew_38

総合スコア5

M5Stack

M5Stackは、小型のマイコンモジュールです。拡張モジュールが豊富に用意されており、センサと組み合わせることで測定機能を自由に追加することができます。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

IoT

IoT(Internet of Things)とは、インターネットがコンピュータなどの情報・通信機器のネットワークだけでなく、世の中のある様々なモノに接続されて自動認識・自動制御・遠隔計測などの能力を備えることです。「モノのインターネット」と一般的にいわれます。

マイコン

マイクロコンピュータの略で、CPUにマイクロプロセッサを用いたコンピュータのこと。家電製品、電磁機器などの制御に用いられています。単体でコンピュータとしての機能を一通り備えています。 現代のパーソナルコンピュータに近く、同時期のメインフレームやミニコンピュータと比べ、小さいことが特徴です。

0グッド

0クリップ

投稿2022/01/14 04:46

編集2022/01/14 06:32

前提・実現したいこと

M5Stack Core2 と M5Stack用温湿度気圧センサユニット Ver.3(ENV Ⅲ)を組合せ、
温度、湿度,気圧の各データを取得毎、microSDカードに保存したいです。

センサからのデータはM5Stackの画面に表示されている事から取得出来ていますが、
SDカードには最初に取得したデータしか保存されません。

該当のソースコード

arduino

1#include <M5Core2.h> 2#include "Adafruit_Sensor.h" 3#include <Adafruit_BMP280.h> 4#include "UNIT_ENV.h" 5 6SHT3X sht30; 7QMP6988 qmp6988; 8 9float tmp = 0.0; 10float hum = 0.0; 11float pressure = 0.0; 12 13File f; 14 15void setup() { 16 M5.begin(); //Init M5Core2. 17 M5.lcd.setTextSize(2); //Set the text size to 2. 18 Wire.begin(); //Wire init, adding the I2C bus. 19 qmp6988.init(); 20 M5.lcd.println(F("ENV Unit III test")); 21} 22 23void loop() { 24 pressure = qmp6988.calcPressure() * 0.01; 25 if(sht30.get()==0){ //Obtain the data of shT30. 26 tmp = sht30.cTemp; //Store the temperature obtained from shT30. 27 hum = sht30.humidity; //Store the humidity obtained from the SHT30. 28 }else{ 29 tmp=0,hum=0; 30 } 31 M5.lcd.fillRect(0,20,100,60,BLACK); //Fill the screen with black (to clear the screen). 32 M5.lcd.setCursor(0,20); 33 M5.Lcd.printf("Temp: %2.1f \r\nHumi: %2.1f%% \r\nPressure:%2.1fPa\r\n", tmp, hum, pressure); 34 35 f = SD.open("/Log_Out.csv", FILE_APPEND); 36 f.println(String(tmp) + "," + String(hum) + "," + String(pressure)); 37 f.close(); 38 39 delay(2000); 40}

試したこと

以下のサイトを含め参照しましたが解決出来ませんでした。

M5StackでSDカードにCSVデータを作成する
https://raspberrypi.mongonta.com/howto-write-csv-to-sdcard-on-m5stack/

補足情報(FW/ツールのバージョンなど)

M5Stack Core2 AWS
microSD : Trancend 16GB TS16GUSD300S-AE
FAT32でフォーマット済

大変申し訳ありませんがアドバイスを頂けないでしょうか?
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thkana

2022/01/14 23:52

> センサからのデータはM5Stackの画面に表示されている事から取得出来ています そちらは確認できたとして、ではデータの取得をしないで(連番とかmillis()の値とか)でSDカードへの書き込みだけを行った場合はどうなりますか
guest

回答1

0

ベストアンサー

以下に絞って試してみました。うちはM5StackGrayなので...

Arduino

1#include <M5Stack.h> 2float tmp = 0.0; 3float hum = 0.0; 4float pressure = 0.0; 5 6File f; 7int n = 0; 8 9void setup() { 10 M5.begin(); // Init M5Core2. 11 M5.lcd.setTextSize(2); // Set the text size to 2. 12 Wire.begin(); // Wire init, adding the I2C bus. 13 M5.lcd.println(F("ENV Unit III test")); 14} 15 16void loop() { 17 pressure = n++; 18 tmp = millis(); // Store the temperature obtained from shT30. 19 hum = millis(); // Store the humidity obtained from the SHT30. 20 M5.lcd.fillRect(0, 20, 100, 60, 21 BLACK); // Fill the screen with black (to clear the screen). 22 M5.lcd.setCursor(0, 20); 23 M5.Lcd.printf("Temp: %2.1f \r\nHumi: %2.1f%% \r\nPressure:%2.1fPa\r\n", tmp, 24 hum, pressure); 25 26 f = SD.open("/Log_Out.csv", FILE_APPEND); 27 if (f) { 28 f.println(String(tmp) + "," + String(hum) + "," + String(pressure)); 29 f.close(); 30 } else { 31 M5.Lcd.printf("File open Err.\r\n"); 32 } 33 34 delay(2000); 35}

症状が再現しました(起動後毎回書けているかというとそうでもない?)。
ESP32のボードライブラリを最新の2.0.2から1.0.6にすると期待通りに書けているようです(2.0.1等は試していません)。ボードライブラリのバグではないかという気がします。
質問者さんの環境でライブラリのバージョンを下げて試してみたらどうなるでしょう?
それで動くようなら、issueとして報告してみてはいかがでしょうか。

投稿2022/01/15 06:30

編集2022/01/15 06:39
thkana

総合スコア7629

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Crew_38

2022/01/16 02:06

ご連絡ありがとうございます。 ご連絡いただいた通り、バージョンを2.0.2から1.0.6に変更したことで解決出来ました。 microSDの相性によるものかと思いご返信する前にバージョンを2.0.2で、 ScanDisks製のmicroSD 4GB class2で試したところ、上手く出来ました。 使用したいmicroSDがTrancend 16GBですので、バージョン1.0.6でしばらく進めます。
thkana

2022/01/16 02:26

「相性」ですか...いやらしいですね。 1.0.6は1.0.6でシリアルの初期化を2度やると動かなくなるという病気があるのでそれはそれで注意が必要だったりするので、なんというか。(M5系列はM5.begin()のなかでSerial.begin()をやっているので、ボーレートを変えるつもりで外部でSerial.begin()をかけるとハマる)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問