Aller au contenu

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.

Matériel et infographie
  • Mis à jour
  • 1
  • Kotlin · 58.26%
  • MIT
Langages du dépôtKotlin 58.26%3

Parts calculées à partir des octets GitHub Linguist.

Langage%Octets
Kotlin58.26%62 877
C++39.56%42 693
C2.18%2 350

GitHub · README · Statistiques de langages

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.
Lire les instructions complètes ↗

Software Installation

README.md

  1. Clone the Repository:
  2. 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.
  3. Upload to the ESP32: Compile and upload the code to your ESP32 board to start the project.
Lire les instructions complètes ↗

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.
Lire les instructions complètes ↗

Software Installation

readme.md

  1. Clone the repository to your local machine.
  2. Open the project with your preferred IDE or editor that supports PlatformIO or the Arduino IDE.
  3. Install the necessary libraries mentioned in the platformio.ini file or the Arduino project.
  4. Upload the code to your ESP32 FireBeetle board.
Lire les instructions complètes ↗
Configuration et utilisation

Hardware Setup

README.md

  1. 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.
  2. Power Supply: Power the ESP32 board through USB or an external power supply to ensure stable operation.
Lire les instructions complètes ↗

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.
Lire les instructions complètes ↗

Hardware Setup

readme.md

  1. Connect the 7-segment display to the ESP32 according to the provided wiring diagram.
  2. Ensure a stable power supply for the ESP32 board.
Lire les instructions complètes ↗

Usage

readme.md

After uploading the code to your ESP32 board:

  1. Connect the ESP32 to a power source.
  2. The ESP32 starts a web server accessible within your local network.
  3. Find the ESP32’s IP address from your serial monitor and visit the provided IP using a web browser.
  4. Use the web interface to update the 7-segment display’s content.
Lire les instructions complètes ↗
Développement et contributions

Contributing

README.md

We welcome contributions! If you have suggestions for improvements or find a bug, please feel free to fork the repository, make your changes, and submit a pull request.
Lire les instructions complètes ↗

Contributing

readme.md

Contributions to improve the project are welcome. Please feel free to fork the repository and submit pull requests.
Lire les instructions complètes ↗
Documentation source

2 documents lus parmi 2 candidats.

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.

Contexte système Contexte
  1. Démarrage ESP32
  2. Paramètres NVS
  3. Connexion ou configuration Wi-Fi
  4. Affichage de l’horloge
  5. 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.

Vue statique de l’architecture de ESP32-7SEG
Aperçu statique. Le diagramme interactif le remplace après le chargement de Mermaid.
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 toneIndigo

Un 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

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

Fichiers à lire 4

Références