Skip to the content
PCBKitNew board
2 layers26.5 × 21.9 mmVEML3328, the printed circuit board in 3D

ELEC 391 : Design Studio Final Project

Size
26.5 × 21.9 mm
Copper layers
2
Thickness
1.6 mm
Parts
8
Nets
4
Pads
16
Tracks, vias
25, 2
Pours
1
Routed
Yes
KiCad
KiCad 8.0 (file 20240108)
Created
28 Jan 2025
Updated
17 Apr 2025

Overview

VEML3328 is an open-source printed circuit board by Dipto9999, from the Dipto9999/Self_Balancing_Robot repository on GitHub. It is a 2-layer board of 26.5 × 21.9 mm with 8 parts on 4 nets, routed with 25 tracks and 2 vias.

It is built around the VEML3328. Its parts include 3 connectors and 1 IC. It belongs with the radio and wireless and robots and motor control boards and the STM32 boards of this library.

Main components

1

README

README.md

WALL-E (Self Balancing Robot)

Contents


Overview

We designed WALL-E, an autonomously balancing two-wheel robot driven wirelessly via Bluetooth.

Features

WALL-E prioritizes safe navigation and secure access.

  • Detects the nearby environment (i.e. obstacles, color recognition)
  • Prevents unauthorized control with RFID authentication and BLE pairing code.
  • Generates live camera feed and uploads to AWS S3 cloud storage.

Components

  • Microcontrollers:

    • Arduino Nano 33 BLE Sense Rev2 (Balancing & BLE)
    • STM32L051K8T6 (Environmental Sensors, Auth)
    • Raspberry Pi Zero 2 W (Camera Feed)
  • Sensors and Modules:

    • BMM150 IMU
    • HC-SR04 Ultrasonic Distance Sensor
    • TCS34725 Color Sensor
    • RC522 RFID Module
    • CEM-1302 Buzzer
    • Freenove 5MP Camera
  • Actuation:

    • DRV8833 Motor Drivers
    • Pololu 37D DC Motors

System Design

Functional Diagram

Architecture Diagram


Robot Firmware

Arduino

  • Autonomously balances robot with closed-loop control system (i.e. PID controller).
  • Uses complementary filter to measure angular input from accelerometer and gyroscope sensors.
  • Drives motors by generating PWM (slow decay) output to DRV8833 chip.
  • Uses statemachine to prioritize balancing / movement functionality.
    • Injects noise (i.e. angular offset, PWM signals) to induce movement along axis / turning.

Source Code in Arduino_Firmware directory.

STM32

  • Handles auxiliary features to reduce computational load on Arduino.
    • Distance Sensing: Toggles GPIO signal-low when object detected within 30cm.
    • Color Detection: Toggles GPIO signal-low when red is detected. WALL-E avoids red-lights at all costs.
    • RFID Authentication: Verifies UID and signals Arduino on success.
    • Buzzer: Alerts user on successful auth, errors, or warnings via PWM tone generation.

Source Code in STM32_Firmware directory.

User Software

Robot Driver App

  • Flask web application hosted via ngrok for mobile access
  • Uses GET/POST requests to update server with UI updates and perform Bluetooth operations.
  • Handles BLE pairing authentication in backend (i.e. without affecting user experience).

Source Code in Driver_App directory.

Dashboard App

  • Python application with live camera stream on Tkinter GUI.
    • Camera runs at ~20 FPS with reduced resolution for performance on Pi Zero 2 W.
  • Snapshot and recording functionality with automatic upload to AWS S3 bucket.

Source Code in Dashboard_App directory.


Demonstration

Watch our final robot demonstration here: 📽️ YouTube Demo

Report

Read our final project report here: 📝 Project Report

Credit

This was completed as part of the ELEC 391 - Design Studio project course in The University of British Columbia Electrical and Computer Engineering undergraduate program.

Team B-17

  • Muntakim Rahman
  • Tomaz Zlindra
  • Xianyao Li

Special thanks to Dr. Joseph Yan for tremendous support and guidance.

Parts

8
QtyValueFootprintReferences
4MountingHoleMountingHole:MountingHole_3.2mm_M3H1, H2, H3, H4
2Conn_01x02_PinConnector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_VerticalJ2, J3
1Conn_01x04_PinConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ1
1VEML3328Custom:VEML3328U1

Questions

How big is the VEML3328 PCB?

It measures 26.5 × 21.9 mm and has 2 copper layers, 1.6 mm thick.

What parts does the VEML3328 use?

8 parts, built around the VEML3328. 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 VEML3328 KiCad files?

From the Dipto9999/Self_Balancing_Robot repository on GitHub, at the commit this page was made from: the board is ColorSensor_PCB/VEML3328/VEML3328.kicad_pcb and its schematic ColorSensor_PCB/VEML3328/VEML3328.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the VEML3328 design in my own project?

Its repository states no licence, so its author keeps all rights: ask Dipto9999 before reusing the design.

Similar boards

  • 2 layers60 × 30 mmTd free, the printed circuit board in 3D

    Td free

    mawoka-myblock/td-free

    Measure the TD of your filament easily

    24 parts60EUPL-1.2
  • 2 layers90 × 40 mmDualpaneldriver, the printed circuit board in 3D

    Dualpaneldriver

    zoe1337/canesys

    Switchmode LED Controller fed from CAN

    142 parts3
  • 4 layers102.8 × 23.1 mmLine follower, the printed circuit board in 3D

    Line follower

    Ng-Chen-Xuan/line-follower

    line following sensor for spike prime

    136 partsAGPL-3.0
  • 2 layers100 × 34.5 mmSk561-light2cv, the printed circuit board in 3D

    Sk561-light2cv

    mirdej/synkie

    The Synkie is a modular open source analog video processor, developed by Michael Egger, Max Egger and Flo Kaufmann

    41 parts47
  • 2 layers25.3 × 6.1 mmRgb sensor, the printed circuit board in 3D

    Rgb sensor

    Plajta/sisyphus

    A soundboard giving voice to those who don't have it

    10 parts1
  • 2 layers32 × 21.5 mmCapteur couleur, the printed circuit board in 3D

    Capteur couleur

    Groupe-Projet-ESE/BeerRobot

    Chelsea COMLAN - Alix HAVRET - Loïcia KOEHL - Quentin SIMON

    18 parts
  • 2 layers24.1 × 43 mmDEL MCPCB, the printed circuit board in 3D

    DEL MCPCB

    MattiasVLar/AmpouleIntelligente

    Light Bulb university project @polymtl

    18 partsBSD-3-Clause