電子工作59 – 電池式メカニカルSW付きラジオ用スリープ・ウェークアップタイマ−(外付け電池なし、ロータリーSW付き)の製作

 

概要

スリープ・ウェークアップタイマ装置の事を考えているうち、外付け電池の代わりにラジオの内蔵電池を電源に使い、スライドSWの代わりにロータリーSWを使う事を思いついた。これで装置は簡単になり、タイマ装置の設定時間も10個に増やすことが出来るようになった。

 

今回製作にあたって考えていたこと

1)     ラジオの内蔵電池からPICを駆動する電源をとる。したがって、外付け電池は要らなくなる。

2)     ロータリーSWを導入してタイマーの設定時間の数を増やす。

3)     勿論PICBasicProと16F688を使う。

4)     コンパクト化と省エネ化を最大限図る。

 

回路図

  ラジオが2本の電池で動作する場合を想定する(2本以上でもOK、別図参照)。後述の回路図のようにラジオから3本の線を引き出す必要がある。GND線はPICのVssに、プラス線はVddにつなぎ、そしてプラスチック片のプラス線と対極の線は連続/タイマー選択SWのセンタピンにつなぐ。新たに導入したロータリーSWは0ー9まで選択でき、各位置に対応して4ピン(1、2、4、8)から”H”と”L”を組合た互いに違う信号が出力される(コード表参照)。プログラムでそれらの4ビットで10組の信号を読んで設定時間を取り込む。ロータリーSWのダイアル位置とモードや設定時間の関係は下の表ようである。

 

ロータリーSW(0−9)のピン配置と写真

 

ロータリーSW(0−9、負論理)のコード表

 

ダイアル表示位置

ピン番号

0

1

2

3

4

5

6

7

8

9

1

©

 

©

 

©

 

©

 

©

 

2

©

©

 

 

©

©

 

 

©

©

4

©

©

©

©

 

 

 

 

©

©

8

©

©

©

©

©

©

©

©

 

 

                                         ©: このマークの位置で、各ピンがスイッチのCピンとつながる

 

ロータリーSWのダイアル位置とモードや設定時間も関係

ダイアル表示位置

モード

設定時間

SleepTimer

15 min

SleepTimer

30 min

SleepTimer

1 hr

SleepTimer

2 hrs

SleepTimer

3 hrs

WakeupTimer

30 min

WakeupTimer

1 hr

WakeupTimer

3 hrs

WakeupTimer

6 hrs

WakeupTimer

8 hrs

回路の消費電流は以下のようだった。

PIC16F688のピン1に入る電源線に直列にテスターを入れて電流を測定した。SleepTimerモードでフォトリレーが動作している時(LED(赤)が点灯し、ラジオが鳴っている)の消費電流は1.5mAで、Endコマンドでプログラムが終了する(ラジオが停止)と16uA位に低下した。一方、WakeupTimerモードでは設定した時間を待っている時(LED(緑)が点滅し、ラジオが鳴っていない)は0.32mAの電流を消費し、時間が来てラジオが鳴り始めると1.5mAに上昇し、Endコマンドでプログラムが終了する(ラジオが停止)と9.2uA位に低下した。ロータリーSWの位置によっても消費電流は多少変化するが、今回はSleepTimerモードで"0"(15min)、WakeupTimerモードでは"5"(30min)で測定した。以上の結果から結構省エネが図られていると考えられる。

 

完成したタイマー基板、サイズは30x70mm。左中央部にロータリーSW(0−9)が見える

 

アイワのラジカセCS−P506に搭載したタイマー基板。3本線は背面の電池ボックスから取出した。

 

ANDO AR6-508 AM/FMラジオ(単三3本使用)にタイマー基板を組込んだ。PICのVdd/Vssには

4.7V位の電圧がかかる。スピーカが8cmと大きいので音が良い(2011.8.2)。

 

ラジオによって電池数が異なる。1.5V電池4本では6Vを超えるので16F688駆動には高すぎ、3本以内(4.5V)にする必要ある。

そこで直列に並んだ2本(3V)、3本(4.5V)またはそれ以上からPICの駆動用電源を取りだす。電池から3本線を取り出すにはコツが要る。

 

                                

結果&コメント

1) 外付け電池を省いたことで装置がコンパクトになった。

2) ロータリーSWの導入で設定時間の選択肢が10個に増えた。ロータリーSWには16個の出力のものもあるので何か別の目的に使えるかも。

3) Pauseコマンドを使うWakeupTimerの設定時間の精度は結構高い。しかし、Sleepコマンドを使うSleepTimerの精度は高くなく、設定時間の±5%位と思われる。

4)    ラジオの内蔵電池も1.5Vの2本以上なら何本でもOKである。2本以上の場合でも2−3本から3−4.5Vを取ってPICに供給すればよい。ただし、この目的に使われた電池は残された電池より消耗するので途中で入れ替えたやるとよい

5)    このAIWAのラジカセはラジオを聴いている時30−40mAの電流を消費する。

6)    (追加情報2011.7.29)Photo Relayの内部LEDへの供給電圧が2.5V前後でリレーとして動作しなくなることが分かった。そこで内部LEDの電流制限抵抗Rをこれまでの2.2KWから1.2KWに代えた。これで供給電圧が2.2V位に低下しても動作するはず。つまり、電池がより長く使えることになる。ただ、Photo Relayの駆動電流(ラジオがON時)が0.8mAから1.5mAに増加した。

7)    (追加情報2011.8.2) ANDO AR6-508というAM/FMラジオを秋葉原で980円で購入し、タイマー基板を新たに製作して搭載した。単三3本を使うので、直列3本の両端から基板へつなぐ3本の線を取りだした。従って、PICにかかる電圧は4.70V位(1.5Vx3)になった。スピーカーが直径8cnと大きいので音が良い。それとWakeupTimerのLED(Green)の輝度を上げるためにRを3.3Kから1Kに代えた。また、Photo Relayの内部LEDへの印加電圧が2.5V以下に下がっても動作するようにRを2.2Kから1.2Kに代えた。これによってラジオ動作時の消費電流が0.85mA位から1.5mA位に上昇した。

8) 基本的な使用法

使用法例 (SleepTimerモード(ロータリーSW位置で“1”(設定時間30分)を使う場合、ラジオのメカニカル式電源SWはONにして置く)

a)       連続/タイマー選択SWタイマーを、ロータリーSW“1”を選択する。

b)       PICの電源SWを入れる。

c)       Reset SWを押す。

LED(Red)が点灯して30分間ラジオが動作し、そして停止する。同じことを繰り返したければReset SWを再び押す。

注: バックアップ電流が16mA前後と依然小さいので通常はPICの電源SWをONにしておいて、Reset SW押してラジオを聴く。連続/タイマー選択SW連続を選ぶ場合(連続してラジオを聴く)は省エネのため電源SWを切っておく

WakeupTimerモードを使う場合はロータリーSW位置を“5,6,7,8,9”から選びReset SWを押す。

 

プログラム

 低電流消費のSleepコマンドを使う場合、誤差がかなり大きく修正しないと使えない。例えば、30分間Sleep状態にするには"Sleep 1800"(秒)で良いはずであるが、実際には32分3秒(=1923秒)になった。したがって、1800/1923=0.936 で得られる値0.936を理論値に掛けて補正してやる必要がある。すなわち、1時間の場合 3600 x 0.936=3369.6 -> 3370という値を使う。すると、設定時間が1時間では実測値が1時間5秒とかなり正確になった。一方、WakeupTimerではPauseを使って時間稼ぎをするので誤差は比較的小さいので、ほんの僅かの修正ですんだ。 

 

'**********************************************

'RadioControllerSWRotSW.bas  2011.7.9 new works OK!

'16F688 used

'Compiled by PICBasic Pro

'Sleep and wake-up timer

'Rotary SW (0-9) used as time-input device

'Sleep command used instead of For I=1 To 30 -> Pause 60000 -> Next I

 

'***** Pin Connection *******

'Pin 1 - Vdd (+3V)

'Pin 14 - GND

'Pin 4 - MCLR (Reset)

'Pin 5 (RC5) - WlkupONLED (Green)

'Pin 10 (RC0) - Rot1SWP1 -> R1SW1

'Pin 9 (RC1) - Rot2SWP2 -> R2SW2

'Pin 8 (RC2) - Rot4SWP3 -> R4SW3

'Pin 7 (RC3) - Rot8SWP4 -> R8SW4

'Pin 12 (RA1) - RelayDrive

 

'***** Program *******

CMCON0=7

ANSEL=0

ADCON0=0 'ADC disable

TRISA=%001000

TRISC=%001111

RelayDrvOut var PORTA.1

R1SW1 var PORTC.0

R2SW2 var PORTC.1

R4SW3 var PORTC.2

R8SW4 var PORTC.3

WkupLED var PORTC.5

I var Word

 

RelayDrvOut=0

 

IF (R1SW1=0) AND (R2SW2=0) AND (R4SW3=0) AND (R8SW4=0) Then RotSWP0  ‘以下の10行でロータリーSWの位置を検知して、各タイマーに飛ぶ。上のコード表に対応。

IF (R1SW1=1) AND (R2SW2=0) AND (R4SW3=0) AND (R8SW4=0) Then RotSWP1

IF (R1SW1=0) AND (R2SW2=1) AND (R4SW3=0) AND (R8SW4=0) Then RotSWP2

IF (R1SW1=1) AND (R2SW2=1) AND (R4SW3=0) AND (R8SW4=0) Then RotSWP3

IF (R1SW1=0) AND (R2SW2=0) AND (R4SW3=1) AND (R8SW4=0) Then RotSWP4

IF (R1SW1=1) AND (R2SW2=0) AND (R4SW3=1) AND (R8SW4=0) Then RotSWP5

IF (R1SW1=0) AND (R2SW2=1) AND (R4SW3=1) AND (R8SW4=0) Then RotSWP6

IF (R1SW1=1) AND (R2SW2=1) AND (R4SW3=1) AND (R8SW4=0) Then RotSWP7

IF (R1SW1=0) AND (R2SW2=0) AND (R4SW3=0) AND (R8SW4=1) Then RotSWP8

IF (R1SW1=1) AND (R2SW2=0) AND (R4SW3=0) AND (R8SW4=1) Then RotSWP9

 

RotSWP0: 'SleepTimer 15min 15分のSleepタイマ

WkupLED=0

High RelayDrvOut  'Relay ->1

Sleep 843 '15 min timer  (instead of 900) 843は補正した値。Sleepコマンドは省エネに貢献するが誤差が大きいので補正は必須。

Low RelayDrvOut  'Relay ->0

Goto FinishRadio

 

RotSWP1: 'SleepTimer 30min

WkupLED=0

High RelayDrvOut  'Relay ->1

Sleep 1685 '30 min timer (instead of 1800)

Low RelayDrvOut  'Relay ->0

Goto FinishRadio

 

RotSWP2: 'SleepTimer 1hr

WkupLED=0

High RelayDrvOut  'Relay ->1

Sleep 3370 '1 hr timer (instead of 3600)

Low RelayDrvOut  'Relay ->0

Goto FinishRadio

 

RotSWP3: 'SleepTimer 2hrs

WkupLED=0

High RelayDrvOut  'Relay ->1

Sleep 6740 '2 hrs timer  (instead of 7200)

Low RelayDrvOut  'Relay ->0

Goto FinishRadio

 

RotSWP4: 'SleepTimer 3hrs

WkupLED=0

High RelayDrvOut  'Relay ->1

Sleep 10110 '3 hrs timer (instead of 10800)

Low RelayDrvOut  'Relay ->0

Goto FinishRadio

 

RotSWP5: 'WakeupTimer 30min 30分のWakeupタイマ

Low RelayDrvOut  'Relay ->0

I=0

For I=1 To 120  '30 min timer

Pause 15000  '15 sec

Gosub WkupLEDF  ‘サブルーチンに飛んでLED(G)を点灯させる

Next I

High RelayDrvOut  'Relay ->1

Goto WakeupRadio

 

RotSWP6: 'WakeupTimer 1hr

Low RelayDrvOut  'Relay ->0

I=0

For I=1 To 239  '1 hr timer (instead of 240)

Pause 15000

Gosub WkupLEDFl

Next I

High RelayDrvOut  'Relay ->1

Goto WakeupRadio

 

RotSWP7: 'WakeupTimer 3hr

Low RelayDrvOut  'Relay ->0

I=0

For I=1 To 717  '3 hr timer for wakeup (instead of 720)

Pause 15000

Gosub WkupLEDFl

Next I

High RelayDrvOut  'Relay ->1

Goto WakeupRadio

 

RotSWP8: 'WakeupTimer 6hr

Low RelayDrvOut  'Relay ->0

I=0

For I=1 To 1434  '6 hr timer for wakeup (instead of 1440)

Pause 15000

Gosub WkupLEDFl

Next I

High RelayDrvOut  'Relay ->1

Goto WakeupRadio

 

RotSWP9: 'WakeupTimer 8hr

Low RelayDrvOut  'Relay ->0

I=0

For I=1 To 1912 '8 hr timer for wakeup (instead of 1920)

Pause 15000

Gosub WkupLEDFl

Next I

High RelayDrvOut  'Relay ->1

Goto WakeupRadio

 

WkupLEDFl: 'LED flashing subroutine LED(G)を15秒に1回50ms間点灯させるルーチン

WkupLED=0

High WkupLED

Pause 50  '50 ms

Low WkupLED

Return

 

WakeupRadio  ‘ラジオを30分間鳴らす:

I=0          

For I=1 To 30 '30 min timer

Pause 60000

Next I

Low RelayDrvOut

Goto FinishRadio

 

FinishRadio: ‘Endで終わり、低電流消費の状態に入る

End

'****** End of Program ********

 

'Note:

  'melabs U2 Programmer's configurations 16F688

  'FOSC - INTOSC; WDTE – Enable*; Power-up Timer – Disable    *Important!

  'MCLRpin - Reset; BODEN - Disable; Internal External Swith Over - Disable,

  'Fail-Safe Clock Monitor - Disable, CD - Disable; Dtata EPPROM - Disable

 

Simple Sleep & Wakeup Timer for Battery-operated Radio with Mechanical Power Switch – Improved type (English version of the above Electronics Project 59 in Japanese)

The previous timer (in Electronics Project 58) has been modified by replacing the external batteries driving PIC with radio's built-in batteries and the slide SW with a rotary SW. As a result, the entire circuit became simpler and the total numbers of set-up times for Sleep & Wakeup Timer increased up to 10. Now you can choose 15min, 30 min, 1hr, 2hrs and 3hrs in Sleep mode, and 30 min, 1hr, 3hrs, 6hrs and 8hrs in Wakeup mode.  Because the power to drive PIC16F688 is taken from radio's built-in batteries this time, an extra wire (going to PIC's GND) needs to be connected from the built-in batteries as shown in the circuit diagram. A rotary SW having 10 dial positions and 4 output pins was used. The program reads 4-bit codes from this rotary SW. Since the timer operates using batteries, current saving is very important. The pull-up resistors 500K and 33K used in Rotary SW were selected so that power consumption was reduced to the lowest possible level and at the same time the input levels to PORTs - RC0, RC1,RC2 and RC3 could stabilize at about 2.6V for H and about 0.35V for L. The power consumption measured in Sleep mode (Radio ON) (using Cassette Tape Radio AIWA CS-P506) was about 0.60 mA and dropped to 16mA after the execution of End command (in standby state). In Wakeup mode, meanwhile, when executing the time counting routine for a preset time (e.g. 30 min) (Radio OFF), a current of 0.32mA was consumed and when the radio was turned on and operating the power consumption increases to about 1.5mA. After the program finishes with End command, the power consumption dropped to 9.2mA. Two LEDs are used; the red LED lights up when the radio is ON, while the green LED lights up for 50 ms at a rate of once every 15 seconds in Wakeup mode to indicate that a time counting routine is being executed. To start the timer, Reset SW needs to be pressed since pressing the power SW of the timer's battery to turn on the timer often won't start the timer (due to the use of Sleep and End commands). Only when the radio is not used for a long period of time, the power SW of the timer's battery should be turned off.

                                 

This is a rotary SW with 10 dial positions and 4 outputs.                             Completed Sleep & Wakeup Timer circuit board measuring 30 mm by 70 mm.

 

Timer circuit board mounted on AIWA's Cassette Tape Radio

 

Dial position, mode and set-up time of Rotary SW

Dial position

Mode

Set-up Time

0

SleepTimer

15 min

1

SleepTimer

30 min

2

SleepTimer

1 hr

3

SleepTimer

2 hrs

4

SleepTimer

3 hrs

5

WakeupTimer

30 min

6

WakeupTimer

1 hr

7

WakeupTimer

3 hrs

8

WakeupTimer

6 hrs

9

WakeupTimer

8 hrs

 

                                          The voltage range of power supplied by 1.5V battery x 2 or 3 is suitable for driving 16F688. Examples of battery connections are shown below.

The important point is that the number of batteries (1.5V) between B and D needs to be limited to 2 or 3 (cf. 4 batteries=over 6V too high for PIC).

Additionally, in case two of 4 batteries are used for driving PIC for some time, the voltage of those two batteries is expected to drop considerably

compared with the remaining two. So it is advisable to exchange those two pairs of batteries after a certain period of time, just like rotating your car tires..

 

How to use the Timer (in case Timer mode of Continuous/Timer Selection SW is selected)

1) Turn ON the power SW of the timer.

2) Set Continuous/Timer Selection SW to Timer, and Time Selection SW as you like.

3) Push the Reset SW. to activate the timer.

4) (Additional information 2011.7.29): The current limiting resistor for Photo Relay's internal LED was changed from 2.2K to 1.2K in order to prolong the life of batteries. This change slightly increased the power consumption when radio is ON up to about 1.5mA.

l       When a preset time expires, the radio stops working and enters into the sleep state with low power consumption after the execution of End command (Sleep mode) or the radio is turned on and operates for 30 min, followed by entering into the sleep state with low power consumption after the execution of End command (Wakeup mode).

 

Program

 The program is simple and straightforward, comprising mostly of time counting routines. The unique point may be the fact that PICBasic Pro's "Sleep" command was used, which is simply counting time while consuming very low power unlike "Pause" command. In fact, if "Sleep" command is used, the power consumption drops by about 30 percent compared with the case where "Pause" command is used. However, the accuracy of time of "Sleep" command was found to be not as high as that of "Pause" command. For example, "Sleep 1800" (unit in sec) is supposed to provide 30 minutes but in fact provided 1923 seconds. So using the value 1800/1923=0.936 for correction, the individual values used in "Sleep" for different times were determined. "Sleep 1685" will provide almost 30 minutes (+/- 2 sec).. The "Pause" command used in Wakeup mode provides more accurate times. Therefore, little correction was needed for its counting routines.

****************************************************

'RadioControllerSWRotSW.bas  2011.7.9 new works OK!

'16F688 used

'Compiled by PICBasic Pro

'Sleep and wake-up timer

'Rotary SW (0-9) used as time-input device

'Sleep command used instead of For I=1 To 30 -> Pause 60000 -> Next I

'***** Pin Connection *******

'Pin 1 - Vdd (+3V)

'Pin 14 - GND

'Pin 4 - MCLR (Reset)

'Pin 5 (RC5) - WlkupONLED (Green)

'Pin 10 (RC0) - Rot1SWP1 -> R1SW1

'Pin 9 (RC1) - Rot2SWP2 -> R2SW2

'Pin 8 (RC2) - Rot4SWP3 -> R4SW3

'Pin 7 (RC3) - Rot8SWP4 -> R8SW4

'Pin 12 (RA1) - RelayDrive

'***** Program *******

CMCON0=7

ANSEL=0

ADCON0=0 'ADC disable

TRISA=%001000

TRISC=%001111

RelayDrvOut var PORTA.1

R1SW1 var PORTC.0

R2SW2 var PORTC.1

R4SW3 var PORTC.2

R8SW4 var PORTC.3

WkupLED var PORTC.5

I var Word

 

RelayDrvOut=0

 

IF (R1SW1=0) AND (R2SW2=0) AND (R4SW3=0) AND (R8SW4=0) Then RotSWP0  'In the following 10 lines, the dial position of Rotary SW is read, jumping to the corresponding time counting routines.

IF (R1SW1=1) AND (R2SW2=0) AND (R4SW3=0) AND (R8SW4=0) Then RotSWP1

IF (R1SW1=0) AND (R2SW2=1) AND (R4SW3=0) AND (R8SW4=0) Then RotSWP2

IF (R1SW1=1) AND (R2SW2=1) AND (R4SW3=0) AND (R8SW4=0) Then RotSWP3

IF (R1SW1=0) AND (R2SW2=0) AND (R4SW3=1) AND (R8SW4=0) Then RotSWP4

IF (R1SW1=1) AND (R2SW2=0) AND (R4SW3=1) AND (R8SW4=0) Then RotSWP5

IF (R1SW1=0) AND (R2SW2=1) AND (R4SW3=1) AND (R8SW4=0) Then RotSWP6

IF (R1SW1=1) AND (R2SW2=1) AND (R4SW3=1) AND (R8SW4=0) Then RotSWP7

IF (R1SW1=0) AND (R2SW2=0) AND (R4SW3=0) AND (R8SW4=1) Then RotSWP8

IF (R1SW1=1) AND (R2SW2=0) AND (R4SW3=0) AND (R8SW4=1) Then RotSWP9

 

RotSWP0: 'SleepTimer 15min

WkupLED=0

High RelayDrvOut  'Relay ->1

Sleep 843 '15 min timer  (instead of 900)

Low RelayDrvOut  'Relay ->0

Goto FinishRadio

 

RotSWP1: 'SleepTimer 30min

WkupLED=0

High RelayDrvOut  'Relay ->1

Sleep 1685 '30 min timer (instead of 1800)

Low RelayDrvOut  'Relay ->0

Goto FinishRadio

 

RotSWP2: 'SleepTimer 1hr

WkupLED=0

High RelayDrvOut  'Relay ->1

Sleep 3370 '1 hr timer (instead of 3600)

Low RelayDrvOut  'Relay ->0

Goto FinishRadio

 

RotSWP3: 'SleepTimer 2hrs

WkupLED=0

High RelayDrvOut  'Relay ->1

Sleep 6740 '2 hrs timer  (instead of 7200)

Low RelayDrvOut  'Relay ->0

Goto FinishRadio

 

RotSWP4: 'SleepTimer 3hrs

WkupLED=0

High RelayDrvOut  'Relay ->1

Sleep 10110 '3 hrs timer (instead of 10800)

Low RelayDrvOut  'Relay ->0

Goto FinishRadio

 

RotSWP5: 'WakeupTimer 30min

Low RelayDrvOut  'Relay ->0

I=0

For I=1 To 120  '30 min timer

Pause 15000  '15 sec

Gosub WkupLEDFl

Next I

High RelayDrvOut  'Relay ->1

Goto WakeupRadio

 

RotSWP6: 'WakeupTimer 1hr

Low RelayDrvOut  'Relay ->0

I=0

For I=1 To 239  '1 hr timer (instead of 240)

Pause 15000

Gosub WkupLEDFl

Next I

High RelayDrvOut  'Relay ->1

Goto WakeupRadio

 

RotSWP7: 'WakeupTimer 3hr

Low RelayDrvOut  'Relay ->0

I=0

For I=1 To 717  '3 hr timer for wakeup (instead of 720)

Pause 15000

Gosub WkupLEDFl

Next I

High RelayDrvOut  'Relay ->1

Goto WakeupRadio

 

RotSWP8: 'WakeupTimer 6hr

Low RelayDrvOut  'Relay ->0

I=0

For I=1 To 1434  '6 hr timer for wakeup (instead of 1440)

Pause 15000

Gosub WkupLEDFl

Next I

High RelayDrvOut  'Relay ->1

Goto WakeupRadio

 

RotSWP9: 'WakeupTimer 8hr

Low RelayDrvOut  'Relay ->0

I=0

For I=1 To 1912 '8 hr timer for wakeup (instead of 1920)

Pause 15000

Gosub WkupLEDFl

Next I

High RelayDrvOut  'Relay ->1

Goto WakeupRadio

 

WkupLEDFl: 'LED (green) flashing subroutine, flashing at a rate of once every 15 seconds

WkupLED=0

High WkupLED

Pause 50  '50 ms

Low WkupLED

Return

 

WakeupRadio:

I=0          

For I=1 To 30 '30 min timer – radio operating for 30 min

Pause 60000

Next I

Low RelayDrvOut

Goto FinishRadio

 

FinishRadio:

End  'Entering into the low power consumption mode

'****** End of Program ********

 

'Note:                                                                                             

  'melabs U2 Programmer's configurations for 16F688

  'FOSC - INTOSC; WDTE – Enable*; Power-up Timer – Disable    * Important!

  'MCLRpin - Reset; BODEN - Disable; Internal External Swith Over - Disable,

  'Fail-Safe Clock Monitor - Disable, CD - Disable; Dtata EPPROM - Disable

 

Menu Pageへ戻る

Topへ戻る