(最初にことわっておきますが、PICからWROOMへATコマンドを送って時刻を取得します。Arduinoでやるやり方ではないです。)
PICマイコンとESP-WROOM-02で電波時計ならぬ、インターネットへ接続しNTPサーバから時刻を取得し自動で時刻修正する時計を作っていきたいと思います。早い話、電波時計のインターネット版だと思ってください。
夏休みの自由研究なんかにうってつけなんじゃないでしょうか?
概要:
・PICはPIC18F25K22-I/SPを使用
・ESP-WROOM-02は公式のNONOSファーム v1.5.4を使用
・プログラムを作って書込むのはPICだけ
・PICとWROOMの通信はUSARTでATコマンドを使用
・7セグをダイナミック点灯。7セグは秋月の[OSL40391-LG]を使用
・時計用のクロックは32.768kHz水晶発振子を使用
・1日に1回時刻を自動修正
・開発環境はMPLAB X v3.30, xc8 v1.3.7を使用
回路は以下の通り。
LED用の抵抗値は使用するLEDに合わせて適宜変えてください。
MPLAB X用プロジェクトファイル
ダウンロード:PIC18F25k22_WifiClock160622a.zip
このプログラムの改変は自由に行ってもらっても良いですが、再配布や直リンクは禁止とします。また、営利目的のための使用も禁止します。
このサイトへのリンクは歓迎です。
使い方:
①まずは、プログラムをご自分のWifi環境に書き換えてください。
変更する箇所はmain.cの冒頭のここの部分。
書換えたらビルドしてPICに書込んでください。
②初回起動時はSW1またはSW2を押したまま電源を投入するとWifiアクセスポイントへ接続をここみます。LEDが点灯したらSWを離してください。
2回目以降の起動はSWを押しながらでなくても最後に接続したアクセスポイントをWROOMは覚えているので自動で接続します。
(Wifiアクセスポイントの設定は2つ登録でき、SW1を押しながらのときとSW2を押しながらのときで切り替えることが可能)
③LEDが点滅になると時刻を調整している最中です(約1分)。
④約1分後、LEDが消灯すれば調整は成功。LEDが点灯だと失敗です。
通常時のスイッチ操作について
SW1を押すと押している間、時刻表示から秒表示に切り替わります。
時刻表示中にSW2を押すと時刻を1分進めます。長く押すとどんどん進めます。
秒表示中にSW2を押すと現在の時刻のまま秒だけ0秒にします。