IoT
M5Stamp picoでデータを取っている装置のソフトを作り直して、どうも挙動が変なので調べてみる。 通常DEEPSLEEP_RESETで立ち上がってくるのが、 rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 188777542, SPIWP:0xee clk_drv:0x00,…
e-Paperモジュールでマイナス表示できないため0℃にクリップしていたが、Ambientへの記録もクリップされてしまったので修正。 それと測定中はM5Stamp picoのLEDを表示させる様にした。 よく考えたらマイナス表記もできるので対応させた。 1しか表示できないと…
M5Stamp picoでM5Unifiedを使ってRGB LEDを点灯させる場合にどうするか試す。 docs.m5stack.com ドキュメントによるとRGB LEDはサポートされず、FastLED Libraryを使う様にということの様だ。 色はRGBで指定するが、M5Stamp picoはRとGが逆になっている様な…
電池駆動は無理だった。 今朝見たらまた止まっていた。 電圧は2.2Vしかなく出力も5V出てない。 Ambientとの通信で結構くっているのかな? e-Paperモジュールの初期化で食ってる気もしないでもない。 電池駆動でいいとこ2日というところか… e-Paperは表示が消…
実際に単四電池2本で動かしてみる。 これだと供給電流が不足して動作が不安定な感じ。 XCL103使用5V出力昇圧DCDCコンバーターキット: 組立キット(モジュール) 秋月電子通商-電子部品・ネット通販 いつものMT3608モジュールにする。 安いし重宝す…
細かいところを実装。 Wikiに以下の記載がある。 When using the ink screen, it is recommended that the refresh interval be at least 180s, and refresh at least every 24 hours. If the ink screen is not used for a long time, the ink screen shoul…
後は温度をe-Paperに表示するのみ。 前回の表示はサンプルそのままだったが、温度表示できる様にする必要がある。 初期化で何をしているか理解できていないが、EPD_1in9_Write_Screen(DSPNUM_1in9_W0)の前までは必須の様だ。 その途中までにすると表示した時…
温湿度計にするためのセンサーとして手元にあるDHT11を使用する。 使用するピンは左側の列ではGPIO26しか残ってないのでそれを使用する。 M5Stamp pico DHT11 3V3 + GND - G26 OUT OUTとVCC間に4.7KΩのプルアップ抵抗を入れる。 github.com を使ってセンサー…
1.9インチ 91セグメント I2C電子ペーパモジュールwww.switch-science.com ドットマトリックスのe-Paperデバイスと思って買ったら違うらしい。ちょっと失敗。 液晶表示の様にセグメントがある様だ。というかセグメントと書いてるよね。確認不足。 見た目はSwi…
データを取ってみて、微分で同じ符号が8回続いたら山と谷の切り替えを判断することにした。 これで実際の歩数に近い感じになったのでこれで完成としよう。 後は雪が降って除雪のログ取りをするだけ。 図は微分と2階微分のデータで、正の数を緑で、負の数を赤…
plotcfg.json にグラフの設定を記述していると良いらしい。 { "label": [ "acc", "diff", "diff2" ], "title": "Accel", "width": 100 } M5StickCからはデータをカンマで区切って送る。 Serial.print(velocity[0]); Serial.print(","); Serial.print(diff[0]…
最初M1 Mac で PlatformIO のシリアルモニターが文字化けしていた。 ここでドライバーダウンロード時にM1 Sillicon用があってリンク先でダウンロードしてインストールしていた。 docs.m5stack.com この状態で文字化けしていた。 正確には文字化けとはちがっ…
Ambientに送信して完成。 10分動いてなかったらPower offする機能も追加。 static void transfer_task(void*) { Ambient ambient; unsigned long sent_at = millis(); WiFiMulti wifiMulti; WiFiClient client; int power_off_count = 0; int power_off_min …
前回ので歩くと脈動する感じだったので2階微分で判断すれば良さそう。 正側の閾値を超えたらでいい気がするが、試すとイマイチでどこか間違ってるかもしれない。 負側でも閾値を超えたらとして、更に信号がバウンドしている様なので250ms以内のトリガーは無…
ベクトル長のグラフ表示をしてみる。 static void display() { int bar_height = 20; int h = M5.Lcd.height(); int w = M5.Lcd.width(); int y = h - bar_height; int value = 0; value = map((int)(velocity * 10000), 0, 10000, 0, w); Serial.println(va…
移動平均を取ってみる static void imu_task(void*) { int tap_size = 9; int b_ptr = 0; float z_buf[tap_size] = {0}; float val[3]; float vel = 0; float sum = 0; while(true) { M5.Imu.getAccel(&val[0], &val[1], &val[2]); val[2] -= 1.0f; vel = sq…
IMUの値を取得してみる。 _cfg.internal_imu で初期化しているので、検索するとここで初期化されている。 M5Atom Matrixは軸が異なってる様だ。 if (_cfg.internal_imu && In_I2C.isEnabled()) { if (M5.Imu.begin()) { if (M5.getBoard() == m5::board_t::b…
M5UnifiedでIMUの動作確認。 ```#include <Arduino.h>#include <M5Unified.h> void setup() { auto cfg = M5.config(); cfg.clear_display = true; // default=true. clear the screen when begin. cfg.output_power = false; // default=true. use external port 5V output. cfg.int</m5unified.h></arduino.h>…