WH)と、これまで紹介したフォトリフレクタ、WebIOPiを使って、ハムスターの回し車の回転計を作成します。測定した回転数は、JavaScriptのチャートライブラリ「Chart.js」を使ってグラフ表示し、リアルタイムでパソコンやスマホから確認することができます。きれい!ままあちゃんChart.jsを使うと簡単にグラフが作れるんだよこれまで紹介したフォトリフレクタとWebIOPiの使い方の記事はこちらです。ジャンガリアンハムスターの「ハムハム」です。2018年の8月末くらいに生まれたそうなので、生後8カ月くらいです。しぐさがとっても愛らしくて、手を入れるとすぐに寄ってくる人懐っこい女の子です。ダイエットが必要でしょうか?夜、結構、回し車を回しているようなのですが、実際どのくらい回しているのか、調べてみたいと思います。WH)でハムスターの回転計を作成します。回転計の作成にあたって、こちらのブログを参考にさせていただきました。済んだものを使用します。8~32GB詳しくは、こちらです。正規品3microUSB電源ケーブルスマホの充電ケーブルでOKです。詳しくは、こちらです。4パソコンmicroSDに書き込めるもの。詳しくは、こちらです。UX331UN-8250B5ブレッドボード詳しくは、こちらです。詳しくは、こちらです。詳しくは、こちらです。8フォトリフレクタ(反射型フォトセンサ)RPR-220詳しくは、こちらです。974HC14詳しくは、こちらです。DHT11詳しくは、こちらです。一部に赤いピカピカのテープを貼りました。回し車が回転すると、フォトリフレクタでこのテープの通過を検出します。固定できれば何でもOKです。次で詳しく紹介しています。ブレッドボードを固定する台フォトリフレクタの高さを調節して、ブレッドボードを固定する台を作成しました。ブレッドボードの後ろにも両面テープが貼ってあるようなので、空き箱を利用して作ろうかと思っていたのですが、子どもが小さいころ遊んでいたレゴブロックのドアがちょうどいいサイズ!こちらは、後ろからの写真です。ブレッドボードの横にちょっと隙間があくので、ジャンパーワイヤを通すことができました。WH)を置いて、赤い柵で固定しています。WH)の電源ケーブルが赤い柵の隙間に固定されていいかんじです。この台を、ハムスターの回し車のところにおいて、回転数を数えます。横から見るとこんなかんじです。温湿度センサーのDHT11は、4.7kΩのプルアップ抵抗が必要ということで、手元にあった10kΩの抵抗を使用しました。配線の方法を、簡単な図で示します。写真で見るとこんなかんじです。ブレッドボードの方をアップにします。JavaScriptのチャートライブラリー(Chart.js)次は、ラズベリーパイに必要なライブラリーを追加していきます。いろいろな種類のグラフを簡単に表示できるライブラリーChart.jsを使います。Chart.jsは、HTML5のcanvasを使って、JavaScriptベースでグラフを表示することができるライブラリです。公式サイトなどで使い方や設定などが、詳しく説明されています。設定方法は、以下の2つがあります。ライブラリにアクセス外部のライブラリにアクセスするのであれば、htmlファイルのheadタグに以下を記述するだけでOKです。ダウンロードする外部にはアクセスしないで、ダウンロードしたファイルを使うこともできます。その方法がなかなか見つからなかったので、設定方法を紹介します。Started」ボタンをクリックします。releasesリンクをクリックします。ページの一番下のChart.jsファイルをクリックしてダウンロードします。/home/pi/webiopi/test/jsフォルダを作成し、ダウンロードしたChart.jsファイルを保存します。htmlファイルのheadタグでChart.jsを読み込みます。src="js/Chart.js"></script>グラフのデータ・オプションを設定javascriptで、描画するグラフのデータやオプションを設定することができます。棒グラフの縁取りの太さ......キャンバスでグラフ描画あとは、bodyタグ内のグラフを描画したい場所に「canvasタグ」をおくだけで、きれいなグラフが描けてしまいます。id="canvas"></canvas>Pythonのスケジューラーモジュールもう一つ、Pythonのプログラムで「5分ごとに処理を実行」したいので、スケジューラーモジュールをインストールします。インストールまずは、現在インストール済みのパッケージを一覧で確認します。listpip3は、Python3のパッケージを管理するコマンドです。すると、インストール済みのパッケージがずらっと表示されます。「schedule」がなければpip3でインストールします。登録した関数を実行するという3段階攻撃です(詳しくは、プログラムを見てください)。設定したスケジュール通り、5分毎にseveCSV関数を実行schedule.run_pending()PythonのDHT11モジュール温湿度センサーDHT11を簡単に使用するために、Pythonのモジュールを使用します。インストールAdafruit社がGitHubで公開しているPythonモジュールをインストールします。install使い方このモジュールを使う方法は、こちらです。温度・湿度を読み取る詳しくは、プログラムを見てください。DHT_PIN)プログラムプログラムは、大きく2つの流れで処理しています。回転数をCSVファイルに保存フォトリフレクタからの信号をカウントした回転数と、DHT11で測定した温度・湿度を一定時間ごとにCSVファイルに保存します。ハムスターは夜行性なので、夜20時くらいから、翌朝の6時くらいまでの回転数を測定します。夜間の回転数を続けて見たいので、昼間の12時から24時間の単位で区切って保存することにしました。保存してあるCSVファイルのうち最新のファイルを読み込み、グラフを描画します。保存されているCSVファイルから、日付選択のセレクトボックスを生成します。セレクトボックスで日付を選択すると、グラフのデータを切り替えて再表示します。ファイル構成ファイルの構成は、こちらです。JavascriptやCSS(スタイルシート)などは、別のファイルにした方がいいのですが、ここでは内容を追いやすいように1つのファイルにまとめています。index.htmlindex.htmlファイルでは、データのグラフ表示と回し車の状態・回転数を表示します。id="counter">0</span>回</p></body></html>script.py実際に処理をしているPythonのソースファイルです。0データファイルプログラム内で作成し、データを保存するcsvファイルです。ファイル名は、cnt_(日付).csvになります。21:10,581,26,54123456720:10,281,25,5120:20,678,25,5420:30,687,25,5220:40,407,25,5120:50,313,25,5221:00,458,26,5321:10,581,26,54動作確認WebIOPiを起動して、http://raspberrypi.local:8000/test/にアクセスします。ハムハムが回し車を回すと......。回転数グラフの下の「回転中」ボタンが赤くなって、回転数がアップしていきます。保存されたデータのグラフが表示されます。回転数は紫の棒グラフ、温度は赤、湿度は青の折れ線グラフです。終了するときは、WebIOPiを停止させ、ラズベリーパイを停止します。まとめ気になっていたハムハムの回し車の回転数を、実際に測定してグラフ化したことで、運動量が一目で分かるようになりました。自動で夜間ずっと計測してくれる便利さも実感です。測り始めてまだ数日ですが、日によって回転数にばらつきがあることも分かりました。休みが多くて1万回くらいの日もあります。年齢や季節、温度にもよるようですし、運動量で体調が分かって、エサの量を調節することもできそうです。したら地震の予知ができるかもしれません。次は、スマホからロボットをラジコン操作したいと思います。コメントをキャンセルメールアドレスが公開されることはありません。*ウェブサイト上に表示された文字を入力してください。初心者ですが、ラズベリーパイを使った簡単な電子工作にいろいろ挑戦しています。よかったら、詳しいプロフィールも見てください。:お問い合わせはこちらです。