GPS付きミニNTPサーバー


元ネタ

ハードウェア

・ESP32
・SSD1307
・DS3231
・GPSモジュール

数年前くらいに流行ったWemos Lolin ESP32 OLEDにGPS繋げば、とりあえず動きます。
*このボードの場合、書き込み時にBOOT押しながらEN押してリセットすると書き込みできます。
DS3231は繋げてみたけれども、CPUパニックになるので使えませんでした。

配線

GPS-ESP32
PPS-GPIO 25
TX-RX GPIO 13
RX-TX GPIO 15
GND-GND
5V-5V

DS3231-ESP32
SDA-SDA GPIO 5
SCK-SCK GPIO 4
GND-GND
3.3v-3.3v

モジュール

公式によると以下のモジュール

U8G2 by oliver
Time by Michael Magolis
Ticker by Bert Melis
TinyGPS++ ( https://github.com/mikalhart/TinyGPSPlus )
RTCLib by Adafruit
ArduinoJson 6.10.0
CRC32 by Christopher Baker

ArduinoのボートマネージャーからTinyGPS++以外はインストールできます。
TinyGPS++はgithubからzipをダウンロードしてきて、Arduinoに入れるパターン。
ArduinoJson 6.10.0だとうちの環境ではエラー出るので、ArduinoJson 6.10.1を入れました。

ソース修正

Firmware.ino
83行目 #define  GPSBAUD ( 9600 ) #GPSモジュールとの通信速度。
130行目 bool pps_active = true; #PPS
687行目  DateTime now = (0,0,0,0,0,0);

Arduino ESP32 filesystem uploader

index.html等をアップロードするツール。
https://github.com/me-no-dev/arduino-esp32fs-plugin

ダウンロードしたzipを解凍して、README.mdの指示にしたがってプラグインを設置。
OSXの場合は/Applications/Arduino.app/Contents/Java/tools/以下に、ESP32FSディレクトリをコピーし、Arduinoを再起動。
設置に成功すると、ツール→ESP32 Sketch Data Uploadの項目が増えているので、クリックするとindex.html等をアップロードできます。

WiFiで接続して設定を入れる

Elektor NTP Serverの名前でWiFi APがあるので接続、Webブラウザで192.168.4.1にアクセスし、設定を入れる。
タイムゾーンやWiFi設定やネットワーク周りの設定ができます。
Arduinoライブラリを眺めるとAvahiも入ってるっぽい?んですが、設定等はどこにあるんだろう?