# Pika Spark - a Cyphal first micro robot control system

**URL:** <https://forum.opencyphal.org/t/pika-spark-a-cyphal-first-micro-robot-control-system/1988>\
**Category:** General\
**Created:** [September 20, 2023, 12:18pm UTC](https://forum.opencyphal.org/t/pika-spark-a-cyphal-first-micro-robot-control-system/1988 "2023-09-20T12:18:07Z")\
**Posts on this page:** 17\
**Page:** 1

<div class="post-metadata">

**Author:** ![aentinger](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/aentinger/32/1428_2.png) [@aentinger](https://forum.opencyphal.org/u/aentinger)\
**Post date:** [September 20, 2023, 12:18pm UTC](https://forum.opencyphal.org/t/pika-spark-a-cyphal-first-micro-robot-control-system/1988/1 "2023-09-20T12:18:07Z")

</div>

Hi everyone ☕ 👋

For quite some time I’ve been working on the [Pika Spark](https://pika-spark.io/), which is a [Arduino Portenta X8](https://store.arduino.cc/products/portenta-x8) based **micro robot control system** combining an unprecedented amount of **computing power and interfaces** within an **extremely small** form factor.

Naturally [Cyphal](https://opencyphal.org/) is going to be a **first-class citizen** 😉 .

 ![2023-09-19-Pika-Spark-Top-Info-Rev-3](https://forum.opencyphal.org/uploads/default/original/2X/e/e4b772ae0368245cdaa07188cbf9dfceae408c0d.jpeg)

# Computing

**NXP i.MX 8M Mini Processor** running [Yocto Linux](https://www.yoctoproject.org/) with [ROS2](https://docs.ros.org/) in [Docker](https://www.docker.com/).

- 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

# Interfaces

## Industrial Wired Interfaces

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

- 2 x CAN / CAN FD ([Controller Area Network](https://en.wikipedia.org/wiki/CAN_bus))
- 2 x [RS485](https://en.wikipedia.org/wiki/RS-485)
- Gigabit-Ethernet ([1000BASE-T](https://en.wikipedia.org/wiki/Gigabit_Ethernet#1000BASE-T))
- Single-Pair Ethernet ([10BASE-T1S](https://en.wikipedia.org/wiki/Ethernet_over_twisted_pair))

## Other Wired Interfaces

- Debug-UART providing a [Unix shell](https://en.wikipedia.org/wiki/Unix_shell)
- USB-C for flashing the Yocto image and connecting via adb (Android Debug Bridge)

## Wireless Interfaces

- WiFi ([Murata 1DX](https://www.murata.com/products/connectivitymodule/wi-fi-bluetooth/overview/lineup/type1dx))

## Miscellaneous

- **9-DoF** (Degree-of-Freedom) **IMU** ([Inertial Measurement Unit](https://en.wikipedia.org/wiki/Inertial_measurement_unit))
- **EEPROM** for configuration storage ([24LC256](https://ww1.microchip.com/downloads/aemDocuments/documents/MPD/ProductDocuments/DataSheets/24AA256-24LC256-24FC256-256K-I2C-Serial-EEPROM-DS20001203.pdf))

# Further Information

- 🌐 [https://pika-spark.io](https://pika-spark.io)
- 📖 [https://docs.pika-spark.io](https://docs.pika-spark.io)
- ⌨ [https://github.com/pika-spark](https://github.com/pika-spark)

In case you are interested in obtaining a Pika Spark board please send me an 📧 via [contact@pika-spark.io](mailto:contact@pika-spark.io) .

---

<div class="post-metadata">

**Author:** ![scottdixon](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/scottdixon/32/39_2.png) [@scottdixon](https://forum.opencyphal.org/u/scottdixon)\
**Post date:** [September 20, 2023, 9:58pm UTC](https://forum.opencyphal.org/t/pika-spark-a-cyphal-first-micro-robot-control-system/1988/2 "2023-09-20T21:58:31Z")

</div>

Really exciting stuff!

---

<div class="post-metadata">

**Author:** ![jackorton32](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/jackorton32/32/1386_2.png) [@jackorton32](https://forum.opencyphal.org/u/jackorton32)\
**Post date:** [September 21, 2023, 12:53pm UTC](https://forum.opencyphal.org/t/pika-spark-a-cyphal-first-micro-robot-control-system/1988/3 "2023-09-21T12:53:35Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![aentinger](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/aentinger/32/1428_2.png) [@aentinger](https://forum.opencyphal.org/u/aentinger)\
**Post date:** [September 21, 2023, 3:41pm UTC](https://forum.opencyphal.org/t/pika-spark-a-cyphal-first-micro-robot-control-system/1988/4 "2023-09-21T15:41:30Z")

</div>

Thank you 🙇‍♂️ .

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.

---

<div class="post-metadata">

**Author:** ![aentinger](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/aentinger/32/1428_2.png) [@aentinger](https://forum.opencyphal.org/u/aentinger)\
**Post date:** [January 8, 2024, 6:23pm UTC](https://forum.opencyphal.org/t/pika-spark-a-cyphal-first-micro-robot-control-system/1988/5 "2024-01-08T18:23:04Z")

</div>

Hi everyone ☕ 👋

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](https://pika-spark.io/tutorials/diagnose-can-based-cyphal-networks-via-yakut/). (And don’t you worry, no need to copy-paste out of the article, [ready-made bash scripts](https://github.com/pika-spark/pika-spark-containers/tree/main/yakut-can) w/ integrated error handling for your usage are available).

As a test-setup I’ve been using a [Pika Spark](https://pika-spark.io/) and a [CyphalPicoBase/CAN](https://cyphal.store/products/lxrobotics-cyphalpicobase-can) w/ a [Zubax Babel](https://cyphal.store/products/zubax-cf1-babel-can-usb-uart-adapter) also connected to the bus.

 ![2024-07-01-Pika-Spark-CyphalPicoBase-CAN-Yakut](https://forum.opencyphal.org/uploads/default/original/2X/f/f2ada5b51b3c8cef90e8dedc09087d971a87736d.jpeg)

Happy [yakut](https://github.com/OpenCyphal/yakut)-ing 😉 🚀

---

<div class="post-metadata">

**Author:** ![aentinger](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/aentinger/32/1428_2.png) [@aentinger](https://forum.opencyphal.org/u/aentinger)\
**Post date:** [January 16, 2024, 8:20am UTC](https://forum.opencyphal.org/t/pika-spark-a-cyphal-first-micro-robot-control-system/1988/6 "2024-01-16T08:20:07Z")

</div>

Hi everyone ☕ 👋

Interested to learn how to control and configure the ubiquitious [Robotis Dynamixel](https://www.dynamixel.com/) 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](https://pika-spark.io/tutorials/control-robotis-dynamixel-via-rs485/) 🚀 😉

As a test-setup I’ve been using a [Pika Spark](https://pika-spark.io/), a [RS485 Power Injector](https://github.com/107-systems/RS485-Power-Injector) and four (4) Robotis Dynamixel [MX28AR](https://emanual.robotis.com/docs/en/dxl/mx/mx-28-2/) servos.

 ![2024-07-16-Pika-Spark-Dynamixel-Setup](https://forum.opencyphal.org/uploads/default/original/2X/c/c668ea7bbc768a83a5f5a13bfb81c2f529b6e31a.jpeg)

Have fun 😉

---

<div class="post-metadata">

**Author:** ![aentinger](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/aentinger/32/1428_2.png) [@aentinger](https://forum.opencyphal.org/u/aentinger)\
**Post date:** [January 25, 2024, 12:46pm UTC](https://forum.opencyphal.org/t/pika-spark-a-cyphal-first-micro-robot-control-system/1988/7 "2024-01-25T12:46:51Z")

</div>

Another week, another tutorial 😉 … 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: [11 - How-to IMU | docs.lxrobotics.com](https://pika-spark.io/tutorials/obtain-bno085-imu-attitude-and-visualize-via-ros/) .

 ![image](https://forum.opencyphal.org/uploads/default/original/2X/6/64a5cf21c57a3639bf9b792bb0ab50bc6f3ea279.png)

---

<div class="post-metadata">

**Author:** ![aentinger](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/aentinger/32/1428_2.png) [@aentinger](https://forum.opencyphal.org/u/aentinger)\
**Post date:** [February 5, 2024, 8:43am UTC](https://forum.opencyphal.org/t/pika-spark-a-cyphal-first-micro-robot-control-system/1988/8 "2024-02-05T08:43:07Z")

</div>

Here’s a small [case-study](https://pika-spark.io/case-studies/control-imaging-sensor-head-pan-and-tilt-axis/) that demonstrates how to the Pika Spark can be used to control the **Dragonbeard** pan/tilt color/thermal imaging head designed by @scottdixon 🚀 (still amazed by Scott’s fantastic design work and prototyping 🙇‍♂️ ).

 ![image](https://forum.opencyphal.org/uploads/default/original/2X/2/256d9adf37631622a595883e70d82724dbb43cb4.jpeg)

---

<div class="post-metadata">

**Author:** ![scottdixon](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/scottdixon/32/39_2.png) [@scottdixon](https://forum.opencyphal.org/u/scottdixon)\
**Post date:** [February 8, 2024, 3:26am UTC](https://forum.opencyphal.org/t/pika-spark-a-cyphal-first-micro-robot-control-system/1988/9 "2024-02-08T03:26:04Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![aentinger](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/aentinger/32/1428_2.png) [@aentinger](https://forum.opencyphal.org/u/aentinger)\
**Post date:** [March 22, 2024, 7:15am UTC](https://forum.opencyphal.org/t/pika-spark-a-cyphal-first-micro-robot-control-system/1988/10 "2024-03-22T07:15:38Z")

</div>

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: [12 - How-to EEPROM | docs.lxrobotics.com](https://pika-spark.io/tutorials/how-to-access-eeprom-via-i2c/) 😉

 ![2024-03-18-Pika-Spark-EEPROM](https://forum.opencyphal.org/uploads/default/original/2X/7/778bbc77191353933c74531e402477738f1e7317.png)

---

<div class="post-metadata">

**Author:** ![aentinger](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/aentinger/32/1428_2.png) [@aentinger](https://forum.opencyphal.org/u/aentinger)\
**Post date:** [March 24, 2024, 3:57pm UTC](https://forum.opencyphal.org/t/pika-spark-a-cyphal-first-micro-robot-control-system/1988/11 "2024-03-24T15:57:18Z")

</div>

Just finished taking pictures and recording videos with various [Pika Spark](https://pika-spark.io/) & [OpenCyphal](https://opencyphal.org/)-enabled robots.

Here’s a sneak preview of Pika Spark controlling those robots via Cyphal/CAN using one or multiple [CyphalRobotController07-CAN](https://github.com/generationmake/CyphalRobotController07-CAN) ([Firmware](https://github.com/107-systems/CyphalRobotController07-CAN-firmware) - leveraging [107-Arduino-Cyphal](https://github.com/107-systems/107-Arduino-Cyphal)).

 ![T07-11](https://forum.opencyphal.org/uploads/default/original/2X/0/09a5c78b0f5241540065e34547bdfae6acd90c53.jpeg)

 ![T07-4WD-02](https://forum.opencyphal.org/uploads/default/original/2X/6/6fa1c9acbc708916b91d19a7d517f5c8a47f4afd.jpeg)

 ![T07-Tracked-01](https://forum.opencyphal.org/uploads/default/original/2X/b/bd07ad7a265056ad062085a8b02427de6e8f842e.jpeg)

The full blog-post pointing to all relevant ressources shall be released within this week 🙇‍♂️

---

<div class="post-metadata">

**Author:** ![aentinger](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/aentinger/32/1428_2.png) [@aentinger](https://forum.opencyphal.org/u/aentinger)\
**Post date:** [March 25, 2024, 7:26am UTC](https://forum.opencyphal.org/t/pika-spark-a-cyphal-first-micro-robot-control-system/1988/12 "2024-03-25T07:26:50Z")

</div>

And the video has been edited 😉 🙇‍♂️ (Make sure to spot the OpenCyphal logo 😉 ).

---

<div class="post-metadata">

**Author:** ![aentinger](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/aentinger/32/1428_2.png) [@aentinger](https://forum.opencyphal.org/u/aentinger)\
**Post date:** [March 27, 2024, 5:41am UTC](https://forum.opencyphal.org/t/pika-spark-a-cyphal-first-micro-robot-control-system/1988/13 "2024-03-27T05:41:38Z")

</div>

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 😉 : [Pika Spark as a generic robot controller - Pika Spark](https://pika-spark.io/case-studies/pika-spark-as-generic-robot-controller/) .

---

<div class="post-metadata">

**Author:** ![aentinger](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/aentinger/32/1428_2.png) [@aentinger](https://forum.opencyphal.org/u/aentinger)\
**Post date:** [May 15, 2024, 9:27am UTC](https://forum.opencyphal.org/t/pika-spark-a-cyphal-first-micro-robot-control-system/1988/14 "2024-05-15T09:27:27Z")

</div>

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](https://pika-spark.io/tutorials/how-to-can/) 😉 🙇‍♂️ .

---

<div class="post-metadata">

**Author:** ![aentinger](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/aentinger/32/1428_2.png) [@aentinger](https://forum.opencyphal.org/u/aentinger)\
**Post date:** [May 21, 2024, 7:32am UTC](https://forum.opencyphal.org/t/pika-spark-a-cyphal-first-micro-robot-control-system/1988/15 "2024-05-21T07:32:54Z")

</div>

Now also: [detailed tutorial](https://pika-spark.io/tutorials/how-to-rs485/) 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` 🚀 😉 .

---

<div class="post-metadata">

**Author:** ![aentinger](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/aentinger/32/1428_2.png) [@aentinger](https://forum.opencyphal.org/u/aentinger)\
**Post date:** [May 24, 2024, 6:35am UTC](https://forum.opencyphal.org/t/pika-spark-a-cyphal-first-micro-robot-control-system/1988/16 "2024-05-24T06:35:23Z")

</div>

[Pika Spark](https://pika-spark.io/) was used in a real ™ robot with Cyphal/CAN controlled motor drivers participating in the 🇨🇿 Robotem Rovné competition. A small event report as well as links to used hardware and software can be found here: [https://107-systems.org/robotem-rovne-2024/](https://107-systems.org/robotem-rovne-2024/) .

 ![2024-05-15-Robotem-Rovne-Late-Night-Preparation-05](https://forum.opencyphal.org/uploads/default/original/2X/c/c46b8578f9af5e80b67b29d8010a824527592d28.jpeg)

 ![2024-05-15-Robotem-Rovne-Late-Night-Preparation-02](https://forum.opencyphal.org/uploads/default/original/2X/2/25e2f7b7b4fb5e16170bf0c3ae290523cd100f0c.jpeg)

 ![2024-05-18-Robotem-Rovne-Pisek-01](https://forum.opencyphal.org/uploads/default/original/2X/b/ba08ad8a04368bda4a43360838cdec696353f30b.jpeg)

 ![2024-05-18-Robotem-Rovne-Pisek-03](https://forum.opencyphal.org/uploads/default/original/2X/a/a1499929f4ccc5cc7eaeee7acd9e3874825b5d2f.jpeg)

---

<div class="post-metadata">

**Author:** ![aentinger](https://forum.opencyphal.org/user_avatar/forum.opencyphal.org/aentinger/32/1428_2.png) [@aentinger](https://forum.opencyphal.org/u/aentinger)\
**Post date:** [July 3, 2024, 9:20am UTC](https://forum.opencyphal.org/t/pika-spark-a-cyphal-first-micro-robot-control-system/1988/17 "2024-07-03T09:20:06Z")

</div>

Once again did we participate at a major robotics competition, the [European Land Robot Trials](https://elrob.org/elrob-2024/) (ELROB) 2024 in Trier ( 🇩🇪 ). Of the several scenarios available we partook in “Reconnoitering of structures”, which this year took place mostly outside (not so much structures) and in inclined terrain (which confused our algorithm for autonomous exploration, which assumed plane surfaces).

Again, [Pika Spark](https://pika-spark.io/) leveraging OpenCyphal for Cyphal/CAN communication (via [107-Arduino-Cyphal](https://github.com/107-systems/107-Arduino-Cyphal)) was used for controlling the robot.

Here are a couple of pictures, an overall event report may happen only in the very distant future, as I’ve not even written up last years event.

 ![IMG_20240623_143510699](https://forum.opencyphal.org/uploads/default/original/2X/d/d5c58c1435a1e4555c4cf5accc28748aec9373fd.jpeg)

 ![IMG_20240625_095759463](https://forum.opencyphal.org/uploads/default/original/2X/8/82e0ba679d8c277f41550e9cd6e6d3451f449b82.jpeg)

 ![IMG_20240625_095750833](https://forum.opencyphal.org/uploads/default/original/2X/1/10d21a2d1c9fd4e7c129e2c12ecd81dc8682d05c.jpeg)

 ![IMG_20240625_095738952](https://forum.opencyphal.org/uploads/default/original/2X/8/8b9a0b7586db371150af6878901f2a88d533ae56.jpeg)
