Skip to content

Repository files navigation

rcbench

English · Deutsch

CI (continuous integration) codecov

A motor, ESC (electronic speed controller) and servo test bench on two processors: an ESP32-S3 touch panel (user interface, settings, SD card) and an RP2350 coprocessor (measurement, outputs, and every protocol with timing requirements), connected over CAN (Controller Area Network) at 1 Mbit/s.

Status: under construction. The panel boots, every screen exists, and the CAN link runs on hardware. The output drivers are built and an armed bank drives every bound pin at its role's rest whether or not anything commands it; a motor and a servo have each been run from the panel on a bring-up bench. What is unmeasured is the timing on an instrument -- no bit width, frame period or reply delay in this tree has been seen on a scope or an analyser. Most other measurements wait on parts that are not fitted. Screens showing simulated values are marked SIMULATION.

STATUS.md records what is built, what is open and what is not planned.

Safety

This bench drives motors and servos. Keep clear of the propeller plane whenever the bench is armed.

Arming is deliberate: a two-second hold on ARM, with the command sent when the hold completes rather than when the finger lifts. Disarming and STOP are a single press.

Three stop mechanisms are designed in: a heartbeat whose absence removes the outputs, the coprocessor's own link watchdog, and a STOP command over the link. The line between the panel's J8 and the coprocessor's GP3 is fitted on the bring-up bench, so arming works there. The heartbeat's retriggerable monostable is on no board, so firmware at both ends is the only thing gating the outputs and there is no hardware backstop behind it. The STOP command over the link is written and not run on hardware. Safety specifies all three.

Nothing here has been through a safety certification. The MIT (Massachusetts Institute of Technology) licence's "without warranty of any kind" applies.

Features

Screen Function State
Motor & ESC voltage, current, consumption, RPM (revolutions per minute) and temperatures plotted live screen built; values simulated
Servo commanded and measured position; installed-limit search; two-servo synchronisation screen built and commanding over the link; drives the pins bound as surfaces, run on a bring-up bench, timing unmeasured
Analyser sixteen receiver channels with history, the digital channels, LIVE / FRAME LOST / FAILSAFE / SILENT S.BUS decoder built; PIO (programmable input/output) receiver not written
Programmer BLHeli_S, AM32, ESCape32, VESC and Hitec parameter tables screen built; no protocol on a wire
Balance blade count, correction mass and angle, sensor placement guides screen built; sensors not fitted
Battery per-cell spread and verdict screen built; cell monitor not fitted
Logs browse, import and plot CSV (comma-separated values) from the card; runs are recorded while armed built
Setup settings in both themes, stored in NVS built; persistence confirmed on hardware

Building

The host suite needs a C compiler and CMake:

cmake -S test/host -B test/host/build -DCMAKE_BUILD_TYPE=Debug
cmake --build test/host/build
ctest --test-dir test/host/build --output-on-failure

The panel firmware needs ESP-IDF (Espressif Internet-of-Things Development Framework) v5.4 or newer; the coprocessor firmware needs pico-sdk 2.0 or newer. Building has the toolchains, the commands and the CI gates.

Documentation

The wiki is generated from docs/ in English and German. Edit the files, not the wiki.

Page Content
What this is for requirements and their state
Building toolchains, commands, CI
Bringing up the link wiring the two boards and verifying the bus
Screens operating the bench
Balancing · Servo procedures · Receiver buses the measurements
Safety stop mechanisms and the required external circuit
The link · OpenYGE · Performance firmware reference

Contributing

CONTRIBUTING.md has the rules and the checks CI runs. Two of them cannot be corrected after the fact: protocols are implemented from specifications, not from other implementations (a licensing rule), and coverage has a per-file floor as well as a total.

Security and safety reports: SECURITY.md.

Licences and attributions

rcbench is MIT licensed: LICENSE.

  • DejaVu Sans Mono. The three font tables under shared/gfx/ are glyph bitmaps rendered from DejaVu Sans Mono by tools/gen_font.py, under the Bitstream Vera Fonts Copyright (NOTICE). No font file is redistributed.
  • Protocols are implemented from published specifications. Permissive reference code (PX4's receiver decoders under BSD (Berkeley Software Distribution); MIT reference code for SRXL2, JETI EX Bus, DShot and DroneCAN) was read for confirmation only.
  • Design references: ArduPilot's IOMCU (the two-processor split and the watchdog ratio); YGE's OpenYGE material, from which the specification is written; the published protocols and configurators of BLHeli, AM32, ESCape32, VESC and Hitec.
  • Third-party code in the tree: none. test/host/greatest.h is a test harness written for this project; it is not the greatest library.

About

No description, website, or topics provided.

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages