Archive for the ‘Introduction’ Category

Arduino in Schools at DD&T Conference

September 20, 2011

I had the great pleasure of leading two Arduino workshops for the DD&T Conference, on 12 July at Sheffield Hallam University.

I lead two sessions where I spoke about the background of Arduino, and the importance of Open Source. Then everyone got their “hands dirty” wiring up simple electronics and programming the Arduino. The attendees were D&T teachers, D&T support centre consultants and technicians.

Traditionally, schools use some version of the PIC microcontroller, but, I am told, schools teachers are being asked about Arduino. This is an intriguing development. It is good that there are folks out there encouraging education to get involved with Arduino, which has a very different image to the PIC-based systems.

As well as traditional breadboard-based electronics, we also tried Paul Gardiners ‘Explorer” modules. I have designed a simple Arduino shield which plugs into the Arduino, and enabled people to very quickly construct electronic systems using Paul’s electronics modules. Paul has developed almost 50 modules, so there is a lot of scope, and they can be combined to explore and develop an idea quite quickly.

The effect is transformative. Using Paul’s modules, the activity uses most of the time for programming and debugging the code. When I use breadboard-based electronics, I usually find a lot of the time is spent debugging the elctronics.

The sessions were welcomed, and worked quite well, though they were too short to cover as much ground as I would like. We have a solution to this though, because I am doing another workshop for teachers at the weekend.

Advertisements

Tutorials on USB, SPI, I2C, CAN, LIN, etc.

April 21, 2011

Thanks to the Arduino, and others including Maple, lots of new users, beyond traditional developers and engineers, are using microcontrollers. Microcontrollers are mind-boggling pieces of equipment, genuinely worthy of the moniker ‘only limited by your imagination’. Many users create amazing projects using the excellent libraries and existing electronics. Some need to go further. They want to understand how to make the hardware do even more and different things.

I have always been the type of person who likes to understand how things work. I like to read manuals. Even as a child I read the manuals for my brother’s HiFi so I knew how to do make it do pretty much anything possible. I like looking at low-level code, and digesting Microcontroller manufacturers manuals. I like reading technical stuff, especially over a balmy Holiday Weekend.

I sometimes work with folks with technical backgrounds in software not hardware or low-level embedded systems who want to do more. They have all the knowledge and skills to program the hardware, but the hardware manuals are too hard a place to start. It is surprisingly rare to find good introductory material for low-level technology which is both approachable and also detailed enough to enable non-specialists to go further.

I was pleased to stumble into a set of resources for embedded systems at “EE Herald”
http://www.eeherald.com/section/design-guide/index.html

It includes a section of “On line Courses” on common embedded communication interface ‘standards’. The tutorials include USB, I2C, SPI, CAN, LIN, Serial, and RS232. Those standards are used to communicate with individual chips such as accelerometer sensors, other microcontrollers, host PCs, SD memory, Wii controllers, controllers in manufacturing plant, and parts of cars. There are also section on ‘IEEE 802’ local area and wide area networking standards.

The sections I’ve skimmed seem to have good coverage and a decent level of details. The tutorials include some helpful diagrams, which helps folks like me a lot, and are written at useful level of technical detail without going down to the manufacturer specific hardware.

For example USB is covered in
http://www.eeherald.com/section/design-guide/esmod14.html

I have only skimmed it, but it reads as good coverage of USB 2.0 from history to physical hardware, electrical levels, signalling, end-points and protocol including packet formats. It isn’t as detailed as the USB specifications, but I don’t think many people would want to start their! I like to get a good overview of the way a system works before digging into the detail, and I like to have a broad technical understanding to stitch detail into.

The USB article at EE Herald isn’t perfect. It includes a very brief overview of USB On-The-Go (OTG), but not enough to feel I could properly understand the STM32F USB OTG hardware. USB On-The-Go includes the more complex host-side of USB, so it would be impressive if they had got that too. I feel that is a minor and common weakness.

It is a readable alternative to
USB in a NutShell at http://beyondlogic.org/usbnutshell/
USB made Simple at http://www.usbmadesimple.co.uk/

These won’t replace the manufacturers manuals (e.g. ST Micros STM32F RM0008), but they cover generic technical detail, and look pretty good. I’m hoping they may be enough overview for anyone who wants to read low-level code or hardware specific manuals like STM32F RM0008 or the Atmel ATmega 48/88/168/328 manual.

I briefly looked at some other articles in the EE Herald design guides, and they are not all good quality. I felt disappointed by the ‘MEMS based motion sensing design’. It had almost no useful detail; I thought it was weak even as marketing ‘puff’. I wouldn’t feel ready to tackle a manufacturers MEMS datasheet after reading that.

EE Herald have some links to other sites, including this useful looking article on 1-Wire Interfaces from Maxim which has a lovely list of 1-Wire Application Note links at the end. Ideal Holiday Weekend reading ๐Ÿ™‚

OROne – Cortex-M3 robot controller (STM32F103)

April 6, 2011

I was lucky enough to get some financial support to design and prototype a robot controller. I got outstanding help and advice from Dr Tony Wilcox, Chris Evans and Roger Thomas of Birmingham City University. Chris did a lot of the PCB routing, and much of the board construction. Tony generously shared his wide experience of developing robot controllers, and embedded and electronic products. Roger was a font of knowledge on PCB design and manufacture, and electronics. Thanks also to Pete Harrison for his always helpful comments and suggestions.

I learned a huge amount from them. This is the result.

OROne STM32F Robot Controller

OROne STM32F103 Robot Controller - without 0.1" headers

It is based around an ST Micro STM32F103CB Cortex-M3 microcontroller. This version has 128K Flash, 20K RAM, USB, CAN, 3xUSART (serial),15xPWM, 16xADC, 2xI2C, 2xSPI, and JTAG in a 64-pin package, all ticking along at 72MHz.

The board adds dual DC-motor drive, seven LEDs, two buttons, two servo sockets, as well as sockets for six analogue input, two quadrature encoders, and headers for JTAG and Serial. The two 30-pin 0.1″ headers (missing from the photo) gives access to all of the microcontroller signals and power on a veroboard friendly grid. The microcontroller can be powered over USB, or via an external power supply or batteries. The board also has independent on-board voltage regulation for the servo’s and motor drive chip.

Like an Arduino, it is ‘self-programming’ over USB once the bootloader has been installed. I installed the bootloader over the microcontrollers on-board serial interface using an ordinary FTDI USB to serial cable. So it doesn’t need JTAG or an in-circuit programmer, ever.

It is based on the Maple from LeafLabs. LeafLabs have built an IDE using the same Processing-derived IDE as Arduino. It sits on top of GNU GCC. They have also implemented most of the Arduino base-libraries, so Arduino programs may move across to Maple with minimal or sometimes no changes. To top it all, they have developed a bootloader which enables the STM32F103 to program itself over USB. The whole software environment, libraries and bootloader are Open Source, and runs on Windows, Linux and Mac OS X.

Maple is a magnificent piece of work. My board ‘came up’ in a couple of hours (after we found and fixed a couple of my PCB errors).

Chris did much of the construction; he has a very steady hand. We used the ‘Mini-oven SMD technique’. Paul Gardiner of Finham Park school in Coventry did a workshop a while ago, and this is the biggest board I’ve made using it.

I’ll describe some of our experiences, and where-to-next over my follow-up blogs.

Freeduino Nano – Just Arrived

October 16, 2009

I have a bunch of full size Arduino and Freeduino boards which I use in workshops, but I am always on the lookout for something more breadboard friendly. I couldn’t resist the Freeduino Nano from nuelectronics.com:

Freeduino Nano - Top

Freeduino Nano - Top

I haven’t used it yet, but it looks very close to ideal forย  Ourduino projects where I avoid soldering. All of the 28 pins are on a breadboard-friendly 0.1″ pitch. The rows of pins are 0.6″ apart, so it should fit into a 28-pin DIL socket, making it perfect for veroboard (Warning: I haven’t tried this yet).

It comes with both pin headers (for breadboard) and female headers like the ones fitted to standard Arduino’s. I’ll probably fit the pin headers, or buy female headers with long pins.

It is fitted with an ATmega328, so it has double the flash program memory (32K), RAM (2K) and EEPROM (1K) of the ATmega168 on my older boards.

Freeduino Nano - Bottom

Freeduino Nano - Bottom

Unlike some of the alternatives, it has a voltage regulator on board, so it should be easy to use in battery-powered projects where we often use 9volt batteries. It has the usual 16MHz crystal too, so timing-sensitive projects (like IR remote) should be okay.

It uses an FTDI USB chip like other Arduino’s and Freeduino’s, so there shouldn’t be any driver clashes. A nice touch is they include the USB to mini-USB cable in the box. so it’s good value for money.

This looks like a very good ready-made board, but as a basis for a DIY kit, it isn’t quite my ideal. The changes I’d like are:

  • increase the size of the SMD resistors, LEDs and small capacitors; these parts are a bit too small for school children (and me) to use,
  • use an SMD Crystal and put it on top, and
  • use a slightly smaller voltage regulator, and move it to the top too.

I think we could make a single sided PCB in schools, using wires for jumpers, and solder it in my mini-oven.

I am pretty excited about this. I was about to start designing a PCB, and this turns up! Isn’t the Internet wonderful?

(BTW – the service from nuelectronics was very good, with less than 48 hours from order to delivery. I’d like to add, I have no relationship to nuelectronics.)

Hello World – Blink.

October 5, 2009

Welcome to Ourduino. It’s been a long time coming, and I hope we have fun together.

I’ll be writing about the Arduino experiments we’ve been doing at Whitley Abbey School in Coventry, Birmingham Hack Space, and my ‘lab’.

I gain inspiration and energy from friends, the school students, my friends and colleagues at Micromouse.com, the Birmingham Hackspace, fizzPop, the Open Source community, especially the Arduino community, and last, but definitely not least, the Imagineering Web charity.

I found using Arduino so liberating that I hope to tempt other folks into experimenting with Arduino’s. It’d be great if you’d like to get involved helping others use this type of technology. If you live in this area of the UK, come join us at Birmingham Hackspace.

Some of my posts will explain practical projects – making electronics and programming micro-controllers. I hope you will improve anything you find here, and share it with all of us.

One of the projects will be the Nikon Infrared Remote Control we built at the Birmingham Hack Space, fizzPop.

I’ll also describe the “Introduction to Robotics” experimental projects we’ve built at school too.

Blink? Blink is the ‘Hello World’ of embedded programming ๐Ÿ™‚

PS – I’ll set up my Ourduino domain when I get around to it.