
ASME UM High current board
umasme/2025-2026
University of Miami ASME Official Repository for NASA Lunabotics Challenge

The Assiut Robotics Minesweeper Rover is an autonomous field robotics platform engineered for humanitarian mine action and robotics competitions (Minesweeper International / Minesweeper Egypt).
Robotics Mine is an open-source printed circuit board by arminesweeper, from the arminesweeper/Minesweeper2026 repository on GitHub. It is a 2-layer board of 154.8 × 96.7 mm with 117 parts on 91 nets, routed with 444 tracks and 0 vias.
It is built around the 1000UF 16V. Its parts include 43 connectors, 26 resistors, 13 capacitors, 2 diodes and 2 transistors. It belongs with the robots and motor control boards of this library.
The Assiut Robotics Minesweeper Rover is an autonomous field robotics platform engineered for humanitarian mine action and robotics competitions (Minesweeper International / Minesweeper Egypt). The rover combines real-time computer vision, electromagnetic/inductive sensing, optical proximity scanning, autonomous coverage planning, closed-loop motion control, and surface mine extraction mechanics into an integrated cross-layer cyber-physical system.
This repository contains multi-tiered engineering documentation covering software, firmware, electronics, and competition field strategy. Use the quick links below to navigate to specific subsystems:
| Document | Description | Language | Primary Location |
|---|---|---|---|
| Competition Overview & Technical Report | Comprehensive engineering report, real-world bug troubleshooting, competition strategy, and mathematical models | Arabic | Minesweeper_Competitions_Overview.md |
| Electronic Circuit & Hardware Report | Full PCB schematic analysis, power distribution rails, relay drivers, connectors, and BOM | English | Minesweeper2026/Files/Report/report.md |
| ROS 2 Workspace Manual | Simulation, SLAM Toolbox, Navigation, Zigzag Coverage, Vision OCR, and launch guides | English | rover_ws/README.md |
| Synchronized Pinout Map | As-fabricated Mega 2560 pin mappings, timers, interrupts, and Soft-I2C flying leads | English | Minesweeper2026/Arduino/MotorController/Docs/Pinout.md |
| Firmware Architecture | Object-oriented modular firmware breakdown, FSM state machines, and task loop timing | English | Minesweeper2026/Arduino/MotorController/Docs/Architecture.md |
| Serial Protocol & API | Framing, command bytes, packet checksums, and telemetry stream formats | English | Minesweeper2026/Arduino/MotorController/Docs/Communication.md |
| Motion Control & PID | Kinematics, PID math, feed-forward, deadband thresholds, and odometry formulas | English | Minesweeper2026/Arduino/MotorController/Docs/MotionControl.md |
| Safety & Watchdog Systems | Communication timeouts, brownout protection, limit switch safety, and E-Stop states | English | Minesweeper2026/Arduino/MotorController/Docs/Safety.md |
| Wiring & Harness Manual | Wire gauges, connector specifications, terminal assignments, and crimping guide | English | Minesweeper2026/Arduino/MotorController/Docs/WiringManual.md |
| Operator GUI & Telemetry | PySide6 desktop dashboard, gamepad integration, and live telemetry viewer | English | Minesweeper2026/GUI/README.md |
| Legacy 2024 Archive | Historic codebase, design iterations, and legacy project records | English | Minesweeper2024/README.md |
The robot utilizes a hierarchical dual-interface architecture providing robust separation of concerns between high-level computation, real-time deterministic control, and standalone field debugging:
flowchart TB
subgraph OperatorLayer["Operator & Telemetry Station"]
OP_STATION[Operator Laptop / Gamepad]
WEB_CLIENT[Browser Diagnostic UI / WebSockets]
end
subgraph HighLevelCompute["High-Level Compute — Raspberry Pi 4 (Ubuntu Linux)"]
ROS_CORE[ROS 2 Humble Middleware]
SLAM_NODE[SLAM Toolbox / EKF Localization]
PLAN_NODE[Zigzag Coverage & A* Planner]
VISION_NODE[Camera + EasyOCR Mine Classifier]
SER_NODE[Serial Bridge Interface Node]
end
subgraph WirelessBypass["Field Diagnostics Bypass — ESP8266 Module"]
ESP_CORE[ESP8266 Local Web Server]
ESP_JOY[WASD / Touchscreen Teleop]
ESP_TELEM[Live Battery & Sensor Telemetry]
end
subgraph LowLevelControl["Deterministic Embedded Controller — Arduino Mega 2560"]
STATE_MGR[System State Machine INIT / ARMED / RUN / FAULT]
PID_CORE[Dual Wheel PID Controller + Feed-Forward]
MOTION_CORE[Differential Drive Inverse Kinematics]12V_MAIN: Motors, Cytron H-Bridge, and auxiliary power (Terminal J24, filtered with $2000,\mu\text{F}$)12V_MG: Dedicated electromagnet bus (Terminals MAG1–MAG5, filtered with $4000,\mu\text{F}$)5V_LOGIC: MCU logic, encoders, IMU, sensors (Terminal J22, filtered with $2000,\mu\text{F}$)5V_SERVO: Camera pan servo and auxiliary servos (Terminal J23/J13)APRX1–APRX5) with hardware OR-gate aggregationJ40) for buried metallic minesOpen Minesweeper2026/Arduino/MotorController/MotorController.ino in the Arduino IDE or VS Code / PlatformIO.
Select Board: Arduino Mega 2560, Processor: ATmega2560.
Verify feature flags in Config.h:
#define ENABLE_WATCHDOG 1
#define ENABLE_ODOMETRY 1
#define ENABLE_LIFT 1
#define ENABLE_SENSORS 1
#define USE_SOFT_I2C_FOR_IMU 1Compile and flash to the Arduino Mega via USB.
Minesweeper2026/Arduino/WiFiController/ in the Arduino IDE.RESET tied to GND as a hardware bypass programmer (TX to TX, RX to RX).Minesweeper_Rover), and browse to http://192.168.4.1 for full manual control, battery monitoring, and telemetry.Clone or navigate to the workspace, install system dependencies, and build:
cd rover_ws
rosdep update
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
source install/setup.bashros2 launch rover_bringup simulated_robot.launch.pyros2 launch rover_bringup real_robot.launch.pyros2 launch rover_controller joystick_teleop.launch.py| Topic | Message Type | Description |
|---|---|---|
/cmd_vel | geometry_msgs/msg/Twist | Target linear and angular velocity commands |
/odom | nav_msgs/msg/Odometry | Wheel odometry fused with encoder ticks |
/imu/data | sensor_msgs/msg/Imu | Filtered angular velocity and linear acceleration |
/joint_states | sensor_msgs/msg/JointState | Rover wheel and lift joint positions |
/scan | sensor_msgs/msg/LaserScan | 2D LiDAR range scan for obstacle avoidance |
/map | nav_msgs/msg/OccupancyGrid | Live SLAM occupancy grid map |
/coverage_path | nav_msgs/msg/Path | Zigzag lawnmower path generated by planner |
/mine_detected | rover_msgs/msg/MineAlert | Detected mine payload (type: surface/buried, position: x, y) |
Summary of the 12 verified physical hardware and firmware issues resolved during field testing (detailed root cause analysis available in Minesweeper_Competitions_Overview.md):
| # | Symptom | Root Cause | Verified Resolution |
|---|---|---|---|
| 1 | Severe lagging & high loop latency | RTOS-like multi-tasking overload on ATmega2560 | Enabled compile-time feature flags in Config.h to disable unused modules |
| 2 | Motors deadlocked upon boot (FAULT) | Watchdog started counting before first command | Modified Safety.cpp to start timeout only after first valid command |
| 3 | Gripper stalled or moving violently | Floating limit pins + PWM set to 220 (86% power) | Activated INPUT_PULLUP and clamped LIFT_PWM_SPEED to 90 (35% power) |
| 4 | Limit switch dashboard inverted | Pins D51 and D53 swapped vs physical wiring | Swapped definitions in Config.h (D51 = Bottom, D53 = Top) |
| 5 | MPU6050 I²C bus deadlock | Shield copper wired ENC1 to D20/D21 (Hardware I²C) | Implemented Soft-I2C on D31/D33 with external flying leads |
| 6 | Alert siren continuously blaring | Driver circuit is Active-LOW via NPN transistor | Changed #define SIREN_ACTIVE_HIGH 0 in Config.h |
| 7 | Inverted proximity readings | Hardware OR-gate output floating without threshold | Adjusted PROXIMITY_THRESHOLD to 500 and added calibration offsets |
| 8 | ESP8266 flashing timeout error | Arduino Mega serial passthrough dropped high-speed bytes | Used Arduino Uno hardware bypass (RESET to GND) for flashing |
| 9 | Rover stopping every 2s in web UI | Browser keydown only fired once; watchdog timed out | Implemented 100ms periodic retransmission loop in web frontend |
| 10 | ESP8266 unable to boot with divider | 10kΩ divider resistor placed adjacent to EN/RST pin | Isolated divider directly to ADC A0 pin away from boot-strap lines |
| 11 | Electromagnet overheating | 100% duty cycle 12V applied continuously | Implemented 8s auto-off safety cutoff timer in firmware |
| 12 | ROS 2 motion jerky and unresponsive | Blocking serial read calls on main thread | Rewrote ROS serial bridge with non-blocking async threads at 20 Hz |
Before deploying the rover onto the competition field or test arena:
1. Battery Health: Verify open-circuit voltage >= 12.6V (Do not operate below 11.8V).
2. Mechanical Fasteners: Inspect wheel hubs, motor brackets, and lift linkages for play.
3. Bench Motor Direction Check: Elevate chassis; command forward motion; verify both wheels spin forward.
4. Encoder Calibration: Rotate each wheel 1 full revolution by hand; verify ~385 counts accumulated.
5. Watchdog Fail-safe: Disconnect serial cable while motors run; verify complete motor shutdown within 1.5s.
6. Limit Switches: Manually depress top/bottom switches; confirm instantaneous lift motor deactivation.
7. Sensor Simulation: Pass metallic and surface mine samples; verify blue status LEDs illuminate and siren triggers.
8. Wire Harness Dress: Inspect Soft-I2C flying leads; ensure separation from high-current motor cables.This repository is released under the MIT License for educational, humanitarian demining research, and non-commercial competition purposes.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 10 | ~ | PCM_LED_THT_AKL:LED_D3.0mm | DL1, DL2, DL3, DL4, DL5, DL6, DL7, DL8, DL9, OK |
| 9 | 1K | PCM_Resistor_THT_AKL:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R1, R4, R7, R10, R13, R17, R18, R19, R20 |
| 7 | , , , , , , | ||
| 5 | 100:50 n | PCM_Capacitor_THT_AKL:C_Disc_D3.0mm_W1.6mm_P2.50mm | C1, C4, C6, C8, C10 |
| 5 | 10k | PCM_Resistor_THT_AKL:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R2, R5, R8, R11, R14 |
| 5 | 2000uF< | PCM_Capacitor_THT_AKL:CP_Radial_D10.0mm_P5.00mm | C3, C9, C11, C12, C13 |
| 5 | 3.9k | PCM_Resistor_THT_AKL:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R3, R6, R9, R12, R15 |
| 5 | APRXMT | saflib:JST_S4B-XH-A | J1, J2, J3, J4, J5 |
| 5 | LOGO | LOGO | G***, G***, G***, G***, G*** |
| 3 | 1k | PCM_Resistor_THT_AKL:R_Axial_DIN0207_L6.3mm_D2.5mm_P7.62mm_Horizontal | R16, R16, R21 |
| 2 | 1000uF< | PCM_Capacitor_THT_AKL:CP_Radial_D10.0mm_P5.00mm | C5, C7 |
| 2 | 10k | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal | R44, R47 |
| 2 | 1N4007 | PCM_Diode_THT_AKL:D_DO-41_SOD81_P7.62mm_Horizontal | D1, D2 |
| 2 | 2N2222A-TO92 | PCM_Package_TO_SOT_THT_AKL:TO-92_Inline_Wide_EBC | Q1, Q2 |
| 2 | 3.9k | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P7.62mm_Horizontal | R45, R46 |
| 2 | MPU6050 | PCM_fab:PinHeader_01x08_P2.54mm_Vertical_THT_D1.4mm | J29, J38 |
| 1 | 12V | PCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_Horizontal | J24 |
| 1 | 12V G | PCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_Horizontal | J46 |
| 1 | 470uF< | PCM_Capacitor_THT_AKL:CP_Radial_D10.0mm_P5.00mm | C2 |
| 1 | 5V | PCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_Horizontal | J22 |
| 1 | 5V SERVO | PCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_Horizontal | J23 |
| 1 | CYTRON | PCM_fab:PinHeader_01x05_P2.54mm_Vertical_THT_D1mm | J36 |
| 1 | ENC1 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J16 |
| 1 | ENC1 | PCM_fab:PinHeader_01x02_P2.54mm_Vertical_THT_D1.4mm | J30 |
| 1 | ENC2 | Connector_JST:JST_XH_B4B-XH-A_1x04_P2.50mm_Vertical | J17 |
| 1 | ENC2 | PCM_fab:PinHeader_01x02_P2.54mm_Vertical_THT_D1.4mm | J31 |
| 1 | G PWM DIR | PCM_fab:PinHeader_01x03_P2.54mm_Vertical_THT_D1.4mm | J20 |
| 1 | L1 L2 D3 P3 G V | saflib:JST_S8B-XH-A-1 | J44 |
| 1 | LIFT | PCM_fab:PinHeader_01x02_P2.54mm_Vertical_THT_D1.4mm | J37 |
| 1 | LIFT | PCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_Horizontal | J28 |
| 1 | LIMIT1 | PCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_Horizontal | J45 |
| 1 | LIMIT2 | PCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_Horizontal | J35 |
| 1 | LM1 | PCM_fab:PinHeader_01x01_P2.54mm_Vertical_THT_D1.4mm | J33 |
| 1 | LM2 | PCM_fab:PinHeader_01x01_P2.54mm_Vertical_THT_D1.4mm | J34 |
| 1 | LM2 LM1 PWM DIR G V | saflib:JST_S8B-XH-A-1 | J43 |
| 1 | MAG1 | PCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_Horizontal | J9 |
| 1 | MAG2 | PCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_Horizontal | J10 |
| 1 | MAG3 | PCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_Horizontal | J11 |
| 1 | MAG4 | PCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_Horizontal | J12 |
| 1 | MAG5 | PCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_Horizontal | J27 |
| 1 | MAGNETS&LIFT | saflib:RELAY_SRD-12VDC-SL-C | K1 |
| 1 | MD | PCM_fab:PinHeader_01x02_P2.54mm_Vertical_THT_D1.4mm | J42 |
| 1 | METAL DETECTOR | PCM_fab:PinHeader_01x06_P2.54mm_Vertical_THT_D1.4mm | J40 |
| 1 | MGNT | PCM_fab:PinHeader_01x01_P2.54mm_Vertical_THT_D1.4mm | J14 |
| 1 | MSW | PCM_fab:PinHeader_01x02_P2.54mm_Vertical_THT_D1.4mm | J19 |
| 1 | OI54321GV | saflib:JST_S8B-XH-A-1 | J6 |
| 1 | PinHeader_1x17_P2.54mm_Vertical | Connector_PinHeader_2.54mm:PinHeader_1x17_P2.54mm_Vertical | SADSAFSAF |
| 1 | SERVO | PCM_fab:PinHeader_01x03_P2.54mm_Vertical_THT_D1.4mm | J13 |
| 1 | SERVO | PCM_fab:PinHeader_01x01_P2.54mm_Vertical_THT_D1.4mm | J25 |
| 1 | SIREN | PCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_Horizontal | J21 |
| 1 | SIRENCALL | saflib:RELAY_SRD-12VDC-SL-C | K2 |
| 1 | SIRENS | PCM_fab:PinHeader_01x01_P2.54mm_Vertical_THT_D1.4mm | J15 |
| 1 | SUB | PCM_fab:TerminalBlock_OnShore_1x02_P5.00mm_Horizontal | J32 |
| 1 | SW | PCM_fab:PinHeader_01x02_P2.54mm_Vertical_THT_D1.4mm | J18 |
| 1 | USB_A | Connector_USB:USB_A_Connfly_DS1095 | J7 |
| 1 | VG12345MIO | saflib:JST_S8B-XH-A-1 | J39 |
The 111 most common of 117 parts.

umasme/2025-2026
University of Miami ASME Official Repository for NASA Lunabotics Challenge


PedroBMedeiros/PolySaber
Firmware for Cal Poly Senior Project - PolySaber a Custom PCB Soundboard


Rudra2002/ComputerControl
The system communicates over MQTT (with WebSocket support), enabling a static web dashboard — deployable on Cloudflare Pages or any CDN — to send commands and receive real-time status updates from anywhere.

thejamesrhodes/Hyades-Flight-Computer
Full Hardware and Electronics design, Bare-metal GNC flight software for an actively attitude-controlled high-power rocket


It measures 154.8 × 96.7 mm and has 2 copper layers, 1.6 mm thick.
117 parts, built around the 1000UF 16V. 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.
From the arminesweeper/Minesweeper2026 repository on GitHub, at the commit this page was made from: the board is Minesweeper2026/Schematic/Robotics_Mine.kicad_pcb and its schematic Minesweeper2026/Schematic/Robotics_Mine.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask arminesweeper before reusing the design.