赤外線センサー & ICオルゴール
PIC12F683でOneShotを実現
写真は国立天文台 野辺山宇宙電波観測所
Monitor Display (監視表示)
先の「電子カレンダー」と似たようなプログラムではあるが、違いはアラーム動作に入ったことが眼で確認できるプログラムである。現在Unoにプログラムを書き込んで実験しています。
UnoはSRAM容量の制限がNanoより厳しく、アラームのすべてを記述したプログラムではありません。今後Nanoへ書き込み、すべての予定のアラームを書き込んだプログラムで実験する必要があります。
マイコン(Arduino Nano)が正しく時刻を検出しているか確認します。
そのためにマイコンにLCDを取付けて動きを表示することが必要です。
LCD表示様子_ACM 1602NI-FLW-FBW-M01-I2C接続キャラクタLCDモジュール 16x2行 白色バックライト付 を使用。
マイコンNanoのRestスイッチを押下すると、
Nanoへ書き込んだプログラム名を表示 [Rtc60SecIntLcdAlm_100] [Wk-1]
[9_Mon 16_Day] Wk-1 は0から数えて1番目の曜日 月曜日
現在時刻 日付 曜日(曜日番)を表示 [11:4:1]
60秒毎に割込み動作に入ります [その結果 in Func()]
通常動作に入ります [in Loop()]
*RTCは初期化した内容を保持するため
必ず電池でBackUp通電しておくこと。
(主原電OFFの前にBackUPを通電すれば良い)
以上によりこのLCD表示器を見れば、現在時刻および警報動作へ入ったときが確認できます。
----------------------------
3V電池 抵抗100Ω ダイオード RTC +電極 のハード。Uno 3.3V のルートに *ダイオードを入れた。
装置電流測定
Uno 3.3V 端子電源より 9.3mA を吐き出してる. RTCへは3V電池でBackUpの状態である
3V電池でBackUp その接続を外しても9.3mA と同じ値であった。
(4.5mA LCD照明を暗くして)
LCDの電源OFFでは 1mA ● <--- 今後SWを入れて構成すると良いと思う。
BackUp3V電池からRTCへの吐き出し電流は0.02mAであった。この状態は、Uno3.3VがRTCへ給電してある時である。
Uno3.3VがRTCへ給電STOPでは0.02mA であった。 ● <---- RTCをこの状態で保管できる。BackUp電池の消費を抑えながら保管できる。
--------------------
RTC(Real Time Clock) 電子カレンダーを作る
稼働中です
第2電源基板の作成
12Vバッテリー から5V 3.3V を生成します。これにより、3V駆動の装置にも対応できるようにしました。
収納する方法について。写真のような透明トレーの利用を考えています。ダイソーで入手しました。同トレーを重ねることができます。
重ねた場合の内部高さは25mmまでとなります。工作済の基板の高さを25㎜以内に収めるようにします。
これらのトレーを屋外BOXへ入れます。このBOX にはバッテリーも収納します。
BOXにきれいに収納できれば良いのですが?
やってみなければわかりません!
バッテリー端子への接続は、丸型端子を使用しました。バッテリーの電極のボルト径は直径8㎜とありました。丸型端子の穴径の表示もφ8mmとあります。
実際に適合するか心配になりました。丸型端子の穴径は実測すると直径8mmよりわずか大きいです。ピッタリ適合しました。
2個目のリアルタイムクロック RTC-8564NB
Arduino Uno も2個目を使用しました。
RTC-8564NB も2個目を使用しました。
RTC-8564NBは秋月電子通商で入手しました。
JP1,JP2,J3を有効にします。すなわち、半田上げします。
これによ、5pin,6pinの外付けプルアップ抵抗器は付ける必要がありません。
ただし、3pinへは2KΩの抵抗を付け+5Vへ接続します。
3pinは/INT 端子として機能させます。
RTC-8564NBの3pin ------- Uno 2pin を結線します。Active Low を検知するため、Normal(常時)Highとするために先ほどは2KΩの抵抗を付け+5Vへ接続したわけです。この作業をしないと、おかしな動作をします。何度も割込みへ入りました。
/INT 動作で内蔵の青色LEDが点灯します。
RTC-8564NB を2個ぐらい買って、1つはこのよう半田を上げて使用すると楽にプログラムに集中できます。もし、内蔵プルアップ抵抗器での電流を抑えたいなら、半田は上げないで外付け抵抗器(適切な抵抗値)で対処する方法もありと思います。
動作は見事です!! 動作と時刻確認は眼だけですと疲れます。音を利用すると確認は楽になります。それでブザーを入れました。トランジスタを入れて、駆動してください。ブザーはそれなりに電流が流れますから。
* 5Vブザーですが、音量をコントロールすることは難しいブザーです。
5Vで動作する仕様だとおもいます。
そこで、現在電子ブザーを製作中です。PICおよび小型スピーカーそしてトランジスタを使用します。そこへ、可変抵抗器によりベース電流をコントロールすることにより音量を調節できました。
セイコーエプソン・エプソントヨコム RTC-8564NB
ついにセイコーエプソン・エプソントヨコムのリアルタイムクロックIC(RTC-8564NB)を使ったクロックモジュールを使えました。(秋月電子通商)
I2Cインターフェース(2線式)で行えました。
■IC内に高精度クリスタルが内蔵されています。
■パーツは全て実装済み。8ピンDIPのICとしてお使いになれます。
■INT割り込み用のLED付
※ICは全て基板に実装済です。
(上記、4行は添付説明文より引用)
5,6pin はプルアップ処理が必要です。私の場合は敢えて外付け抵抗器によるプルアップ処理をしました。理由は、この抵抗値を変更して消費電流をできるだけ少なくしたいという事からです。
3pinは/INT 端子で、内蔵LEDを点灯させることができます。しかし、私は敢えて外付け抵抗器を接続してモニタしました。理由は消費電流を抑えるために、プログラム完成後は最終的に不要と判断しました。
*添付の回路図がややこしく、最初結線を間違えて通電しました。このモジュールのGNDは4pinです。VDDは8pinです。
*確実に60秒毎の/INT 信号を取得できました。説明書によると、60秒未満の割込みも可能なようです?。私の場合、幾度となくプログラムを試しましたが確認できませんでした。
30秒毎の割込みも試しましたが、できませんでした。
最初の結線を私がミスしたことにより、ハード部が壊れた?
オープン・ドレイン出力? この扱いの処理をしていなかった?
などの原因を今、考えています。が
●「60秒毎の/INT 信号を取得」で十分です。
添付の回路図を読み取る時注意が必要です。p2の回路図の8ピンを中心に見ます。p5の端子機能と対比する時間違わないように注意してください。
また、分の下一桁の条件も可能です。例えば、X1,X2 など下一桁に1分や2分となったときの
/INT 動作も可能です。
[曜日] 条件は、まだ私は試していません。可能なはずです。
検索条件式では、if文による条件論理を作ります。この条件式をdefine 定義すると、以降使用の利便性が格段に良くなります。
プログラムの一部
#define dawn (hour >= 4) && (hour < 6)
#define evening (hour >= 17 && hour < 19)
#define morning ((hour >= 6 && hour < 9))
#define day (hour >= 9 && hour < 17)
#define night1 (hour >= 19 && hour < 21 )
#define night2 (hour >= 21 && hour < 23 )
#define night (hour >= 19 && hour < 24 )
#define midnight ((hour >= 23 && minute >= 00) || (hour < 4 && minute >= 00))
このようにすることでプログラムがしやすくなりました。
[動作したプログラムを状況に応じて無償提供いたします]
下記メールアドレスまで、連絡を下されば下記プログラムのテキスト形式を添付して、返信します。
なお、恐れ入りますがこのメールアドレスは月に1回程度しか確認しませんので
返信が遅れることをご承知下さい。
studytom234@gmail.com
<以下の環境でプログラム作りをしました>
・パソコン Windows10 (win8のアップグレード)
・Arduino Uno
・リアルタイムクロック RTC-8564NB
---------------------------------------------------------
プログラムの構成は3部という3本から成り立っています。以下にその内訳を記します。
1本目[Initialize]
初期設定であり現在時刻を登録するプログラムです。
RTC-8564NBへ書き込むとき、コンパイル&書き込み時間による遅延を予測して(私の場合、設定時刻より30秒前に書き込みます。すなわち、30秒未来を設定時刻にします)
2本目[Read]
時刻を読み出すプログラムです。1本目の[Initialize] に影響を与えないプログラムです。
3本目[INT-Timer]
60秒毎に、RTC-8564NBの3pinにActive Low 信号を出します。この3pinは2KΩでプルアップ処理します。
以上の3本のプログラムで動作が確認できると思います。
プログラムには注釈(コメント)がたくさんついています。開発の過程そのものであり、自分自身の記憶の経過でもあります。利用される方は、自分なりの注釈に変更したり、あるいは削除してお使い下さい。
* RTC-8564NBのメモリバックアップ電源(電池)を取付けないと、メイン電源OFFのたびに時刻の初期設定を強いられます。
*1本目と2本目のプログラムが動作すると、うれしくなり自信がつきます。その後、3本目を試します。