Skip to content

Qeps/stm32wb55_bt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

BLE Flutter Mobile Application

This project is a Flutter-based mobile application implementing a complete Bluetooth Low Energy (BLE) workflow - from device discovery and connection management to data exchange and communication diagnostics. The application was developed by a four-person team with a clear division of responsibilities and development stages, resulting in a clean and extensible architecture.

Team Responsibilities

Lidia - device list screen, CMD_GET_LINK_STATUS

Mateusz - ble manager, CMD_LED_TEST

Kacper - device control screen, CMD_GET_FW_BUILD

Gerard - integration, CMD_GET_RSSI

Project Overview

The application demonstrates a practical approach to integrating BLE communication into a mobile app while maintaining strict separation between the UI layer and communication logic. The design follows principles commonly used in embedded systems, where higher layers interact with hardware through well-defined interfaces instead of protocol-specific details.

Architecture and Development Stages

Stage 1 - Application Architecture and Core Setup

At the initial stage, the overall structure and navigation flow of the application were defined. The project was organized to separate UI components from BLE logic. Screens were designed to be lightweight and state-driven, while all BLE-related operations were delegated to a dedicated manager. This ensured a stable foundation for further development and simplified testing and maintenance.

Stage 2 - Bluetooth Low Energy Management

A central BLE manager module was implemented to handle scanning, device discovery, connection lifecycle management, and basic data exchange. This module serves as the single point of interaction with the BLE stack, encapsulating platform-specific details and exposing a clean, consistent API to the UI layer.

Stage 3 - User Interface and Screen Responsibilities

The application consists of three main screens, each with a clearly defined role:

  • Device List Screen
    Responsible for initiating BLE scans and displaying discovered devices in real time. It reflects scanning state and device availability without embedding communication logic.

  • Device Control Screen
    Manages the connection lifecycle (connect and disconnect) and provides a control interface for sending commands to the selected device. User actions are mapped to BLE operations via the manager layer.

  • Logs Screen
    Displays a chronological view of BLE events and data exchange. This screen acts as a diagnostic tool, enabling analysis of communication flow and simplifying debugging on both the application and firmware sides.

Each screen is implemented as an independent component, allowing future extensions or refactoring with minimal impact on the rest of the application.

Stage 4 - Diagnostics and Maintainability

Setup and Run

After installing the Flutter SDK and required platform tools, verify that the environment is correctly configured and run the application using the following commands:

flutter doctor
flutter pub get
flutter run

The application is platform-agnostic at the application layer and relies on Flutter’s cross-platform BLE support to run on both Android and iOS devices. This project can be used both as a starting point for further BLE-based mobile development and as a reference architecture for teams working at the intersection of mobile applications and embedded systems.

The final stage focused on improving code clarity, consistency, and observability. A structured logging mechanism was introduced to provide insight into BLE operations, effectively acting as a software-level logic analyzer for communication. The resulting architecture is ready for extension with additional BLE services, characteristics, or advanced application logic.

Application Demonstration

Screenshot_20260120_215357 Screenshot_20260120_215414 Screenshot_20260120_215423

About

Custom BLE firmware for STM32WB55 with a Flutter app for command parsing and mobile control.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors