LoginSignup
8
3

More than 5 years have passed since last update.

Raspberry pi、ArduinoでDO(溶存酸素)測定をやってみる

Last updated at Posted at 2018-08-06

はじめに

これまで、温度センサー(BME280)、水温センサー(DS18B20)などを、Raspberry piやArduinoなどと繋いでモニタリングしてきましたが、水質測定ができないものかと探しておりました。やはり、あるではないですか、Atlas Scientific https://www.atlas-scientific.com/
しかも、Arduinoのコード付きとはありがたい。早速試してみました。

Arduino Unoとの接続方法

なにはともあれ、まずは接続方法。Arduino Unoとの接続方法は、Atlas Scientificのホームページを参考にしました。使用するのはSDL、SCL、GND、5Vの4つのピンだけ。
KIMG0948.JPG

コード

サンプルコードは、Atlas Scientificから提供されていますが、このような内容になっています。

SoftwareSerial myserial(rx, tx); 

String inputstring = ""; 
String sensorstring = ""; 
boolean input_string_complete = false;
boolean sensor_string_complete = false;
float DO;

void setup() { 
  Serial.begin(9600); 
  myserial.begin(9600);  
  inputstring.reserve(10); 
  sensorstring.reserve(30);  
}


void serialEvent() {   
  inputstring = Serial.readStringUntil(13); 
  input_string_complete = true; 
}


void loop() {  

  if (input_string_complete){ 
    myserial.print(inputstring); 
    myserial.print('\r'); 
    inputstring = ""; 
    input_string_complete = false;
  }

  if (myserial.available() > 0) {
    char inchar = (char)myserial.read();
    sensorstring += inchar;
    if (inchar == '\r') { 
      sensor_string_complete = true; 
    }
  }

  if (sensor_string_complete== true) {
    Serial.println(sensorstring); 
    /*   
    if (isdigit(sensorstring[0])) {
      DO = sensorstring.toFloat(); 
      if (DO >= 6.0) {      
        Serial.println("high"); 
      }
      if (DO <= 5.99) { 
        Serial.println("low");
      }
    }
    */
    sensorstring = "";   
    sensor_string_complete = false;  
  }
}

プログラム実行

さてさて、接続完了し、Arduinoスケッチから上記のプログラムをコンパイル後、ボードへ書き込ます。あとは、シリアルモニタを開くと、DOの値が返ってきます。
キャプチャ.JPG

数字の妥当性

出力されている値が適切かどうか、いちおう押さえておく必要がありますね。わたしは、以下のサイトを参考にしました。これによると水温29℃では7.64mg/Lとなっています。だいたい近い値か・・・これでよしとしよう。
■飽和溶存酸素量
蒸留水、一気圧下における各温度の飽和溶存酸素の表
https://www.rex-rental.jp/knowledge/sui/sui_007.html

Raspberry piとの接続

今度はRaspiとの接続をやってみます。Arduinoとの連携は、わりとすんなりいきましたが、Raspiとはどうでしょう。これが、Atlas ScientificのサイトにはRaspiとの接続方法やサンプルコードが見当たらない・・・。しかたないので、このあたりのサイトを参考にしました。
https://raspberrypi.stackexchange.com/questions/56026/i2c-device-not-detected-by-raspberry-pi
基本的にはArduinoとほぼいっしょのようです。

おわりに

次の課題は、温度センサー(BME280)、水温センサー(DS18B20)などのセンサーと、DO計を同時に繋げる方法にチャレンジしてみます。次の記事に投稿します。

8
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
3