あるある?
いーち、にー、さーん・・・
おかーさーん!こっちきてー!!
は~い
~~~~~数分後~~~~~
あれ、今何合お釜にいれたっけ・・・
子どもとの生活は様々な作業が中断しがちで、戻っていざやろうとすると何するんだっけ状態。
「ちょっと待ってて」
こう言って先に米を炊けばいいのですが、このセリフを普段の生活(特に朝の登園前)でついつい言ってしまうので、できれば言う回数を減らしたい。なのでいま何合分の米を釜に入れたか記録するカウンターを作ってみました。
ちなみに我が家ではこちら↓の10合炊きの炊飯器を使って週末にまとめてお米を炊いています。
10合も炊けるのにコンパクト。
使用している米びつはこちら↓
計量カップが蓋になっていて衛生的です。
つくったもの
米を計量カップに入れるときの米びつの傾きを加速度センサが感知して7セグメントを点灯しカウントする仕組みです。スイッチを押すとカウントが0にリセットされます。
用意するもの
- Raspberrypi pico:ベーシックセット (730円)
秋月電子通商さんで売っているベーシックセットを購入しました。ピコ本体とピンヘッダ、USBケーブルがセットになっています。ピンヘッダは自分でハンダ付します。中学校の授業以来のハンダ付だったので緊張しました。
はんだごてとコテスタンドはAmazonさんで購入しました。
- Raspberry Pi 2 Model B:1個
picoに繋げてこちらでプログラムを作成しました。
- ブレッドボード BB-102:1個(300円)
長めのやつです。
- USBケーブル(タイプAオスーマイクロB):2本
ACアダプターラズパイ用とラズパイーラズパイpico用です。
- ACアダプタ:1個
- 3軸加速度センサモジュール ADXL335:1個(750円)
加速度を電圧として測定できます。詳細はこちらの説明書をご確認ください。
- 赤色7セグメントLED表示器 1文字カソードコモン ボディ黒 LA-401VN:1個(120円)
カソードコモンのやつです。
- カーボン抵抗(炭素被膜抵抗)1/2W 330Ω:8個(100円/100個入り)
- カーボン抵抗(炭素皮膜抵抗)1/4W 10kΩ:1個(100円/100個入り)
- タクトスイッチ(白色) TS-0606-F-N-WHT:1個(10円/個)
- ジャンパーワイヤー(オスーオス):22本
ピコとセンサー、7セグメントLED、タクトスイッチをつなげるのに使用しました。かたいタイプと柔らかいタイプ両方使いました。
- モバイルバッテリー Anker PoweCore Slim 10000
最近のモバイルバッテリーは給電量が少ないと満充電と判断して供給を止めてしまうらしいので、低電流モードがあるこちらをAmazonで購入しました。実際に使ってみたところ、通常モードではやはり消費量が少なく、すぐにパワーオフしてしまいましたが、低電流モードでは約2時間ほど給電していました。
配線する
そういった職業についているわけでもなく電気系の学科を卒業したわけでもない素人の配線なので参考にならないかもです。
FritzingにADXL-335モジュールがなかったのでペイントで追加しています。
加速度センサのX方向も配線しているのですが、使っていないのでなくて大丈夫だと思います。
プログラムを作成する
これまたそういった職業についているわけでもなく情報系の学科を卒業したわけでもない素人が書いたので参考にはならないかもです。
"""
This code is licensed under the MIT license.
<https://opensource.org/licenses/MIT>
Copyright © 2022 nobo
Permission is hereby granted, free of charge,
to any person obtaining a copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation the rights to use, copy,
modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or
substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
#必要なモジュールをインポート
from machine import Pin
import time
#本当はここにdef LED(n)という7セグメントを点灯する関数を定義しています
#書籍「やさしくはじめるラズベリー・パイ」の7セグメント点灯項を参考にしました。
#全く同じではない(私はzipをつかいました)のですが、念のため掲載は控えます。
#7セグメントLED1つでは10を表現できないので9の次はAを表示させました
#スイッチを押したら0点灯
def callback(p):
global cnt
cnt=0
LED(cnt)
switch=Pin(1,Pin.IN)
switch.irq(trigger=Pin.IRQ_FALLING,handler=callback)
#0を点灯
LED(0)
#加速度センサの値を読む準備
Y=machine.ADC(1)
f=100/65535
#センサの値を読んで値にによってカウントアップ
cnt=0
while True:
readY=Y.read_u16()*f
time.sleep(0.3)
if readY<24:
cnt=cnt+1
LED(cnt)
readY=Y.read_u16()*f
while readY<24:
readY=Y.read_u16()*f
time.sleep(0.3)
20°くらい傾けたときの読取値が24くらいなので、24より小さくなったらLEDをカウントアップします。それだけだと一瞬で1〜Aまでカウントアップしてしまうので、LED点灯後は再び24以上になるまで読み取りを繰り返すようにしました。
完成
見た目はかなり残念ですか、完成しました。これで米を計量中に息子に呼ばれて作業を中断しても大丈夫ですね。
参考文献・サイト様
7セグメントLEDの点灯方法はこちらの書籍で学びました。
他にもたくさんの事例が載っています。
タクトスイッチを押したら0にするプログラムは公式ドキュメントの「6.1.外部割込み」を参考にしました。
加速度センサの使い方はこちらのYouTubeで学びました。
はんだ付けから値の読み取りまで丁寧に解説してくださっており、非常に助かりました。