Arduino(sanguino)を使ったNTP時計
去年からarduinoを使ったNTP時計をボチボチと作成中であります。 ようやくある程度の形になってきましたので、メモとして書いておこうと思います。
構成に関しては幾多の変遷を辿りまして最終的には以下の構成になりました。 本当はsanguinoを使う予定は全くなかったのですが、プログラム容量が足りなくなってしまいやむなく変更しました。
使いまわせるように考えて、メイン側構成で7セグ表示するためには不要なはずのStepUpコンバーター回路を入れています。 標準状態ではMC34063Aの上限の40Vまで、外部MOSFETを搭載すれば300V位までは出ます。なぜかと言いますと、 最終的には表示部だけ載せ替えれてニキシー管を駆動したおと思っているからです~。
回路図載せておきますけど、あまり綺麗に書けていません…。 IDEはsanguino対応のため内容書き換えしてライブラリの方も随分中身をいじりました。
せっかくEthernetモジュールを搭載してNTPを取得しているので、 Webクライアントから現在の日時と設定情報の確認と変更が出来るようにしています。(設定画面とかはあとでアップします)
RTC用のライブラリが結構使えそうな予感です。秋月の8564NBにも対応させてBCD変換なしで時刻設定可能になっています。(その分容量ちょっと大きいです)
最終的には基盤を起こしてある程度はちゃんとした形にしてみたいです。
■回路図
■構成
- メイン構成
AVR:arduino(sanguino 644P)
USB-Serial:FT232RL
RTC:DS1307+BackupCap
ETH:ENC28J60
StepUp:MC34063A(NJM2360A)+IRFD220(MOSFET)
Senser(Temp):DS18B20
- 表示部構成
Display:7SegmentLED(1inch)
DisplayDriver:MAX7219
DriveIC:74HC7066 or 2SA1015+ULN2003
Senser(Lux):S9648-100
※:表示部構成はモジュラー形式で差し替え可能(4インチとかの7セグも駆動できます)
■使用ライブラリ&スケッチ
Arduino開発環境 Arduino 0023-IDE(差分) ※:arduino-0023_diff(Arduino 1.0には未対応)
使用ライブラリ(一部機能追加修正)
MAX7219用ライブラリ(表示用キャラクタ修正):LedControl
RTC用ライブラリ(ゼロリセット機能追加): RTClib(DS1307/8564NB両対応)
ENC28J60用ライブラリ(NTP用機能有効化):EtherShield
DS18B20用ライブラリ:OneWire
SWチャタリング防止ライブラリ:Bounce
使用スケッチ: ※:テスト用のデバッグコードそのまま入っていますのでかなり読みにくい上汚いです。
■参考情報サイト
What Is Sanguino? – Sanguino.cc http://sanguino.cc/
ENC28J60 ≪ Andy’s Life http://blog.thiseldo.co.uk/?tag=enc28j60
DS1307 RTC tutorial http://www.ladyada.net/learn/breakoutplus/ds1307rtc.html
【コラム】愉しみを数ボルト (2) パワーMOS-FETを使おう | パソコン | マイナビニュース http://news.mynavi.jp/series/volt/002/index.html
なんでも作っちゃう、かも。 Arduinoで遊ぼう – フォトICダイオード S9648-100 を使って明るさを求める http://arms22.blog91.fc2.com/blog-entry-416.html
なんでも作っちゃう、かも。 Arduinoで遊ぼう – リアルタイムクロック http://arms22.blog91.fc2.com/blog-entry-232.html
arduino使い方:RGBLEDの色を段々に変化点灯 http://www.geocities.jp/zattouka/GarageHouse/micon/Arduino/RGBLED/RGBLED1.htm
色彩表示温度計シールド (arduino): Modelisme hebdomadaire http://skt48.cocolog-nifty.com/blog/2011/04/post-8fbb.html
Arduino playground – LEDMatrix http://arduino.cc/playground/Main/LEDMatrix
Arduino playground – OneWire http://www.arduino.cc/playground/Learning/OneWire
Arduino playground – Bounce http://www.arduino.cc/playground/Code/Bounce