ESP32-7SEG : Une horloge embarquée avec configuration réseau
ESP32-7SEG relie une horloge sur ESP32 à une configuration réseau et une interface HTTP. Le démarrage détermine si les paramètres Wi-Fi sauvegardés peuvent être réutilisés ou si le parcours de configuration est nécessaire.
Langages du dépôtKotlin 58.26%3
Parts calculées à partir des octets GitHub Linguist.
| Langage | % | Octets |
|---|---|---|
| Kotlin | 62 877 | |
| C++ | 42 693 | |
| C | 2 350 |
Aperçu
Pourquoi il existe
Firmware embarqué et contrôleur pour affichage 7 segments multi-chiffres sur microcontrôleur ESP32.
Cas d’usage
Affichage matériel déporté pour métriques ou domotique.
Démarrage
Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.
Références du dépôt
Extraits des guides du dépôt, dans leur langue d’origine. Les liens ouvrent la version du code consultée.
Prérequis et premier essai
Prerequisites
README.md
- Hardware: ESP32 FireBeetle board (v1.0), Adafruit 7-segment display (I2C backpack), breadboard, and jumper wires.
- Software: Git, PlatformIO or Arduino IDE, and necessary ESP32 libraries.
Software Installation
README.md
- Clone the Repository:
- Open and Configure the Project: Load the project into PlatformIO or the Arduino IDE. Install any required libraries as specified in platformio.ini or the project documentation.
- Upload to the ESP32: Compile and upload the code to your ESP32 board to start the project.
Prerequisites
readme.md
Software Installation
readme.md
- Clone the repository to your local machine.
- Open the project with your preferred IDE or editor that supports PlatformIO or the Arduino IDE.
- Install the necessary libraries mentioned in the platformio.ini file or the Arduino project.
- Upload the code to your ESP32 FireBeetle board.
Configuration et utilisation
Hardware Setup
README.md
- Display Connections: Connect the Adafruit 7-segment display to the ESP32 using the I2C interface. Make sure to connect the SCL and SDA pins correctly, along with VCC and GND for power.
- Power Supply: Power the ESP32 board through USB or an external power supply to ensure stable operation.
Usage
README.md
- Access the Web Server: After booting, the ESP32 launches a web server. Find its IP address in the serial monitor and navigate to it using a web browser.
- Update Display via Web Interface: Use the web interface to input and submit the content you want to be displayed. The ESP32 will update the 7-segment display in real-time.
Hardware Setup
readme.md
- Connect the 7-segment display to the ESP32 according to the provided wiring diagram.
- Ensure a stable power supply for the ESP32 board.
Usage
readme.md
After uploading the code to your ESP32 board:
- Connect the ESP32 to a power source.
- The ESP32 starts a web server accessible within your local network.
- Find the ESP32’s IP address from your serial monitor and visit the provided IP using a web browser.
- Use the web interface to update the 7-segment display’s content.
Développement et contributions
Contributing
README.md
Contributing
readme.md
Fonctions et composants 2
- Démarrage et connectivité
- setup initialise NVS et vérifie le résultat. Il charge les paramètres enregistrés, tente une connexion et revient à setupWiFi en cas d’échec. Ce parcours sert aussi lorsqu’aucun paramètre n’est sauvegardé.
- Modules d’affichage et web
- Après la configuration réseau, main.cpp appelle startClockDisplay et setupWebServer. display.cpp, wifi.cpp et web_server.cpp séparent l’affichage matériel, la connexion et le traitement HTTP.
Architecture
Les composants et leurs liens restent lisibles en texte. Le diagramme ajoute une vue interactive.
- Démarrage ESP32
- Paramètres NVS
- Connexion ou configuration Wi-Fi
- Affichage de l’horloge
- Interface HTTP
Liens vérifiés dans le dépôt.
Mermaid Diagramme interactif (chargement à l’ouverture)
Vue générale des composants et des échanges vérifiés dans le dépôt.

flowchart LR
subgraph group_firmware["ESP32 firmware"]
node_boot["Firmware startup<br/>[main.cpp]"]
node_wifi["Wi-Fi setup<br/>[wifi.cpp]"]
node_credentials[("Wi-Fi credentials<br/>[wifi.cpp]")]
node_timer_display["Timer display<br/>[display.cpp]"]
end
subgraph group_web["Web control"]
node_http_server["HTTP and WebSocket server<br/>[web_server.cpp]"]
node_web_pages["Browser interface<br/>[web_page.h]"]
end
subgraph group_android["Android app"]
node_android_entry["Android navigation<br/>[MainActivity.kt]"]
node_timer_ui["Timer controls"]
node_wifi_ui["Wi-Fi onboarding"]
node_settings_ui["Settings"]
node_browser_ui["Embedded browser view"]
node_stop_receiver["Timer stop receiver"]
node_settings_adapter["Settings list adapter<br/>[SettingsAdapter.kt]"]
end
subgraph group_android_net["Android networking"]
node_timer_api["Timer API contract<br/>[TimerApiService.kt]"]
node_retrofit["HTTP client setup"]
node_ws_client["WebSocket client<br/>[WebSocketClient.kt]"]
node_preferences[("App preferences")]
end
node_operator(("User"))
node_browser(("Browser"))
node_display_hw{{"7-segment display"}}
node_operator -->|"controls"| node_browser
node_browser -->|"submits controls"| node_http_server
node_boot -->|"loads or configures"| node_wifi
node_boot -->|"starts display"| node_timer_display
node_boot -->|"starts server"| node_http_server
node_wifi -->|"reads and writes"| node_credentials
node_http_server -->|"handles Wi-Fi routes"| node_wifi
node_http_server -->|"dispatches timer updates"| node_timer_display
node_http_server -->|"serves pages"| node_web_pages
node_timer_display -->|"drives display"| node_display_hw
node_operator -.->|"uses app"| node_android_entry
node_timer_ui -->|"requests timer actions"| node_retrofit
node_timer_ui -->|"opens timer socket"| node_ws_client
node_wifi_ui -->|"sends credentials"| node_retrofit
node_settings_ui -->|"uses adapter"| node_settings_adapter
node_settings_ui -->|"loads device data"| node_retrofit
node_retrofit -->|"creates service"| node_timer_api
node_retrofit -->|"initializes preferences"| node_preferences
node_timer_ui -->|"registers timer events"| node_stop_receiver
node_timer_api -.->|"calls matching routes"| node_http_server
node_ws_client -.->|"connects to socket"| node_http_server
class node_boot,node_wifi,node_credentials,node_timer_display,node_operator,node_browser toneBlue
class node_http_server,node_web_pages toneAmber
class node_android_entry,node_timer_ui,node_wifi_ui,node_settings_ui,node_browser_ui,node_stop_receiver,node_settings_adapter toneMint
class node_timer_api,node_retrofit,node_ws_client,node_preferences toneRose
class node_display_hw toneIndigoUn micrologiciel ESP32 pour une minuterie à afficheur sept segments contrôlée par le réseau, avec une application Android. Le démarrage charge le Wi-Fi, lance l’affichage et le serveur web, puis les interfaces envoient les commandes de minuterie et de configuration.
- Composants
- 20
- Connexions
- 21
- Liens appuyés par le code ou le README
- 18/21
Version texte du diagramme
- Démarrage ESP32 → Paramètres NVS
- Paramètres NVS → Connexion ou configuration Wi-Fi
- Connexion ou configuration Wi-Fi → Affichage de l’horloge
- Connexion ou configuration Wi-Fi → Interface HTTP
Suivre un parcours dans le code
Suivez la branche des paramètres sauvegardés dans setup. Le réseau mémorisé est essayé d’abord, mais un échec rejoint setupWiFi. L’affichage et le serveur web démarrent après cette branche.
Types et structure des fichiers
21 types déclarés, dont 12 dans l’aperçu des relations de base.
Diagramme des types
classDiagram
direction TB
class t0f7089087495["Callbacks"] {
<<struct>>
}
class tc0b1722c8a7f["ExampleInstrumentedTest"] {
useAppContext()
}
class taaaa0937cb8a["ExampleInstrumentedTest"] {
useAppContext()
}
class t0fd594821bdd["MainActivity"] {
onCreate()
setupNavigationUI()
hasPermissions()
onRequestPermissionsResult()
}
class tf36f30cd8e65["SettingsAdapter"] {
onCreateViewHolder()
onBindViewHolder()
getItemCount()
}
class tb59d4cfbe0b1["SettingsViewHolder"] {
}
class tc5d344b351ed["SettingItem"] {
}
class tce24fcf8fc6e["TimerApiService"] {
performTimerAction()
resetWifiCredentials()
connectToWiFi()
scanForNetworks()
}
class t64725d5d3582["WebSocketClient"] {
connect()
send()
close()
}
class t181736c31b5e["WebSocketEventListener"] {
onOpen()
onMessage()
onClosing()
onFailure()
}
class tf5e33f3603df["PreferencesHelper"] {
}
class t1902f7090575["SettingsFragment"] {
onCreateView()
onViewCreated()
fetchDeviceInfo()
checkWifiPermissionAndFetchSSID()
}
class b4be9ca085545["AppCompatActivity"] {
<<unresolved_base>>
}
t0fd594821bdd ..> b4be9ca085545 : declared base
class bc58b80af594e["RecyclerView"] {
<<unresolved_base>>
}
tf36f30cd8e65 ..> bc58b80af594e : declared base
tb59d4cfbe0b1 ..> bc58b80af594e : declared base
class b995bb1f4b9f4["Fragment"] {
<<unresolved_base>>
}
t1902f7090575 ..> b995bb1f4b9f4 : declared base
Les bases non résolues restent identifiées; les signatures complètes ne sont pas reconstruites.
Index des types
Callbacks(struct) ·src/display.cpp:17ExampleInstrumentedTest(class) ·android/app/src/androidTest/java/com/esptimer/ExampleInstrumentedTest.kt:16Méthodes dans l’aperçu :
useAppContext.ExampleInstrumentedTest(class) ·android/app/src/androidTest/java/com/example/esptimer/ExampleInstrumentedTest.kt:16Méthodes dans l’aperçu :
useAppContext.MainActivity(class) ·android/app/src/main/java/com/esptimer/MainActivity.kt:16Méthodes dans l’aperçu :
onCreate, setupNavigationUI, hasPermissions, onRequestPermissionsResult.Bases déclarées :
AppCompatActivity.SettingsAdapter(class) ·android/app/src/main/java/com/esptimer/adapter/SettingsAdapter.kt:10Méthodes dans l’aperçu :
onCreateViewHolder, onBindViewHolder, getItemCount.Bases déclarées :
RecyclerView.SettingsViewHolder(class) ·android/app/src/main/java/com/esptimer/adapter/SettingsAdapter.kt:13Bases déclarées :
RecyclerView.SettingItem(class) ·android/app/src/main/java/com/esptimer/adapter/SettingsAdapter.kt:40TimerApiService(class) ·android/app/src/main/java/com/esptimer/api/TimerApiService.kt:6Méthodes dans l’aperçu :
performTimerAction, resetWifiCredentials, connectToWiFi, scanForNetworks.WebSocketClient(class) ·android/app/src/main/java/com/esptimer/api/WebSocketClient.kt:8Méthodes dans l’aperçu :
connect, send, close.WebSocketEventListener(class) ·android/app/src/main/java/com/esptimer/api/WebSocketClient.kt:45Méthodes dans l’aperçu :
onOpen, onMessage, onClosing, onFailure.PreferencesHelper(class) ·android/app/src/main/java/com/esptimer/config/PreferencesHelper.kt:5SettingsFragment(class) ·android/app/src/main/java/com/esptimer/fragment/SettingsFragment.kt:24Méthodes dans l’aperçu :
onCreateView, onViewCreated, fetchDeviceInfo, checkWifiPermissionAndFetchSSID.Bases déclarées :
Fragment.
Référence
36 / 36 fichiers admissibles lus (113 dans l’arbre); 0 trop volumineux, 0 échec de lecture et 1 diagnostic de syntaxe.
Ce que couvre l’analyse
Les dossiers connus de dépendances et de compilation, les fichiers d’identifiants et les binaires sont exclus. La collecte couvre les README, les manifestes reconnus et les fichiers source pris en charge.
Les statistiques Linguist couvrent l’ensemble du dépôt et peuvent inclure d’autres langages.
Carte des fichiers
flowchart TD
root["ESP32-7SEG"]
f0["platformio.ini"]
root --> f0
f1["src/display.cpp"]
root --> f1
f2["src/main.cpp"]
root --> f2
f3["src/web_server.cpp"]
root --> f3
f4["README.md"]
root --> f4
f5["readme.md"]
root --> f5
f6["android/build.gradle.kts"]
root --> f6
f7["include/README"]
root --> f7
f8["include/ble.h"]
root --> f8
f9["include/config.h"]
root --> f9
f10["include/display.h"]
root --> f10
f11["include/web_page.h"]
root --> f11
f12["include/web_server.h"]
root --> f12
f13["include/wifi.h"]
root --> f13
f14["lib/README"]
root --> f14
f15["src/ble.cpp"]
root --> f15