This is turning out to be a great week for new stuff. Yesterday I got a package of goodies from China and today I got a HotPi board from local Raspberry Pi specialists "The Pi Hut". The board was funded by a kickstarter project. Unfortunately I did not know about it until after the kickstarter had closed, so I had to buy my board on the open market.
The HotPi is a neat little self-assembly board which includes a battery-backed real time clock (RTC), a tri-colour LED, an infra-red (IR) sensor for use with remote controls, a fan controller, and a socket to plug in a remote IR LED transmitter to control other devices. All in all a nice set of features, and for a good price - it cost me £11.99, about what I paid for a pre-built RTC module on its own.
A few weeks ago I was looking around for some components for my various Raspberry Pi projects and I stumbled on to ebay. I have bought and sold things on ebay several times in the past, but always mainly thought of it as a kind of giant flea market - a place to buy and sell unwanted items. I guessed I missed the news that ebay has turned into an international factory outlet. If you look for things related to Raspberry Pi, Adruino, or electronic components in general, you quickly find lots of vendors selling direct from China. The prices are incredible. Whole, fully-populated, circuit boards shipped round the world for less than what it would cost just for the postage in this country.
I'll admit up front that analogue electronics is not my strong point. Many years ago when I was at school, I had loads of fun making things out of nand and nor gates, inverters, flip-flops and so on, but I was never able to make even a simple op-amp circuit do anything useful. Fast forward a little to engineering courses at university I vaguely remember stuff about poles and zeroes but really it all passed me by. At that point I was so much more interested in software that all this stuff about resistors, capacitors and inductors seemed both dull and baffling. I was happy to leave that side of things to other people who actually enjoyed it. Since then I have not really had much to do with electronics of any sort. If I couldn't do it with a keyboard and mouse, I didn't bother.
One thing which has been causing me to scratch my head more than any other as I have chugged along the development of CORNELIUS (my bare-metal operating system and language for the Raspberry Pi) is the difference between the code needed when building an application and the code needed when running an application. For example, when building and testing code it's vital to be able to create new words, save work, print diagnostics, check that things work as expected and so on. Once an application is built and working, however, all that code is no longer needed.
Yesterday morning my car was at the garage for a service, so I took the morning off work rather than struggle in using public transport only to come straight back again to pick it up. I took the opportunity to break out the soldering iron and construct some Raspberry Pi boards, one of which has been sitting sadly in its little plastic bag for months.
Before I tackled the large proto plate, I started with a smaller item, in this case a GPIO breakout board kit from HobbyTronics. Assembling it was pretty easy, I tried using some blobs of blu-tac to hold the headers in place while I soldered them and it mostly worked. The biggest problem was cleaning stray bits of blu-tac off the connectors and the board when I had finished soldering. I think the warmth of the soldering made the stuff go a bit more soft and sticky.
I recently got a comment on my article from 1st February about Soldering a Slice of Pi/O asking for some help in programming it in Python. This reminded me that I have not got very far with this little board beyond checking that the Raspberry Pi could see it. So I decided to see what I could find and if I could make it do something.
My first port of call was to look around the web. I quickly found several pages about the board and its key component, the MCP23017 i2C Expander chip.
This is not really a news blog, but I spotted something on a recent video titled "
Reuters visits the Raspberry Pi factory" at raspberrypi.org.
The picture below is a screenshot from about 2 minutes 17 seconds into the video. It shows a box labelled RASPBERRY PI 4GB U-ICC-005-43 and a photo of a board.
The picture is a bit blurry, but the board appears to show some differences from the three boards I have. I don't think it's a model B1, B2 or A. So what is it?
I guess a lot of people in the Raspberry Pi community will have seen the RS Electonics Birthday "Blue Pi" contest. The idea is that people tweet their ideas of interesting things they want to do (or are working on doing) with Raspberry Pi, and the most interesting ones will win a special, limited edition, blue Raspberry Pi board. I'm a sucker for these kinds of contests, so I have already submitted several entries. Just to keep my ideas straight I plan to put all my suggestions on this page. If you have been following along with this blog, many of these ideas may seem familiar...
As I have mentioned a couple of times recently that I have been enjoying playing the Raspberry-Pi-hosted "Alternate Universe" MUD (AU). As well as bringing back all sorts of happy memories it has prompted me to think about possibilities for using a Raspberry Pi as more than just a generic Linux server. Not that using a Pi as a generic Linux box is a bad thing, but I have several of those kicking around already. To me, the Raspberry Pi offers a really interesting mix of low price, decent capabilities, low power, good connectivity and general "hackability", in a way that's not provided in quite the same way by anything else.
In my excitement to write about attending my first Raspberry Pi meetup yesterday, I forgot to say anything about what I actually got up to myself. In between chatting and finding out about other projects I did make some progress on mine.
In quiet moments I hacked on the ELIUS code to get the remaining tests working following the move to a unified memory heap, and pushed the final code to the master branch on github. The code now uses a single linked heap for both dictionary definitions and string pool. Moving over the other data areas and values is still to follow, but the code is already simpler, with fewer system variables needed.