電子工作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)