

BeaverworksGit
hello.
- Size
- 43.2 × 17.8 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 6
- Nets
- 28
- Pads
- 34
- Tracks, vias
- 0, 0
- Routed
- Not yet
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 21 Jul 2026
- Updated
- 14 Aug 2026
Overview
BeaverworksGit is an open-source printed circuit board by AyaanZ1, from the AyaanZ1/beaverworksGit repository on GitHub. It is a 2-layer board of 43.2 × 17.8 mm with 6 parts on 28 nets.
README
README.mdbeaverworksGit
A maze-navigating robot built around an Arduino Mega 2560, combining custom PCB design (KiCad) with firmware for grid-based autonomous navigation, sensor logging, and ESP32-CAM video streaming.
Overview
The robot drives through a 5x5 grid maze along a pre-defined path, correcting its heading with an IMU (gyro yaw tracking) instead of relying on open-loop timing alone. At each cell it pauses to read temperature, humidity, and distance-to-obstacle, then reports the data back over serial. A light sensor and buzzer provide simple flashlight/alarm behavior along the way, and a separate ESP32-CAM module streams live video.
Repository Structure
.
├── beaverworksGit.kicad_pro/.kicad_sch/.kicad_pcb # KiCad project (schematic + PCB layout)
├── fp-lib-table # KiCad footprint library table
├── hardware/ # Hardware design files
│ ├── beaverworksGit.kicad_* # (duplicate/working copy of the KiCad project)
│ ├── Arduino Mega 2560 Rev3 A000067/ # Arduino Mega 3D model + footprint
│ ├── Arduino_MountingHole.pretty/ # Mounting hole footprints
│ ├── HC-SR04 Model by SparkFun/ # Ultrasonic sensor 3D model + footprint
│ └── esp32-wrover-kicad-master/ # ESP32-WROVER KiCad library (third-party)
├── software/ # Firmware / companion scripts
│ ├── IMU Navigation/
│ │ ├── ObstacleAvoidance.ino # Standalone obstacle-avoidance sketch
│ │ ├── Calibration/calibration.ino # IMU/gyro calibration routine
│ │ └── Yaw Tracking/mpu6050_copy_*/ # MPU6050 yaw-tracking test sketch
│ ├── ESP32_Camera/ # ESP32-CAM web server + streaming
│ │ ├── CameraWebServer.ino # Main camera sketch (based on Espressif's CameraWebServer example)
│ │ ├── app_httpd.cpp / camera_pins.h / ... # Supporting camera server code
│ │ ├── wifi_secrets.example.h # Template for Wi-Fi credentials (copy to wifi_secrets.h)
│ │ ├── record_video.py / stream_test.py # Python helpers for grabbing/testing the video stream
│ │ └── python/ # Additional Python utilities
│ └── Sensors_Code/ # (sensor test code)
├── main.cpp # Main robot firmware: timed turns/drives, no gyro
├── navigatio.cpp # Main robot firmware: gyro-corrected turns/drives (MPU6050)
└── platformio.ini # PlatformIO project config (Arduino Mega target)Hardware
- MCU: Arduino Mega 2560 Rev3
- IMU: Adafruit MPU6050 (gyro-based yaw tracking)
- Distance sensing: HC-SR04 ultrasonic sensor
- Environmental sensing: DHT11 temperature/humidity sensor
- Other I/O: LDR (light sensor), sound sensor, buzzer, status LED
- Drive: Dual DC motors via an H-bridge driver (enable + direction pins per side)
- Camera: Separate ESP32-CAM module for live video streaming
- PCB: Custom board designed in KiCad (see
beaverworksGit.kicad_pro/hardware/)
Firmware
There are two versions of the main navigation firmware:
| File | Description |
|---|---|
main.cpp | Drives a fixed sequence of grid moves using timed turns and timed straight-line driving (open-loop, no IMU feedback). |
navigatio.cpp | Same grid path, but uses the MPU6050 gyro to track yaw in real time and correct heading while turning and driving (closed-loop). |
Both firmware versions:
- Follow a hard-coded
path[]array ofNORTH/EAST/SOUTH/WESTmoves through a 5x5 grid. - Stop at each cell to read temperature, humidity, and ultrasonic distance, and report them over serial.
- Continuously monitor light and sound sensors to trigger an LED "flashlight" and buzzer alert.
- Stop and idle once the path is complete.
Building with PlatformIO
The project is set up for PlatformIO targeting the Arduino Mega:
# Build
pio run
# Upload to the board
pio run -t upload
# Open the serial monitor (9600 baud)
pio device monitorDependencies (declared in platformio.ini):
adafruit/Adafruit MPU6050adafruit/Adafruit Unified Sensoradafruit/DHT sensor library
Note: only one of
main.cpp/navigatio.cppshould be treated as the activesrc/main.cppfor a given build — move/copy whichever version you want to flash into PlatformIO'ssrc/directory (or updateplatformio.ini'sbuild_src_filteraccordingly).
ESP32-CAM streaming
software/ESP32_Camera/CameraWebServer.ino is based on the standard Espressif
CameraWebServer example, adapted with local board/pin config. To use it:
- Copy
wifi_secrets.example.htowifi_secrets.hand fill in your Wi-Fi SSID and password. - Flash
CameraWebServer.inoto an ESP32-CAM board via the Arduino IDE (select the correct board and partition scheme — seepartitions.csv). - Use
stream_test.pyorrecord_video.pyto test/capture the resulting MJPEG stream from a computer on the same network.
IMU navigation experiments
software/IMU Navigation/ contains standalone sketches used during
development:
Calibration/calibration.ino— computes gyro bias for the MPU6050.Yaw Tracking/mpu6050_copy_*/— isolated yaw-tracking test.ObstacleAvoidance.ino— simple reactive obstacle-avoidance behavior.
Hardware Design (KiCad)
Open beaverworksGit.kicad_pro in KiCad to view or
edit the schematic (.kicad_sch) and PCB layout (.kicad_pcb). Third-party
footprints/3D models used in the design are vendored under hardware/
(Arduino Mega, HC-SR04, ESP32-WROVER, mounting holes).
Status
This is a work-in-progress class/competition project (Beaverworks). Firmware
constants such as MS_PER_INCH, MS_PER_90_TURN, drive speeds, and the
maze path[] are tuned for a specific physical maze layout and will need
recalibrating for a different course or robot chassis.
Parts
6| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | MountingHole_65mil | Arduino_MountingHole:MountingHole_65mil | MH1, MH2, MH3, MH4 |
| 1 | Analog | Connector_PinHeader_2.54mm:PinHeader_1x15_P2.54mm_Vertical | J1 |
| 1 | Digital | Connector_PinHeader_2.54mm:PinHeader_1x15_P2.54mm_Vertical | J2 |
Questions
How big is the BeaverworksGit PCB?
It measures 43.2 × 17.8 mm and has 2 copper layers, 1.6 mm thick.
What parts does the BeaverworksGit use?
6 parts. 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 BeaverworksGit KiCad files?
From the AyaanZ1/beaverworksGit repository on GitHub, at the commit this page was made from: the board is beaverworksGit.kicad_pcb and its schematic .history/beaverworksGit.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the BeaverworksGit design in my own project?
Its repository states no licence, so its author keeps all rights: ask AyaanZ1 before reusing the design.
More from AyaanZ1/beaverworksGit
1- 2 layers43.2 × 17.8 mm

Similar boards
- 2 layers18.5 × 11.1 mm

Switch
byrantech/laptop
anyon_e, a highly integrated, high end, open source laptop. Attempt the impossible.
6 parts4.3kMIT - 2 layers14.6 × 33 mm

- 2 layers9 × 9 mm

Dpoint
Jcparkyn/dpoint
Open-source digital stylus using camera tracking and inertial measurements
6 parts1.1kMIT - 2 layers51.5 × 16.6 mm

MicroswitchXY Endstop
VoronDesign/Voron-Hardware
Cool Hardware designed by the Voron Design group
6 parts1.1kGPL-3.0 - 2 layers21.9 × 76.7 mm

Amiga External
hoglet67/RGBtoHDMI
Bare-metal Raspberry Pi project that provides pixel-perfect sampling of Retro Computer RGB/YUV video and conversion to HDMI
6 parts1kGPL-3.0 - 2 layers88.9 × 50.8 mm

Businesscard
hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!
6 parts915 - 2 layers20.3 × 15.2 mm

L0 RGB led
Luos-io/luos_engine
Open-source and real-time orchestrator for cyber-physical-systems, to easily design, test and deploy embedded applications and digital twins.
6 parts546MIT - 2 layers9 × 3.6 mm
