Thursday 27 December 2012

Adafruit LCD and Keypad Kit

I purchased one of these this week and having played with it for a few days I have to say it is a great addition to the Raspberry Pi. It is the "Adafruit RGB Negative 16x2 LCD+Keypad Kit for Raspberry Pi" available from the Adafruit website here for $25 plus postage.  Which compared to the price of the Pi seems expensive, but this seems to be an issue with all accessories, as the Pi is just so cheap. For me the extra functionality this add on brings seemed well worth the money.

As its name implies it comes in a kit form which you have to solder together yourself.  I had not done any soldering before, but the Adafruit website claims "Assembly is easy, even if you've never soldered before and the kit can be completed in 30 minutes." and I can attest that I assembled it with no problems although I think it took me more like two to three hours than the 30 minutes (I assume that is the estimated time for someone more experienced at soldering).  The kit basically consists of a circuit board which is identical in size to the Pi and assembly involves soldering all of the components onto that board.

Once completed you have a unit which sits on top of your Pi connecting to the GPIO pins on the top left corner and resting on the ethernet port on the bottom right corner.  (When the model A is released early next year I guess that Adafruit will have to add some more parts to the kit to make up the height difference for the missing ethernet port).  You get a two row text display with sixteen characters on each line and a back light which you can change the color of for the whole display via code.  There are also five input buttons in the bottom left arranged in a directional pad configuration with a select button to the one side.

 
These look like they will be great for all sorts of projects, removing the need for a full keyboard, but in combination with the screen offering a full range of interaction with your projects.  My only slight criticism (and indeed my only criticism about the whole product at all) is I think these would have been better in the bottom right corner where the board is supported by the ethernet port.  Where they are, it feels if you pressed the buttons too hard it could dislodge the board from the Pi.  But to be fair I know nothing about circuit board design and me saying "can't you just move that bit over there?" about something which might be in fact quite difficult, could well be a rather unhelpful comment.  Maybe this could be a 3D printing project for someone to build some sort of support for that corner?
 
In the bottom right of the board is a small potentiometer which once you have your board assembled and running you use to adjust the contrast (using a small screwdriver) to get the display nice and clear (apparently each LCD screen is slightly different, hence the need to manually set this.)
 
Once you have the board assembled and connected to your Pi it is time to get some code running on it.  There is some sample code to get you started on the Adafruit website here.  I found it did not work for me first time and I had a panicked moment of thinking my soldering job was not up to scratch.  But after a quick Google of the error message I found it was in fact something I could fix from the software side of things.  In fact just re-reading the instructions as I write this, I realise I missed the very first instruction:  "edit /etc/modules (sudo nano /etc/modules) and add: i2c-bcm2708 i2c-dev to the end of the file. Then save and reboot to enable the hardware I2C driver.". So if it doesn't work first try for you, try what I did not bother to do and recheck that you followed all of the instructions!  After that try a Google search on your error message and then an inspection of your solder work.
 
My first actual useful project with it was to get my Pi to display its IP address when it boots up.  Great for being able to remotely connect into it without connecting a keyboard or monitor.  When I have time I will write up a full step by step guide on how to get this working.


Monday 26 November 2012

Getting started with Databases on the Pi with SQLite

Sooner or later one of your projects is going to need to store some data; and what better place to store that data than a database?  This post is going to run through the basics of what you will need to do to get started with databases on your Raspberry Pi.  To do so I am going to make use of a database technology called SQLite.

SQLite is an excellent choice of database technologies to get started with on the Pi for a number of reasons:
  • It is incredibly easy to install.
  • Python comes with built in support for connecting to it.
  • It is free and open source.
  • Databases are stored in a single file which you can directly connect to from your code, without the need of a running server process.
  • The library is small.
  • And yet a serious product being used in many well known products such as Mozilla's Firefox web browser.  Check this page out for a full list.
Obviously SQLite may not be the perfect choice for every project and if you want to read up some more about if it will be suitable for your particular project check out the Appropriate Uses of SQLite page on their website.

But I suspect that SQLite will be a good fit for many projects on the Pi.

Installation


I said that it was easy to install so here goes. Boot your Pi up to the command line (or if you are already in the graphical interface open LXTerminal) and type:

sudo apt-get install sqlite3

Wait while it downloads and installs; and you are done.

Creating Your First Database


So now we have installed it, the next step is to create a database.  You'll be pleased to know this is equally easy.  You will remember from above that I said SQLite databases were a single file.  So all we need to decide is what we are going to call that file and where we are going to save it.  For this example we shall call it MyFirstDatabase.db and we'll just save it in the default home folder.  So still on the same command line type:

sqlite3 MyFirstDatabase.db

You don't need to worry about any configuration options because there are none.  You are greeted by the sqlite command prompt








and that is it; you have created your first database and are connected to it.  There is one slight caveat to this.  SQLite has not yet actually created the database file, so if you were to exit SQLite now and look for MyFirstDatabase.db you wouldn't find it.  Why?  Well we haven't created any content for our database yet and with no content what do we actually have?  So let us start adding some content.

Creating Your First Table


In SQLite, data is stored in data tables which conceptually look much like data tables you would encounter in the real world:


First we need to create the table and then we need to add the data into that table.  To do both of these tasks we are going to use a language called SQL.

"Wait a second..." I hear you say.  "I thought we were already using SQLite, now we need another SQL?  And what's the difference?"

OK, good question.  SQL stands for "Structured Query Language" and it is a language much like Python is a language.  Though not strictly a programming language in the traditional sense, but specifically tailored for querying data.  SQLite is a program which let's you run SQL commands, much like the Python editor on your desktop will let you run a Python program, but also provides the whole mechanism of what to do with those commands.  SQL is found in industry applications such as SQL Server, Oracle, MySQL and many others.  Every program has a slightly different flavour of SQL, but the basics will be the same across all of them and well worth your time to learn.

 To create the table as shown type the below at the sqlite> prompt and press enter:

CREATE TABLE fruit ( name TEXT, calories INT, price NUMERIC);

As a helpful note, all commands in this blog post in blue text are SQL commands and should be entered at the sqlite> prompt.  Any commands in red text should be entered at the standard Linux command line $ prompt.

Don't forget the semicolon on the end.  If you do (as I always seem to) just put it on the next line and press enter. That's it, you've just created a table called fruit.

So what did we do?

Well fruit is the name of the table that we created and what we will use to refer to the table when we want to put data in and get data out of it.  name, calories and price are the names of the three columns;  TEXT, INT and NUMERIC are the datatypes for the corresponding columns.

For anyone who has used any other SQL database engines in the past it is worth noting here that SQLite uses a dynamic data type system.  This means you can actually store any type of data in any column.  The data types that you define when you create the table are merely recommended data types and do not enforce the type of data which can be stored in a particular column.  A more detailed explanation can be found on the SQLite website here.

Now if we exit SQLite we will find that it has created MyFirstDatabase.db.  Type

.exit

and then

ls

and we can see our newly created database sitting happily in the filesystem:


Inserting Data


Well now we have a table the next step is to get some data into it and again we are going to do this using SQL.

Reconnect to the database with the same command as before

sqlite3 MyFirstDatabase.db

Then to insert the first row of data you can see in the table above we type

INSERT INTO fruit values("Raspberry", 60, 4.99);

repeat for the next two rows

INSERT INTO fruit values("Apple", 52, 0.79);
INSERT INTO fruit values("Orange", 85, 2.5);

Great now our table has three rows of data, but how do we check what is there?

Querying Data


To see what data is in a particular table we use the SQL select command.

SELECT * FROM fruit;

which shows us the three rows of data we just added:



the * just means give me all columns.  Alternatively if we just wanted to see a subset of columns we could have typed

SELECT name, price FROM fruit;

now we just get the name and price columns returned



What if we want to filter a particular subset of rows?  For that we need a where clause

SELECT * FROM fruit WHERE price > 3;


gives us all rows where the price is greater than 3. Or

SELECT * FROM fruit WHERE name = "Apple";


returns just the Apple row of data.

The SELECT statement is really one of the cornerstones of the SQL language and these are just some very basic examples of what you can do with it.

Deleting Data


If we want to remove data from our table then we can use the DELETE command.

which is very similar to the SELECT command so

DELETE FROM fruit WHERE name = "Raspberry";

will delete the Raspberry row

DELETE FROM fruit;

will delete all of the rows in the fruit table.

TIP:  If you want to re-add the data you just deleted, a quick way to do this is to press the up arrow on the command prompt to get back the insert commands you initially used to add the data and just press enter on each one to run that command again.

Next


Look out for my next blog where we will look at how we can connect to our database from Python.  Essential if we want to start making use of databases in our projects.

Tuesday 23 October 2012

How to Setup Remote Desktop from a Windows Machine to your Raspberry Pi - Step by Step Guide

As I mentioned in the previous post I recently found the need to be able to remote desktop to my Raspberry Pi.  This is a step by step guide on how to set it up.

What does this guide help me do?


It will let you control your Raspberry Pi from another machine.  Meaning that the Raspberry Pi will not need to be connected to a monitor, keyboard or mouse.

Before we get started a few clarifications:

  • This guide is to set up remote desktop from another computer on your home network to your Raspberry Pi. 
  • It does not explain how to connect to your Pi from outside your home network.
  • The instructions are for connecting from a windows machine.

What do I need before I get started?

  1. A Raspberry Pi running the latest Raspbian “wheezy” image (at time of writing 2012-09-18-wheezy-raspbian.zip).  It should work with other Linux versions too, but that is the one I have tested with.
  2. The Raspberry Pi should be connected to your home network and have a internet connection.
  3. A second machine running windows that you want to use connect from which is connected to the same home network.

The Steps


Raspberry Pi Setup


So first we need to install some software on the Raspberry Pi, but don't worry it is very easy!
  1. Start up your Pi to the terminal prompt. 
  2. Type the following command "sudo apt-get install xrdp"
  3. If promoted enter your password (the default is "raspberry")
  4. Type "Y" and press enter.
  5. This is now installing xrdp onto your Pi which is the software we are going to use for the remote desktop connection.  Wait for it to complete.
  6. Restart your Pi.  We are going to check that xrdp is going to start up automatically.
  7. When your Pi has booted to the command prompt look for [ ok ] Starting Remote Desktop Protocol server : xrdp sesman.  This shows you that xrdp is installed and automatically starting up on start up of your Pi
  8. The last step is to make a note of the IP address of your Pi which should also be displayed on the start up screen.  In my case below it is 192.168.1.9.  This is the address of your Pi on your network and what we will use to connect to your Pi from the second machine.

Second Machine Setup


1. Launch Remote Desktop Connection which can be found at Start->All Programs->Accessories->Remote Desktop Connection
2. Type in the IP Address for your Pi which you noted above.

3. Click Connect (you may get a security warning at this stage just click OK if you do.  After all it is your Pi on your network so nothing to worry about security wise).
4. Leave the Module on the default of sesman-Xvnc and enter your username and password for your Pi.  (The default is pi and raspberry if you haven't changed them).

5. Click OK and after a few moments you should be greeted my your Raspberry Pi's desktop!

6.  When you are finished simply log-out from the Pi's desktop.







Monday 1 October 2012

Back To The Pi

Wow! It's October already.  I'm not entirely sure what happened to the summer, but I do know I haven't looked at my Pi in two months...

In starting up again I wanted to look at the reasons why I hadn't done more.  I am still very excited about the project and the device, so it is not lack of interest.   I feel like saying it was a lack of time and although work has been busy these last two months (with a major release now only days away) it's not fair to say I have not had time for other interests.

So what I am putting it down to is location.  I have read the debate that the cost of a Pi is actually significantly more than $35 as you need a number of accessories before it is a usable computer.  The counter to this argument (which I am generally in agreement with) is that many of the extra accessories you will need, people will find they already own.  Very specifically in this area and the most expensive accessory you will need is a display device.  But here is where I am beginning see a flaw in the argument and why I've not played with my Pi more.

I agree that most households (mine included) will have a HMDI enabled display in the home.  The problem I have, is this display is the television sitting in the living room.  Which has a number of intrinsic problems.  Firstly it is on a television stand, so when the Pi is connected to it you have to sit on the floor in front of it, which is not the most comfortable of positions.  Secondly when the Pi is all wired up in the middle of said living room with wires sticking out from it in all directions it doesn't really add to the ambiance of the room.  This meant I was packing it away between uses, which had the knock-on effect of I couldn't just play with it for 15 minutes as it took about that long to get it set up and put away again.  And the last problem of using the television is that it is actually used to watch television on!  So it was not like I could play with the Pi while watching some mindless TV show.

But I am all about solutions to problems and in starting again with my Pi this seems like the biggest one to address.  And my solution?  Remote Desktop.

I got it successively installed last night and can now remote from any of my other machines to the Pi.  This has already paid dividends with me getting further with my GPS project than I had before all from the comfort of my bed.

Look out for a blog post on how to set up Remote Desktop for your Pi coming soon.

Tuesday 24 July 2012

First Look at the GPIO Pins

One of the things that excites me about the Pi, is the ability to use the GPIO pins to control external devices.  Now I don't have much of an electronics background so this is all going to be pretty new to me.  I thought a good place to start was the article in the second edition of MagPi (the Raspberry Pi magazine which is an excellent read and I think compulsory reading if you are interested in the Pi).

Back in 2011 when I first got interested in the Pi project I thought I'd try and learn some basic electronics and so bought these from Amazon*:


Checking the components list I found my electronic kit had everything I needed.  All I needed now was a way to connect to the header pins on my Raspberry Pi.  According to the article I needed female to male jumper wires.  Now this was Sunday evening and I didn't want to order them off the internet and have to wait for them to arrive.  I wanted to start playing right then!  So I thought I'd go down to Radio Shack (a mere 5 minute walk from my house) and see if they had them...

Well, following my Radio Shack visit I have two pieces of advice for you.  Firstly if you want the sales assistants to leave you alone in Radio Shack then hang out in the electrical components section.  I'm sure if I had been looking at mobile phones I would have had multiple people ask if they could help me, as it was I got a pointer to the area of the store I needed as I walked in and then while I searched through draws of components for a good twenty minutes, nobody asked me if they could help.  Next time I'm in there looking at phones and someone asks if they can help me, I'm going to make sure I have a nasty electronics question ready for them.

But anyhow after twenty minutes of searching I couldn't find any jumper wires, so instead settled on these which I figured I could attach to the ends of wires I already had and then attach to the pins:


Which brings me to my second piece of Radio Shack advice: These are NOT the right parts!  As it happens I have managed to use them to hack a solution out of, which will do for now, but it's not one I'd recommend so I'm not going to go into the details of it here.  When I have a more permanent solution I will let you know.

 


I hooked up the circuit, following the digram from the magazine and fired up the RasPi.  Nothing went pop and there was no black smoke so all good so far.  Then I pressed the button and still no black smoke, but the faint shining of the LED; looks like I got it right!


Next step was to get was to install the GPIO drivers.  Now I hadn't yet connected my Pi to the internet, but no problem I just took my USB pen drive from my Pi and used my notebook to download the required file to the pen drive before returning it to the Pi. Then followed all the instructions without problem, until:

sudo python setup.py install

At which point I get an error message about not being able to download a requirement.  Looks like my Pi needs the net after all.  So I do actually have a network cable, the only issue with it is the length.  So the router gets pulled out from behind the sofa and into the middle of the room and then moving the Pi away from the monitor a bit gets the whole thing to reach.  Plugging the cable in makes some new lights light up on the Pi and then rerunning the command above works.

Next step is to create my Python program.  I manage to create the text file using the right click menu then using open with, I find my OS has a python editor pre-installed, nice!

I type in the code carefully as per the magazine, go to run it and get:

"Unexpected Indent"

What!?!  Python cares about how I lay out my code?  Python reads whitespace? Surely not?  But yes, indeed Python does care about indentations. Interesting...  I do see why this could be a good thing to enforce a standard coding style, but it worries me that there is code that I cannot see.  But removing one of the tabs from the line "<tab><tab>if mybutton == False:" fixed the problem and I had a working program which I was controlling with an external switch.

This is something I have been interested in doing for many years and have never even come close with any of my previous computers.  With the Raspberry Pi, I have a working prototype in a single evening.  Impressive stuff!

Tuesday 17 July 2012

My Pi has Arrived!

My Pi is here!  Very exciting.  So looks like I did everything right with the SD card, as it all booted up without issues.  Pictures of my board are here.

My two initial observations were just how small the thing actually is (I know I knew it was the size of a credit card, but it still seems amazingly small when you actually have it in your hand) and the second was how strangely satisfying it is to have a machine which boots to a command prompt.  Though I must admit I did spend a few minutes staring at said command prompt wondering: now what?

A little bit of digging in the wiki found the startx command and I booted into the GUI in no time.  So in terms of the accessories that I had, they all worked with no problems at all, just plugged them in and I was away.  I think I need to change the local to recognise it is a US keyboard, but thankfully I still remember where all the keys are supposed to be so didn't bother changing it at this point.

I didn't have loads of time to play with it this evening, so had a quick go with scratch before calling it a night. Didn't seem to be able to get any sound going, so that is probably the next thing I need to look at.  And for some reason I couldn't work out how to clear the stage in scratch.  But anyway I will leave you with my very first scratch program output:


Monday 16 July 2012

Final Preparations

My Amazon order arrived on time and all looks good.  I will say that the keyboard looks better on the web than perhaps it actually is.  In reality it is what I would expect for the price: nothing amazing but perfectly functional.

My last preparation task was to get my SD card ready.  I have decided to start off with the debian "squeeze" version from the RasPi website and decided I would use my netbook Ubuntu to write the image (may as well make this a Linux learning exercise at the same time!).  I used the excellent instructions from the wiki (http://elinux.org/RPi_Easy_SD_Card_Setup), which all went well expect that I ran out of disk space on the Linux partition on my netbook, so had to work out where the rest of my hard drive was "mounted" (Not quite sure what this exactly means, something to add to my list of things to learn at some point).  Decided to go for the command line option which worked out fine, but then when we got to re-sizing the flash partitions (http://elinux.org/RPi_Resize_Flash_Partitions) there seemed to be some maths involved, so bottled it and installed GParted which I have to say worked very nicely.  Next time I'll try it command line (probably...)


So I think I am ready for my Pi!



Fingers crossed I did everything right!

Oh and I think I have decided on my first project.  A GPS enabled car computer.  Watch this space for details.

Sunday 15 July 2012

My Background

This post was going to be about my further preparations for the arrival of my Pi, but I realised as I started to think about writing it, that it would make more sense in the context of my background and experience.  The tales and experiences of a power Linux user and a RasPi are going to be far different from someone who has little or no computer experience. (I lie somewhere in the middle of those two camps).

(Having got to the end of this post I realise this may be a rather long winded story to a simple conclusion so if you get bored at any point, feel free to skip ahead to the punchline in the last paragraph.)

I was born in 1981, the year that the BBC micro launched.  I like to say to people I will be the last generation who remembers a world before the internet; before mobile phones; a world before modern electronic technology became such an ingrained part of our lives (though writing that makes me sound old).

I have a niece who is four years old, she lives in London and I live in Boulder, Colorado and we use Skype (obviously with her parents too) to keep in touch.  But to her there is nothing amazing or magic about Skype.  It is just there and it just works.  As when I was growing up running water was always a given (I just turned on the tap and it was there); to today's children, technology is just there (you simply turn on the computer).  Ask me how that water gets to my tap and I'll mutter something about reservoirs and pipes that deliver it to the house.  And too be honest ask me how the internet works and I'll mutter something about servers and pipes that deliver data to my house.

But what I do know more about is things I can do with that data once it gets to me; how to maintain the machines that ensure the connection and I have a deep appreciation about how damn clever the whole thing must be.  "Standing on the shoulders of giants" is something I remind myself of constantly.  Everything that I do is built upon the work and achievements of some truly clever people.

Our first home computer was a Commodore +4 and that was the first computer which I began programming on.  I remember typing in code from magazines and drawing shapes to the screen.  Not long after that the machine gave up the ghost and that was the end of my programming efforts for a while.  Our next machine was an Atari STE which was primarily a gaming machine.  Actually thinking about there is no "primarily" it was just a gaming machine, but I still feel that those games had educational value and I still remember them vividly.  I traded goods between earth and Barnards star; managed cities, theme parks, armies, even entire civilisations; fought German soldiers from world war two and strange edible mushroom creatures in dark underground dungeons with a strange dog and lizard on my team.



After the Atari died we brought our first PC a 486, I can't remember the exact specs, but I got hold of an old version of Visual basic and began programming again.  My secondary school never taught much programming, but the Excel skills I learnt did come in invaluable later in life.  At university I started a course in Mathematics and Computer science with a plan that afterwards I would go into a software development role.  But I found that the CS modules I took were very theoretical and not what I enjoyed about programming and so when at the end of my first year, one of the mathematics lecturers suggested I transfer to the four year master of Mathematics course, I once again left programming behind for a little while.

After university I drifted into accounting (because that is what you did with a maths degree) and quickly realised that wasn't for me.  After that I found a job as a data analyst for Experian UK in Nottingham and as part of that managed to find some programming tasks that I could do.  After a few years I found I was enjoying the programming role far more than the other stuff which at that point was probably about 50-50 percent of my time.  So I decided to look for a full time developers job, which I found in Boulder, Colorado; which is where I have been for the last 18 months and am loving it.

In my day job I code in C++ and C#, I have always been a windows user and although I have thought about looking at Linux in the past, could never quite work out where to start.  When the RasPi began to get close to launching last year I installed Ubuntu on my netbook so I would have some experience.  So in coming back (after a huge and potentially boring detour through my entire life story) to my experiences with Linux: I guess I would summarise my experience as being experienced with coding and computers in general, but relatively new to the whole Unix/Linux world.

Can't wait to start applying the skills I have (and learning a whole lot more) to my brand new Raspberry Pi!

Friday 13 July 2012

Cases

OK so with the essential accessories ordered and on their way, time to think about cases.  Not entirely necessary, but I think probably worthwhile to protect my Pi and for the cool factor.

So I thought I would take a look at what's out there.  Obviously I haven't tried any of these out, so no guarantees on quality or functionality, just my thoughts from browsing the websites.

The Lego Case


I had to start with this one because it is so awesome.  Designed by a 12 year old from the UK; open source design from readily available parts: pure embodiment of what the whole Raspberry Pi project is about.  You can get the build instructions from the official Raspberry Pi website here and buy a kit with all the parts (£13.95 ~ $21.72) from the Daily Brick website here.  Although at time of writing they are listing an approximate wait of 1 week.

Downsides - there is no slot for a ribbon cable off the GPIO pins and it doesn't look particularly dust proof from the pictures.  But for sheer cool factor this has got to be a strong contender.

The Metal  Case



Looking for a seriously cool looking, seriously tough aerospace grade aluminum case which actually costs $10 more than the Pi itself?  Then look no further, the Billet Aluminum is the case for you.  Available for sale on eBay at $44.99 or for extra bling you can get it custom engraved with your own design!

Downsides - Cost! and again no slot for the GPIO ribbon cable.  But if you want to show you are not buying a RasPi because it is cheap, but because it is cool, then this could be the case for you.


The Shapeways Options

For anyone who hasn't seen shapeways before it is a site which allows users to upload 3D designs which they will print with a 3D printer and send out to you.  Further more you can then sell these to others.

So there are a number of Shapeways RaspPi cases:







This is just a quick selection of what is available.  My thoughts on them as a whole are:
  1. They seem a little expensive.
  2. I'm not entirely sure what the finish of a 3D printed object will be. (Mainly because I have never held one in the flesh.

The Plexiglass Case


Available on Amazon.com* at $18.50 this case allows you to protect your Pi while still basking in the glory of its beautiful design.  Hinged lid gives you access to your Pi plus we have a slot for the GPIO ribbon cable.

(* - Affiliated link - I will make a commission if you buy through this link.  If you don't like, don't click.)

The Adafruit Case


Similar in design and style to the Plexiglass case, the Adafruit case comes with the pedigree of a well established makers site.  This looks like a well built quality product and coming in at $14.95 one of the cheapest cases we have seen so far.  Again we have a slot for the ribbon  cable and we also have labelled ports.

At the time of writing there is a 1-2 week lead time on this case.

The Built To Spec Case



Another laser cut case, but this time in a sleek looking jet black.  This case come in at the cheapest of the bunch at $12.50 from the BuiltToSpec website.  It's a nice solid looking case, again with labelled ports and the ribbon cable slot. It appears perhaps slightly taller than some of the other cases,but has some definite style and at a price which seems right at home with the Raspberry Pi project.

Again looks like a popular product and at time of writing has a 5-7 business days lead time.

So what am I going to buy?

Right now?  I can't decide.  It seems like there is a lot of choice out there and I'm not quite sure what is going to work best for me.  I think I will wait until I have my Pi in hand and revisit the options at that point.  Maybe I should make my own custom case?



Preparations

Well my Pi has made it to Kansas, so time to start thinking about what else I am going to need.  I have already assembled the below collection:


Which is a mini mouse which I picked up for $5 somewhere (not the best mouse to use, but it's Red!); a USB pen drive I got for free from a work conference and a USB cable which came from a old Nokia phone I used to own.  I need to check my USB power converters to make sure I have one which will delivery enough current.

My plan for the Pi is to use the USB pen drive to store all my work and files on then have a number of SD cards which I can try different O/Ss on.  That way all my actual "work" will be safe on the pen drive and I can reflash the SD cards as often as I want.

Additionally I think I need the following:

  • A keyboard.  I have a wireless one on my mac, but figured I'd pick a basic wired one to avoid any driver issues and to save having to keep switching the dongle over.
  • A SD card. One will be enough to get me going then I can buy more once I am sure they work.  I can't quite find what the minimum size needed is but I think a 2 Gig one will do me.
  • A USB hub.  With my above USB drive plan I am going to need one more USB port than the standard two that are on the B model.
Time to make use of my Amazon Prime two day shipping!

I ordered the below:

AmazonBasics Keyboard $10.77 AmazonBasics Class 10
4 GB SD Card $5.49
Belkin USB Hub $6.94


(Please not that the above prices are what I paid and not necessarily what they cost now.  If you click the above links and buy anything then I will get a commission which will promptly be used to buy more Raspberry Pi accessories.  If you don't like that then please don't click the links!)

So another $22.75 on top of the $35 I paid for the Pi.  Still looking like a cheap computer to me!

A couple of things to mention:

  • It seemed much more economical to get a 4 Gig SD card than a 2 Gig one.  So I upgraded.
  • After I ordered this lot I saw some comments on the RasPi forum which suggested buying a powered USB hub as the Pi can only supply so much power.  I think I will be OK with my initial setup, but maybe I'll need to upgrade at a later date if I want to start adding extra USB devices.
This lot should be with me tomorrow, look out for a full compatibility report when my Pi reaches me on Monday.