Code Monkey home page Code Monkey logo

electricui-arena's Introduction

Electric UI CI Arena

Hardware for continuous integration testing of serial interfaces and microcontrollers. Background and more detailed discussion outlined in this blog post.

PCB Render with annotations

The board (KiCAD files in /hardware) exposes control to a CI build worker to power up any of the USB-UART adaptors in either loopback mode, or connected to any one of the hardware targets for a total test matrix of 72 combinations.

Intended to run tests for hot-plug detection (by controlling the mux or USB power control), disconnection handling (by re-routing serial to the void) and to validate a wide range of microcontroller architectures and their corresponding toolchains.

USB to UART Validation

Up to 8 USB ports are provided behind a USB mux from the host.

Individual power switching is available per-port, with optional routing of the USB-UART adaptor's serial lines to either loop-back, or to one of the target microcontrollers.

The following adaptors are used as test adaptors:

In the future, we hope to add Bluetooth/WiFi adaptors for wireless tests against compatible targets.

Microcontroller Validation

8 power-switched targets are supported with connections to hardware serial. The Adafruit Feather specification is used, as a majority of planned targets are available in Feather format.

The following boards are used as test devices:

Test hardware will be flashed with a mix of native 'bare metal' images, and at least one target will act as validation of the Arduino framework.

When populating the test Feather boards with headers, use 'stacking' headers to allow for future sensor/display additions to targets.

Supervisory Control

An additional Feather is provided to act as the supervisor. This connects to the CI server using a ethernet featherwing.

The supervisor (through I2C expanders) controls power switches to each of the serial adaptors and test devices, and has 2 IO lines to each microcontroller to allow for input/output checks.

An analog line is shared across all modules, with the intent of using the supervisor's DAC output, allowing additional tests.

Firmware is in /firmware

Manufacture

  • I used JLPCB's 4-layer JLC7628 controlled impedance process.
  • No stencil was ordered, as 2 units with low SMD part count is easy enough to paste by hand.
  • All components were available from Digikey.
  • Microcontroller targets were bought from Sparkfun and Adafruit (via Digikey)
  • Assembled per board costs just under $100AUD.
  • Loaded price (with listed microcontrollers, USB-serial adaptors, supervisor w ethernet) approx $500AUD.

See /hardware/output/arena-BOM.html for PCB BOM.

electricui-arena's People

Contributors

scottapotamas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

electricui-arena's Issues

Develop MVP firmware for hardware targets

The matrix of hardware targets is as follows (ones with content in the "Firmware" column work) :

Arch Microcontroller Devkit   Firmware
RISC-V FE310-G002 Sparkfun RED-V Thing Plus Zephyr RTOS  -
Xtensa ESP32-WROOM-32D Adafruit ESP32 Feather FreeRTOS esp32-uart
ARM M4F RP2040 Adafruit Feather RP2040 picoSDK rp2040-uart-eui
ARM M4F nRF52840 Adafruit Feather nRF52840 Sense nRF5 SDK -
ARM M4F STM32F405 Adafruit STM32F405 Express STCube LL stm32-dma-uart
ARM M4 K20DX256 Teensy 3.2 Arduino hello-blink
ARM M0+ SAMD21 Adafruit Feather M0 Basic - hello-blink
megaAVR ATMEGA328P Adafruit Feather 328P - -

Link to order the assembled PCB

For people who find it hard to do the "simple" paste and heat of SMD components, it would be great if we have a link where we can order the preassembled board from JCB.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.