(Work in Progress) ESP Home „Nato“ Uhr

Neben Lesbaren und einfachen Uhrzeiten hat sich jemand die Nato Zeit oder DateTimeGroup ausgedacht.

Das Format, welches  z.b. für den 6.12.2024 12:34Uhr wie  so aussieht: “ 061234ADec24″ wird auch im THW verwendet.

Daraus wurde in den letzten Tagen nun folgendes Projekt:

Machen wir mal eine schnelle Bauanleitung dafür. Was man benötigt:

  • Pico W (leider noch nicht der picow 2) – (ca. 7,50 €)
  • 3 Stück (4*  8×8 Dot Matrix LED Module mit max7219 chips)  (ca. 7€ Stück)
  • optional 1* RTC Modul / DS1307 oder DS3231 (Stück ca. 2,50€)
  • Lötkolben und Heißkleber ( natürlich kann man auch ein Gehäuse dafür drucken)
  • Instanz von Esphome . zum Beispiel in Homeassistant

Schritt für schritt Anleitung :

  1. Verbinden der Displays. Wichtig ist das man beachtet, wo der Dateneingang ist.

2. Die Eingangspins umbiegen und in die Ausgangs-Löcher einfädeln, dann verlöten.

3. Das ganze mit dem dritten Modul wiederholen.

4. Kabel abisolieren und an die Eingangspins der Displaymodule Verlöten.

5. Die Kabel auf dem PicoW verlöten:

  • VCC => Pin 40  => +5V
  • GND => Pin 38 => GND
  • D-IN => SPI0 TX => Pin5 / GPIO03
  • CS     => SPI0 CSn => Pin7 / GPIO05
  • CLK  => SPI0 SCK => Pin4 / GPIO02

6. Optional: Realtime Clock anschließen und Verlöten:

  • VCC => Pin 36 / 3.3V Out
  • GND => Pin 28 / GND
  • SDA => Pin 26 / I2C0 SDA / GPIO20
  • SCL => Pin 27 / I2C0 SCL / GPIO21

7. Schritt : alles mit Heisskleb an der Rückseite des Displays befestigen

8. Software aufspielen:

 die Software findest du hier : Lexorius/ESP-Home-DTG-Clock: ESP Home Project – with MAX7219 Digit Display

—————
esphome:
name: picow-clock-ds1307
friendly_name: PicoW-Clock-ds1307
on_boot:
then:
# read the RTC time once when the system boots
ds1307.read_time:

rp2040:
board: rpipicow

# Enable logging
logger:

# Enable Home Assistant API
api:
encryption:
key: „<enc>“

ota:
– platform: esphome
password: „<ota>“

wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password

# Enable fallback hotspot in case wifi connection fails
ap:
ssid: „Picow-Clock-Ds1307“
password: „<recover>“

i2c:
sda: 20
scl: 21
scan: true
id: mainbus

spi:
clk_pin: GPIO02
mosi_pin: GPIO03

#SPI0_SCK Pin 6
#SPI0_MOSI Pin 7
#SPI0_MISO Pin 4
#SPI1_SCK Pin 10
#SPI1_MOSI Pin 11
#SPI1_MISO Pin 8

display:
– platform: max7219digit
update_interval: 1s
cs_pin: GPIO05
num_chips: 12
scroll_speed: 0ms
intensity: 7
lambda: |
auto time = id(sntp_time).now();

// it.printf(0,0,id(digit_font),“%s“, id(Scrolltext).state.c_str());
if (time.is_valid()) {
if (time.is_dst ){

if ((int(time.second) % 2) == 0){
it.strftime(0, 0, id(digit_font), „%d %H%M B %b %y.“, id(sntp_time).now());
} else {
it.strftime(0, 0, id(digit_font), „%d %H%M B %b %y“, id(sntp_time).now());
}

} else {

if ((int(time.second) % 2) == 0){
it.strftime(0, 0, id(digit_font), „%d %H%M A %b %y.“, id(sntp_time).now());
} else {
it.strftime(0, 0, id(digit_font), „%d %H%M A %b %y“, id(sntp_time).now());
}

}
} else {
if (id(wifisignal).has_state()) {
it.printf(0, 0, id(digit_font), „Getting Time from NTP“);
}
else {
it.printf(0, 0, id(digit_font),“Connecting Wifi“);
}
}

font:
– file: „fonts/pixelmix.ttf“
id: digit_font
size: 8

sensor:

– platform: wifi_signal
name: „WiFi Signal Sensor“
id: wifisignal
update_interval: 60s

time:
– platform: sntp
id: sntp_time
timezone: Europe/Berlin
servers:
– 0.pool.ntp.org
– 1.pool.ntp.org
– 2.pool.ntp.org
on_time_sync:
then:
# … and update the RTC when the synchronization was successful
ds1307.write_time:

– platform: ds1307
# repeated synchronization is not necessary unless the external RTC
# is much more accurate than the internal clock
update_interval: never
# instead try to synchronize via network repeatedly …


8. UF2 Datei von ESP Home auf den PicoW kopieren und PicoW neu starten.

Fertig.