炊飯器の残量カウンターを電子工作で作った(1)(仕様検討・部品選定編)
ご飯の準備をするためにおかずを作り、食器を並べ、いざご飯をよそおうと炊飯器を開くと米を炊き忘れていたことに気付く。
これほど発狂することが他にあるでしょうか。
私の生活の中で大きなストレスになっている「米炊き忘れ問題」を解決するため、Arduinoを使った電子工作で炊飯器の残量カウンターを作ってみました。
重さから米の残量を調べる?
炊飯器にある米の残り量を正確に求めるために、最初に思いついたのは米の重さから調べる方法です。
5kgくらい測れる秤を買い、常に炊飯器を上に置いておけば簡単に実現できます。
しかしあまりにも不格好です。
不格好なのは目をつぶるとしても、秤の値を確認しないと米が少ないことに気付けません。
米が少なくなったときに何かしらの方法で教えてくれるシステムが欲しいのです。
一定の重さ以下の物を載せたときに音を鳴らして教えてくれるような秤があればなんとかできそうですが、調べたところ簡単に買えるような金額のものはありませんでした。
一応自分で作ることも考えてみました。
秤の表示をカメラで撮影し画像から文字認識で重さの表示を判断するとか、デジタル秤を分解してセンサの出力電圧を読み取り、重さと電圧値の関係を調べるとか考えられます。
どちらも面倒だし、なにより私のスキルでは無理です。
蓋の開け閉め回数から米残量を調べる
もっとシンプルに考えてみました。
重さを測ってまで厳密に残り残量を調べなくてもよいのです。
とりあえず米が少なくなったことが分かり、なおかつそのことに気付かせてくれさえすればいいのです。
そこで着目したのは炊飯器の蓋の開け閉めの回数です。
正確に測ったことはありませんが、我が家の米の消費量はだいたい茶碗1杯分が0.5合です。
ご飯を茶碗によそうときは必ず1回蓋の開け閉めが発生します。
それなら蓋の開け閉め回数だけ数えていれば、米が減ってきたことも分かるはずです。
もちろん米をよそう量なんて毎回変わりますが、とりあえず米が少なくなっていることが「だいたい」分かればいいのです。
炊飯器の蓋の開け閉めをカウントして米の残量を調べる。
この記事のタイトルで「炊飯器の残量カウンター」と書いたのはこういうわけです。
残量カウンター製作に必要なもの
一番肝心な蓋の開け閉めを調べる方法ですが、これは傾斜センサを使います。
秋月電子で見つけた「RBS040210-G」を使用することにしました。
振動(傾斜)スイッチ RBS040210−G: パーツ一般 秋月電子通商 電子部品 ネット通販
原理は簡単で、四角い黒い箱の中に電気を通す玉か何かが入っています。
傾斜センサを壊して中を見たわけではないので分かりませんが、とりあえず下図では玉として描きました。
センサを傾けて玉が金属の足がある方に転がると、金属の足と玉がショートして電気を通すようになります。(上図の赤矢印が電流の流れ)
電流が流れたことを検出すれば傾いたことが分かるのです。
この原理から分かるように、具体的に何度傾いたかまでは判断できず、傾いたかそうでないかというONかOFFかの判断しかできません。
またカウンターのプログラムを作成するためマイコンのArduinoを使用します。
これは昔プーさんのぬいぐるみとおしゃべりできるシステムを作った時に買ったものです。
Arduino Uno Rev3: マイコン関連 秋月電子通商 電子部品 ネット通販
Arduinoだけではカウントした数字が見えないため、Arduinoに直接載せることができるLCDボードを購入しました。
押しボタンもついているので最初に入れた米の量の設定などをボタンを使ってできそうです。
サインスマートLCDキーパッドシールド: マイコン関連 秋月電子通商 電子部品 ネット通販
この他にも傾斜センサとArduinoを繋ぐジャンパワイヤ、ワイヤとLCDボードを接続するピンソケット、Arduino用の電源アダプタ、電圧を調べるための簡易テスタなどを購入しました。
既に持っていたArduinoと抵抗何種類かを除くと4000円くらいで全て揃えました。
ブレッドボード・ジャンパーワイヤ(オス−メス) 15cm(黒) (10本入): パーツ一般 秋月電子通商 電子部品 ネット通販
ピンソケット(メス) 1×8(8P): パーツ一般 秋月電子通商 電子部品 ネット通販
12W級ACアダプター9V1.3A LTE10UW−SY−BS01: 電源一般 秋月電子通商 電子部品 ネット通販
手帳型ポケットテスター DT−10A: 測定器・計測器関連 秋月電子通商 電子部品 ネット通販
まずはLCDの表示確認
購入したLCDボードはメーカーからサンプルプログラムが提供されていたのでとりあえずそれを実行してみることにしました。
ちなみにサンプルプログラムは購入しなくても秋月の商品ページから確認できます。
メーカーの資料ではzipファイルを落として指定されたフォルダにコピーすればすぐ使えると書かれていました。
実際には多少プログラムを変更する必要があったのですが、なんとか無事に動くようになりました。
次に書く記事では少し説明を書きたいと思います。
ボード上にある各ボタンを押すと、押している間だけそのボタンに対応する数字を表示してくれるというものです。
それぞれのボタンを押したときの信号は全てArduinoのA0のアナログ入力ピンに送られます。
どのボタンを押すかによってA0に送られるアナログの電圧値が変わり、Arduino内部にあるADコンバータが電圧値を読み取って対応するデジタルの数字に変換してくれます。Arduinoに内蔵しているADコンバータは10bitなので、入力された電圧(0V~5V)を0~1023(=2^10 - 1)の数字に置き換えることができます。
上の図はRIGHTボタンを押したときを表しています。
RIGHTボタンを押すとGNDからAD0までの配線が繋がり、AD0に0Vが入力されます。
0VはADコンバータによって数字0に置き換えて認識されます。
次にDOWNボタンを押したときを見てみましょう。
するとGNDと抵抗R4とR5の間の配線までが繋がり、ここが0Vとなります。
このときAD0に入力される電圧を計算してみると、電源電圧5VがR2,R3,R4の抵抗で分圧されるので以下の式で求められます。
1.61VをADコンバータで変換すると1.61 / 5 × 1024 = 約330となります。
サンプルプログラムではこのように入力された数字からどのボタンが押されているかを判断し、それぞれのボタンに割り当てられた数字をディスプレイに表示してくれるのです。
5つのボタンの入力をたった一つの入力ピンで判断できるのです。面白いですねえ。
まとめ
炊飯器の蓋の開け閉めの回数を数えて米の残量を調べます。
蓋の開け閉めは傾斜センサで判断し、カウンター機能はArduinoで実現します。
次回からはArduinoでプログラミングをしてカウンターを作ってみます。
次回の記事はこちら