DS3231、BME280、BH1750およびESP01を備えたLEDマトリックスNTPクロック
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 2 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
このプロジェクトについて
これが私をArduinoに惹きつけた理由です。ニックのLEDワードクロックに出くわし、作りたいと思いました。
彼のコードをダウンロードしてから、ESP01を追加するだけでなく、センサーとボタンを追加するようにコードを変更しました。
BH1750は、光の状態に応じてディスプレイを自動的に暗くするために使用され、夜間にディスプレイをオフにすることができます。 BME280は、温度、湿度、および圧力を示します。 ESP01は、pool.ntp.orgから時刻を取得するために使用されます。
設定を簡単に調整できるように、追加のボタンがあります。ボタンを使用して光センサーの設定を調整したり、フォントやNTP / DST / UTC設定を変更したりできます。
6つの新しいフォントが追加されました。http://dotmatrixtool.com/を使用してフォントを作成しました。
私はワードクロックにかなりの変更を加えました、それは今より多くのワードを持っていて、RAMを節約するためにPROGMEMにかなり移動しました。
Nickのプロジェクトページ:https://123led.wordpress.com/mini-led-clock/
私のコード:https://github.com/Ratti3/miniclock
未知のバグとあちこちの微調整を除けば、コードはこれで完成です。
光の状態に合わせて光センサーのコードを調整する必要があります。これは、窓の横に座っている明るい日光の下でコーディングしました。
ESP01はNTPを介して時刻を取得するために使用され、ESP01は不要な場合はスリープ(wifiオフ)するようにコード化され、UNIX形式で時刻を取得するためにシリアルを介してウェイクアップされます。 SSIDの名前とパスワードは、わかりやすくするためにArduinoコードを介して渡されます。
このバージョンには、DST / UTCおよびBSTの計算も含まれています。これらの設定は、メニューから調整または無効にできます。
設定はEEPROMに保存されます。つまり、電源をオフにしてから再度オンにすると、メニューから行った変更が保存されます。
これらはGithubのコードファイルです:
Githubのコード[https://github.com/Ratti3/miniclock]:Arduino LEDClock32x8.ino ProgmemData.hArduino ESP-01_NTP.ino LEDClock32x8_ESP01-NTP.ino ProgmemData.h
ESP01が実行されている場合、Arduinoシリアルはこれを表示します:
Arduino:NP要求をESP01ESP01に送信しました:Arduinoから受信したNTP要求[3の試行] SSIDへの接続:TheInternets .... connectedSSID:TheInternets、IPアドレス:192.168.0.135信号強度(RSSI): -42 dBm NTPパケットの送信先:195.195.221.100 [試行1] NTPパケットの送信先:195.195.221.100 [試行2] UNIX1562848457WiFiの無効化.... ok
今後の写真と手順の詳細...
<図>
<図>
<図> <図> <図> <図>
<図> <図>
<図> <図> <図>
すべてをまとめる:
<図> <図> <図> <図> <図> <図> <図> <図> <図> <図><図> <図> <図> <図> <図> <図> <図> <図> <図> <図>
<図> <図> <図> <図> <図> <図> <図> <図>
配線:
DS3231、BH1750およびBME280:SCLピン=A5SDAピン=A4 VCC =3.3vLEDマトリックス:CLK =D11 CS =D10 DIN =D12 VCC =5vスイッチ:D2-メニューD3-日付/ + D4-温度/ -D5-表示オプションESP01-オプションD7-ESP01のTXピンD6-ESP01のRXピン
変更できるグローバル変数は次のとおりです。
//グローバル変数(変更可能なデフォルト)、[]括弧内の数字は、その値のEEPROM保存場所です//クロック設定// [200]デフォルトの強度/明るさ(0〜15)、設定可能menubyteの強度=2を介して; // [201]デフォルトのクロックモード。デフォルト=0(basic_mode)byte clock_mode =0; // [206]ランダムモードの定義-数時間ごとに表示タイプを変更します。デフォルト=0(オフ)bool random_mode =0; // [207]フォントランダムモードを定義します-数時間ごとにフォントを変更します。 1 =ランダムフォントonboolrandom_font_mode =0; // [208] 12時間または24時間の時間を定義します。 0 =24時間。 1 =12時間ブールampm =0; //ライト設定// [202]デフォルトのディスプレイオン/オフモード。ライトセンサーで使用されます。 0 =通常、1 =常にオン、2-常にオフ、3-5 =hour_off_1,2,3byte display_mode =5で定義されます。 // [209]デフォルトの自動光強度設定boolauto_intensity =1; //これらの3つは、十分に暗い場合に時間光センサーが表示をオフにできることを定義します。形式は24時間です。このルーチンは、8.00とこれらの値の1つをチェックしますbyte hour_off_1 =21;バイトhour_off_2 =22; byte hour_off_3 =23; //フォント設定-これらはセットアップフォントメニューを介して設定されます。すべてのデフォルト値についてはset_font_case()ルーチンを参照してください:// [203]デフォルトクロックラージフォントstylebytefont_style =2; // [204]デフォルトのクロックラージフォントオフセットadjustmentbytefont_offset =1; // [205]デフォルトのクロックラージフォント列adjustmentbytefont_cols =6; // DSTNTPおよびUTC設定// [210] DST機能を有効にします、1 =有効、0 =disablebool dst_mode =1; // [211] NTP機能を有効にします、1 =有効、0 =disablebool ntp_mode =1; // DS3231に適用する前にNTP値を調整する秒数は、ESP01データバイトの処理に数百ミリ秒かかりますntp_adjust =1; // [213] UTCオフセット調整、hoursint8_t utc_offset =0; //毎日のNTP / DST同期が発生する時間。DSTmodebytentp_dst_hour=2を使用する場合は、午前2時に残しておく必要があります。 // NTPリクエストを再試行する回数1 =合計35秒(ish)、値1〜9バイトntp_max_retry =3; //データを受信していないときにntp()を終了するタイミングを計算するために使用されます。値は秒単位で、ntp_max_retrybyte ntp_timeout =45で乗算されます。 //グローバル定数-WiFiのSSIDとパスワード。SoftwareSerialを介してESP01に渡されます// SSIDとパスワードの合計の長さは72文字を超えることはできません// SSID名の長さ(例:SSID =MyWifi、ssid_len =6const byte ssid_len =8; // SSID名(例:MyWificonst char ssid [] ="YourSSID"; // SSIDパスワードの長さ。例:password =password、pass_len =8const byte pass_len =12; // SSIDパスワード(例:passwordconst char pass [] ="YourPassword";
コード
Ratti3のGithub
https://github.com/Ratti3/miniclock 回路図
BH1750はなく、BME280と同じように接続します 製造プロセス