Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

はじめに

これまで、温度センサー(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計を同時に繋げる方法にチャレンジしてみます。次の記事に投稿します。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away