ひとしれずひっそり

主にソフトに関することをメモしていきます。過程をそのまま書いていたりするので間違いが含まれます。鵜呑みしない様に。

IoT

SW_CPU_RESETがかかる

IoT

M5Stamp picoでデータを取っている装置のソフトを作り直して、どうも挙動が変なので調べてみる。 通常DEEPSLEEP_RESETで立ち上がってくるのが、 rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 188777542, SPIWP:0xee clk_drv:0x00,…

1.9インチ 91セグメント I2C電子ペーパモジュール(7)

IoT

e-Paperモジュールでマイナス表示できないため0℃にクリップしていたが、Ambientへの記録もクリップされてしまったので修正。 それと測定中はM5Stamp picoのLEDを表示させる様にした。 よく考えたらマイナス表記もできるので対応させた。 1しか表示できないと…

M5Stamp picoでM5Unifiedを使ってRGB LEDを点灯させる場合

IoT

M5Stamp picoでM5Unifiedを使ってRGB LEDを点灯させる場合にどうするか試す。 docs.m5stack.com ドキュメントによるとRGB LEDはサポートされず、FastLED Libraryを使う様にということの様だ。 色はRGBで指定するが、M5Stamp picoはRとGが逆になっている様な…

1.9インチ 91セグメント I2C電子ペーパモジュール(6)

IoT

電池駆動は無理だった。 今朝見たらまた止まっていた。 電圧は2.2Vしかなく出力も5V出てない。 Ambientとの通信で結構くっているのかな? e-Paperモジュールの初期化で食ってる気もしないでもない。 電池駆動でいいとこ2日というところか… e-Paperは表示が消…

1.9インチ 91セグメント I2C電子ペーパモジュール(5)

IoT

実際に単四電池2本で動かしてみる。 これだと供給電流が不足して動作が不安定な感じ。 XCL103使用5V出力昇圧DCDCコンバーターキット: 組立キット(モジュール) 秋月電子通商-電子部品・ネット通販 いつものMT3608モジュールにする。 安いし重宝す…

1.9インチ 91セグメント I2C電子ペーパモジュール(4)

IoT

細かいところを実装。 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…

1.9インチ 91セグメント I2C電子ペーパモジュール(3)

IoT

後は温度をe-Paperに表示するのみ。 前回の表示はサンプルそのままだったが、温度表示できる様にする必要がある。 初期化で何をしているか理解できていないが、EPD_1in9_Write_Screen(DSPNUM_1in9_W0)の前までは必須の様だ。 その途中までにすると表示した時…

1.9インチ 91セグメント I2C電子ペーパモジュール(2)

IoT

温湿度計にするためのセンサーとして手元にあるDHT11を使用する。 使用するピンは左側の列ではGPIO26しか残ってないのでそれを使用する。 M5Stamp pico DHT11 3V3 + GND - G26 OUT OUTとVCC間に4.7KΩのプルアップ抵抗を入れる。 github.com を使ってセンサー…

1.9インチ 91セグメント I2C電子ペーパモジュール(1)

IoT

1.9インチ 91セグメント I2C電子ペーパモジュールwww.switch-science.com ドットマトリックスのe-Paperデバイスと思って買ったら違うらしい。ちょっと失敗。 液晶表示の様にセグメントがある様だ。というかセグメントと書いてるよね。確認不足。 見た目はSwi…

M5StickCでM5UnifiedでIMU(7)

IoT

データを取ってみて、微分で同じ符号が8回続いたら山と谷の切り替えを判断することにした。 これで実際の歩数に近い感じになったのでこれで完成としよう。 後は雪が降って除雪のログ取りをするだけ。 図は微分と2階微分のデータで、正の数を緑で、負の数を赤…

arduplot試してみる(2)

IoT

plotcfg.json にグラフの設定を記述していると良いらしい。 { "label": [ "acc", "diff", "diff2" ], "title": "Accel", "width": 100 } M5StickCからはデータをカンマで区切って送る。 Serial.print(velocity[0]); Serial.print(","); Serial.print(diff[0]…

M1 Mac で PlatformIO のシリアルモニターが文字化けする

IoT

最初M1 Mac で PlatformIO のシリアルモニターが文字化けしていた。 ここでドライバーダウンロード時にM1 Sillicon用があってリンク先でダウンロードしてインストールしていた。 docs.m5stack.com この状態で文字化けしていた。 正確には文字化けとはちがっ…

M5StickCでM5UnifiedでIMU(6)

IoT

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 …

M5StickCでM5UnifiedでIMU(5)

IoT

前回ので歩くと脈動する感じだったので2階微分で判断すれば良さそう。 正側の閾値を超えたらでいい気がするが、試すとイマイチでどこか間違ってるかもしれない。 負側でも閾値を超えたらとして、更に信号がバウンドしている様なので250ms以内のトリガーは無…

M5StickCでM5UnifiedでIMU(4)

IoT

ベクトル長のグラフ表示をしてみる。 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…

M5StickCでM5UnifiedでIMU(3)

IoT

移動平均を取ってみる 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…

M5StickCでM5UnifiedでIMU(2)

IoT

IMUの値を取得してみる。 _cfg.internal_imu で初期化しているので、検索するとここで初期化されている。 M5Atom Matrixは軸が異なってる様だ。 if (_cfg.internal_imu && In_I2C.isEnabled()) { if (M5.Imu.begin()) { if (M5.getBoard() == m5::board_t::b…

M5StickCでM5UnifiedでIMU(1)

IoT

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>…