Getting Started - Axiometa GENESIS One

Getting Started - Axiometa GENESIS One

Introduction

Genesis IoT Discovery Lab is a modular, Wi-Fi-enabled prototyping system built around a standardized AX22 connector. The ESP32-S3 powered board provides eight AX22 ports that modules plug into directly. The connection standard can be implemented on other microcontroller platforms, making modules compatible across different boards. This platform eliminates breadboard wiring for common tasks like sensor reading, display control, and motor driving. Modules lock securely in place and provide reliable electrical connections. This reduces setup time and prevents connection failure during development and testing.

What You'll Need

 

Install Arduino IDE

First, we need to install the Arduino IDE, which is a development environment.

  1. Visit the official Arduino website: arduino.cc/en/software
  2. Download the latest version of Arduino IDE (2.0 or newer recommended)
  3. Install the software following the standard installation process for your operating system
  4. Launch Arduino IDE once installation is complete

 

Add ESP32 Board Support

The Pixie M1 uses an ESP32-S3 chip, so we need to add ESP32 support to Arduino IDE.

1. Open Arduino IDE

2. Go to File > Preferences

3. Click the tiny logo near Additional board manager URLs

4. Copy and paste the URL bellow into the box, click OK.

Copy this  →  https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json

 

Install ESP32 Board Package

Now we'll install the actual ESP32 board definitions.

  1.  On the Arduino IDE page on the left-hand side look for tiny board icon, click on it.
  2.  In the search box type in "esp32"
  3.  Make sure you find the esp32 by Espressif Systems and click install.
  4. This can take some time, wait until installed and you see a message in the output black box (something like: Platform esp32:esp32@3.3.0 installed)

Connect Your GENESIS One

Time to connect your hardware!

  1. Take your USB-C cable and connect it to the GENESIS One
  2. Connect the other end to your computer
  3. The board should power up with a Red Power LED

 

Select the Correct Port

We need to tell Arduino IDE which to which USB port the GENESIS One is connected to.

  1. Easiest way to do so is to click the drop down box as shown.
  2. Click Select other board and port...

      3. In the Search Box Type → Axiometa GENESIS One

      4. Select → Axiometa GENESIS One

      5. Select the COM Serial port, if you have more options or not sure which is the PIXIE M1, simply unplug the PIXIE and check which item disappeared then plug the PIXIE back in, that's your port!

      6. Click OK!

Now you're ready to start building. Grab a module, insert it into any port, and upload your code (Find it at the bottom of this page).

Try it with the RGB LED Module (AX22-0006). Plug it into Port 7.

Every port on GENESIS One provides the same set of interfaces SPI, I2C, UART, ADC, and GPIO so modules work in any slot.

For the RGB LED, the color channels map to the GPIO pins like this:

  • Blue → IO0
  • Red → IO1
  • Green → IO2

The GENESIS One Arduino Library has all the pin definitions built in, so controlling the LED is straightforward"

For example for Port 7 GPIO 0, you would call P7_IO0.
digitalWrite(P7_IO0, HIGH);  // Blue
digitalWrite(P7_IO1, HIGH);  // Red
digitalWrite(P7_IO2, HIGH);  // Green


Every module in the ecosystem comes with full documentation and ready-to-use example code at Modules – Axiometa.

 

Congratulations!

You've successfully set up your Axiometa GENESIS One and uploaded your first program. Here are some next steps to explore:

Projects Featuring GENESIS One

Back to blog
const int PIN_BLUE = P7_IO0;
const int PIN_RED = P7_IO1;
const int PIN_GREEN = P7_IO2;

float hue = 0;
const float HUE_STEP = 0.5;  // Adjust for speed

void setup() {
  pinMode(PIN_RED, OUTPUT);
  pinMode(PIN_GREEN, OUTPUT);
  pinMode(PIN_BLUE, OUTPUT);
}

void loop() {
  float r, g, b;
  hsvToRgb(hue, 1.0, 1.0, r, g, b);
  
  // Apply gamma correction and write
  analogWrite(PIN_RED, gammaCorrect(r));
  analogWrite(PIN_GREEN, gammaCorrect(g));
  analogWrite(PIN_BLUE, gammaCorrect(b));
  
  hue += HUE_STEP;
  if (hue >= 360) hue = 0;
  
  delay(20);
}

void hsvToRgb(float h, float s, float v, float &r, float &g, float &b) {
  int i = (int)(h / 60) % 6;
  float f = (h / 60) - (int)(h / 60);
  float p = v * (1 - s);
  float q = v * (1 - f * s);
  float t = v * (1 - (1 - f) * s);
  
  switch (i) {
    case 0: r = v; g = t; b = p; break;
    case 1: r = q; g = v; b = p; break;
    case 2: r = p; g = v; b = t; break;
    case 3: r = p; g = q; b = v; break;
    case 4: r = t; g = p; b = v; break;
    case 5: r = v; g = p; b = q; break;
  }
}

int gammaCorrect(float value) {
  return (int)(pow(value, 2.2) * 255);
}