New Product Preview: RP2040-PICO30 Raspberry Pico with 30 GPIO available!

RP2040 is a nice dual-core Cortex-M0 SOC packed with a lot of features and a huge community that has been built up over the last two years since its announcement.

For our new Neo6502 design, we needed to use all 30 GPIOs on the RP2040. Although the RP2040 has 30 GPIOs, only 26 of them are available for the user, as GPIO23 controls the power supply, GPIO24 detects if USB is connected, GPIO25 is connected to the status LED, and GPIO29 measures the power supply after the 3.3V voltage regulator. While all these features are nice to have, there are many situations when you need to use ALL available GPIOs.

This is why we decided to release the RP2040-PICO30, where all 30 GPIOs are available for the user. We tried to be as compatible as possible with the RP2040-PICO layout, so we kept all signals in the same places and just removed 4 GNDs (as there are plenty in the RP2040-PICO) and connected the missing 4 GPIOs there.

Here is RP2040-PICO30 pinout:

In addition, we changed the USB micro connector used in the RP2040-PICO (as it can’t supply more than 0.5A by design) to USB-C, where up to 3A can be sourced. We also replaced the voltage regulator used in the RP2040-PICO with the proven SY8089A DCDC, which can deliver up to 3A at 3.3V.

RP2040-PICO30 has two buttons: RESET and BOOT and there is also status LED but it’s not connected by default to GPIO25 and require small solder jumper to be soldered if you want to use the LED. Of course we also add UEXT connector so our UEXT modules can be used with it.

This board is currently in the prototype stage and will be available for sale in late May. The price of the RP2040-PICO30 with 2MB Flash will be EUR 4.50. If you want the headers to be soldered onto it, the price will be EUR 6.00.

There will also be a version with 16MB Flash, and the price of the RP2040-PICO30-16MB will be EUR 6.50 without soldered headers and EUR 8.00 with soldered headers on it.

Neo6502- Open Source Hardware Modern Retro Computer Project

I will admit, I have a sentiment for retro computers. This is probably because my career in IT started many years ago with the Bulgarian Apple ][ clone called IMKO2, later renamed to Pravetz 82.

This is also one of the reasons Olimex stepped into the AgonLight production.

AgonLight sparked a lot of enthusiasm and activity, not only here at Olimex. Bernardo Kastrup hit the sweet spot of the Retro Computer maniacs by offering them a small, fast, feature-packed real Z80 machine with plenty of memory. The Facebook group already has close to 1000 members!

There are a lot of posts about why not having a 6502-based machine, and Kyle (mos_8502), Rebecca (RenewedRebecca) and Bernardo (TheByteAttic) are already working on a W65C265 version using the same ESP32 FabGL-based video and audio system.

Two weeks ago, I started thinking, as an engineering challenge, is it possible to build a modern peripheral 6502 computer that is with the lowest possible cost.

Then I put the minimal requirements for my 6502 computer:

  • It must have a real 6502 processor.
  • It must have a minimum of 64KB of RAM.
  • This computer must run as fast as possible. People confirm that the W65C02 from WDC can be overclocked up to 16Mhz. On the other hand, a lot of software depends on instruction execution time for loops, so the possibility to run at a lower 1Mhz clock will ensure backward software compatibility. This can be achieved with a variable clock that can be set by 6502 software.
  • The computer must have a modern video interface like DVI/HDMI so that you can connect it to your home TV or modern monitor.
  • Support for a modern USB keyboard.
  • A sound synthesizer like the popular C64 SID.
  • The power supply should be via a USB-C connector so that you can use any phone charger with a USB-C cable.
  • A UEXT connector with modern interfaces like UART, I2C, SPI.
  • Disk storage for code.
  • The 6502 bus should be available on a slot/connector so that additional hardware can be easily added on.

The final requirement is to design such a system to be at the lowest possible price, making it an easy purchase decision, similar to what the Raspberry Pi did with a price of $25-30.

This is a good hardware engineering challenge!

After some research I have decided to use the Raspberry Pi’s new dual-core Cortex-M0 RP2040 as an emulator for everything except the 6502.

The RP2040 will emulate:

  • The RAM memory. The RP2040 has 264KB of RAM, which is plenty of RAM to hold the emulator code and at least 64KB for the 6502. As the RP2040 runs at 133 MHz, there will be no issue serving the slow 6502 with memory read/write operations. If there is more RAM left, we can implement some kind of bank switching, such as 56KB of continuous RAM from $2000-FFFF and switchable RAM banks for $0000-1FFFF. Alternatively, we can define a pointer and block size somewhere in the upper memory location, which can overlap different RAM segments at any address at any time. After all, what the RP2040 will serve at a given address depends only on the pointer, which will show where this data needs to be fetched from.
  • Initially, I thought of using the Si5153 programmable oscillator, which can clock from 250kHz up to 100MHz, but after checking the RP2040 PWM specs, I found that the RP2040 can also generate a programmable clock for the 6502 from 0 up to 100MHz. This saves us one more IC!
  • There is already a DVI generation project with RP2040 called picoDVI, which supports 640×480 pixel resolution with RGB565 16-bit color depth. This project loads about 60% of one of the cores in RP2040.
  • RP2040 has USB host capability, so there are no issues whatsoever in connecting a USB keyboard to it.
  • There are already RP2040 SID player projects that exist and can be reused for sound generation, such as picoSID.
  • Although the UART, I2C, and SPI are interfaces that the 6502 originally did not have, we can catch memory location read/write exceptions with RP2040 and emulate a classic PIA or ACIA. Alternatively, we can define some API in memory to access I2C and SPI buffers.
  • As for disk storage, RP2040 will have 2MB of external SPI flash to hold the firmware, but there will be a lot of free space. The Apple ][ 5″ floppy was holding the humble 114KB, so around 10 classic floppy discs could fit in a little more than 1MB.

One week ago, I posted my idea on the Homebrew 6502 Facebook group and received more than 100 replies with valuable comments and suggestions.

To summarize all the feedback and prevent redundant discussions, here are the FAQ:

Q: Why not emulate the 6502 with RP2040 as well?
A: Emulating memory or ACIA PIA is simple, but the 6502 is a complex state machine, and an emulator will never be 100% accurate. Even N6502 and W65C02 have differences, and we want to have a REAL processor.

Q: Have you checked the CommanderX16 project? You may get inspiration from it.
A: I have seen this project, but it is over-complicated, expensive, lacks modern peripherals, and is slower compared to what I want to achieve. This is going to be a MODERN 6502 computer. The CommanderX16 has no modern interfaces like USB keyboard, HDMI, SID Sound, or SPI/I2C. Additionally, the CommanderX16 costs $500, while we aim to target a $25-30 board.

Q: Why not make it with VGA? I have one in the basement.
A: We want Neo6502 to be a MODERN computer, and VGA is 40 years old technology.

Q: Why not use W65C265S or W65C816S, etc.?
A: These are not 8-bit and have more address lines to deal with, which will make the design more complex and far from the rock bottom price goal. For those who want a W65C625 computer, Kyle, Becky and Bernardo are already working on Agon X65.

Q: Why not Kickstart it?
A: Although Kickstarter is a great advertising platform, it has its cost. Kickstarter/PayPal combination takes 20-30% of the collected funds. We target rock bottom costs for our customers and count every cent, so we will not inflate the prices with 20-30% to use the platform.

Q: Do you have firmware developers for it?
A: Not yet, so any help and collaboration are welcome. I have already obtained all the parts together and will have a proof of concept on a breadboard this weekend. Then, we will design PCB and some prototypes in a few weeks. If you want to participate in software/firmware development for both RP2040 and 6502, you are welcome to join us! We will have some free early prototypes to send to developers. Send us email to info at olimex dot com.

Tsvetan

RP2040-PICO-PC small computer made with the Raspberry Pi RP2040-PICO module first prototypes are ready

These who follow our account in Twitter know our small teaser posted on March 1st.

It’s small base board for RP2040-PICO the $4 module with the Cortex-M0+ processor made by Raspberry Pi foundation.

We were ready with the prototype for a long time but the RP2040-PICO modules were tricky to source 🙂

Raspberry Pi suffer from the same problems the semiconductor industry have now – no enough components to organize production and the PICO modules are hard to obtain.

From the picture above you can see what our idea is:

  • Small board taking power from the USB on the right just below the RP2040-PICO module.
  • LiPo battery charged for handheld operation and power backup.
  • Reset button.
  • Micro SD card
  • Audio output
  • HDMI connector with DVI signals to connect to monitor
  • UEXT connector with UART, SPI, I2C, 3.3V and GND to attach different sensors
  • JST2.0 4 pin I2C + power supply connector
  • Debug connector for Serial adapter

The price of RP2040-PICO-PC including the original RP2040-PICO module from Raspberry Pi with soldered headers all in one ready to use computer will cost EUR 12.00

As RP2040-PICO modules now are not available in production quantities for purchase, we decided that until we wait we could make our own version of RP2040-PICO, which to be pin to pin drop in replacement.

Fortunately some RP2040 processors are available now, so we can make our own DIL40 board, this is how our RP2040-Py board was born:

It’s mechanically same as size, with connector signals like the original RP2040-PICO.

Functionally RP2040-Py is same as RP2040-PICO, but has some imoprovements:

  • RP2040 SOC
  • 2MB of SPI Flash
  • USB micro connector on the right hand
  • Power supply DC-DC with 3.3V up to 2A (if the 5V source can provide)
  • Reset and Boot buttons
  • two 20 pin rows on the side with same signals making it drop pin to pin compatible.
  • uUEXT connector on bottom

As the board still had plenty of not used space we decided to add USB JTAG debugger, which will allow you to debug your RP2040 SOC with step by step execution, to watch variables and set breakpoints while you develop your code.

There will be three versions of the RP2040-Py:

Basic: same as RP2040-PICO but with higher current DCDC power supply (3.3V up to 2A output) additional UEXT connector and RESET button. The price of this module will be EUR 5.00

Basic+ same as Basic but with soldered headers and additional left hand side micro USB, which can be used to power the board while the left hand side micro USB can be used as USB device or USB host. The price of this module will be EUR 8.00

Debug: same as Basic+ but with populated JTAG parts, which allow real time programming and debugging. The price of this module will be EUR 19.00 The JTAG debugger is tested to work with OpenOCD/Eclipse/Visual Studio, ARM (Keil) IDE and IAR Systems EW.

ESP32 new boards in stock

ESP32-PICO-KITb

Espressif never stop to surprise us with new products. Their new ESP32-PICO-D4 IC has build in 4MB SPI Flash and quartz crystal, antenna matching circuit, so this chip requires just 5 external resistors and capacitors to work! If your design has to be small this is the chip for you!

ESP32-PICO-KIT is low cost development board for this new chip and has build in USB serial programmer, antenna and breadboard friendly DIL header connectors at 0.1″ step.

ESP32-CAM-F

ESP32-CAM is WiFi IP camera with OV2640 2 Mpix sensor it works with internal PCB antenna and needs just 3.3V external power supply to  operate. You also have SD-card connector and GPIOs to which you can connect PIR sensors and other components to control.

There is Arduino support for this board and tons of interesting projects like face recognition, motion detectors with storage of the pictures on the SD card and etc.

Here are few of them:

We also got ESP32-CAM-UFL which is same board but with U.FL connector where you can connect external antennas.

ESP32-CAM-ANT1

ESP32-CAM-EA is ESP32-CAM with small external WiFi/BT antenna which increased the WiFi coverage.

ESP32-CAM-ANT2

If you need more coverage we have ESP32-CAM-EAX which has higher gain antenna, but with quite bigger size.