HX711のライブラリについて
Arduinoでロードセルを使って重さを測ろうとすると、A/DコンバータのHX711がよく使われます。これのライブラリを日本語で解説しているところがなかったので、ちょっと自分用にまとめてみようかと思います。
英語が読める人はgithubのこちらを読めば、すぐ分かるかと。
github.com(ちなみにHX711のArduinoのライブラリは複数あります…)
センサーの類にもれず、ロードセルはゼロ点補正と校正値(入力値の傾き)が必要となります。
・ ざっとした使い方
ゼロ点補正(風袋リセット)した後、校正値を調べるため既知の重さを置いて調整する。
1.set_scale() //パラメータ無しで
2.tare() //パラメータ無しで(これでゼロセット)
3.get_units(10) //既知の重さを置いて10回平均値を得る。
4.上記の平均値を既知の重量で割ってset_scale()する。
・使い方
「HX711_basic_example/HX711_basic_example.ino」のざっくりとした説明。
まず、HX711のメソッドを定義。
HX711 scale; //"scale"は何でもいい。可読性のある名前で。
setup中で以下を指定。
scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN); //PIN番号をbeginで定義
あとは
long reading = scale.read(); //値を変数に代入
で値が取れます。
・他のメソッドについて
「HX711 scale;」とした上で、下記
> scale.read()
ADCの生値を読み込み。
> scale.read_average(20)
ADCの生値を20回平均した値。(20は任意)(回数の仕様はbyte(8ビット)、delayは0ms )
> scale.tare();
上記「ざっとした使い方」に記載のゼロセットコマンド
> scale.set_scale(2280.f);
既知の重さをADCの値で割った数字を入れる。(「2280」の値がそれ)
#floatなのでfが付いている
例えば、ロードセル上に「100g」という既知の重さを置いて、get_units(10)でADC値を取得して、100(g)で割ったあと、その値を上記のset_scaleに入力すると、以下のget_units()で出てくる値が「g単位」になります。
> scale.get_value(5)
0セットを反映したADCの値を5回平均した値。(回数の仕様については上記)
> scale.get_units(5)
既知の重さで補正した単位で5回平均した値。(回数の仕様については上記)
> scale.get_scale()
上記の現在の設定値を取得する。
> scale.power_down()
> scale.power_up()
A/DのスリープモードON/OFFについて。電池駆動の場合など。
(PD_SCKピンがLowからHighに変化し、Highの状態が60μs以上続くと、HX711はパワーダウンモードに移行します。)
set_gain()などもありますが、ここでは突っ込みません。
・retryとtimeoutサンプルについて
上記githubのsampleにあるソースですが、違いは大変少なく、basic_exampleのloop()内において
> if (scale.is_ready()) {
とscaleを呼ぶ箇所が、retryは
> if (scale.wait_ready_retry(10)) {
と10回リトライして秤を探しています。
また、timeoutは
> if (scale.wait_ready_timeout(1000)) {
と1000ms待ってtimeout判定しています。
サンプルの違いはここだけです。
SENSEを使ってみるシリーズ・1
kickstarterで面白そうなガジェットを買いました。
https://www.kickstarter.com/projects/nexuselectronics/sense-an-open-source-environment-monitor
小さなI2C接続のボードにセンサー
・BME688(4種空気質センサモジュール(ガス/温度/気圧/湿度))
・APDS9960(ジェスチャー認識ができる光センサ)
・SPK0641HT4H(マイクロフォン)
が乗っており、そしてそのセンサー値を保存するためのRTC(PCF8523)とMicroSDホルダーが付いてます。
これを使ってみようというシリーズです。
次回は、まずは火入れして値が取れていることを確認してみようかと思います。インターフェイス機器はArduinoやRasPiがありますが、とりあえず、お手軽なところでESP32とつなげてみます。
(まぁ、上記のkickstarterサイトとgithubを読めば分かるのですが)
注意事項
・BME688
バーンイン時間(最短20分)が必要で、初回測定後、読み取データの安定まで2分かかる場合あり
筋肉硬度計の自作(Maker Faire Tokyo 2022出展内容)
目的
身体の疲労や肩こりなど、筋肉の様子を体調管理のために知りたかったのですが、簡便な測定器が身近になかったため、作りました。体重計や血圧計、体温計の様に日常的に使えるものが目標です。
方法
筋肉の様子を知る方法として血中の乳酸濃度や筋電による筋肉活動量の測定などがあります。
しかし、日頃の肉体疲労など、運動後の日常で測定したい場合は上記の方法では行うことは出来ません。
そこで、一般的に「筋肉が硬い」「柔らかい筋肉」などの、経験則による筋肉の硬さを疲労度として採用することとしました。
筋肉の硬さを測定する機器として、類似の製品として、市販されている機械式の物として、下記の製品があります。
こちらは整体院などに向けた、プロ仕様となっており家庭用機器としては難があります。
…そもそも高いし。
作ったもの
圧力センサーとバネ+変位センサー(スライド抵抗)で筋肉の弾性を測定しようとしました。
先端の形状や長さを変えられるように中の入れ子はジョイント方式です。
バネの描画がないので中空ですが、バネが中に入り、下部のセンサーを押す台座でセンサー面を押します。
バネの選定は悩みましたが、7kgf程度のバネにしました(結果としてちょっと強すぎた)
結果
測定結果はでました。ですが、ここから数値情報に変換する必要があります。そこは未達です。
MFT2022で展示していたのは横軸がストローク、縦軸が圧力センサー値となります。
注意点として、今回使った圧力センサーは出力が対数的に出ます。しかも圧が加わると抵抗値が下がります。
電子秤などを使って校正して、実重と合わせてグラフ化したほうが分かりやすいかと思います。
つぎにやること
上記にあるように、圧力センサー値の校正及び、硬質と軟質の差が分かりやすくなるバネの選定、そして最終的に圧力及び変位からの相互差が分かりやすくなるための数値化(単位の定義及び命名!!)が残っています。
圧力センサー
感度について、現地では「あと一桁精度が欲しい」と言ってましたが、下記のバネ強さの見直しと、滑りを良くしたら十分かもしれません。今後の課題です。
バネ強さ
これはデータを取り出して気がついたのですが、バネが強すぎました。筋肉がだいぶ潰れてからバネがやっと縮むぐらいなので、詳しいデータが取れません。
現在使っているバネは7kgfのもの(自由長さ38mm、ストローク24mm)これの半分以下で良いかと思います。
滑りについて
3Dプリンタ同士のシリンダ構造で、そこそこの隙間で作れてしまったため、気がつくのが遅れましたが、壁とスライダの引っかかりノイズがデータにバッチリ入ってしまいます。これは良くないですので、磨くかグリスをつかうか、もう少しなんとかしたいところです。
人体以外への応用
あと、現地で意見を頂いたのですが、食肉の硬さを調べる機材として使えるかも…とのこと。
調理前、調理後、どちらでも面白く使えそうです。これも今後の課題にしたいです。
「LED光源水耕栽培システム」
さて、数年間という間があいてしまいましたが、MakerFaireTokyoで展示していた水耕栽培について軽くまとめました。
LEDで野菜を作ろうとしたきっかけ
以前、ベランダで家庭菜園を始めたのですが、かなり悲しい感じに失敗しました。家庭菜園、それもプランターで作るならば、基本放置でもそこそこのものが栽培できるはずです。ですが、失敗しました。毎日ベランダに出てチェックするマメさがありませんでした。
また、ベランダの環境も良くなかったです。排ガスと室外機とガス給湯器の温風が当たる状況では植物は順調に育ちません。
それならば、デスク横やリビングに置いておけば毎日チェックできるし、環境的にも安定してよいのでは?と思ったのですが、屋内のため十分な光源がありません。観葉植物ならばなんとかなるのかもしませんが、葉野菜などの太陽光が大量に必要な野菜は厳しそうです。
そこで、野菜工場など、屋内で栽培されている野菜についてその条件を少し調べてみました。さらに、屋内で栽培するならば、土耕で管理するのも大変なので、水耕栽培で出来ないだろうかと調べる範囲を広げてみると、意外な野菜まで水耕栽培で栽培されているのが分かりました。
野菜工場とは
温度と湿度、二酸化炭素量などを制御し、安定的に野菜を栽培する工場です。無農薬やスケジュール通りに生産・出荷ができるので、大手飲食チェーンで採用される事が多いようです。ですが、やはりコストが自然環境に比べて高いため、一般には広く流通しにくく、店頭で買えるのはキノコ類や、もやし、カイワレ等のみです。(特にキノコ類は工場生産比率が高いようです。)
今回作るもの
というわけで、家庭菜園の失敗を糧に屋内家庭菜園を作ってみたいと思います。
- LED光源
- 水耕栽培
- 最適化条件の模索
光源を調べよう
さて、家庭菜園ならばコストを気にせず作れるため、野菜にとっての最適解を探してみる事としました。光とスペクトルについてですが、太陽光のスペクトルと葉緑素の吸収スペクトルは違います。
第2章 豊かなくらしに寄与する光 2 光と植物-植物工場:文部科学省
また、水耕栽培や野菜工場について、先行文献を調べてみました。論文を検索し、斜め読みしながら使えそうなものを探してみると、下記のいくつかが使えそうです。
人工光型植物工場における赤青LEDと蛍光灯使用時の植物成長および消費電力の評価
LEDの選定
上記の資料から、必要なスペクトルが450nm近辺と660nm近辺ということが大体わかりました。そしてこのLEDを探してみると、意外と少ないです。例えば市販の赤色LEDを普通に検索すると620~640nmがヒットします。今回はコストを気にせず最適解をとりあえず作ってみる方針なので、こつこつと波長が合うLEDを探しました。そして下記の二種類で製作してみることにしました。
・3W POWER LED (青色LED) 445nm~450nm 50~60lm
www.sengoku.co.jp
・OSR7CA5111A (赤色LED) 660nm
akizukidenshi.comまた、赤色と青色の比率は10:1~5:1が最適のようなので、lmでLEDの個数を合わせてみました。
作ってみた
さっそく上記のLEDを用意して一枚板に並べ、POWER LEDは中央に配置して作ってみました。
POWER LEDのドライバはCL6807を使いました。ゆくゆくはPWM制御で光量を調整し、成長度合いを最適化したいためです。
ロガーを準備
さて、作っただけでは面白くないので、育成状況と環境状態を記録し、最適な育成条件を調べるための基礎データ収集を始めようと思います。
植物だったらCO2センサーも必須でしょう。上記の論文にも記載がありましたし。また、温度・湿度も同時に取りたいため、下記センサーを選定しました。
・CO2センサー
MH-Z19
・温湿度センサー
BME280
そして、これらのセンサーをRaspberryPiでコントロールし、測定データをクラウドにアップロード&グラフ化を行うようにしました。
センサーのコントロール&アップロードについては下記サイトが参考になるため、ここでは接続など詳しくは記載しません。
参考:
arms22.blog91.fc2.comクラウドについてはこちらを利用しました。グラフ化の他、CSV形式でダウンロードも可能となります。
thingspeak.com実際のデータはこちら
作った野菜
購入すると高額で、なかなか手に入らないものとして空芯菜を選定しました。各種ハーブ類でもよかったのですが、量が取れて嬉しいものとして葉物野菜としました。たまたま空芯菜を育てましたが、この品種は水耕栽培に適した水辺の植物で元気よく成長しました。また、複数回収穫できる野菜であり、長期に渡る水耕栽培試行に適していました。
同じシステムを用い、翌年には山葵の水耕栽培にチャレンジしましたが、水温コントロールシステムの用意が間に合わず、枯らしてしまいました。
おわりに
取りあえず動くだけは動きましたが、最適化はまだまだです。育成条件の可視化もできていません。可視化できれば、「スペクトルがずれたLEDでも栽培できるのか」や「光量が足りているか」また「400μs周期(デューティー比1:2)で照射は十分という説」の検証もできます。(光合成は電気反応ではなく化学反応のため、400μs周期の点滅で十分だという説)
また、気温・水温コントロールを追加し、山葵の水耕栽培にリベンジしたいです。
Maker Faire Tokyo 2019に行ってきたよ(速報)
だいぶ放置していたblogですが、各方面から「進捗はどこで見れますか?」と聞かれまくったので、慌てて更新開始。
ははは、LED系の電源は12Vで設計してたんだった。センサー系の5Vばかりいじってたから忘れてたw これで光まくりだ。 pic.twitter.com/43O7J32Jt0
— Murakami (@jmz) August 3, 2019
更新の予定
今週中:MFT2019の発表資料の貼り付け。
来週以降:詳細を説明しつつ、1から進める感じで。
あとは、ワサビの育成状況を実況して進めます。
とりあえずは、コミケのコピー本の原稿を進めさせてくださいorz..
Ogaki Mini Maker Faire 2016 に行ってきたよ
下記にある「酵母の仕事具合監視装置」の展示のために大垣に行ってきました。
酵母の仕事具合監視装置 - jmz's blog
展示内容は記事を読んでもらうとして、ここでは自分が見てきた面白いものをレポートしたいと思います。
ニコニコ猟友会
野尻先生の狩猟の話が聞けました。ハンターマップも面白かったです。鹿の頭蓋骨の精密さも驚きましたし、元気に発酵を続けているどぶr…甘酒も興味深かったです。
ANIPOV
ホイールに文字が浮かび上がるANIPOVに新作が発表されていました。今回は扇風機のファンが光る!的な。実用になったら面白そうです。こんな扇風機があったら楽しそう。
YukkuriCut
発泡スチロール用の電熱線でアクリル板も切れる!という素敵な夢のような製品。カットしたアクリルの切断面も美しかったし、これなら家庭に一台あると便利ですね。自分でもDIYできないか設計してみたいと思います。
RasPSION
懐かしの名機、デザインがかっこよくて憧れだったPISONをRaspberryPiを使って再現した作品。なかなかのお値段でしたが結構売れていた模様。
ハンズフリーインターフェイス
これは実際に試させてもらいました。咀嚼筋を筋電位センサーで拾ってコントロールするんですが、喋りながらでも使えるのと、あっという間に使い方が習得できるという、コメカミ付近の筋肉って優秀ですね。インジケーターを見ながら練習できるのも簡単でよかったです。これは実用になりそう。
Little Dome Projector
円形スクリーンにフィルムを挿入して表示する機器ですが、差し込む時のアナログ感覚など、とても面白かったです。 「ジャム瓶の中の世界」の派生版ですね。
Arduinoで制御する蛍光表示管(VFD)時計
真空管の中に浮かび上がる青い文字。ニキシー管よりは新しいですが、そろそろロストテクノロジーになりそうなガジェットを手のひらサイズに再現してました。これは買えばよかったかな。卓上時計としてかっこいい。
替え芯ケース改造
フリスクケースを改造してパッケージにする人は多いですが、こちらでは替え芯ケース内に回路や電池を入れてます。改造のコツなどが冊子になっていたので興味深く読ませていただきました。
FPGAで画像処理
他にもFPGAを使っている人もいましたし、FPGAがぐっと身近になっている…のかもしれません。まだちょっとハードル高いですけどね。
中の人が操作中
Thetaで全周動画を送り、Oculusで眺めながら操作しているそうです。ここに本人が来なくても参加できますね!すぐ近くのブースで操作していましたが、世界のどこからでも参加できるガジェットになってました。
超音波浮遊装置
http://ommf.iamas.ac.jp/makers/125
隣のブースでしたが自分も興味津々で何度も話を聞かせていただきました。 何かに使えないかな〜。ちなみに、展示のタイトルは珈琲工学研究会なので食関係のコーナーに配置されてましたが、どれも珈琲に関係なしw
また参加したいぐらい楽しかったです。来年のMaker Faire Tokyoの日程も発表になったようですし、また何か作って持って行こうっと。(その前に今のガジェットの完成をw)
おまけ
レポートまとめ
Ogaki Mini Maker Faire 2016行ってきた!
全然見てない展示もいっぱいあって…orz まだまだ見きれなかった模様。音響系とか回れなかったな〜。
Maker Faireに関するブログ記事まとめ
はてなのまとめもありました。
酵母の仕事具合監視装置
今回作ったもの
麦汁の発酵具合を遠隔監視したいので、そのための装置を作った。
麦汁は以下の動画のように作っている。
このように作った麦汁を長期間(1週間以上)衛生的に(雑菌が混入しない状況)一定温度(20℃前後)で管理しなければならない。
課題
発酵の進み具合を監視するため、温度とアルコールの度数を確認したいのだが、毎日開け閉めすると衛生的ではない。また、温度を測ったり、糖度を測るサンプリングは一日一回程度で、細かい変化を見ることができない。
課題その2
上記でサラリと触れたが、アルコールの度数を知りたいのだが、直接測定することは大変。センサーもない。
I made a fermentation monitor
imgur.com
これらの方法は完全密閉タイプの発酵容器でしか使えない。応用範囲が狭い。そこで自分は投げ込み式のセンサー群とした。
質量を測定
CO2は大気中に放出されるため麦汁の質量が減る。その質量変化を測定して判断することは可能。しかし、長期間秤値がドリフトしないで測定を続けることは困難。一定時間ごとにゼロ点補正をするなどメカ的要素が必要になる。糖度を測定
光学式糖度計など安易に測定することはできる。だが、デジタルデータにすることは困難。良いセンサーを見つけられなかった。比重を測定
今回実施したのはこの方法。比重計の変位をマグネットとホールセンサで測定してデジタルデータとして測定した。
機器の構成
EPS-WROOM-02
wifiが付いてるArduinoとして大活躍。DeepSleepから10分に一度起動してwifi接続、センサー値をサーバに送ってまたDeepSleepという動作を繰り返す。3端子レギュレータ
3.6Vバッテリー * 2から7.2Vを作り、それから3.3V(Arduino用)と5V(ホールセンサ用)を生成。1000mAhで1週間以上持つことを確認。ホールセンサ
磁力を電圧で出力してくる。分圧回路で1Vに変換してEPS8266の唯一あるA/D変換できるポートへ入れる。温度センサ
I2Cの簡易のもの。
測定データの管理
測定データはwifiを通じて自前サーバに送られ、サーバでグラフ化して監視できるようにした。
最近はグラフ化してくれるサービスもあるので、そちらに直接送る方が楽かも。
今後の予定
比重計の中に組み込んで一体型を3Dプリンタで作れないか、設計中。