電子工作95 - 「良く噛めヘルパー」の製作 - 音声とLEDの点滅で知らせる
Electronics Project 95 –
Good Chewing Audio-Visual Helper
概要 Introduction
食事どき「よく噛む」ことが健康に良いと言われ、何か噛むことに役立つ電子装置が出来ないかと思い巡らす内、今回の装置の製作にたどり着いた。普段横たわっている装置を立てるとマイクロスイッチが導通し、自分が録音した音声、例えば、“よく噛んで食べましょう”が一定時間毎に再生され、同時に噛むリズムをブザー音声(ピー、ピー)とLEDの点滅で教えてくれる。食事が済んだら装置を横倒し、電源が切れて以後電池の消耗はない。
Chewing food well before swallowing is good for our health. This device is like a musical instrument metronome with an audio advice function. You can see a LED blinking and hear a buzzer beeping at a fixed interval (two choices), which gives you a chewing rhythm. In addition, your pre-recorded voice such as ‘Chew it well, chew it well” is also generated once every 41-45 seconds, continuously informing you of the importance of chewing..
回路図 Circuit Diagram
下図のように、電源として単3アルカリ電池3本を使った。ブザーが鳴る電圧として3.0V以上が必要で、更に音量を上げるのに欠かせなかったことによる。マイクロスイッチは装置を使う時に立てることによってONになり、12F629と音声録音再生モジュールに電流が供給される。装置を使わない時は横にしてあるのでマイクロスイッチは完全にOFF状態なので電流の消費はない。音声録音再生モジュールはホトモスリレーを介してONにされ(モジュールのPLAYを押すと同じ操作)、録音してある音声が再生される。電子ブザーとLEDは噛むリズムをとるのに役立つ。噛む速度はGP5に接続されたスイッチでLowとHighのどちらかが選択出来る。装置を立てて起動させると、ブザーが5回鳴って、音声が1回再生され、その後ブザー音とLEDの点滅が続く。この動作が約41-45秒毎に繰り返される。装置を横にすると停止する。
When the plastic box containing the device is placed upward, the microswitch turns on the power of the system. The power source of 3V is required to drive this buzzer and raise the audible level of Sound Recorder Module high enough. To turn on the Module, a photo Mos relay is used. The buzzer and LED give the chewing rhythm (2 choices) to the person who is eating food.
製作した装置
写真で、最上部の黒いのがSW付き電池ボックス、その下の小さい黒いものが12F629、その右の白いものはホトモスリレー。その直ぐ下にブザーとLEDが見える。最下部の緑の基板に載っているのが音声録音再生モジュール。キットで購入し組み立てた。オリジナルの3Vでは音量が低過ぎ、4.5Vにしたら実用レベルに上がった。ボックス外側の右最下部に見えるのがマイクロスイッチである。
Completed
working model: Large black box containing 3 AA batteries (4.5V), small black IC
- 12F629, small white IC - photo Mos relay, Sound Recorder Module (assembled)
with recording and replaying capability (10 sec), micro switch, LED and buzzer
左の写真は蓋付のプラスチックボックス(L11.5XW9.0XH5.5cm)に収納した装置、使う時は音声が良く聞こえるように蓋を上にずらす。右の写真は使う時にボックスを立てた状態、マイクロスイッチのボタンが押され電流が供給される。
How to Use Sound Recorder Module: for recording keep
pressing REC button and at the same time say for the built-in microphone what
you want to record (max 10 sec), for replaying the recorded voice press PLAY
button for a short time (about 0.1–0.3ms).
マイクロスイッチ部
左の写真は電源のON/OFFスイッチとなるマイクロスイッチの設置位置を示し、右はその拡大写真を示す。この写真で右下方に出ているボタンがプラスチックボックスを立てた時上方に押されてスイッチがON状態になる。ちょうど良い押し硬さを持ったものを秋葉原の中古ショップで見つけて使った。
Microswitch installed at the bottom side of plastic box: when the
box is placed upward, the small lower pin of the microswitch is pushed upward
which makes the upper two pins conductive, supplying the power to the system.
結果&コメント
1)
正常に動作することが確認された。
2) 音声の録音(最大10秒間)は音声録音再生モジュールの「REC」を押しながらマイクに向かって行い、また、録音した音声は「PLAY」を押すと再生される。
3) プラスチックボックスの蓋の下部を1−2cmほど開けて動作させると、ちょうど良い音量で録音した音声やブザー音が聞こえる。
4) 費用は大体1500円ほど。1番高かったのは音声録音再生モジュールで¥450(aitendo)。
5) 近い将来、今回製作した装置にカウンターを導入する予定。
プログラム Program
電源ONで、ブザーを5回鳴らし、録音した音声を1回再生する。次いで、スイッチで選択されたchewing rate (噛む速度)に従って、LowRateかHighRateのルーチンに進む。各々のルーチンの中では一定の間隔でブザーが鳴り、同期してLEDが点滅を繰り返し、前者(LowRate)では約45秒後に録音した音声が再生され、元に戻って、この過程を永遠に繰返す。後者(HighRate)でも同じルーチンを約41秒毎に永遠に繰返す。ボックスを横倒ししてマイクロスイッチがOFF(電源)になると、動作は停止する。
In the program, first the
buzzer beeps 5 times (200ms each), followed by the announcement of recorded
voice. Then, the program flow jumps to LowRate or HighRate routine depending on
the choice of Chewing rates. In each routine, the beeping of buzzer and the
blinking of LED continue for about 41 to 45 seconds and then the voice
announcement follows. After that, the program flow returns to Loop or Loop1,
which is endlessly repeated until the plastic box is laid sidewys.
'***********************************************
'ChewingAudioVisualHelper.bas 2017.2.5
'Using 12F629 and PicBasic Pro V2.50A
'***********************************************
'Pin 1: Vdd(3V)
'Pin 8: Vss(GND)
'Pin 7: GPIO.0 - Drive Relay for Sound Recorder Module
'Pin 6: GPIO.1 - Drive Buzzer
'Pin 5: GPIO.2 - Drive LED indicator
'Pin 4: GPIO.3 - Reset
'Pin 3: GPIO.4 - NC
'Pin 2: GPIO.5 - Rate Selector: Low or High
'***********************************************
CMCON=7 'Comparator off
SoundON var GPIO.0
RateSelect var GPIO.5
LED var GPIO.2
Buzzer var GPIO.1
TRISIO=%101000
m var word
n var byte
For n=1 to 5 ‘Beeping the buzzer 5 times
High Buzzer
Pause 200
Low Buzzer
Pause 200
Next n
Pause 200
High SoundON ‘Playing the recorded voice
Pause 200 '0.5 sec for pressing SW-speak
Low SoundON
Low Buzzer
Low LED
If RateSelect=1 Then Goto LowRate ‘Selecting a chewing rate
Goto HighRate
LowRate: ‘Low chewing rate routine, repeating it every 45 seconds
Loop:
For n=1 to 50
High LED
Gosub BuzzerRou
Pause 200 '200ms
Low LED
Pause 810 '810 ms
Next n
High SoundON
Pause 500
Low SoundON
Goto Loop
HighRate: ‘High chewing rate routine, repeating it every 41 seconds
Loop1:
For n=1 to 50
High LED
Gosub BuzzerRou
Pause 200 '200ms
Low LED
Pause 700 '700 ms
Next n
High SoundON
Pause 500
Low SoundON
Goto Loop1
BuzzerRou:
High Buzzer
Pause 50 '50ms
Low Buzzer
Return
End
'*****End of Program******
'Note:
'melabs U2 Programmer's configurations for 12F629:
'Oscillator - INTOSC, WDTE - Enable, PWRTE - Disable, MCLR - Reset, BODEN - Enable, CD - Disable, CDP - Disable
カウンターを組込む (2017.2.15 追加)
Counter added to the above-mentioned system (2017.2.15)
目で見られるカウンターがあると、何回くらい食べ物を噛んだかの目安になる。カウンターの自作は大変。直ぐ思い出したのは電子工作90で使ったダイソーの歩数計。以下にその使い方を述べる。
If the rhythmic counting achieved by a buzzer and a LED is shown on
a display as cumulative numbers, we will be able to roughly know how many times
we have chewed our food. So, I introduced to the above-mentioned device a
simple counter that is a part of an inexpensive pedometer by slightly modifying
it.
回路図 Circuit Diagram
歩数計(ダイソー D11)をカウンターとして上述の装置に組込んだ時の新しい回路図を下に示す。歩数計を分解して3本の線(Red, Black, Reset)を取り出し、それを前でも使ったホトモスリレー2個につなぎ駆動する。ホトモスリレー(1)ではカウンターのRedとBlack(GND)の2線につなぎ液晶表示のカウントアップに使う。ホトモスリレー(2)ではカウンターのResetとBlack(GND)の2線につなぎ表示数値をゼロにリセットするために使う。12F629のGPピンに余裕がないので、LEDとブザーを一緒にして駆動するように改造した。また、Power SWやReset SWも必要ないことが分かったので省いた。
Compared with the above-mentioned circuit diagram, in this diagram
the circuit is so modified that GP1 can drive both Buzzer and LED in order to
save the number of ports. Using two available ports, GP2 and GP4, two photo Mos
relays are newly installed for driving the counter.
完成した実用機: 表示が「25」と出ているものが歩数計を改造して使ったカウンター。装置本体を使うために立てるとマイクロスイッチがONになって電流が供給され動作が開始し、表示の数値もゼロにリセットされる。そして、LEDの点灯とブザーが鳴る毎にカウンターの数値が1、2、3。。。のようにカウントアップされる。装置を横に倒してマイクロスイッチがOFFになると、表示の数値はそのままの状態で残り、やがてオートOFF機能が働いて表示は消える(2−3分後)。再びマイクロスイッチをONにすると、一瞬保持されていた前の数値が表示され、そしてリセットされてゼロからまたカウントアップが始まる。カウンターの左で基板上に載っている2個の白いICは追加したホトモスリレー。
Completed working model: A counter and two photo Mos relays are
added to the above-mentioned model. Now we can hear the voice announcement, the
beeping of Buzzer, and see the blinking of LED and the cumulative numbers of
counting on the counter.
駆動線(3本)の出し方: 歩数計の裏側の4本のネジを外すと基板の裏側が現れる。上部に振り子の役目(上下動)をする金属片とその左下方にそれを支える細い線状バネが見える。歩く時の揺れで、金属片の重りの先端がその下に出ている銅棒に触れ、バネ下端端子と銅棒とは導通状態になる。1回触れる毎に1回カウントする。
Modification of DAISO's pedometer to
a simple counter: This is the backside of the pedometer that appears after
removing 4 screws of its back cover. Remove the metal piece (pendulum) and the
thin wire spring..
改造: 次いで、金属片と線状バネを取り除いて、代わりに写真のように銅棒に黒い線を、線状バネが固定されていた端子に赤い線をハンダ付けして外部に取り出す。この赤い線と黒い線を接触させるとカウントが1個進む。写真の右側中央部のY字型金属片はボタン電池のホルダーある。
As shown in the picture, solder a black cable to the copper rod and
a red cable to the rectangular-shaped metal bracket, respectively. The Y-shaped
metal bracket on the right-hand side is the part of coin battery holder. A
short-period contact (about 0.1-0.3ms) of these two black and red cables
advances the count on the display of the counter by one.
更に内部の4本のネジを外すと基板の表面が現れる。リセットに関連する基板右下の部分に青い線(Reset)をハンダ付けして外部に取り出す。上記の黒い線(GND)と、この青い線を接触させると液晶表示の数値がゼロにリセットされる。写真の黒い部分にはCPUとプログラムが入っているはず。¥108で買えるのだから凄い。
This is the font side of the above circuit board, which appears by further dismantling the pedometer.. As shown below, a blue cable is soldered to the gold-plated terminal, which is related with Reset. A short-period contact of the above-mentioned black cable and this blue cable will reset the count on the display to zero
結果&コメント
1) ここでの主な目的は歩数計のカウンターを如何にして装置に組込むか、ということであった。結果として、3本の線を外部に出し、プログラム中で歩数計が実際に動作する様子を模してやれば良いということが分かった。リセットのための時間がPauseで50msでは誤動作し、100msでちょうど良いなどがポイントだった。
2)
これまで度々使って来たホトモスリレー(TPL596Aなど)は1個¥100ほどするが、機械式リレーに比べ利用時の回路が簡単、PICなどで待機電流も消費せず、確か300mA位流せるので大変重宝している。
3)
ここまで装置がまとまってくると、実際に噛んだ回数をセンサーなどを使ってカウント表示出来るかも知れない。将来の課題である。
プログラム Program
装置を立ててマイクロスイッチが導通し電源がONになると、ブザーがピー、ピー、と5回なり、次いで録音した音声メッセージが1回流れる。そのあと液晶表示がリセットされる。そして、Chewing rateの選択により、LowRateかHighRateのルーチンに飛ぶ。終了すると(49−43秒後)音声メッセージが1回発生し、以後永久に同じルーチンを繰り返す。停止するには装置を横倒しマイクロスイッチをOFFにする。
This program is basically the same as the above-mentioned one. However, due to the introduction of a counter to the system, it is required to introduce both resetting and counting routines in this new program. For resetting the counter display, this routine in the program, High CounterReset -> Pause 100 -> Low CounterReset, does the necessary work. On the other hand, for counting up the counter, the subroutine, CounterCntUpRou: High CounterCntUp -> Pause 50 -> Low CounterCntUp -> Return, does the necessary work.
'********************************************
'ChewingAudioVisualHelper.bas 2017.2.13
'Using 12F629 and PicBasic Pro V2.50A
'***********************************************
'Pin 1: Vdd(3V)
'Pin 8: Vss(GND)
'Pin 7: GPIO.0 - Drive Relay for Sound Recorder Module
'Pin 6: GPIO.1 - Drive Buzzer and LED indicator
'Pin 5: GPIO.2 - Drive Relay for resetting Counter
'Pin 4: GPIO.3 - Reset
'Pin 3: GPIO.4 - Drive Relay for counting up the chewing number of Counter
'Pin 2: GPIO.5 - Rate Selector: Low or High
'***********************************************
CMCON=7 'Comparator off
SoundON var GPIO.0
BuzzerLED var GPIO.1
CounterReset var GPIO.2
CounterCntUp var GPIO.4
RateSelect var GPIO.5
TRISIO=%101000
m var word
n var byte
For n=1 to 5 ‘ここでブザーを5回鳴らす
High BuzzerLED
Pause 200
Low BuzzerLED
Pause 200
Next n
Pause 200
High SoundON ‘ここで録音した音声を1回流す
Pause 200 '0.5 sec for pressing SW-speak
Low SoundON
Low BuzzerLED 'Resetting Counter ‘ここで液晶表示をリセットする
High CounterReset
Pause 100 '100 ms
Low CounterReset
If RateSelect=1 Then Goto LowRate ‘ここで噛む速度のLowRateかHighRateに飛ぶ
Goto HighRate
LowRate: ‘ここでLED点滅とブザー音を50回繰り返し、終了したら録音した音声を1回流し、Loopに戻って永久に繰返す
Loop:
For n=1 to 50
Gosub BuzzerLEDRou
Gosub CounterCntUpRou
Pause 200 '200ms
Pause 810 '810 ms
Next n
High SoundON
Pause 500
Low SoundON
Goto Loop
HighRate ‘上記のLowRateと同じルーチンだが、LED点滅とブザー音の鳴る速度が上より速い(200ms+700ms)
Loop1:
For n=1 to 50
Gosub BuzzerLEDRou
Gosub CounterCntUpRou
Pause 200 '200ms
Pause 700 '700 ms
Next n
High SoundON
Pause 500
Low SoundON
Goto Loop1
BuzzerLEDRou: 'Buzzer & LED drive subroutine LED点滅とブザー音を発生するサブルーチン
High BuzzerLED
Pause 50 '50ms
Low BuzzerLED
Return
CounterCntUpRou: 'Counter count-up subroutine 液晶表示の数値を1個ずつカウントアップするルーチン
High CounterCntUp
Pause 50 '50 ms
Low CounterCntUp
Return
End
'*****End of Program******
'Note:
'melabs U2 Programmer's configurations for 12F629:
'Oscillator - INTOSC, WDTE - Enable, PWRTE - Disable, MCLR - Reset, BODEN - Enable, CD - Disable, CDP – Disable
カウンターにカウント数を積算する機能を加える (2017.4.1 追加)
Cumulative mode for number counting added to the system (2017.4.1)
上記の装置では、横たわっている本体を立ててマイクロスイッチが入る毎にカウンター数がリセットされ、“0”から再スタートする。噛むことを一時中止したい場合にも、カウンターだけはカウントを続けるので、噛む回数をカウントするには都合が悪いことが分かった。そこで、カウントしている装置を横に倒して電源を切り、再び立てると“0”にリセットされることなく、前のカウンター数に積算されるように改良した。これによって、ブザー音のリズムにのって噛んでいる途中で一時中断したい時は装置を横に倒し、再び噛み始める時に装置を立てる、といった使い方が出来るようになる。この場合、カウンターのリセットは、カウンター上にあるリセットボタンを押して行う。
The above-mentioned device was modified to have Cumulative Mode, so
that the resetting to zero of the counter would not occur every time the device
is laid sideways and then made to stand upright for turning off and on its
microswitch. That is, the count numbers on the counter cumulatively increase as
a result of the repeated addition of new count numbers to the previous ones on
the counter after the device is made to stand upright from its laid-sideways
state. In this case, to reset the count numbers on the counter to zero, it is
required to press Reset Button of the counter.
回路図
Program:
カウンターにマイクロスイッチを切ったり(装置を倒す)、入れたり(装置を立てる)しても噛み数が積算されるモード(Cumulative mode)を従来からのもの(Everytime mode)に加えるため、GP3(Pin 4)のプルアップ抵抗を外して図に示すようなっスイッチと配線を組み入れた。これでGP3は読込みピンに変わる。前の回路図から変わった部分はここだけである。
To add Cumulative Mode to the existing device, GP3 (Pin 4) was changed
to Input-pin mode from Reset mode, as shown below, by removing the previous R
(10K),
installing a switch and changing Configuration (Reset to Input pin)
in the program. No other change has been made to the previous circuit diagram.
[良く噛めカウンターでの実測値]: 以下のように噛み数は大体500−600回前後であることが分かった。
2017.3.26-朝食 597 (メガネわきMSを途中で下MSに変えた。前者が数え過ぎ傾向ある為)
2017.3.27-朝食 554
2017.3.27-夕食 517 (おにぎり、冷凍野菜、唐揚げ、サツマイモ、半味噌汁など)
2017.3.28-朝食 439
2017.3.29-朝食 525
2017.3.30-朝食 632
2017.40.1-朝食 538 (おにぎり、味噌汁、ハム、納豆、液ヨーグルト、野菜ジュース)
2017.4.02-朝食 523 (上記+トマト)
プログラム Program
前のプログラムでは、装置を横置きの状態から、立た時にカウンターの表示がリセットされてゼロになるモード(Everytime)だけだったが、今回はリセットしないでカウンターの表示が積算されていく積算モード(Cumulative)も加えた。したがって、プログラムの長さが少し増えた。
Due to the addition of Cumulative Mode, the program became slightly
longer.
'********************************************
'ChewingAudioVisualHelperCntM.bas 2017.3.30 Works OK!
'Using 12F629 and PicBasic Pro V2.50A
'***********************************************
'Pin 1: Vdd(3V)
'Pin 8: Vss(GND)
'Pin 7: GPIO.0 - Drive Relay for Sound Recorder Module
'Pin 6: GPIO.1 - Drive Buzzer and LED indicator
'Pin 5: GPIO.2 - Drive Relay for resetting Counter
'Pin 4: GPIO.3 - Counter reset mode: Everytime or Cumulative)
'Pin 3: GPIO.4 - Drive Relay for counting up the chewing number of Counter
'Pin 2: GPIO.5 - Rate Selector: Low or High
'***********************************************
CMCON=7 'Comparator off
SoundON var GPIO.0
BuzzerLED var GPIO.1
CounterReset var GPIO.2
CounterCntUp var GPIO.4
RateSelect var GPIO.5
CounterRstMode var GPIO.3
TRISIO=%101000
m var word
n var byte
For n=1 to 5
High BuzzerLED
Pause 200
Low BuzzerLED
Pause 200
Next n
Pause 200
High SoundON
Pause 200 '0.5 sec for pressing SW-speak
Low SoundON
If CounterRstMode=1 Then Goto EverytimeM ‘ここでカウンタ リセット モードを選択
Low BuzzerLED 'Resetting Counter
Goto CumulativeM
EverytimeM:
Low BuzzerLED 'Resetting Counter
High CounterReset
Pause 100 '100 ms
Low CounterReset
If RateSelect=1 Then Goto LowRate ‘ここで噛む速度を選択
Goto HighRate
LowRate:
Loop:
For n=1 to 50
Gosub BuzzerLEDRou
Gosub CounterCntUpRou
Pause 200 '200ms
Pause 810 '810 ms
Next n
High SoundON
Pause 500
Low SoundON
Goto Loop
HighRate:
Loop1:
For n=1 to 50
Gosub BuzzerLEDRou
Gosub CounterCntUpRou
Pause 200 '200ms
Pause 700 '700 ms
Next n
High SoundON
Pause 500
Low SoundON
Goto Loop1
CumulativeM:
If RateSelect=1 Then Goto LowRate1 ‘ここで噛む速度を選択
Goto HighRate1
LowRate1:
Loop2:
For n=1 to 50
Gosub BuzzerLEDRou
Gosub CounterCntUpRou
Pause 200 '200ms
Pause 810 '810 ms
Next n
High SoundON
Pause 500
Low SoundON
Goto Loop2
HighRate1:
Loop3:
For n=1 to 50
Gosub BuzzerLEDRou
Gosub CounterCntUpRou
Pause 200 '200ms
Pause 700 '700 ms
Next n
High SoundON
Pause 500
Low SoundON
Goto Loop3
BuzzerLEDRou: 'Buzzer & LED drive subroutine
High BuzzerLED
Pause 50 '50ms
Low BuzzerLED
Return
CounterCntUpRou: 'Counter count-up subroutine
High CounterCntUp
Pause 50 '50 ms
Low CounterCntUp
Return
End
'*****End of Program******
'Note:
'melabs U2 Programmer's configurations for 12F629:
'Oscillator - INTOSC, WDTE - Enable, PWRTE - Disable, MCLR - Input Pin, BODEN - Enable, CD - Disable, CDP - Disable
Menu Pageへ戻る (Return to Menu Page)
Topへ戻る
(Return to Top of Page)