BMOW title
Floppy Emu banner

Raspberry Pi

A friend from work gifted me a Raspberry Pi Model B. I was generally familiar with the RPi, but hadn’t had a chance to look at it in detail before now. The specs are impressive: a 700MHz 32-bit ARM CPU, 256MB RAM, USB, audio, composite video, HDMI video, and SD card support. It’s also got GPIO headers as well as headers for I2C and SPI, so you can interface it with various sensors and other external elements.

The Raspberry Pi has proven to be extremely popular since its release, and appears to have made major inroads among the Arduino community. But the further I looked into it, the more confused I became about who this product was intended for. Perhaps the hardware specs are a little too good: it’s nearly the equivalent of a standard Linux PC from 10 years ago. That’s an amazing thing to fit onto a tiny board that costs $35, but is it fun to use?

What I enjoy most about my projects is interfacing with hardware at a very low-level. I get a kick out of bit-banging video, replicating retro electronics, and interfacing with odd hardware with specific timing requirements. I don’t really want to run X-Windows on my embedded project, or use it as a development IDE platform. When it comes to digital bit-twiddling, the lowly Arduino still has more GPIOs, and offers real-time control of the IO pins. The RPi can’t really match that, running garbage-collected Python programs on top of a multi-tasking Linux kernel.

If you’ve got a Raspberry Pi and found it useful, what kind of projects did you use it for, and how do you see the RPi’s strengths and weaknesses in comparison to other embedded hardware?

Read 9 comments and join the conversation 

9 Comments so far

  1. Cargo Cult January 4th, 2013 11:34 pm

    Connectivity and media playing, for me.

    I’ve been hacking together an internet radio based around a Raspberry Pi – for the particular, unconventional thing it’s doing I need loads of storage space, enough CPU to decode AAC audio, ability to remux an FLV stream to something more sensible, run everything over an SSH tunnel, connect to WiFi etc. etc. etc. – all tasks it would be silly to design dedicated hardware to do as a one-off hack, and any dedicated hardware would end up looking pretty much like a Raspberry Pi anyway. It’s a little UNIX machine, and I get to use all kinds of UNIX tools in a ridiculously tiny footprint. If I get round to using its GPIO, it’ll be for basic, timing-non-critical things like buttons and dials.

    I’ve messed around with Arduinos a fair amount as well, and I kind of see them as complimentary. I can imagine some pretty decent projects with a Pi interfaced to an Arduino or some super-duper custom hardware, the former acting as the brains, the latter as the muscle. Pi to AVR over i2c: “Please could you bang some bits for me?” AVR in return: “AFFIRMATIVE. BRARRAARPAPRAPRARARARP.”

    So, my Timelapse-o-tron? Arduino, no questions asked. Radio-4-matic? Raspberry Pi.

  2. Martins January 5th, 2013 1:30 am

    You know that you don’t need to run Python on top of Linux on RPi, right? You can write program as OS itself so it will have total control over ARM code execution and I/O:

  3. Felix January 5th, 2013 8:05 am

    I’ve used the RPi as a central node to gather environmental data from wireless sensors I spread in the house. For instance, I can read my water meter with a 0.022gallon resolution. I can read temperature, and power usage. When my kill-a-watt hack didn’t work with adafruit’s tweet-a-watt kitt because the xbee drew too much power, I added a lower power arduino clone I designed (called Moteino, see my website for details) and that reports power from that KAW back to the RaspberryPi where I store it in a mysql database and use EmonCMS to log it and graph it for analysis. I plan to add many more sensors. I plan to add some sensors to check if I forgot my garage open from my android phone and close it if so happened. I plan to use other sensors to check for different important events like a basement flood condition. All these sensors can report to the Pi where I can program it to do whatever I want based on the conditions (ie send SMS messages or sound alarms, etc). There’s still a lot of work to do, but the Pi saves me tons of time I would have to spend to develop very efficient stacks and network layers on other less capable hardware (Arduino+Ethernet shield comes to mind).

  4. Steve Chamberlin January 5th, 2013 8:43 am

    Thanks for the pointer to the bare metal examples!

    It sounds like the Pi shines for applications where you theoretically could use an old Linux PC, but it’s so much smaller and cheaper with the Pi.

  5. Stephen Trier January 6th, 2013 7:36 pm

    The RPi was originally specified as a very inexpensive desktop computer for schools. The I/O capabilities add expansion versatility and let it be used to teach electronics and interfacing, but for basic microcontroller applications you’re absolutely right that Linux and X Windows are overkill.

    I haven’t had a chance to play with one yet. The ideas I have for it are pretty much media center applications or an educational computer for my kids. Neither is a control application. I’m looking forward to reading what creative things you might do with yours.

  6. Jin January 7th, 2013 9:11 pm

    I reckon RPi will take the exact role as what Apple II or Commodore 64 to us in early years, it is designed for kids, and cheap. So kids can have their own computers, probably with a small bluetooth keyboard, they can do all those hacking we used to do on Apple II. They can play games on it, or write games on it, or hacking CIA or whatever they can access to, learn programming, basically what we used to do when we were in that age.

    The GPIO pins might serve some good purposes for kids who are interested in hardware so they can experiment some simple stuff, like I did make some circuits to read the content of the ROM from NES game cartridge to my apple II and learn how to write game for NES when I was a kid.

  7. James January 27th, 2013 12:17 am

    I use mine as a general web/ftp server for transferring files around. Pretty much the same thing I used to use an old Sun box for except it’s far smaller, quieter, and consumes less than 5 Watts. Next on the Pi list is to set up a NAS server.

  8. Bruce Boyes March 4th, 2013 10:44 am

    Have fiddled with Pi a bit and wrote up a doc about it since there is so much to study:

    You can slog through that doc for the details. Here is the Cliff Notes version: I found RasPi way too sluggish for general browser use, so gave up trying to make it another PC/terminal for family use. For such things you need to be able to play Youtube and flash and Pi can’t (see the doc for details). I tried and failed. As a media center with Rasp XBMC it is astonishingly good. If I can get it to stream internet radio I will build one for the office just to play stuff. RasPi does real 1080P! All the cheap Arduino Rockchip sticks (Mk802/8) say they do but they are stuck at 720.

    I’m also using Arduino a lot – mostly the clones from PJRC. Working on several sensor libraries right now: TMP102, AD7794, etc. Where I see RasPi fitting in would be as an Ethernet or Wifi-connected data aggregator with smaller realtime systems branched off of it. We have a commercial system which might use it, as well as a beehive sensing project which has a pretty rich hierarchy of sensors.

    I’m still looking for a decent “bare metal” solution. There is RISCOS but only BASIC for it? And no WiFi? There are a couple of sensor nets not well implemented on PI which I am looking at fixing… notably Maxim 1-Wire so I can sample a LOT of temperatures (DS18B20 on Cat5) over office and home space in support of hydronic heating.

    NAS? I don’t know. I am sooo happy with Synology DS212J and the apps for iOS, Android which my kids use constantly. And the RPi with XBMC accesses the same Synology NAS box for video and audio.

    Just bought the downloads of Sound City, which are a great test source for video and audio. And it’s a fun movie if you are both a musician and a geek!

    OK, probably more than you wanted to know.

  9. David C. September 22nd, 2017 5:11 pm

    I find the Raspberry Pi very useful when writing Bare Metal code (no operating system, no linux). It is like having an Arduino with a 700+ MIPS ARMv6/7/8 CPU or 4 (in the case of the Raspberry Pi 2/3). Arm assembly is great as well.

    I do find it useful to interface the Raspberry Pi to an Arduino Mega 2560 for some things (like using a true old style row colum scaned keyboard [in the style of the C64, PET, Atari 800 series, etc], and sending the key scan code to the RPi over I2C, or interfacing to a FDD [floppy disk drive], etc).

    Though for many things the Raspberry Pi all by itself is enough. I enjoy low level coding, though do not like USB, so those things that normally use USB are relegated to GPIO on my Raspberry Pi’s, or offloaded to an Arduino Micro or Mega 2560 as appropriate. The exception being my internet and desktop computer (Rasperry Pi 3B).

    For banging out simple games and demos in ARM assembly the Raspberry Pi can not be beat, same for simple HW projects like 3D printer controll (and other CNC applications), or lighting systems, etc. You would be surprised what you can accomplish with a Raspberry Pi.

    Also for emulating other computer systems in bare metal (no operating system), the RPi is perfect. The video is easy to work with (using the frame buffer), GPIo provides what is needed for input (in many cases including the ability to use the original keyboards, joysticks, and mouses of the systems being emulated).

    In short you do not need to use Linux on the Raspberry Pi series of Single Board Computers. You do not need any Operating System whatsoever.

Leave a reply. Comments may not be monitored regularly. For product support questions, visit the Contact page.