Pika Spark - a Cyphal first micro robot control system

Hi everyone :coffee: :wave:

For quite some time I’ve been working on the Pika Spark, which is a Arduino Portenta X8 based micro robot control system combining an unprecedented amount of computing power and interfaces within an extremely small form factor.

Naturally Cyphal is going to be a first-class citizen :wink: .


NXP i.MX 8M Mini Processor running Yocto Linux with ROS2 in Docker.

  • 4 x ARM Cortex-A53 up to 1.8 GHz / core
  • 1 x ARM Cortex-M4 up to 400 MHz
  • 2GB low power DDR4 DRAM
  • 16GB eMMC flash module

STM32H747XI Micro-Control-Unit running bare-metal firmware for real-time applications.

  • Cortex-M7 core up to 480 MHz with double-precision FPU
  • Cortex-M4 core up to 240 MHz with FPU
  • 1 MB RAM
  • 2 MB Flash


Industrial Wired Interfaces

All industrial wired interfaces are galvanically isolated to prevent ground-loops and increases overall system resilience.

Other Wired Interfaces

  • Debug-UART providing a Unix shell
  • USB-C for flashing the Yocto image and connecting via adb (Android Debug Bridge)

Wireless Interfaces


Further Information

In case you are interested in obtaining a Pika Spark board please send me an :email: via contact@pika-spark.io .


Really exciting stuff!


This looks really clean.

In terms of supplying power to the unit, just going by the block diagram, are the options usb C and PoE on both the 10base-t1s and 1000base-T?

1 Like

Thank you :bowing_man: .

Yes, you can supply power via any of (or any combination of)

  • USB-C
  • PoE (Power-over-Ethernet on the 1000BASE-T)
  • PoDL (Power-over-Data-Lines on the 10BASE-T1S)

however, only when powering over PoE or PoDL you have galvanic isolation.

USB-C is intended for development, all other interfaces for deployment.


Hi everyone :coffee: :wave:

Although I’ve laid the groundwork for this quite some time ago only recently have I been able to sit down and write this up: A simple guide on how-to run Yakut on Pika Spark in a CAN-based Cyphal network. (And don’t you worry, no need to copy-paste out of the article, ready-made bash scripts w/ integrated error handling for your usage are available).

As a test-setup I’ve been using a Pika Spark and a CyphalPicoBase/CAN w/ a Zubax Babel also connected to the bus.

Happy yakut-ing :wink: :rocket:


Hi everyone :coffee: :wave:

Interested to learn how to control and configure the ubiquitious Robotis Dynamixel servo motors via Pika Spark? Wait no more. Here’s a simple guide on how-to control Robotis Dynamixel via Pika Spark’s RS485 interface :rocket: :wink:

As a test-setup I’ve been using a Pika Spark, a RS485 Power Injector and four (4) Robotis Dynamixel MX28AR servos.

Have fun :wink:

1 Like

Another week, another tutorial :wink: … this time I’ll showcase how to use Pika Spark’s onboard IMU for attitude estimation, streaming the IMU’s data via ROS from the Pika Spark to your development PC and then visualizing it via ROS tools: How-to obtain a BNO085 IMU's attitude and visualize it via ROS - Pika Spark .


Here’s a small case-study that demonstrates how to the Pika Spark can be used to control the Dragonbeard pan/tilt color/thermal imaging head designed by @scottdixon :rocket: (still amazed by Scott’s fantastic design work and prototyping :bowing_man: ).


Oooooh! I’m so excited. I’ll try it over the weekend! :dragon_face:

1 Like

Pika Spark has an onboard EEPROM for storing configuration and user-specific data. So far it has been mostly undocumented how to do this, but fear not, I finally got around to publishing a tutorial for this: How-to access Pika Spark's EEPROM via I2C - Pika Spark :wink:

1 Like

Just finished taking pictures and recording videos with various Pika Spark & OpenCyphal-enabled robots.

Here’s a sneak preview of Pika Spark controlling those robots via Cyphal/CAN using one or multiple CyphalRobotController07-CAN (Firmware - leveraging 107-Arduino-Cyphal).

The full blog-post pointing to all relevant ressources shall be released within this week :bowing_man:


And the video has been edited :wink: :bowing_man: (Make sure to spot the OpenCyphal logo :wink: ).


You’ve already seen the pictures, and I’ve already shared the video. Here it is now - the blog post written up with the technical details behind this demo :wink: : Pika Spark as a generic robot controller - Pika Spark .

There’s been some time since my last update but I finally got around to writing up the foundational tutorial on how to use the fully galvanically isolated CAN interfaces of the Pika Spark: How-to use Pika Spark's CAN interface - Pika Spark :wink: :bowing_man: .

1 Like

Now also: detailed tutorial on how to both receive and transmit data via Pika Spark’s fully galvanically isolated RS485 port. Note: configuration of the IMX8’s UART is done via Device-Tree magic so that from a user’s perspective is a simple /dev/tty :rocket: :wink: .