It has been some time since the last post about the RasPiComm+, but be assured, we were very busy and have put huge efforts in finalizing the product and I can now proudly say that we are ready for production.

We are launching a Indiegogo campaign mid-November 2014, so please spread the word!

So here is an update and/or introduction for those who have not heard about the RasPiComm+ before.

The RasPiComm+ is an extension platform for the Raspberry Pi which offers an arbitrary combination of up to 4 modules. The huge difference to other extension boards out there is not only the flexibility of using exactly the modules you need but also that all modules come with full linux driver support. I’ll do separate posts showing that in detail, including videos.

Connection to the Raspberry Pi

You may have noticed that the header has 2×14 pins which is uncommon. That is easy to explain: The RasPiComm+ is backwards compatible to the Raspberry Pi B, but also supports the EEPROM functionality for the Raspberry Pi B+, so the inner 2 pins are unused on the B version. When you are using the B+ version, the EEPROM of the RasPiComm+ can be accessed from the Raspberry Pi.

So how does it work now?

You just plug in the modules you need (see below for available modules).

The easiest way to install the firmware and drivers is in online (the Raspberry Pi is connected to the Internet). Just run the script “./rpc+setup” and you’re done. You can now access serial devices via /dev/rttyRPC+0 to /dev/rttyRPC+3 depending on the module slot. I/Os are mapped to /sys/class/gpio just like the GPIOs of the Raspberry Pi are. That means you can reuse software that access the GPIOs of the Raspberry Pi directly. Special interfaces which are not digital pins or serial devices (like for example analog inputs or displays) are mapped in files in the /proc/rpc+/module1-3 folders. See the documentation of your modules to see how to access the resources from the Raspberry Pi. In the next posts I will show you some examples on how to use various modules, from I/Os, serial ports, sending and receiving SMS messages to sending a bitmap to a Sharp Memory LCD.

What does the script do exactly?

First, it checks if there is a base firmware on the RasPiComm+, if not it downloads and installs it Then it scans all 4 module slots and reads the EEPROM IDs to identify which modules are plugged in In the next step a request to our buildserver is made to request the firmware configuration for the ARM microcontroller and the CPLD The firmware is then built by our buildserver and the firmware package is downloaded, the files are stored in a local cache on your Raspberry Pi so you do not need to be online if you wish to reinstall the same configuration again The script programs the ARM and then the CPLD firmware Then the corresponding drivers are loaded Done. You can now access all modules from your Raspberry Pi

Web Firmware configurator

You do not need to use the automated script. You can also select the modules manually and download the firmware. This also enables you to download the sourcecode for the firmware.

If you install the Unity 3d plugin (http://unity3d.com/webplayer) you can see a beautiful 3d visualization of your configuration.

We are currently also working on a case generator. When it is ready you can also auto-generate a STL file used by 3d printers with exactly the openings you need for your selected modules. You can then print it on your 3d printer or send the file to a company offering 3d printing as a service like www.shapeways.com

The modules

We already have quite some modules available for the start, and we are currently testing a lot more.

Modules available:

8 Input (5-35V)

8 Output (5-35V)

8 Analog Input (12 bit)

4 Relays

RS-485/RS-485-4 wire/RS-422

GPS

GSM

Profibus

Sharp Memory Display

Modules we work on:

1-Wire

16 Isolated I/Os (24V)

Stepper Motor

CAN

KNX

6LoWPAN

433MHz

868MHz

9-Axis MEMS (3 axis gyro, accelerometer and magnetometer)

Each module has an EEPROM to identify itself. The installer uses this to request the correct firmware. There is also user-space available on the EEPROM, you can store data like counter values if you want to.

More posts are coming. In the next one I’ll quickly show you some simple scenarios how to use modules and how easy it is to script functionality.

Another post will I’ll do more in-depth explanation on how the RasPiComm+ works internally and why we made certain design decisions.

After that I will do a post on how easy you can hack the RasPiComm+ and compile your own firmware code based on the boilerplate code, to run it standalone (without the Raspberry Pi) for example or do ultra-fast switching logic with the CPLD without CPU intervention or implement additional functionality on the ARM processor with the GNU C compiler.