I'd like to make a small "MCU" consisting of a camera, a mic, some LEDs, and probably a cheap ARM CPU. I'm calling this my "SMIC" (streaming media IC).

I'd like to connect this SMIC MCU to a Raspberry Pi, and then write software for the Pi that can communicate with the SMIC. This software should be able to power the camera on/off, power the microphone on/off, turn LEDs on/off, etc.

Is this even possible? If not, why?!? If so, how?!?

I assume that I'll need the following setup:

  1. A homegrown device driver installed on the Pi for communicating with the SMIC
  2. A homegrown device driver installed on the SMIC for communicating with the Pi
  3. Homegrown "user" software on the Pi for issuing commands to the SMIC
  4. When the user software wants to, say, turn a green LED on, it must communicate with the device driver somehow
  5. The device driver, then must somehow communicate with the GPIO pins

If anything I have assumed is incorrect, please correct/clarify for me!

Assuming I'm more or less on track, then my real question is:

How does the user software send the TURN_GREEN_LED_ON signal to the device driver, and how does the device driver relay that command on to the actual GPIO pins?

I guess I'm just having a tough time seeing the forest through the trees here. Thanks in advance.

1 Answer 1


Probably you should read something about microcontrollers communication methods. There are some standard mechanisms that are supported by almost any microcontroler (including RPi) and you are mentioning that you want to use some microcontroler on your board too. Those mechanisms are UART, SPI or I2C. It will be quire simple to establish communication using those. You will not need any special driver as kernel supports those kind of communication. Newertheless you will need some programs on both pi and your board to exchange data and commands.

  • Thanks @codewarrior (+1) - so to confirm: I can select one of these communication methods (UART, SPI, I2C, etc.), and then just have my programs communicate with each other over this method? If that's the case, I assume these methods provide an API of some sort? Thanks again!
    – zharvey
    Commented Dec 8, 2012 at 22:19
  • Not really API but depending on method choosen there will be some support either kernel drivers for communication and/or some user space libraries that you could use. Those mechanisms are standard and are widelly used so you should not have problems with implementing those. RPi has also some GPIO pins dedicated for those types of communication. Commented Dec 9, 2012 at 16:21
  • Also you may need to consider the physical characteristics of the usage as it can affect what you want to do - distance, speed and environments are all things that can have an impact: how far apart are your Pi and SMIC going to be? How much data will have to be passed and how much time is there for it? What external things are going to cause problems (electrical noise from other things, children touching things, dampness!)...
    – SlySven
    Commented Dec 9, 2015 at 20:34

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.