Skip to content

Commit

Permalink
Merge pull request #61 from beabel/develop_304
Browse files Browse the repository at this point in the history
Develop 304 to main
  • Loading branch information
beabel authored Aug 27, 2024
2 parents 552189c + 41550eb commit e99c54d
Show file tree
Hide file tree
Showing 17 changed files with 2,048 additions and 1,473 deletions.
12 changes: 10 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ NEW SINCE V3.0.0

5. Alarm Setting possible on Touchscreen (Big Thx to JeaneLG)

NEW SINCE V3.0.4

6. complete Code equal comments everywhere and more Tabs

At the time of publishing this blog article, a complete set was available for purchase from AZ-Delivery. Currently this is not offered, but all required parts can be ordered individually.


Expand All @@ -69,6 +73,10 @@ NEU seit V3.0.0

5. Alarm Einstellungen auch auf dem Touchscreen möglich (Danke an JeaneLG)

NEU seit V3.0.4

6. Kompletter Code einheitlich kommentiert und mehr Tabs

Zum Zeitpunkt der Veröffentlichung des Blogartikels gab es ein vollständiges Set bei AZ-Delivery zu kaufen. Aktuell wird dies nicht angeboten, aber alle benötigten Teile können einzeln bestellt werden.

# Informationen
Expand All @@ -78,8 +86,8 @@ Zum Zeitpunkt der Veröffentlichung des Blogartikels gab es ein vollständiges S
- ESP32 von Espressif Systems

**Bibliotheken:**
- [Adafruit_ILI9341 by Adafruit Version 1.6.00](https://github.com/adafruit/Adafruit_ILI9341)
- [Adafruit_GFX by Adafruit Version 1.11.9](https://github.com/adafruit/Adafruit-GFX-Library)
- [Adafruit_ILI9341 by Adafruit Version 1.6.1](https://github.com/adafruit/Adafruit_ILI9341)
- [Adafruit_GFX by Adafruit Version 1.11.10](https://github.com/adafruit/Adafruit-GFX-Library)
- [XPT2046_Touchscreen by Paul Stoffregen Version 1.4.0](https://github.com/PaulStoffregen/XPT2046_Touchscreen)
- [Touchevent by Gerald-Lechner Version 1.3.0](https://github.com/GerLech/TouchEvent)
- [ESP8266Audio by Earle F. Philhower Version 1.9.7](https://github.com/earlephilhower/ESP8266Audio)
Expand Down
22 changes: 22 additions & 0 deletions radiowecker/00_librarys.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// Bibliotheken für WiFi und Over-the-Air (OTA) Updates
#include <WiFi.h>
#include <ArduinoOTA.h>

// TFT & Touchscreen Bibliotheken
#include <Adafruit_GFX.h> // Basisbibliothek für Grafikanzeige
#include <Adafruit_ILI9341.h> // Treiberbibliothek für das ILI9341 TFT-Display
#include <XPT2046_Touchscreen.h> // Treiberbibliothek für das XPT2046 Touchscreen
#include <TouchEvent.h> // Bibliothek zur Analyse von Touchscreen-Ereignissen

// ESP32 Bibliothek zum Speichern von Einstellungen im Flash-Speicher
#include <Preferences.h>

// Bibliothek für den eingebauten Webserver
#include <WebServer.h>

// Bibliotheken für Audio-Funktionen
// Enthält Klassen für die Audiowiedergabe und -verarbeitung
#include <AudioFileSourceICYStream.h> // Klasse für den Eingabestream von ICY (Internet Radio) Streams
#include <AudioFileSourceBuffer.h> // Klasse für das Puffern von Audio-Daten
#include <AudioGeneratorMP3.h> // MP3-Decoder Klasse
#include <AudioOutputI2S.h> // Klasse für die Audioausgabe über I2S (Inter-IC Sound) Schnittstelle
23 changes: 23 additions & 0 deletions radiowecker/00_pin_settings.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
// Pin-Definitionen für verschiedene Komponenten des Projekts

// Pin für den Lichtsensor (LDR)
#define LDR 36

// Pin für den Buzzer auf dem originalen Az-Delivery TouchMod
#define BEEPER 21

// Audio-Pins
#define LRCLK 25 // Left-Right Clock für die Audioausgabe
#define BCLK 26 // Bit Clock für die Audioausgabe
#define DOUT 33 // Daten-Ausgang für die Audioausgabe

// Pins für den Touchscreen
#define TOUCH_CS 14 // Chip Select für den Touchscreen
#define TOUCH_IRQ 27 // Interrupt-Anschluss für den Touchscreen

// Pins für das TFT-Display
#define TFT_CS 5 // Chip Select für das TFT-Display
#define TFT_DC 4 // Data/Command Pin für das TFT-Display
#define TFT_RST 22 // Reset-Pin für das TFT-Display
#define TFT_LED 15 // Hintergrundbeleuchtung des TFT-Displays
#define LED_ON 0 // Logikpegel für die Hintergrundbeleuchtung (0 = Ein)
73 changes: 73 additions & 0 deletions radiowecker/00_settings.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
// Instanzen der Preferences-Klasse für die Speicherung von Einstellungen
Preferences pref; // Allgemeine Instanz für die Nutzung der Preferences
Preferences sender; // Zusätzliche Instanz, möglicherweise für spezielle Konfigurationen

// Struktur zur Speicherung der Stationsdaten
typedef struct {
char url[150]; // URL des Streams der Station
char name[32]; // Name der Station
uint8_t enabled; // Flag zur Aktivierung der Station (1 = aktiv, 0 = inaktiv)
} Station;

// Konstanten
#define STATIONS 30 // Anzahl der Stationen in der Liste
#define MINUTES_PER_DAY 1440 // Anzahl der Minuten in einem Tag (24 Stunden * 60 Minuten)

// Globale Variablen
Station stationlist[STATIONS]; // Liste der verfügbaren Stationen

// Variablen zur Speicherung von Konfigurationsdaten
String ssid = ""; // SSID für die WLAN-Verbindung
String pkey = ""; // Passwort für die WLAN-Verbindung
String ntp = "de.pool.ntp.org"; // URL des NTP-Servers zur Zeitabgleich
uint8_t curStation = 0; // Index der aktuell ausgewählten Station in der stationlist
uint8_t curGain = 200; // Aktuelle Lautstärke (Gain)
uint8_t snoozeTime = 30; // Schlummerzeit in Minuten
uint16_t alarm1 = 390; // Erste Alarmzeit (6:30 Uhr in Minuten nach Mitternacht)
uint8_t alarmday1 = 0B00111110; // Gültige Wochentage für den ersten Alarm (Beispiel: 00111110 = Montag bis Freitag)
uint16_t alarm2 = 480; // Zweite Alarmzeit (8:00 Uhr in Minuten nach Mitternacht)
uint8_t alarmday2 = 0B01000001; // Gültige Wochentage für den zweiten Alarm (Beispiel: 01000001 = Sonntag und Samstag)
uint8_t actStation = 0; // Index der aktuellen Station in der Liste, verwendet für das Streaming
uint8_t bright = 25; // Helligkeit in Prozent. 0 bedeutet, dass der LDR die Helligkeit regelt

// Weitere globale Variablen
uint32_t lastchange = 0; // Zeitpunkt der letzten Auswahländerung
uint8_t snoozeWait = 0; // Verbleibende Minuten für den Schlummermodus
uint16_t alarmtime = 0; // Nächste relevante Alarmzeit
uint8_t alarmday = 8; // Wochentag für den nächsten relevanten Alarm oder 8 bedeutet Alarm deaktiviert
char title[64]; // Zeichenarray zur Speicherung der Metadaten-Nachricht
bool newTitle = false; // Flag zum Signalisieren eines neuen Titels
uint32_t tick = 0; // Letzter Wert des Tick-Counters zur Auslösung zeitgesteuerter Ereignisse
uint32_t discon = 0; // Tick-Counter-Wert zur Berechnung der Zeit der Trennung
uint16_t minutes; // Aktuelle Anzahl der Minuten seit Mitternacht
uint8_t weekday; // Aktueller Wochentag
struct tm ti; // Zeitstruktur mit der aktuellen Zeit
int16_t lastldr; // Letzter Wert vom LDR-Sensor zur Erkennung von Änderungen
uint32_t start_conf; // Zeitpunkt des Betretens des Konfigurationsbildschirms
boolean connected; // Flag zum Signalisieren einer aktiven Verbindung
boolean radio = false; // Flag zum Signalisieren der Radiowiedergabe
boolean clockmode = true; // Flag zum Signalisieren, dass die Uhrzeit auf dem Bildschirm angezeigt wird
boolean configpage = false; // Flag zum Signalisieren, dass die Konfigurationsseite angezeigt wird
boolean radiopage = false; // Flag zum Signalisieren, dass die Radioauswahlseite angezeigt wird
boolean alarmpage = false; // Flag zum Signalisieren, dass die Alarm-Einstellseite angezeigt wird

// Definitionen für die Textausrichtung
#define ALIGNLEFT 0 // Textausrichtung: linksbündig
#define ALIGNCENTER 1 // Textausrichtung: zentriert
#define ALIGNRIGHT 2 // Textausrichtung: rechtsbündig

// Definitionen für Schriftarten
#define FNT9 &AT_Standard9pt7b // Schriftart 9pt
#define FNT12 &AT_Bold12pt7b // Schriftart 12pt
#define LS 23 // Zeilenabstand

// WLAN-Konfiguration
#define NETWORK_NAME "radioweckerlanname" // Definiert den Hostnamen
#define AP_NAME "radioweckerconf" // Definiert den SSID-Namen des Soft-AP

// Zeitzonen-Definition für Mitteleuropa (Deutschland, Frankreich, Italien, Spanien, etc.)
#define TIME_ZONE "CET-1CEST,M3.5.0/02,M10.5.0/03" // Zeitzone für Mitteleuropa mit Sommerzeitregelung

// OTA-Konfiguration
#define OTA_HOSTNAME "radiowecker" // Definiert den Hostnamen für OTA Update
#define OTA_PASSWORD "weckerupdate" // Definiert das Passwort für OTA Update
24 changes: 24 additions & 0 deletions radiowecker/00_texte.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#ifndef TEXTE_H
#define TEXTE_H

#define TXT_DISCONNECT "Disconnect"
#define TXT_SOFT_AP_DISCONNECT "Soft AP disconnect"
#define TXT_SET_WLAN_MODE "Set WLAN Mode"
#define TXT_CONNECTING_TO "Verbindung zu "
#define TXT_CONNECTING_ESTABLISH " herstellen"
#define TXT_NO_CONNECTION "Keine Verbindung! \nStarte Access-Point."
#define TXT_IP_ADDRESS "IP-Adresse = "

#define TXT_RECONNECTED "Reconnected"
#define TXT_NOT_CONNECTED "Nicht verbunden"
#define TXT_CONNECT_TO_AP "Verbinde dich mit SSID "
#define TXT_CONFIG_IP "Einstellung auf IP: "

#define TXT_OK "OK"

//day and month names
const char* const PROGMEM days[] = { "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag" };
const char* const PROGMEM days_short[] = { "So", "Mo", "Di", "Mi", "Do", "Fr", "Sa" };
const char* PROGMEM months[] = { "Jan.", "Feb.", "März", "April", "Mai", "Juni", "Juli", "Aug.", "Sept.", "Okt.", "Nov.", "Dez." };

#endif // TEXTE_H
Loading

0 comments on commit e99c54d

Please sign in to comment.