« ubuntu20.04でwindowアプリを動かす | トップページ | XIAO/M5AtomでLCD240x240(SPI)を制御する((XIAO/Arduino版、M5Atom/Arduino版) »

2020年10月13日 (火)

XIAO/M5Atomで気圧センサー(HP206C)を動かす(XIAO/Arduino版、M5Atom/Arduino版)

2020/10/16
wio-terminal用のplatformio.iniを追加した。

2020/10/13 初版

PlatformIO XAIO M5ATOM HP206C

PlatformIO XAIO M5ATOM HP206C

概要

XIAO/M5Atomで以下の気圧センサー(HP206C)を動かす(XIAO/Arduino版、M5Atom/Arduino版)。
platformがArduinoなのでソースを共通化して動かしてみる。

Grove 高精度気圧計 - Grove Barometer
https://wiki.seeedstudio.com/Grove-Barometer-High-Accuracy/

開発ツールplatformioのインストールについては以下を参照のこと:
開発ツールPlatformIOをcliで使う(Seeeduino-XIAO版)
M5Atomを開発ツールPlatformIOで使う(M5Atom/Arduino版)
M5Atomを開発ツールPlatformIOで使う(Windows10版)

platformio.ini

XIAO用:

; PlatformIO Project Configuration File ; ; Build options: build flags, source filter ; Upload options: custom upload port, speed and extra flags ; Library options: dependencies, extra library storages ; Advanced options: extra scripting ; ; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html [env:seeed_xiao] platform = atmelsam board = seeed_xiao framework = arduino upload_protocol = sam-ba monitor_speed = 115200 lib_deps = # HP20x lib https://github.com/Seeed-Studio/Grove_Barometer_HP20x.git lib_ldf_mode = deep+

M5ATOM用:

; PlatformIO Project Configuration File ; ; Build options: build flags, source filter ; Upload options: custom upload port, speed and extra flags ; Library options: dependencies, extra library storages ; Advanced options: extra scripting ; ; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html [env:m5stick-c] platform = espressif32 board = m5stick-c framework = arduino build_flags = -DM5ATOM monitor_speed = 115200 lib_deps = # use M5Atom lib 3113 # use "FastLED" 126 # HP20x lib https://github.com/Seeed-Studio/Grove_Barometer_HP20x.git lib_ldf_mode = deep+

デモ・スケッチ

以下の手順でダウンロードする:

cd src wget https://raw.githubusercontent.com/Seeed-Studio/Grove_Barometer_HP20x/master/examples/HP20x_demo/HP20x_demo.ino

これを以下のように編集してXIAO/M5ATOM共通化する:
src/HP20x_demo.ino

/* Demo name : HP20x_dev demo Usage : I2C PRECISION BAROMETER AND ALTIMETER [HP206C hopeRF] Author : Oliver Wang from Seeed Studio Version : V0.1 Change log : Add kalman filter 2014/04/04 */ #ifdef M5ATOM #include "M5Atom.h" #endif #include <HP20x_dev.h> #include "Arduino.h" #include "Wire.h" #include <KalmanFilter.h> unsigned char ret = 0; /* Instance */ KalmanFilter t_filter; //temperature filter KalmanFilter p_filter; //pressure filter KalmanFilter a_filter; //altitude filter void setup() { #ifdef M5ATOM M5.begin(); // Wire.begin() must be after M5.begin() Wire.begin(26, 32); // Grove Connector of Atom Matrix (I2C GPIO Pin: G26,G32) #endif //Serial.begin(9600); // start serial for output Serial.begin(115200); // start serial for output Serial.println("****HP20x_dev demo by seeed studio****\n"); Serial.println("Calculation formula: H = [8.5(101325-P)]/100 \n"); /* Power up,delay 150ms,until voltage is stable */ delay(150); /* Reset HP20x_dev */ HP20x.begin(); delay(100); } void loop() { Serial.println("------------------\n"); long Temper = HP20x.ReadTemperature(); Serial.println("Temper:"); float t = Temper / 100.0; Serial.print(t); Serial.println("C.\n"); Serial.println("Filter:"); Serial.print(t_filter.Filter(t)); Serial.println("C.\n"); long Pressure = HP20x.ReadPressure(); Serial.println("Pressure:"); t = Pressure / 100.0; Serial.print(t); Serial.println("hPa.\n"); Serial.println("Filter:"); Serial.print(p_filter.Filter(t)); Serial.println("hPa\n"); long Altitude = HP20x.ReadAltitude(); Serial.println("Altitude:"); t = Altitude / 100.0; Serial.print(t); Serial.println("m.\n"); Serial.println("Filter:"); Serial.print(a_filter.Filter(t)); Serial.println("m.\n"); Serial.println("------------------\n"); delay(1000); }

該当の気圧センサーはI2Cタイプなので(I2C用の)Grove-Conectorに接続する。
(XIAOは専用のshield経由で接続する)

ビルド・実行

以下の手順でビルド・実行する:
(platformio.iniは、ボードごとに切り替える)

run pio -t upload

出力

通信ソフトを起動すると以下のような出力が得られる:

------------------ Temper: 27.23C. Filter: 26.96C. Pressure: 1003.36hPa. Filter: 995.89hPa Altitude: 83.92m. Filter: 83.82m. ------------------ ------------------ Temper: 27.22C. Filter: 27.09C. Pressure: 1003.40hPa. Filter: 1000.78hPa Altitude: 83.59m. Filter: 83.69m. ------------------ <省略>

追加(wio-terminal用platformio.ini)

以下のplatformio.iniに切り替えるとwio-terminalでビルド・実行できる:

; PlatformIO Project Configuration File ; ; Build options: build flags, source filter ; Upload options: custom upload port, speed and extra flags ; Library options: dependencies, extra library storages ; Advanced options: extra scripting ; ; Please visit documentation for the other options and examples ; https://docs.platformio.org/page/projectconf.html [env:seeed_wio_terminal] platform = atmelsam board = seeed_wio_terminal framework = arduino build_flags = -DWIO_TERMINAL lib_deps = # HP20x lib https://github.com/Seeed-Studio/Grove_Barometer_HP20x.git upload_protocol = sam-ba monitor_speed = 115200 lib_ldf_mode = deep+

接続するGrove-Connectorは、LCD画面を正面にして下側の左のほうのConnectorが I2C用なので、こちらに該当モジュールを接続する。

参考情報

Seeeduino XIAO用Grove シールド バッテリー管理チップ 搭載

以上

|

« ubuntu20.04でwindowアプリを動かす | トップページ | XIAO/M5AtomでLCD240x240(SPI)を制御する((XIAO/Arduino版、M5Atom/Arduino版) »

PlatformIO」カテゴリの記事

XIAO」カテゴリの記事

M5Atom」カテゴリの記事

HP20x」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« ubuntu20.04でwindowアプリを動かす | トップページ | XIAO/M5AtomでLCD240x240(SPI)を制御する((XIAO/Arduino版、M5Atom/Arduino版) »