OMrPi
(PCB design not uploaded yet)
This is a new PCB for use with the Raspberry Pi single-board computer. The dual 20-pin GPIO ports are broken out to OpenMaze PGIO (power-GND-input/output) ports for ease of connection, and a number are wired to control larger voltage output via H-bridges. In addition I2C, SPI, and serial pins are placed into special connector banks for digital communication with modern sensors and motor drivers. But the RasPi doesn't contain an on-board ADC chip (unlike the arduino), so note that there is no analog input functionality.
I've previously been skeptical about the precise timing of behavioral events on the Raspberry Pi due to its use of a full Linux OS (e.g. due to system interrupts), however more reading shows that modern GPIO libraries provide precision equal or superior to Arduinos. Still, I tend to use Arduinos/ESP32 for direct behavioral program control and leave the RasPi for more processing intensive tasks such as visual stimuli and VR environments (more to come on this soon)
OMrPi is similar to our basic OM2 board with the following features:
- one H bridge set up to drive a single stepper motor (e.g. for a whisker stimulus), four solenoids/fans, or drive two bipolar motors forward or backward.
- one Darlington array IC (ULN2803) able to control up to eight 5V/12V solenoid valves (for liquids or air), fans, high power LEDs, etc.
- lick sensing via the MPR121 capacitive touch sensor
- servo motor output (e.g. for driving linear actuator to move stimulus or lick port into place)
- breakout plugs for I2C and SPI.
- built-in buttons for easy input
- Our standard PGIO (power-ground-IO) ports that make it super easy to plug in a variety of different components.
The basic idea of OMrPi (and all of the shields we've designed) is to connect the various inputs and outputs on the microcontroller to external hardware, such as sensors or valves. Then, you can program the RasPi to control this hardware in a variety of different ways, depending on the specific behavioral task you want.
The main difference is that this board uses the RaspberryPi GPIO ports, which have some limitations such as the lack of analog input capability. I will try to upload sample code for some these functions soon, but contact me if you're interested and I haven't yet gotten it up.
Like our other shields, OMrPi is loaded with different components (resistors, transistors, integrated circuits or ICs, etc.) which are wired into the inputs and outputs.
Components List
-
Raspberry Pi single-board computer (RasPi4 or compatible)
-
One ULN2803 Darlington array IC
-
One 16-pin, one 18-pin IC sockets for the H-bridge and ULN2803 to sit in
-
One MPR121 (optional, only for touch/lick detection)
-
Long strips of 0.1" headers, which you can cut to size (mostly female)
-
soldering iron and solder
-
2.1mm barrel jack connector (breadboard compatible)
-
5V voltage regulator (if running wirelessly)
Making the shield
To make the OMrPi: (NOTE: design not uploaded yet)
-
Order the printed circuit board (PCB) from OSH Park. Current price is $50 for 3 boards, although you can get them made cheaper elsewhere but have to upload the design file ZIP in the correct format.
Attaching the components
Once you have all the components, simply solder them into the shield. Place the components in the holes that are marked, and they will already be connected appropriately.
Using the shield
Functionality is controlled by access of the RasPi GPIO ports
IMPORTANT NOTES:
-
The RasPi GPIO is a 3.3V circuit (even though it contains a 5V rail), so don't connect any 5V signals to a digital pin or it will burn out that channel, or potentially the entire board!
-
As mentioned previously, the RasPi has no built-in analog input functionality.