A robot rover using a PiZero – Part 1

PiWars is an event like Robot Wars, which you may have seen on TV, but without the destruction.  If you think that sounds boring you need to find out about the great courses the PiWars team put the robots through.  I particularly enjoyed the ‘balloon popping’ one.

piwars2

After visiting PiWars, I decided I had to have a go at making a robot rover myself.  Not being that clever and allergic to soldering, I decided to buy a kit.  (Well not literally allergic but absolutely useless at it!)

Here are my costings:

This assumes you’ve got some sort of Raspberry Pi already. So you’ve got a power supply, keyboard, mouse, screen and powered USB hub – all with cables.

What you need                                               £

Pi Zero                                                                (4.80)

SD card with NOOBS                                       6.50

Adapter Kit                                                        4.20                     (Can be used for other projects)

This is:   {HDMI -> mini HDMI adapter

               {Female USB A -> micro-B USB cable

Hammer heading kit with Male Header    (6.00)  (Can be used again, new male header £2)

or buy a Pi Zero from  Pi-Supply at            10.00 with a male header fitted already

Robot CamJam EduKit #3                              18.00

Old Tupperware box                                        0.00                     (or the CamJam box or similar)

Total                   £38.70

I am pleased to say that the wheels turned when I tried it, so I must have done all the electronics correctly, and Michael & Tim’s instructions are excellent!  It’s the first time I’ve understood everything in a project’s materials.

PiWars_robot

Here’s the Python code I used (The indenting hasn’t come out here):

import RPi.GPIO as GPIO

import time

# Set the GPIO modes

GPIO.setmode(GPIO.BCM)

GPIO.setwarnings(False)

# Set variables for GPIO pins

pinMotorAForwards = 9

pinMotorABackwards = 10

pinMotorBForwards = 7

pinMotorBBackwards = 8

# Set the GPIO Pin mode

GPIO.setup(pinMotorAForwards, GPIO.OUT)

GPIO.setup(pinMotorABackwards, GPIO.OUT)

GPIO.setup(pinMotorBForwards, GPIO.OUT)

GPIO.setup(pinMotorBBackwards, GPIO.OUT)

# Turn all motors off

def StopMotors():

GPIO.output(pinMotorAForwards, 0)

GPIO.output(pinMotorABackwards, 0)

GPIO.output(pinMotorBForwards, 0)

GPIO.output(pinMotorBBackwards, 0)

# Turn both motors forwards

def Forwards():

GPIO.output(pinMotorAForwards, 1)

GPIO.output(pinMotorABackwards, 0)

GPIO.output(pinMotorBForwards, 1)

GPIO.output(pinMotorBBackwards, 0)

# Turn both motors backwards

def Backwards():

GPIO.output(pinMotorAForwards, 0)

GPIO.output(pinMotorABackwards, 1)

GPIO.output(pinMotorBForwards, 0)

GPIO.output(pinMotorBBackwards, 1)

Forwards()

time.sleep(1)

Backwards()

time.sleep(1)

StopMotors()

GPIO.cleanup()

The only bit I was stuck on was finding instructions to start the code working automatically, once I’d separated the PiZero from it’s cables and switched on the battery box.  I expect you have to use some sudo commands in the LX Terminal.  Apparently I need to use this post: Raspberry Pi’s Linux Documentation which explains the correct commands to start up the PiZero and run my python code automatically.

Well, I feel I’ve made great progress today – so separating PiZero from it’s cables, and getting it to start the code (which moves the wheels) automatically, will be in Part 2.

Happy R Pi tinkering!

 

PS You can now buy PiZeros, with the male header already soldered on, from Pi-Supply .

Advertisements

York W Raspberry Jam

The aim of this first Raspberry Jam was to get beginners coding.

yrj_crop13022017

These two were animating a cat and dog and learnt how to resize and move their cat and dog sprites- getting their sprites to turn around at the edge of the screen. They also worked out the basic control blocks you need to make your code work.

Some attendees had some prior learning so borrowed MagPi’s ‘Learn to code with Scratch’ book: https://www.raspberrypi.org/magpi/issues/essentials-scratch-v1/

yrj2_13022017

and used it to go further into Scratch.  A variation of the Boat Race game, which is explained in the book, resulted in a maze game that we enjoyed.

boat_race
Boat Race game

 

Next time we need to get involved in physical computing, perhaps, using BBC micro:bits or the Pibrella. However I’m looking forward to seeing some more complete beginners because the more adults and children who know what coding is all about, the better!

SPI – Learnt a new term today

I was asking a question about screen brightness today and it was stated ‘… make sure SPI is enabled’.

microminecraftphoto

I didn’t know what SPI was. It appears to stand for Serial Peripheral Interface. It looks as if it needs to be enabled to send data in both directions, e.g., from the R Pi to the screen and from the screen to the R Pi. I would have thought this was a vital job of an OS so I am not sure why it wouldn’t be enabled already.

Anyone any more light on the subject!

Raspberry Jam – our first!

Our first Raspberry Jam in West York will be taking place soon.

raspberryjamposter2

It’s being held in the fabulous Acomb Explore Library (YO24 3BZ), in it’s best room, right at the front so everyone can come and have a look what we’re doing.

We will have 6 Pi-Top CEEDS and my kit plus any that people can bring. (I do have one spare monitor.)

I’m really looking forward to getting started and hope we can attract some beginner families as well as enthusiasts.

An HDMIPi for Geek Gran

Am rather pleased about this!  For the first time in my life I’ve assembled something more complex than Lego City (5-12 years). The instructions at Cyntech assembly guide were excellent and I only got stuck when you had to attach the ribbon cable to the driver board.

You needed to insert the ribbon cable underneath the black tab. I thought it might go between the tab and the white plastic of the connector, but no, it went underneath.

hdmipi

I tested HDMIPi with a games console and it worked but can’t test it with the Raspberry Pi as I need another power supply. I thought my R Pi would work with the power from my USB hub but alas the R Pi seems to need something attached into its micro USB power socket to function.

Anyway, when I get to Leeds Raspberry Jam tomorrow night I’m sure someone will be able to lend me a power supply and then I’ll send for one straight away.

This little 22.5 cm (9″) screen is going to be so useful when I take the R Pi2 to Code Club . And when I finally get York Pibrary going, which will be one of Leeds Raspberry Jam’s little sisters, I’ll now have my large HDMI monitor available as a spare!

hdmipi2

In use at Leeds Raspberry Jam :

rjam071216_czgp6fgwqaatfsg

Happy Raspberry Pi tinkering!

 

Minecraft Steve shimmies with micro:bit – Part 1

I found this activity, Micromine Bitcraft  , at raspberrypi.org the other day. It uses the BBC Micro:bit to control Steve’s movement in Minecraft Pi. When I went back to try this again in May 2017 (after getting it working successfully in Oct 2016) I couldn’t remember how I’d got Steve to display on the screen. What you do is: create your world then press Esc. Two buttons appear in the top LH corner, sound on/off and Steve on/off. Just click on the body to toggle between Steve showing or Steve ‘as cursor only’.

microminecraftphoto

The activity uses Mu micropython which I looked at before in Micro:bit with R Pi (2) – Code to micro:bit!  It wasn’t plain sailing because it also uses GPIOZero or gpiozero (as it should be spelt when you type it in some code) in Python3 and I spent a long time trying to find this on my R Pi2 SD card.  (I explained about GPIO in Geek Gran buys a Pibrella .)

In fact you need to put python3-gpiozero into the LX Terminal.  You do this as follows:

sudo apt-get install python3-gpiozero

If it says it’s not available, you need to update and upgrade your SD card’s software.

You do this by typing in LX Terminal:

sudo apt-get update

then let that happen before doing:

sudo apt-get upgrade

If it’s a long time  (or never) since your card was updated you may need to redo the 2nd one with:

sudo apt-get  dist-upgrade

but this takes ages so only do it if you really have to. (I didn’t need to – but had the wrong package name gpiozero instead of python3-gpiozero.) It asked me something about a thing called Plymouth on the way but I just typed q to quit and it carried on. So you need to check the screen occasionally or your upgrade may never complete.

Mind you, I’ve now got the latest version of Raspian with PIXEL (Pi Improved Xwindow Environment, Lightweight) so maybe it’s going to be worth it. By the way, you need to reboot, ie shutdown and start again, before PIXEL is available.

At last I went back to LX Terminal and typed:

sudo apt-get install python3-gpiozero

and it was there!

Now to return to Micromine by putting my male-female jumper wires onto the R Pi, some alligator clips onto the BBC micro:bit and joining them both together – then I’ll report back when I’ve got it working!

I did get this working on 14 Oct 2016 after some difficulty with loose connections.

Here’s the evidence! Yorks_STEAM on Twitter

Micro:bit with R Pi (2) – Code to micro:bit!

Now to get the code onto the micro:bit.

mu2

This turned out to be easier than I expected.  I attached the micro:bit before starting up the R Pi. (I don’t know whether this matters but I thought it was better to have everything wired up beforehand.)

I took the code, you see above, from www.raspberrypi.org  resources about Getting started with the micro:bit.  I then saved it in a new folder called Mu Python and chose ‘Flash’ from the top menu to flash the code across to micro:bit.   As expected, when I pressed button A the message scrolled across the display, etc..  What I love, about the BBC micro:bit, is how easy it is to get the code onto the micro:bit.   After using some other types of microcontroller, that have required you to hold down buttons and choose exactly the correct time to flash the code, this is just so much more straightforward!

There are lots of images you can get it to draw automatically such as HAPPY and SAD faces and CLOCK faces. A full list of them is given here: micro:bit micropython .  Don’t forget to add a sleep()*  statement though e.g. sleep(500), so that your image stays on the micro:bit long enough for you to see it!

* sleep() times are in milliseconds.