昨日は、水質検査を行った後、ミナミヌマエビを水槽に入れました。

 

10匹入りを買ってビニール袋を水槽に1時間ほど浮かべて水温を合わせてから、

バケツに移したところ、9匹しかいませんでした…。

その後、水槽の水を徐々に入れていき水合わせをしました。

 

ミナミヌマエビをバケツから水槽に移す際は、すくう網を持っていなかったので、

バケツの水が水槽に入らないようにしながらコップで移しました。

 

ただ、うち1匹だけ、ストレスがかかってしまったようで、

水槽に入れた瞬間から弱ってしまい、残念ながら亡くなってしまいました。

(下の写真の中央手前にいる少し赤めのミナミヌマエビ)

 

他のエビは長生きしてほしいものです。

 

 

 

昨日、「テトラ テスト 6 in 1 試験紙」を買って水質検査を行いました。

まあ正常値なのかなと思います。

 

記号 検査項目 内容(テトラのページより) 測定範囲

測定結果(目安)

pH ペーハー 魚の種類によって適正なpH値が
異なります。
6.4~8.4 7.4
KH 炭酸塩硬度 炭酸水素イオンの量に対応して
変化し、水のpHに関与します。
0~20°dH 8°dH
GH 総硬度 総硬度は水中のカルシウム塩と
マグネシウム塩の量で変化します。
3~16°dH <4°dH
NO2 亜硝酸塩 亜硝酸塩濃度が高いと
魚が中毒死します。
0~10mg/L 0mg/L
NO3 硝酸塩 硝酸塩量が多いとコケが
発生しやすくなります。
0~250mg/L 10mg/L
Cl2 塩素 塩素は微量でも魚や
ろ過バクテリアに有害です。
0~3mg/L 0mg/L

 

 

 

 

水槽の温度などを測定するモニターを作ろうと思い、

先週末に秋月電子でキットを買い集めました。

 

品名 メーカ 品番
ESP-WROOM-02開発ボード 秋月電子 [K-12236] AE-ESP-WROOM02-DEV
Grove RGBバックライト液晶モジュール Seeed [P-09283] 104030001
Grove シリアルカメラキット Seeed [M-09161] 101020000
Grove用 4Pコネクタ L型(オス)(10個入) Seeed [C-12634] 110990037
SHT31使用 高精度温湿度センサ
モジュールキット
秋月電子 [K-12125] AE-SHT31
サーミスタ 10kΩ(平行線タイプ) SEMITEC [P-07257] 103AT-11
小型 金属皮膜抵抗1/4W 10kΩ
(100本入)
Faithful Link [R-08550] MFS25F10KRB
TB6612使用 Dual DCモーター
ドライブキット
秋月電子 [K-11219] AE-TB6612
ブレッドボード EIC-801 E-CALL [P-00315] 165-40-4-8010
ブレッドボード・ジャンパーワイヤ
(オス-オス) セット 各種合計60本以上
Cixi Wanjie [C-05159] BBJ-65
ロータリーエンコーダDIP化基板
RECNV-2 x2
秋月電子 [P-07240] AE-RECNV-2
USBケーブル Aオス-マイクロBオス
1.5m A-microB
Xiamen Ume [C-07607] USBcable A-microB

 

あと、Groveの2mmピッチコネクタをブレッドボードに接続するために

Grove 4ピン-ジャンパメスケーブルも欲しかったのですが、

残念なことに秋月電子には売っていませんでした。

ただ幸いにも、ロータリーエンコーダDIP化基板が2mm-2.54mm変換

基板として使えました。

 

別に秋月電子にこだわりはないのですが、

買い物は一つの店で済ませたいタイプなのです。

 

それで、まずは温湿度センサの値をLCDに表示するプログラムを作成しました。

 

初めてESP-WROOM-02開発ボードを使うので、

一から自分なりの手順書をまとめようかとも思いましたが、

秋月電子のページにあった説明書で十分でした。

 

 

上の動画は一昨日に撮ったのですが、

その後、もう少しブラッシュアップしたのが、下のソースコードです。

(そのため動作や表示は少し異なります)

 

// MySketch for ESP-WROOM-02
//
// [Hardware]
// ESP-WROOM-02 Development Board
//   K-12236, AE-ESP-WROOM02-DEV
//   http://akizukidenshi.com/catalog/g/gK-12236/
//
// [Arduino IDE]
//   https://www.arduino.cc/en/Main/Software
//
// [Additional Board Manager URLs]
//   http://arduino.esp8266.com/stable/package_esp8266com_index.json
//
// [Board]
// Generic ESP8266 Module
//   http://arduino-esp8266.readthedocs.io/en/2.4.0/
//
// [Library]
// Seeed Grove LCD RGB Backlight
//   rgb_lcd.h - Grove_LCD_RGB_Backlight-master.zip
//   https://github.com/Seeed-Studio/Grove_LCD_RGB_Backlight
// Sensirion SHT31-DIS Humidity and Temperature Sensor
//   AE_SHT31.h - AE-SHT31.zip
//   http://akizukidenshi.com/catalog/g/gK-12125/
//
// [Pin Configuration]
//   IO4: I2C_SDA
//   IO5: I2C_SCL

#include <arduino.h>
#include <wire.h>
#include <rgb_lcd.h>
#include <ae_sht31.h>

rgb_lcd lcd;
AE_SHT31 SHT31 = AE_SHT31(0x45);

void setup() {
  // put your setup code here, to run once:
  pinMode(16, OUTPUT);

  Serial.begin(115200);
  Serial.println("");
  Serial.println("MySketch");

  lcd.begin(16, 2);

  SHT31.SoftReset();
  SHT31.Heater(0);

  delay(1000);
}

void loop() {
  // put your main code here, to run repeatedly:

  // Get Temperature and Humidity
  digitalWrite(16, HIGH);
  SHT31.GetTempHum();
  digitalWrite(16, LOW);

  Serial.print("Temperature: ");
  Serial.print(SHT31.Temperature());
  Serial.print(" ('C), ");
  Serial.print("Humidity: ");
  Serial.print(SHT31.Humidity());
  Serial.println(" (%)");

  lcd.setCursor(0, 0);
  lcd.print(SHT31.Temperature());
  lcd.setCursor(5, 0);
  lcd.print("'C ");
  lcd.setCursor(8, 0);
  lcd.print(SHT31.Humidity());
  lcd.setCursor(13, 0);
  lcd.print(" %");

  int h = ((millis() / 1000) % 60) * 6, r, g, b;
  hsv2rgb(h, 255, 255, &r, &g, &b);
  lcd.setRGB(r, g, b);

  delay(400);
}

void hsv2rgb(int h, int s, int v, int *pr, int *pg, int *pb) {
  int r = ( h        % 360) * 256 * 6 / 360 - 256 * 3;
  int g = ((h + 240) % 360) * 256 * 6 / 360 - 256 * 3;
  int b = ((h + 120) % 360) * 256 * 6 / 360 - 256 * 3;
  r = abs(r) - 256; r = constrain(r, 0, 255); *pr = r;
  g = abs(g) - 256; g = constrain(g, 0, 255); *pg = g;
  b = abs(b) - 256; b = constrain(b, 0, 255); *pb = b;
}

 

水草の根が徐々に伸びてきて、もうそろそろ大磯砂の中に潜っていきそう。

少しずつではあるけれど植物の成長に感動します。

 

水草の名前は、店で確認せずに買ってしまったので、正確には分からない。

下の写真はたぶんホトニア。

 

下の写真の手前はロタラインディカ?

その右奥はたぶんカーナミン。

あと、今朝は餌を入れすぎてしまったかな?

 

 

…夕方。

 

水槽の上から写真を撮ろうと上の棚を外そうとしたら、

磁石で棚に引っ付けてあったLEDライトが外れて水中に落ちてしまった。

 

すぐティッシュで拭いてLEDライトは事なきを得ましたが、

ホトニアと流木が少し浮いてしまったので、これを機にレイアウトを少し変更。

 

ホトニアのログポットを引き上げると、ログポットの下の穴から

根が何本も数cm伸びていて、大磯砂の中に縦横に這っていて驚きました。

今朝の感動は何だったのか…。

 

ホトニアは手前にあって目立ち過ぎていたので、少し奥に移動。

多少いい感じになったと思います。

 

写真は上からと横からと。

 

 

水槽の水が減ってきたので、昨日は水を1リットルほど入れました。

バケツに水道水を2リットル入れてから、「すごいんです めだか水」を

キャップの6分の1ほど入れてかき混ぜて、プロホースで水槽に投入。

 

写真は今朝撮ったものです。

 

 

動画も撮りました。

黒色の薄かった方のめだかが、ますます薄くなったような気がします。

 

 

今日は、何故だかめだかが頻繁に底砂をつついている。

昨日まではそんなことなかったのに。

 

 

デジカメで撮った写真をブログにアップするために

画像をリサイズするPowerShellスクリプトを作成した。

せっかくなので、日付のウォーターマークも入れてみた。

 

使い方

・下のコードをファイル名「Convert-Image.ps1」で保存する。

・エクスプローラのアドレスに「shell:sendto」を入力して移動し、

    そこにショートカットを作成する。

    名前は「Convert-Image」

    リンク先は「%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe -f "~\Convert-Image.ps1"」 (~にはフルパス名を指定する)

・エクスプローラで変換したい画像ファイル(複数可)を選択し、

    右クリック→「送る」→「Convert-Image」をクリックすると、

    変換された画像ファイル(*.resize.jpg)が作成される。

 

動作は無保証です。

 

# Convert-Image

Write-Host "* Convert-Image"
Add-Type -AssemblyName System.Drawing

$args |
Where-Object { Test-Path $_ } |
ForEach-Object {
    Write-Host "File: $_"

    # Original Image
    $file = $_
    $image = New-Object System.Drawing.Bitmap($file)
    $time = (Get-ItemProperty $file).LastWriteTime

    $size = New-Object System.Drawing.Size(1920, 1920)
    if ($image.Width -gt $image.Height) {
        $size.Height = [int]($image.Height * $size.Width / $image.Width)
    } else {
        $size.Width = [int]($image.Width * $size.Height / $image.Height)
    }
    Write-Host "Size: $($image.Size.ToString()) -> $($size.ToString())"

    # Convert Image
    $image2 = New-Object System.Drawing.Bitmap($size.Width, $size.Height)
    $graph = [System.Drawing.Graphics]::FromImage($image2)
    $graph.DrawImage($image, 0, 0, $size.Width, $size.Height)
    $image.Dispose()

    $text = $time.ToString("yyyy/MM/dd(ddd)", (New-Object System.Globalization.CultureInfo("en-US")))
    $font = New-Object System.Drawing.Font("Courier New", 36, [System.Drawing.FontStyle]::Bold)
    $brush = New-Object System.Drawing.SolidBrush([System.Drawing.Color]::FromArgb(0x40FFFFFF))
    $size = $graph.MeasureString($text, $font, 1920, $null)
    $size.Width = $image2.Width - 16 - $size.Width
    $size.Height = $image2.Height - 16 - $size.Height
    $graph.DrawString($text, $font, $brush, $size.Width, $size.Height)
    $graph.Dispose()

    $file = [System.IO.Path]::ChangeExtension($file, ".resize.jpg")
    $image2.Save($file, [System.Drawing.Imaging.ImageFormat]::Jpeg)
    $image2.Dispose()
    Set-ItemProperty $file -Name LastWriteTime -Value $time
}

Read-Host "Enter Any Key"
exit

昨晩に活性炭を水槽に入れてから11時間ほど経った今朝、

茶色の水がだいぶ薄くなってきました。

 

 

今日は、ダサかった結露吸水テープを外しました。

プロホースで水槽の水を3分の2ほどバケツに移してから、

白いクッション部分を剥がすとガラスに粘着テープがべったり…。

 

ガラスの外側からヘアドライヤーで温めて、

アルコールウェットティッシュでこすった後、

最後に養生テープを貼って剥がして貼って剥がしてすると、

粘着テープがきれいに取れました。

 

あと、底に敷いていた黄緑色のPVA吸水クロスも外しました。

水がこぼれたときの保険にと思って敷きましたが、

乾燥時はカチカチに硬くなっていて、

水が触れても瞬時に吸水し始めないので無意味でした。

 

最後にバケツの水を水槽に戻して作業は完了。

 

 

めだかはスーパーブラックメダカを2匹買ったのですが、

1匹は濃いめで、もう1匹は薄め。

 

濃い方は薄い方をよく追いかけている。個体数が少ないと、

本来持っている縄張り意識が高くなって追い払おうとするらしい。

水が安定したらもう少しめだかを増やそうかな。

 

今日は色々観察して、気になったことをインターネットで調べた。

・餌をあげた → 薄い方は食いつきがよく、すぐ食べ終える。

    餌は1日1回がいいとのことで、もう少し餌をあげたくなって

    しまうがそこは我慢しました。

    濃い方は食いつきがいまいちで、餌を食べてもすぐ吐き出してしまう。

・白い糞をした → 消化不良とのこと。水が安定するまで様子見かな。

・水面に口パク → 酸素不足?

    フィルターのシャワーパイプをやや下向きに変えて気泡が出るように

    したら、めだかが急に水中の気泡に寄ってきた。

    ただ、水流に飲まれて溺れそうになったので向きを少し戻した。

・水槽にぶつかる → トロ舟で育っためだかでまだ透明な壁に慣れて

    いないのか、ガラスについた苔を食べようとしているのか、

    どちらだろう?

    まだ見た目には苔は生えていないが、他にも雲山石や流木も

    つつくので、どちらが理由かよく分からない。

・夜は水面近くで静止 → これがメダカの睡眠とのこと。

 

水の茶色が濃くなってきたので、キョーリンひかりの

「ブラックホール ミニ 小型水槽用」を買い、1袋を投入した。

その直後が下の写真。

 

 

めだかの縄張り争いを撮ってみた。めだかが黒いので目立たない…。

あと、撮影用にデジカメの三脚が欲しくなってきた。

 

 

LEDライトバーには調光コントローラーを接続しているので手動で輝度を調整できる。

最低輝度まで落とすとめだかの動きが緩やかになり、

その後、照明をOFFして寝た。

 

 

水槽は先週届いたので、

・フィルターを水槽にセット

・大磯砂をバケツで数回洗ってから水槽の底に敷く

・バケツに水道水とめだか水を入れて混ぜてから水槽に投入

・雲山石と水草を配置

を行いました。

 

それが下の写真。

水の飛び跳ね防止のため、水槽の上部に結露吸水テープを貼ったのですが、

思いのほかダサかったので追々外そうと思います。

 

 

大磯砂は、最初1袋目の2.4kgを投入したものの、

水槽の奥側に向かって傾斜をつけるには不足気味でしたので、

追加で2袋目のうち0.6kgも投入して合計3.0kgを使用しました。

 

天然流木は、バケツで洗っていたときにすぐ浮いてきてしまったので、

ジップロック袋に水と一緒に入れて電子レンジで気泡が出るまでの

加熱と冷却を繰り返したり、バケツの水に2晩漬けたりしましたが、

結局完全に沈むようにはならなかったので、

流木の裏側をくり抜いてその穴に大磯砂を入れて沈めるようにしました。

 

その後、数日経ち、いよいよメダカを買おうと思い店を回りましたが、

欲しかった普通の黒メダカが売ってない…。

代わりにスーパーブラックメダカが売っていたので2匹買いました。

で、水合わせ中の状態が下の写真。水温は約15℃。

 

 

途中出かけていたので1時間半程度経った後に袋を開けて、

中の水を半分くらい捨ててから水槽の水コップ1杯を袋に投入。

約30分後にもう1杯、更に30分後にもう1杯投入して待ちました。

その後、メダカを水槽に入れました。

 

それが下の写真。

メダカは激しく動き回って水槽の壁にぶつかったりしていましたが、

しばらくしたら少し落ち着きました。

また、流木のせいで水がやや茶色くなってきました。

 

 

翌日が下の写真。

水が更に茶色くなってきました。

もう少し色温度の高い照明にしておけばよかったかな?

 

 

最後に下の写真が全景となります。

書棚はコクヨのホームシェルフ(廃盤)でして、棚板の裏側がしっかり補強されて

いるため、たわみがほとんどありません。

棚板の上に体重計を置いて、手で10kgf以上の荷重をかけても問題ありません。