

BikeLightFinal
This project is a smart, battery-powered bike light system developed as part of the DTU course 34346 – Networking Technologies and Application Development for IoT.
- Size
- 90.5 × 81.3 mm
- Copper layers
- 4
- Thickness
- 1.6 mm
- Parts
- 18
- Nets
- 49
- Pads
- 97
- Tracks, vias
- 143, 26
- Pours
- 1
- Routed
- Yes
- KiCad
- KiCad 9.0 (file 20241229)
- Created
- 24 Aug 2025
- Updated
- 24 Aug 2025
Overview
BikeLightFinal is an open-source printed circuit board by Thommimp, from the Thommimp/IoT-Bikelight repository on GitHub. It is a 4-layer board of 90.5 × 81.3 mm with 18 parts on 49 nets, routed with 143 tracks and 26 vias.
It is built around the ADXL345-EP. Its parts include 6 ICs, 5 resistors, 2 switches and 1 transistor. It belongs with the ESP32 boards of this library.
Main components
1README
README.mdSmart Bike Light 🚲💡
This project is a smart, battery-powered bike light system developed as part of the DTU course 34346 – Networking Technologies and Application Development for IoT. It enhances bike safety and theft deterrence through live GPS tracking, narrowband NB-IoT communication, and LEDs that activate based on motion and ambient light. The system integrates with mobile and web apps for remote control and monitoring.
🚀 Getting Started
Follow these steps to set up and run the project:
- Clone this repo.
- Install required tools: ESP32 toolchain, KiCad, Xcode, Azure CLI, SolidWorks (for 3D parts).
- Flash the firmware from the
firmwarefolder to the ESP32. - Assemble the hardware using the schematic in the
KiCadfolder, or generate Gerber files and order the PCB. - 3D print the bikelight using the files inside the
Solidworkdsfolder. - Clone the backend repo and deploy all the functions to Azure.
- Clone either the iOS app or the web app.
- Hold the bike light button for 5 seconds to pair it VIA Ble.
- Your bike light should now be working.
📦 Main Repo (This)
This repo contains:
- Firmware for the ESP32 (firmware folder)
- Custom PCB design files and schematic (Kicad_Schematic_PCB)
- Communication code for NB IoT click and GPS module only (for testing purposes)
- Code for testing the different electronic components (Electronics)
- Documentation and reports
- 3D-printed enclosure files
📱 iOS App Repo
The iOS app allows users to:
- Pair their bike light via BLE
- Check battery and location status
- Switch modes remotely
The iOS Application can be found in the following repository: 👉 iOS App Github Repo
🌐 Web App
The web app provides:
- Authentication and device association
- Dashboard to view status, GPS, and change modes
☁️ Azure Backend Repo
- Handles MQTT data via NB-IoT
- Stores info in CosmosDB
- Provides API endpoints to mobile/web apps
Both the web app and backend code are in the same repository: 👉 Web App and Azure GitLab Repo
For documentation on how to use the different azure functions look in 📎 Azure_API_Documentation.pdf
🔧 Features
- Automatic light control based on motion
- BLE for user pairing
- NB-IoT for real-time narrowband IoT communication
- GPS tracking
- Multi-mode power states: Active, Parked, Storage
- 3D-printed, splash-resistant enclosure
⚙️ Hardware
- ESP32
- NB-IoT 2 Click module
- NEO-7N GPS
- Battery monitor
- Accelerometer + LDR
- Rechargeable Li-ion battery
- Custom PCB and 3D case
📄 Project Report
See full technical details in the report:
📎 BikeLight_project_report_2.pdf
This is a student project and not intended for production deployment.
🤝 Contributors
- Thomas Møller Pedersen s224442
- Tomas Ruiz Aybar s242887
- Albert Saez Nunez s250445
- Isabella Martınez Lopez s241889
- Eric Santiso Robledo s250444
- Matteo Italia s232440
Parts
18| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | 10 | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R3, R4 |
| 2 | 10K | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R2, R5 |
| 2 | ~ | spo2_stuff:Light | Light1, Light2 |
| 1 | 5V | spo2_stuff:Battery | BT1 |
| 1 | A1050 | spo2_stuff:PR | R1 |
| 1 | ADXL345 | spo2_stuff:ADXL345 | U3 |
| 1 | ESP32 | spo2_stuff:ESP32 | U1 |
| 1 | L175-A | spo2_stuff:1575-A | U2 |
| 1 | MAX17048 | spo2_stuff:MAX17048 | U5 |
| 1 | MCP1826S | spo2_stuff:MCP1826S | U6 |
| 1 | NB_IoT_2_Click | spo2_stuff:NB IoT 2 Click | U4 |
| 1 | NMOS | spo2_stuff:Nmos | Q1 |
| 1 | SW_DPST_x2 | spo2_stuff:Switch | SW1 |
| 1 | SW_Push | spo2_stuff:BTN | SW2 |
| 1 | ~ | spo2_stuff:Li-ion charger | Charger7 |
Similar boards
- 4 layers42 × 42 mm

- 2 layers97 × 77.5 mm

ESPlant
CCHS-Melbourne/ESPlant
Environmental Sensor Plant - solar WiFi gardening/meteorological sensor using ESP8266
77 parts37 - 2 layers65 × 56 mm

- 2 layers61.3 × 89.6 mm

QuakeGuard PCB
GiZano/QuakeGuard
Distributed Earthquake Early Warning (EEW) system built on low-cost ESP32-C3 IoT sensors with Zero-Trust security, multi-node epicenter triangulation, and on-premise AI emergency reports.
17 parts24AGPL-3.0 - 6 layers60 × 60 mm

High Temp Load Cell Toolhead Board
garethky/ADS1220-Klipper-Board
A board for connecting up to 4 Load cells to an ADS1220
125 parts23GPL-3.0 - 2 layers184.2 × 71.2 mm

- 2 layers112 × 62 mm

- 2 layers89.5 × 48 mm

Avionics
cuspaceflight/avionics14
Designed to be compiled with the GNU ARM Toolchain - https://launchpad.net/gcc-arm-embedded
115 parts4
Questions
How big is the BikeLightFinal PCB?
It measures 90.5 × 81.3 mm and has 4 copper layers, 1.6 mm thick.
What parts does the BikeLightFinal use?
18 parts, built around the ADXL345-EP. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
Where can I download the BikeLightFinal KiCad files?
From the Thommimp/IoT-Bikelight repository on GitHub, at the commit this page was made from: the board is Kicad_Schematic/BikeLightFinal.kicad_pcb and its schematic Kicad_Schematic/BikeLightFinal.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the BikeLightFinal design in my own project?
Its repository states no licence, so its author keeps all rights: ask Thommimp before reusing the design.