カワリモノ息子の技術メモ的な~

カワリモノ息子とその母の技術メモ的な〜

学校が苦手な息子くんの作品とその母の作品、はたまた日常などいろいろを在宅エンジニア母が綴る

M5Stackとロードセルではかり(スケール)を作る ~インコちゃんの体重計が作りたい~

 今回の記事は私(息子くん母)の開発記録です。

インコちゃんの体重測定ができるものを作りたいと思った

 うちで飼っているセキセイインコの一羽が急に元気がなくなり飛ぶのもよく飛べなくなり一時期通院していました。
 入院するか毎日通院するかという選択肢が出ていて、でもだいぶ状態が悪いので入院となって環境も変わると耐えられないかもしれないということで、毎日通院して注射・診察していました。

 心配しましたが、通院の甲斐あって今はもうお薬もやめられたほど元気になりました!

 で、その通院していた時期なのですが、体重がものすごく減っていました。
 でも通院を続けるにつれて少しずつ増えてきたわけですが、鳥の体調は見た目であまりわからないことがあり、痩せてても羽でよくわからないし、通院の間隔が毎日でなくなって良くなった時も家では毎日私が手で捕まえて料理用スケールにのせて測りました。
 両手でインコちゃんの顔と体をぐるっと包み込むようにすると目の前が暗くなるからかわりとじっとしておいてくれます。そしてそのままスケールの上に載せて測ります。(通院中お医者さんがやっている方法を真似しました)

 手乗りインコとはいえ、手で囲んで捕まえられるのは嫌がります。捕まえてしまえば上記のように大丈夫なのですが、「捕まえられる」と思うと逃げ回ります。弱っている時期は良かったのですが少しづつ元気になってくると捕まえようとするとくちばしで噛んできたりするのでこれがストレスになってもかわいそうだしなぁと思ったのと、私もインコちゃんから嫌われるいっぽうになってきてつらくて、
 「そうだ!鳥かごの中に仕込める鳥用の体重計を作ろう!」
 と思いました。

 
 ↑ 今は元気になったインコのルンちゃん。四白眼で超目つきが悪いところが可愛い!

ロードセルを購入

 ネットで調べてロードセル(ひずみゲージ)というものを使うと体重計が作れることがわかりました。要は重量センサーですね。
 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に制御させる形で実装しました。
 

 最初は楽しく試行錯誤していたのですが・・・
 けっこう格闘しましたがどうしてもうまくいかない!

 自分で補正(後述するset_sclae)をしないといけないんですが、これがなぜだかこっちに合わせるとあっちに合わないという具合で。
 
 そのときのメモでは、96グラムのサランラップに合わせて補正したとき、
      左:実際の重さ、 右:自作したはかりで測った値
 ・サランラップ    96グラム    96グラム
 ・圧力なべのおもり 102グラム   109グラム
 ・トランプ      86グラム    86グラム
 ・TVリモコン    108グラム    90グラム
 ・コップ       31グラム    43グラム
 ・スマホ      196グラム    10グラム

 全部重くなるわけでも軽くなるわけでもなく。
 スマホに至っては誤差とは到底呼べないレベル!!なぜ!!

 Amazonのレビューでは結構簡単に実装できるみたいなコメントがあったのでちょっと自信をなくしかけました^^;;

 そのうち、別の用事で忙しくしたりいろいろしていたのでずっと放置する形になってしまいました。

寝かせた後、うまくいった!と思いきや?

 そして2か月後・・
 


 そうなんです、うまくできました。
 今回は86グラムのトランプを基準に補正しました。
 scale.set_scale(237.f); ← 237.fで確定!
 
 上の記録を見ると前回も86グラムのトランプは正しく測れていますが、set_scaleにセットした値は全然違う感じでした。
 私よくわかっていないのですが、そういうこともあるのかしら・・?うーん。

 なんてここまで書いて今回のブログは終わりにしようと思ってたのですが。
 再起動後、また測定値が変な値を示すようになってしまっていました。

どうやらマイコン側(M5StickC)が原因のようでした

 相性とか・・?もしかすると故障とかかもしれません。
 とにかくM5StickCからM5Stack Basicに変更すると何の問題もなくなりました。
 
 補正値はM5Stack Basicを使用した私の環境では以下で安定しました。
 scale.set_scale(475.f);

作り方や使用ライブラリなど

 技術情報については以下の記事にまとめました。
 qiita.com

これから

 いい具合にプログラム調整して、インコちゃんのかごのなかに仕込んで、上に乗ったら測定するように作りたいなと思っています。体重をスマホに通知とかにするかな。
 うまくできるといいな!!

 まぁそうこうしているうちにインコちゃんは元気になってるんですけどね^^;;
 でも、今後体重減少がすぐわかったら健康管理にとても役立つのでがんばって作らねば。

 
 ↑ ぬいぐるみによるイメージ画像