研究室 電子工作

Arduinoを使った気圧計の作り方を初心者にもわかりやすく解説!

本記事では、Arduino Nano Everyを使って気圧計を作る方法をわかりやすく解説します。

完成イメージはこちらです。↓

Arduino のインストール方法は、こちらからどうぞ!

Arduino Nano Every を使った気圧計の作り方

Arduino を活用すれば、誰でも簡単に電子工作ができます。

しかし、

せっかくArduinoを手に入れたのに、使い方がいまいち分からない
何か作ってみたいけど、使用実例が少ない

といった悩みを抱える方も多いのではないでしょうか。

そんなArduino初心者の方にもわかりやすく、気圧計の作り方を解説していきます。

Arduino気圧計を作るためには、大きく3つの手順があります。

手順1:気圧計を作るための準備(機器・配線・ライブラリの取得)

手順2:プログラムの作成

手順3:プログラムのコンパイル・書き込み

これら3つの手順について、詳しく解説していきます。

手順1:気圧計を作るための準備

気圧計を作るための準備として、以下の3つを確認します。

1. 必要な機器について

2. 配線の方法

3. プログラムのライブラリ取得

必要な機器について

必要な機器や部品は、以下の通りです。

  • ボード:    Arduino Nano Every
  • シールド:   Grove Shield for Arduino Nano
  • 気圧センサー: Grove  精度気圧センサー DPS310
  • ディスプレイ: Grove - 16 x 2 LCD (Black on Yellow)
  • コード:    GROVE アダプタケーブル
  • ハブ:     Grove I2C ハブ

ボードや気圧センサーを含むこれらの部品は、amazonAilExpressで購入すると比較的安価に手に入れることができます。

しかし、電子工作に慣れていない方は、トラブルシューティングなどの観点から秋月電子通商などの電子部品卸店を利用すると良いと思います。

ボード

今回使用するボードは、Arduino Nano Everyです。


Arduino Nanoと同じフットプリントで、より高性能、低価格になったArduinoです。

メインにATMega4809、USBシリアル通信部にATSAMD11D14A(ARM Cortex M0+)が使用されています。

Arduino Nanoよりも大きなプログラムを作成でき、さらに多くの変数を使用できます。

  • 動作電圧:5 V
  • 外部入力電源電圧(推奨): 7 ~ 12 V
  • I/Oピン最大電流:20 mA
  • 3.3 Vピン最大電流:50 mA
  • 動作周波数:20 MHz
  • ATMega4809搭載
    • CPU Flash Memory 48 KB
    • SRAM 6KB
    • EEPROM 256byte
  • PWM ピン数;5 (D3, D5, D6, D9, D10)
  • UART x 1
  • SPI x 1
  • I2C x 1
  • アナログ入力ピン数 x 8 (ADC 10 bit)
  • 寸法;45 mm x 18 mm
気圧センサー

気圧センサーは、Grove  精度気圧センサー DPS310 -Grove High Precision Barometric Pressure Sensorを使用します。

Grove 精度気圧センサー DPS310
created by Rinker

DPS310は、高精度と低消費電流の小型デジタル気圧センサーで、圧力と温度の両方を測定できます

これを使用することで、気圧・高度・温度を測定し、自作のArduino気圧計を作製できます。 

このセンサーは非常に高精度だけでなく、非常に使いやすく、オンボードのGrove IICインターフェースまたは6ピンSPIインターフェースを自由に選択することができます。 配線については、はんだ付け不要で、3.3V / 5Vの両方のシステムで動作できるため、SeeeduinoやArduinoとbase shiledを合わせて使用できます。

  • 気圧測定範囲:300~1200 hPa
  • 温度測定範囲:-40~85℃
  • 気圧制度:± 0.002 hPa (or ±0.02 m)
  • 気圧絶対正確度:± 1 hPa (or ±8 m)
  • 気圧相対正確度:± 0.06 hPa (or ±0.5 m)
  • 気圧分解能:0.06 Pa
  • 通信:I2C/SPI
その他

ボード・気圧センサーの他に、以下の部品を使用しました。

  • シールド:   Grove Shield for Arduino Nano

  • ディスプレイ: Grove - 16 x 2 LCD (Black on Yellow)

  • ケーブル:   GROVE アダプタケーブル

  • ハブ:     Grove I2C ハブ


配線の方法

今回は、ブレッドボードを使用しないので、ボードとセンサー等を直接配線します。

もちろん、はんだづけも不要です。

このような感じで繋いでみました。

プログラムのライブラリ取得

配線が完了したら、本体とpcをマイクロUSBで接続して、Arduino.app を立ち上げます。

始めて起動した場合には、このようなプログラムのテンプレートが表示されます。

ボード・気圧センサー・ディスプレイのライブラリを取得します。

ボードのライブラリを取得するためには、

ツールバーから、「Tools」→「Board」→「Board Manager...」を選択します。

管理画面が開くので、検索窓で「nano every」を検索します。

「install」から最新版 (2022年2月時点では、version1.8.7) をインストールします。

「installed」の表示が出たら完了です。

次に、気圧センサーのライブラリを取得します。

ツールバーから、「Tools」→「Manage Libraries...」を選択します。

ライブラリ管理の画面が開くので、検索窓で「Adafruit DPS310」を検索します。

先ほどと同様に、最新版 (2022年2月時点では、version 1.1.1) をインストールします。

以上で準備完了です

手順2:プログラムの作成

気圧計のプログラムを書いていきます。

先ほど取得したライブラリのプログラム例をうまく組み合わせて、プログラムを構成していくのが良いと思います。

今回使用するサンプルライブラリは、

  • Adafruit DPS310 / dps310-sensortest
  • Grove - LCD RGB Backlight / HelloWorld

の2つです。

取得したライブラリを表示させるときは、

「File」→「Examples」→「Grove - LDC RGB Backlight」→「HelloWorld」

のようにして、目的のファイルを開くことができます。

サンプルのプログラムが表示されるので、必要な箇所をコピペしながら、プログラムを書いていきます。

実際のコードはこのようになります。

#include <Adafruit_DPS310.h>
#include <Wire.h>
#include "rgb_lcd.h"

Adafruit_DPS310 dps;
Adafruit_Sensor *dps_temp = dps.getTemperatureSensor();
Adafruit_Sensor *dps_pressure = dps.getPressureSensor();

rgb_lcd lcd;

const int colorR = 255;
const int colorG = 0;
const int colorB = 0;

void setup() 
{
// set up the LCD's number of columns and rows:
    lcd.begin(16, 2);
 
    lcd.setRGB(colorR, colorG, colorB);

    delay(1000);
   
  Serial.begin(115200);
  while (!Serial) delay(10);
  
  Serial.println("DPS310");
  if (! dps.begin_I2C()) {
    Serial.println("Failed to find DPS");
    while (1) yield();
  }

  // Setup highest precision
  dps.configurePressure(DPS310_64HZ, DPS310_64SAMPLES);
  dps.configureTemperature(DPS310_64HZ, DPS310_64SAMPLES);

  dps_temp->printSensorDetails();
  dps_pressure->printSensorDetails();
}

void loop() {
  sensors_event_t temp_event, pressure_event;
  lcd.setCursor(0, 1);
    
  // Reading pressure also reads temp so don't check pressure
  // before temp!
  if (dps.pressureAvailable()) {
    dps_pressure->getEvent(&pressure_event);

    lcd.clearDisplay();
    lcd.print(pressure_event.pressure);
    lcd.println(" hPa");
    
  }
}

プログラムが書けたら、左上のボタンを押して一度コンパイルして、プログラムが正しく書けていることを確認します。

特にエラーが表示されず、「Done compiling.」が表示されていたら成功です。

手順3:プログラムの読み込み

今書いたプログラムを、ボードに読み込みます。

と、その前に…

ボードとポートの選択が正しいか確認しましょう

これらが正しく選択できていないと、読み込みエラーの原因になります。

「Tools」→「Board」から使用しているボードを選択します。

今回は Arduino Nano Every を使用しているので、「Arduino Nano Every」を選択します。

同様にして、ポートも確認します。

「Tools」→「Port」→「/dev/cd.usbmodem142401(Adafruit Feather M0)」を選択します。


プログラムの読み込み

pcとArduinoを接続した状態で、左上の読み込みボタンを押し、プログラムを読み込みます。

読み込みが進行するので、これで完了です。

動作確認

気圧計が完成しました。

動作を確認してみましょう。

右上のボタンを押して、シリアルポートを表示します。

プログラムに記述したとおり、気圧センサーが認識されていなかったり、気圧の測定が何らかの理由で開始されないときには、シリアルモニターに「Failed to find DPS」と表示されます。問題なく認識されれば、測定が開始され、ディスプレイにリアルタイムで気圧が表示されるはずです。

hPa の後に、なんかゴミみたいなものがくっついていますが、とりあえず放置してます。

そして、結構眩しいです。明るさが調整できないのが難点…

数センチ動かすだけで、気圧が変化するのが確認できると思います。

なかなかの精度ですね。

まとめ

いかがでしたか。

今回は、Arduino Nano Every を使って気圧計を作製してみました。

本記事を参考に、気圧計を自作することができたでしょうか。

この気圧計に、GPSを搭載して、かつSDカードに保存ができるような仕様にしても面白そうです。

ということで、皆様もぜひ、Arduinoで電子工作を楽しんでみてはいかがでしょうか。

新しいアイデアや要求も、工夫を凝らしながら自分の手で実現してみましょう!!

-研究室, 電子工作
-, , ,