Meet RVPC the world lowest cost Open Source Hardware All-in-one educational RISC-V computer with VGA and PS2 keyboard which will be available for DIY soldering workshop on Open Fest in Sofia this year!

The idea about EURO 1.00 Do-It-Yourself educational RISC-V computer came at TuxCon 2024 and I made lighting talk about it:

Then after the event I thoug some more and decided to use SO8 package and to drop the SD-card which would take too much resources.

So the idea came to this:

  1. Easy to solder DIY kit
  2. Complete all in one RISC-V computer with bare minimum Woz like monitor which will allow you to learn the RISC-V instructions by poking, peeking and disassembling the memory
  3. Price of EUR 1.00!

Here is the result:

CH32V003 in SO8 package – for easy soldering was choosen. It has just 6 GPIOs

PS2 takes two GPIOs

VGA takes three GPIOs – Vsync, Hsync and RGB

we left one more GPIO where Audio buzzer is connected

All done in beginner friendly PTH components

Now the fun part begins. There are already software resources for CH32V003:

  1. If you want to bare metal program CH32V003 there is PicoRVD where you can program it with single wire via any Raspberry Pi RP2040-PICO!
  2. ch32v003fun covers you with software support for every feature
  3. There is even Woz like monitor called Vmon
  4. There are also retro games made for ch32v003

Now the goal is to make PS2, VGA intergration to Vmon and have this bare minimum for OpenFest where interested people to learn the RISC-V architencture and instruction set will be able to build their very own One Euro RISC-V computer and play with it!

As CH32V003 have only 2K of RAM VGA resolution of 320×200 is possible in text mode 40×25 characters. The video will be generated without graphics video buffer, for the games user defined characters could be used.

It will be challenging but this makes it even more fun.

Next week we will have prototypes, so if you are interesting to join the software development sent me email to info@olimex.com and I can mail you one!

This board will be available as Soldering kit at our web www.olimex.com when complete.

The price will be EUR 1.00!

ESP32-POE2 Open Source Hardware PoE IoT board provides up to 25W power supply to external circuits

ESP32-POE2 is modification of the popular ESP32-POE but capable to deliver up to 25W power from PoE connection. This opens up lot of more possibilities.

User selectable 24V / 0.75A or 12V / 1.5A is provided plus +5V/1.5A for external circuits.

From software side ESP32-POE2 acts exactly as ESP32-POE so all software will work on both.

Some of the ESP32-POE2 features are:

  • ESP32-WROOM-32 – WiFi and Bluetooth module
  • Low power design – 200uA consumption in deep sleep
  • Ethernet 100Mb interface with IEEE 802.3 PoE support
  • USB-C connector for power and ESP32 programming
  • MicroSD card working in 1 bit mode
  • LiPo battery charger with LiPo battery connector
  • Battery level monitor pin on ADC
  • External power supply detection pin on ADC
  • Provides 24V/0.75A or 12V/1.5A to external circuit
  • Provides 5V/ 1.5A to external circuit
  • UEXT connector
  • EXT1 connector
  • User button
  • Reset button
  • PCB dimensions: 59×90 mm

The ESP32-POE2 price start from EUR 16.76 for 50+ pcs order.

The board is designed with KiCad and all files are available at GitHub.

ESP32-POE2 is supported by all the popular platforms Espressif SDK, MicroPython, ESPHome, PlatformIO, Arduino.

Installing Linux on the external Flash modules for STMP157-BASE-SOM-EVB

The new external Flash modules Flash-e16Gs16M and Flash-e32Gs16M add eMMC and SPI Flash to the boards which supports them:

The latest OLIMAGE Linux distribution supports these two modules, so this is how you can install linux on the Flash-e modules:

  1. Install the module on the board while no power is applied;
  2. Download the latest image from images.olimex.com;
  3. Burn the downloaded image to SD card, we suggest to use BalenaEtcher;
  4. If you use STM32MP157 board make sure on-board jumpers are set for boot from the SD card (see the picture below);
  5. Apply 5V DC power supply to the power jack. Notice that first time boot takes longer than usual so wait patiently to reach the login prompt. Login with user root and password olimex;
  6. You can check if eMMC is visible now with fdisk. Then execute the script for SD to eMMC transfer: $olinuxino-sd-to-emmc
  7. Wait until it completes. Then turn off the board with command “poweroff”. Wait until the board powers off then remove the power supply;
  8. Remove the micro SD card and configure the jumpers for boot from eMMC. In the BASE-SOM board that I use I change the state of BOOT_SW1 from default positions “ON, OFF, ON” to “OFF, ON, OFF”. The fourth switch is not connected.
  9. Apply power supply and board will boot from the eMMC image.

The advantage of the removable eMMC is that you can easily scale your project and change between different Flash sizes, or if Flash got damaged you can easily exchange it.

ESP32-H2-DevKit-Lipo Open Source Hardware board with Thread/Matter/Zigbee and BLE5 is ready for pre-order

Based on ESP32-H2-MINI-1-N4 module with 4MB Flash.

ESP32-H2 combines IEEE 802.15.4 connectivity with Bluetooth 5 (LE). The SoC is powered by a single-core, 32-bit RISC-V microcontroller that can be clocked up to 96 MHz. The ESP32-H2 has been designed to ensure low power consumption and security for connected devices. ESP32-H2 has 320 KB of SRAM with 16 KB of Cache, 128 KB of ROM, 4 KB LP of memory, and a built-in 2 MB or 4 MB SiP flash. It has 19 programmable GPIOs with support for ADC, SPI, UART, I2C, I2S, RMT, GDMA and LED PWM.

ESP32-H2-DevKit-LiPo have these features:

  • ESP32-H1-MINI-1-N4 module
  • USB-C with USB to Serial converter for programming / debugging
  • USB-C connected directly to ESP32-H2
  • LiPo battery charger and connector
  • UEXT connector
  • Qwiic/Stemma connector
  • Reset button
  • User button
  • User LED
  • all GPIOs available on two headers at 25.4 mm space
  • Dimensions: 48 x 25 mm

ESP32-H2-DevKit-Lipo is ready for pre-order for EUR 8.00

The shipments will start from January 31st, so if you want to be one of the first to play with this new SOC you better hurry up 🙂

Mark your agenda! TuxCon 2024 the open source hardware and software event in Plovdiv is on May 11-12th

TuxCon is an annual event about free and open source software and hardware. The entrance is free for all visitors. TuxCon is a community event and it is organized by volunteers.

In 2024 the event will be on May 11 and 12. First day is for lectures and lighting talks about open source projects in Technical University of Plovdiv. The second day is the traditional soldering workshop in Olimex training building.

So mark your agenda and looking forward to see you here 🙂

Edge computing with Drone swarm using Open Source Hardware OLinuXino board with European SOC inside

This week, we tested a project that we have been working on for a while with an international EU team.

Edge computing with drones made by C-Astral Slovenia, OLinuXino Open Source Hardware with EU SOC inside from Olimex Bulgaria, TSN Linux support from Linutronix Germany, and edge computing algorithms implemented by Nexedi France.

A swarm of autonomous drones was flying and changing roles.

These small drones weigh less than 2 kg, can fly up to 40 minutes with a speed of 20 m/s, and can go up to 40 km away. They can communicate with each other and form a swarm, which can perform missions even if there is no connection to the base control center.

What can a swarm of autonomous drones do? They can create maps, search for objects of interest, monitoring wildfires, floodings, counting animals and much more, covering up to 60 km² per day per drone.

ESP32-SBC-FabGL How to work with the expander module GPIOs from FabGL library and apps

ESP32-SBC-FabLG has CH32V003 expander which adds to it GPIO, I2C and SPI functionality.

In this post I will show you how you can work with the GPIO from the PC Emulator application and drive the GPIOs with QBASIC and TURBO PASCAL 7.0

You need to install our fork of FabGL library to your arduino and remove other FabGL libraries as they will interference (we have PR to original FabGL but it takes time to be merged), once/if our merge is accepted you will be able to do same with the original FabGL library, but right now this is not possible.

Compile and upload PCEmulator.ino from Examples-FabGL-VGA to ESP32-SBC-FabGL board.

Once the example is programmed and started you have to choose this setup:

you will have to connect to WiFi to may download the disk image for the first time.

Now you have to add the BASIC and TurboPascal code.

Download them then power off the ESP32-SBC-FabGL remove the SD card and add the files to it following this procedure:

  1. Put the SD-card in SD card reader and attach to PC
  2. Open the SD-card foler and in terminal execute: $ gnome-disk-image-mounter –writable hd20_DOSDEV.img
  3. You will see new disc mounted and you can write in it the files you download
  4. Unmount the disc
  5. Eject the SD card
  6. Put it back to ESP32-SBC-FabGL

GPIOs are accessable through these ports:

0xF0 – if reads as zero there is no expander, if reads as non zero there is expander. To check the Major and Minor revision of CH32 firmware read 0xFF and 0xFE

0xF1 – GPIO select, when you write value from 0 to 7 you select the corresponding GPIO, the UEXT connector signals are as follows: UEXT.1 = 3.3V; UEXT.2 = GND; UEXT.3 = GPIO0; UEXT.4 = GPIO1; UEXT.5 = GPIO2; UEXT.6 = GPIO3; UEXT.7 = GPIO4; UEXT.8 = GPIO5; UEXT.9 = GPIO6; UEXT.10 = GPIO7;

Note that GPIO3 and GPIO4 alternative function is I2C and they have 2K pullups to +3.3V, this makes them not quite good for GPIO function as when you set one the other will be also set parasitely throught the pullups and vice versa, so we do not recommend them to be used as normal GPIOs but only as I2C.

0xF2 – GPIO config, if GPIO is selected by writing in 0XF1 you can config it by writing 1 in Bit0 as input or as output if you write 0 in Bit0. If Bit0 is 1 you can additionally config the GPIO with pullup if you write 1 to Bit1 or with pulldown if you write 0 to Bit1. Example: write 0x00 to 0xF2 will configure the selected port as OUTPUT, write 0x03 to 0xF2 will configure the selected port as INPUT with Pullup.

0xF3 – GPIO read / write. If the GPIO is configured as Input and you read 0xF3 it will return 0 if the level is low and 1 if the level is high. If the GPIO is configured as Output writing 1 to 0XF3 will set it high and writing 0 will set it low.

Here is the BASIC code for blinking LED on GPIO 6

REM QBASIC program to control CH32V003 I/O expander inside PC Emulator

DECLARE FUNCTION HexByte$ (I)
DECLARE FUNCTION INT$ (I, L)
DECLARE FUNCTION ch32Available ()
DECLARE FUNCTION ch32VersionMinor ()
DECLARE FUNCTION ch32VersionMajor ()
DECLARE SUB gpioSelect (gpio)
DECLARE SUB gpioConfig (cfg)
DECLARE SUB gpioSet (level)
DECLARE FUNCTION gpioGet ()

CLS

REM check for I/O available
IF ch32Available = 0 THEN
  PRINT "CH32V003 expander not available on this board!"
  END
END IF

PRINT "CH32V003 expander firmware version "; INT$(ch32VersionMajor, 0); "."; INT$(ch32VersionMinor, 0); " found"

PRINT "Configure GPIO 6 as input pull-down"
gpioSelect (6)
gpioConfig (1)

PRINT "Configure GPIO 7 as output"
gpioSelect (7)
gpioConfig (0)

PRINT "Press any key to stop"

LOCATE 10, 1
WHILE LEN(INKEY$) = 0
  gpioSet (1)
  t = TIMER
  WHILE TIMER - t < 1: WEND
 
  gpioSet (0)
  t = TIMER
  WHILE TIMER - t < 1: WEND
WEND

FUNCTION HexByte$ (I)
  HexByte$ = RIGHT$("00" + HEX$(I), 2)
END FUNCTION

FUNCTION INT$ (I, L)
  R$ = LTRIM$(STR$(I))
  IF L <> 0 THEN
    R$ = RIGHT$(STRING$(L, " ") + R$, L)
  END IF
  INT$ = R$
END FUNCTION

FUNCTION ch32Available
  ch32Available = (INP(&HF0) AND 1)
END FUNCTION

FUNCTION ch32VersionMinor
  ch32VersionMinor = INP(&HFE)
END FUNCTION

FUNCTION ch32VersionMajor
  ch32VersionMajor = INP(&HFF)
END FUNCTION

SUB gpioSelect (gpio)
  OUT &HF1, gpio
END SUB

SUB gpioConfig (cfg)
  OUT &HF2, cfg
END SUB

FUNCTION gpioGet
  gpioGet = INP(&HF3)
END FUNCTION

SUB gpioSet (level)
  OUT &HF3, level
END SUB

Running this code in QBASIC will blink the LED

Similar code can be written in Turbo Pascal 7.0 which is available on the ‘disk’:

program CH32GPIO;
const input = true;
      output = false;
      pullup = true;
      pulldown = false;
      high = true;
      low = false;

function ch32Available: integer;
begin
  ch32Available := port[$F0];
end;

function ch32Version: string;
  var sa,si: string;
begin
  str(port[$FF],sa);
  str(port[$FE],si);
  ch32Version := sa+'.'+si;
end;

procedure ch32GPIOselect( gpio: integer);
begin
  if (gpio > 0) and (gpio < 8) then
    port[$F1] := gpio;
end;

procedure ch32GPIOconfig( inout, pullup: boolean);
begin
  port[$F2] := integer(inout) + integer(pullup) * 2;
end;

procedure ch32GPIOset(level: boolean);
begin
  port[$F3] := integer(level);
end;

function ch32GPIOget: boolean;
begin
  ch32GPIOget := boolean(port[$F3]);
end;

BEGIN
  if (ch32Available = 0) then
    begin
      writeln('CH32 Expander not found')
    end
  else
    begin
      writeln ('CH32 expander firmware version '+ ch32Version + ' found');
      writeln('GPIO 6 = Input');
      ch32GPIOselect(6);
      ch32GPIOconfig(input, pullup);
      writeln('GPIO 7 = Output');
      ch32GPIOselect(7);
      ch32GPIOconfig(output, pullup);
      writeln('GPIO 7 = High');
      ch32GPIOset(high);
      writeln('GPIO 7 = Low');
      ch32GPIOset(low);
    end;
END.

The extra benefit of using Turbo Pascal is that you have debugger with Step by Step execution 😉

Tomorrow I will show you how you can access I2C Nunchuk from QBASIC and TURBO PASCAL 7.0

ESP32-C6-EVB is Open Source Hardware board with WiFi6, Bluetooth 5(LE) and Zigbee Four relays and Four opto-isolated inputs

ESP32-C6 is Espressif’s first Wi-Fi 6 (IEEE 802.11ax) SoC integrating 2.4 GHz Wi-Fi 6, Bluetooth 5 (LE) and the 802.15.4 low-rate wireless personal area network (LR-WPAN) protocol which is the basis for the Zigbee, ISA100.11a, WirelessHART, MiWi, 6LoWPAN, Thread and SNAP specifications.

ESP32-C6 supports the OFDMA mechanism for both uplink and downlink communications, while also supporting MU-MIMO for downlink traffic. Both of these techniques allow working with high efficiency and low latency, even in congested wireless environments. Additionally, the Target Wake Time (TWT) feature of the 802.11ax standard enables ESP32-C6 customers to build battery-operated connected devices that can last for years, while staying connected throughout.

ESP32-C6 makes the Thread and Zigbee protocols available in a variety of cases of application development.

ESP32-C6 enable customers to build Matter-compliant Wi-Fi end-point devices and Thread end-point devices, thus achieving interoperability in smart-home devices from multiple brands.

ESP32-C6 comes with RSA-3072-based secure boot, AES-128/256-XTS-based flash encryption.

ESP32-C6-EVB is evaluation board with ESP32-C6 module and these features:

  • ESP32-C6-WROOM-1-N4 module with 32-bit RISC-V single-core microprocessor, up to 160 MHz, Flash: 4MB, ROM: 320 KB, HP SRAM: 512 KB, LP SRAM: 16 KB
  • Four Relays 10A/240VAC
  • Four opto-isolated inputs for DC voltage up to 30VDC
  • Two UEXT connectors
  • Extension GPIO connector
  • Programming connector
  • USB-C connector for programming and JTAG debugging
  • Reset button
  • User button
  • Wide range of power supply: 6-50VDC
  • Four mount holes

ESP32-C6-EVB will be in stock by the end of the month and the price is EUR 15.00

Our most complex OSHW board – the iMX8QuadMax Tukhla project first prototypes are assembled and they boot!

The Tukhla project was completed in April 2021. However, due to the COVID-19 semiconductor madness, we were unable to assemble prototypes because of the lack of semiconductors. The development of this project is financed by Ignitial SAS, a company based in France.

Finally we got enough chips to complete the first three prototypes and we assembled them last week before the May’s Holidays.

Tukhla has these features:

MIMX8QM5AVUFFAB 8-core processor:

  • x2 Cortex-A72 running at 1.6Ghz
  • x4 Cortex-A53 running at 1.2Ghz
  • x2 Cortex-M4F running at 264Mhz
  • 8 GB LPDR4 64 bit @1600Mhz

Connectivity:

  • 1× PCIe (2-lanes)
  • 1× USB 3.0 with PHY
  • 1x USB 3.0 dual role with PHY
  • 1× SATA 3.0
  • 2× 1Gb Ethernet with AVB
  • 1× CAN/CAN-FD
  • 1x HDMI Rx

GPU:

  • 2xGC7000 XSVX
  • 16× Vec4 shaders with 64 execution units
  • Dual independent 8-Vec4 shader GPUs or a combined 16-Vec4 shader GPU
  • OpenGL 3.0, 2.1
  • OpenGL ES 3.2, 3.1 (with AEP), 3.0, 2.0, and 1.1
  • OpenCL 1.2 Full Profile and 1.1
  • OpenVG 1.1
  • Vulkan

VPU:

  • H.265 decode (4Kp60)
  • H.264 decode (4Kp30)
  • WMV9/VC-1 imple decode
  • MPEG 1 and 2 decode
  • AVS decodeMPEG4.2 ASP,
  • H.263, Sorenson Spark decode
  • Divx 3.11 including GMC decode
  • ON2/Google VP6/VP8 decode
  • RealVideo 8/9/10 decode
  • JPEG and MJPEG decode
  • 2× H.264 encode (1080p30)

Display:

  • Supports single UltraHD 4Kp60 display
  • or up to 4 independent FullHD 1080p60 displays
  • 2× MIPI-DSI with 4 lanes each
  • 1× HDMI-TX/DisplayPort
  • 2× LVDS Tx with 2 channels of 4 lanes each

Camera:

  • 2× MIPI-CSI with 4-lanes each, MIPI DPHYSM v1.

Security:

  • Advanced High Assurance Boot (AHAB) secure & encrypted boot

Operating temperature:

  • Automotive AEC-Q100 Grade 3 -40+125C

We now experiment with NXP Yocto build images to verify everythings is working correctly, before we run production.

AgonLight2 now is officially certified by OSHWA as Open Source Hardware

AgonLight2 now is officially listed on OSHWA.org directory as true Open Source Hardware project.

Previous Older Entries