今回の記事は私(息子くん母)の開発記録です。
インコちゃんの体重測定ができるものを作りたいと思った
うちで飼っているセキセイインコの一羽が急に元気がなくなり飛ぶのもよく飛べなくなり一時期通院していました。
入院するか毎日通院するかという選択肢が出ていて、でもだいぶ状態が悪いので入院となって環境も変わると耐えられないかもしれないということで、毎日通院して注射・診察していました。
心配しましたが、通院の甲斐あって今はもうお薬もやめられたほど元気になりました!
で、その通院していた時期なのですが、体重がものすごく減っていました。
でも通院を続けるにつれて少しずつ増えてきたわけですが、鳥の体調は見た目であまりわからないことがあり、痩せてても羽でよくわからないし、通院の間隔が毎日でなくなって良くなった時も家では毎日私が手で捕まえて料理用スケールにのせて測りました。
両手でインコちゃんの顔と体をぐるっと包み込むようにすると目の前が暗くなるからかわりとじっとしておいてくれます。そしてそのままスケールの上に載せて測ります。(通院中お医者さんがやっている方法を真似しました)
手乗りインコとはいえ、手で囲んで捕まえられるのは嫌がります。捕まえてしまえば上記のように大丈夫なのですが、「捕まえられる」と思うと逃げ回ります。弱っている時期は良かったのですが少しづつ元気になってくると捕まえようとするとくちばしで噛んできたりするのでこれがストレスになってもかわいそうだしなぁと思ったのと、私もインコちゃんから嫌われるいっぽうになってきてつらくて、
「そうだ!鳥かごの中に仕込める鳥用の体重計を作ろう!」
と思いました。
↑ 今は元気になったインコのルンちゃん。四白眼で超目つきが悪いところが可愛い!
ロードセルを購入
ネットで調べてロードセル(ひずみゲージ)というものを使うと体重計が作れることがわかりました。要は重量センサーですね。
M5Stackと組み合わせて製作しようと思いました。
そして行き着いた電子パーツがこちら。
「デジタルロードセル 電子スケール ロードセル計量センサ 重量センサ5KG + HX711 24BIT精密ADモジュール A r d u i n o」
こちらは5kgまで測れるタイプです。丸いアクリル板までついているのでこのまま使えて便利そうです!
HX711 ADモジュールというものが使われています。
「ロードセル Arduino HX711」とかで検索すると情報があったので複数のサイトを参考にしました。
↓ 以下サイトはまったく同じAmazonの製品で参考になりました!ありがとうございました。
ロードセルを使ってみる
https://reerishun.com/makerblog/?p=649
試行錯誤
M5StickCにつないで作ってみた
届いたのは実は5月でした。
M5StickCに制御させる形で実装しました。
インコちゃんの体重計作り。
— とり子 (@siroitori0413) 2021年5月16日
キャリブレーションというか調整がどうにもうまくいかんなぁ〜と頑張り中。
いろいろ調べながら実装するの楽しいな。#M5Stack pic.twitter.com/o9u871Lvhn
最初は楽しく試行錯誤していたのですが・・・
けっこう格闘しましたがどうしてもうまくいかない!
自分で補正(後述するset_sclae)をしないといけないんですが、これがなぜだかこっちに合わせるとあっちに合わないという具合で。
そのときのメモでは、96グラムのサランラップに合わせて補正したとき、
左:実際の重さ、 右:自作したはかりで測った値
・サランラップ 96グラム 96グラム
・圧力なべのおもり 102グラム 109グラム
・トランプ 86グラム 86グラム
・TVリモコン 108グラム 90グラム
・コップ 31グラム 43グラム
・スマホ 196グラム 10グラム
全部重くなるわけでも軽くなるわけでもなく。
スマホに至っては誤差とは到底呼べないレベル!!なぜ!!
Amazonのレビューでは結構簡単に実装できるみたいなコメントがあったのでちょっと自信をなくしかけました^^;;
そのうち、別の用事で忙しくしたりいろいろしていたのでずっと放置する形になってしまいました。
寝かせた後、うまくいった!と思いきや?
そして2か月後・・
キャリブレーションがどうしてもうまくいかなくてちょっと置いとくつもりがだいぶ寝かせて熟成させてしまったロードセル。
— とり子 (@siroitori0413) 2021年7月2日
久しぶりにキャリブレーションやり直してみるとちゃんと重さ測れるようになった!
あんなにうまくいかなかったのなんだったんだろ…!?でも嬉しい! pic.twitter.com/z4PuVmTvO2
そうなんです、うまくできました。
今回は86グラムのトランプを基準に補正しました。
scale.set_scale(237.f); ← 237.fで確定!
上の記録を見ると前回も86グラムのトランプは正しく測れていますが、set_scaleにセットした値は全然違う感じでした。
私よくわかっていないのですが、そういうこともあるのかしら・・?うーん。
なんてここまで書いて今回のブログは終わりにしようと思ってたのですが。
再起動後、また測定値が変な値を示すようになってしまっていました。
どうやらマイコン側(M5StickC)が原因のようでした
と思ったのも束の間、電源を入れなおすとまた値が荒ぶりはじめ測定値が滅茶苦茶に。
— とり子 (@siroitori0413) 2021年7月3日
結局M5StickCをやめてM5Stack Basicに変更。時間をおいても電源入れなおしてももうおかしくならないようになりました。
うーん相性が悪かったのか私のM5StickCが壊れかけだったのか。でももう多分これで大丈夫! pic.twitter.com/mPqCABNcPX
相性とか・・?もしかすると故障とかかもしれません。
とにかくM5StickCからM5Stack Basicに変更すると何の問題もなくなりました。
補正値はM5Stack Basicを使用した私の環境では以下で安定しました。
scale.set_scale(475.f);
作り方や使用ライブラリなど
技術情報については以下の記事にまとめました。
qiita.com
これから
いい具合にプログラム調整して、インコちゃんのかごのなかに仕込んで、上に乗ったら測定するように作りたいなと思っています。体重をスマホに通知とかにするかな。
うまくできるといいな!!
まぁそうこうしているうちにインコちゃんは元気になってるんですけどね^^;;
でも、今後体重減少がすぐわかったら健康管理にとても役立つのでがんばって作らねば。
↑ ぬいぐるみによるイメージ画像