Scratch GPIO Version 2 – Using Stepper Motors
Stepper Motors
WARNING: NO MOTOR SHOULD EVER BE CONNECTED DIRECTLY TO A RASPBERRY PI
However, if you would like to build a neat little vehicular robot then you can do so by connecting up a pair of cheap Stepper Motors through a couple of very cheap ULN2003s.
The cheap 5V steppers that are widely available (BY28) don’t turn very fast (maximum about 12 RPM) which actually makes them idea as beginners motors as your vehicle won’t run away during testing 🙂
These motors have 5 connections, 1 for power and the rest to control the stepping. (Their technical name is 5 Wire Unipolar Stepper Motor)
To use them in Scratch, you need to connect them up as follows
StepperA should end up (via the ULN2003 buffer of course) being controlled by pins 11,12,13 and 15 – Stepper B is via pins 16,18,22 and 7.
Pin 9 of the ULN2003s should be connected to +ve on the motor battery pack.
(The battery +ve MUST NOT be connected to any pins on the Pi)
In your Scratch program, you need to say that you are using Stepper motors instead of ordinary motors this is simply done by broadcasting Stepper in your Green Flag code block.
You can then simply using variables MotorA and MotorB as before with simple DC motors but this time they will each control 4 pins at a time.
The advantage of using stepper motors is that they can be just as easily stepped backwards as forwards. So to make MotorA go backwards at full speed simply use set MotorA to -100
Position Control
As well as treating the stepper as a continuously rotating motor, you can simply tell the stepper to change its “position” by a number of steps.
e.g. To turn 500 steps (approx 180 degrees on my motors) use
Note the use of change and not set
Part 4 – Direct Support for External Modules/Boards
Advanced Stepper Control
Stepper motors need a delay between each step – this is currently set to 0.003 secs. You can control this value by using a variable called StepDelay.
You can also change the type of stepping mode from 2Coil (default value that gives maximum turning force) to 1Coil or HalfStep
Hi Simon
Helpful article, you can improve your circuit further (and make it friendlier for the RaspberryPi) by adding a few extra noise reducing components.
Instead of using a wire from the 5v to the bread board, use a small inductor (low resistance) and add an electrolytic ALU cap across the breadboard supply rows (make sure it goes the right way around as these are polarised). You could also add a small 100nf (0.1uf) cap in parallel and add one each for the driver chips between their common and ground pins as lose as possible.
The small caps will reduce higher frequency switching noise locally on the drivers and the supply, the electrolytic acts as a local storage and filter, the inductor will help form a pi filter between the noisy motor circuitry and the RaspberryPi making nasty noise less likely to damage to it or interrupt it unexpectedly.
regards
Al
Ta – when(ir 🙂 ) I get round to having making a board, then I’ll add those in 🙂
what would that look like folk? got a diagram?
Thanks for these helpful tutorials. I have got the LEDs and the motors working fine but I am having a spot of trouble with the stepper. Using the same IC, I have managed to get the stepper to work with an arduino OK but with my Pi, it buzzes for a short while then stops without ever moving. Am I correct that with only one stepper motor the program only needs these three lines to make it turn continuously?
when green flag clicked
broadcast StepperA
set MotorA to -100
I am also a little unsure about the pin numbering (I am using a model B, v1 Pi at the moment): Diagram above appears to have the numbering: Orange,Yellow,Pink & Blue to 12,11,13 & 15
whereas the description says it should be: Orange,Yellow,Pink & Blue to 11,12,13 & 15
I am using your numbering system not the official Pi pin numbers. Does your numbering system (that is much more logical) still work for a Model B, v2 Pi?
Can you spot what I am doing wrong? Best wishes, Chris
The diagram is wrong – sorry 🙁 (I’ll get onto amending it PDQ!)
The stepper should be connected to 11,12,13 and 15.
There are 2 numbering systems for the Pi – the physical pin number (which is what I use) and the one that refers to a broadcom internal numbering (Physical Pin 11 in called GPIO17 in that scheme).
The software automatically handles which revision of board is being used 🙂
Come back again if it still doesn’t work.
(Previous to V2.8 the software didn’t handle any extra spaces in variable values but its a lot more relaxed now )
Thanks, all is working now!
Hi,
Could you help me write a small python program that can control stepper motors WITHOUT the use of Scratch? For example, you launch the python program, it asks you what speed you want to set MotorA to, then what speed you want to set MotorB to, then runs the motors at that speed until the program is quit?
Thanks
Sorry – I trued posting a link but it didn ‘t work 0 lets see if this one does
http://www.raspberrypi-spy.co.uk/2012/07/stepper-motor-control-in-python
Simon
Hi,
Thanks for replying. Which one should I try?
Thanks
Hi Simon, very nice work. Im currently using it with yrs 4, 5 & 6. Shortly they’ll be learning about stepper motors. I wondered if you could help me. I am thinking that a different wiring layout would help the younger children get the correct colored wires in the right holes. Could you tell me how I can use different pins than those used ? For Stepper A I would like to use pins 15,13,11 & 7 – straight across the top. For Stepper B I would like to use pins 22, 18, 16 & 12 – straight across the bottom. It would help me a lot if you could give me some advice, thanks.
I’m afraid I’ve hard coded which pins are used, if your up to it, feel free to edit the python prog. Wiring up the steppers wasn’t on my plan for the pupils to do 🙂
I’ve had a quick look and if you find this section in the file
if ('steppera' in dataraw) or ('turna' in dataraw):
if (stepperInUse[STEPPERA] == False):
print "StepperA Stasrting"
steppera = StepperControl(11,12,13,15,step_delay)
steppera.start()
stepperInUse[STEPPERA] = True
turnAStep = 0
steppera.changeSpeed(max(-100,min(100,int(float(0)))),2123456789)
else:
steppera.changeSpeed(max(-100,min(100,int(float(0)))),2123456789)
if ('stepperb' in dataraw):
if (stepperInUse[STEPPERB] == False):
print "StepperB Stasrting"
stepperb = StepperControl(16,18,22,7,step_delay)
stepperb.start()
stepperInUse[STEPPERB] = True
turnBStep = 0
stepperb.changeSpeed(max(-100,min(100,int(float(0)))),2123456789)
else:
stepperb.changeSpeed(max(-100,min(100,int(float(0)))),2123456789)
if ('stepperc' in dataraw):
if (stepperInUse[STEPPERC] == False):
print "StepperC Stasrting"
stepperc = StepperControl(24,26,19,21,step_delay)
stepperc.start()
stepperInUse[STEPPERC] = True
turnCStep = 0 #reset turn variale
stepperc.changeSpeed(max(-100,min(100,int(float(0)))),2123456789)
else:
stepperc.changeSpeed(max(-100,min(100,int(float(0)))),2123456789)
You might just get away with chaning the pin numbers assigned here
But no guarantees it won’t affect other things
Pins 3 & 5 should be left alone as they have pull-up resistors on them and didn’t work when I tried them out as contenders for Stepper C use
As long as you don’t use Stepper C , you should just leave that bit of the code alone
Simon
Thanks Simon I’ll give it a go either today or tomorrow. Im only wanting to use StepperA and StepperB. Thanks again for your hard work on this its pivotal to what I do, the club wouldnt exist without it and the kids do so enjoy lighting up LEDs and spinning motors. The stepper part will enable me to build a £10 Scratch programmable robot that Im sure they will love.
Hi Simon, after success with your design for driving dc motors using the ULN2003 chip I have been trying to get a (28BYJ-48) 5v stepper + ULN2003 board working properly without much success.
Must have check the wiring 100 times. It sort of works intermittently and also vibrates. Power supply is not the issue here. I was wondering if you tested these steppers with “version 3” of your GPIO program as your website material looks to be written for “version 2”.
In any event, I found a website in one of your blogs (raspberry-spy.co.uk) that you recommended to someone looking for a python stepper program. Copied the program (by a Mat Hawkins) and changed the GPIO pin #’s to match yours. It works very well which confirms my wiring.
I would much prefer a working Scratch version for an upcoming grade school demo as part of our “National Engineering Month” activities on this (very cold) side of the pond (Ontario). Yours has both speed control and revolution control. (is your parameter “StepDelay” req’d in secs or msecs?)
Maybe “version 4” is the answer – does downloading it replace “version 3” or is the removal of same a manual process?
Regard Mike S.
Version 4 installs separate from Version 3 – there was a recent bug-fix to steppers which is still only in the development version so I recommend downloading that one instead http://cymplecy.wordpress.com/2013/11/26/scratchgpio-development-testing/ and also note that you now just broadcast Stepper to intialise them. Follow this comment for the full tale http://cymplecy.wordpress.com/2013/04/22/scratch-gpio-version-2-introduction-for-beginners/comment-page-2/#comment-3201
Simon
PS StepDelay should be in secs but default is pretty much spot on for reliable use of those little steppers – you can try reducing it but make sure you’ve a good PSU and you’ll prob only get another 10% speed out of it
Simon, many thanks for the Scratch GPIO4 download URL. The download produced two new Scratch GPIOs – GPIO4 & GPIO4plus. Unfortunately neither worked for the stepper control. In fact after some logic state testing it was clear no actual GPIO outputs were being generated by either version. After “quitting” each Scratch session I returned to GPIO3 to make sure the original DC motor control still worked. Was more than a bit concerned that It did not until I decided to “quit” the X-window environment and restart it via the command line “startx” and reload ScratchGPIO3 again. This did the trick as the DC motor control pgm thankfully worked as before. Likely some sort GPIO version interactions going on somewhere behind the scenes that impacts the GPIO I/O??
After all of the above I refreshed the entire system via apt-get update && apt-get dist-upgrade and tried everything again. Unfortunately, nothing had changed for the GPIO4s. So I’m not too sure where to go from here with the steppers except the Mat Hawkins’ Python stepper, which isn’t the way I hoped to go.
Any thoughts?
Mike S
Just a bit of info. You can’t run V3 after running V4 in same session as V4 stuff still controlling gpio port. You should be able to run V4 after V3 as V4 should kill any previous running versions but best to play safe and keep to one version per reboot 🙂 Just as a matter of interest, are you running as normal pi user when you log onto your Pi? Simon On 12 Feb 2014 03:51, “cymplecy (simplesi)” wrote:
>
Simon – thanks for the quick Feb 12, 2014 (9:36 am) reply. Interesting info on running V3 and V4 and confirms my experience here. Reboot its is. Regarding Logon: running as a normal Pi user (logon: Pi + my-password). Pi is a v2 512MB, actually a new UK made one. Also have several older V1 256MB Pi’s I use and also have tried these with the stepper. I’m determined to wrestle this one to the ground as I like your Scratch approach for demo’s to young grade school kids. Regards Mike S.
I’m going to power my stepper not up tonight and see what the issue is
Do you have any other hardware that you can plug in just to prove that the software is basically v working such as a led and resistor?
Great apolgies 🙁 I introduced a new add-on to the dev version but forgot to make sure some extra support files were added to the install – so of course it works in my developement playground but not as a replacement for the stable version 🙁
I will hopefully sort this out shortly and get it up an running again.
It also explains why someone else who I directed to dev version is having issues with something else 🙁
Apolgies
Off to fix
Simon
Simon, no problem. These things happen and you also have a day-job to attend to, let alone all this Scratch GPIO stuff. Amazing you find the time for all this what with a family and all. Just let me know when you are ready and I’ll re-download GPIO4 and give it a whirl again.
Mike S.
It’s done
Should be fixed now – try the dev link again
I’m going to be more careful in future and create a dev dev branch and play in that and make the dev branch more of an beta/RC release status 🙂
Thanks for persevering and getting me to sort my shizzel out :0
Simon
Simon, does re-downloading it overwrite what is currently on my Pi (GPIO4 and GPIO4plus)?
Does it have a “package” name in the cache so I can delete what is there now. I did screen dump of the cache but no package had a name that implied it was scratchGPIOx or similar
Mike S.
Yes. Re downloading and reinstalling deletes all old v4 files and creates new ones. Doesnt touch anything outside of scratchgpio4 folder apart from desktop shortcuts. Don’t know what you mean by cache
Simon
Simon – that’s great then if it deletes the “old”.
I see now where your GPIO stuff is. I thought perhaps it was installed as a “package” – see below.
“cache” is essentially a list of all the available s/w “packages” that can be installed with “apt” (e.g on the web). Debian use “apt” as the package manager. “apt-cache” is a utility for managing the cache
e.g. apt-cache search xxxx Searches and lists s/w packages with xxxx in their name.
Also:
dpkg –list Generates a list of all s/w packages installed on the system
I am certainly no Linux expert but learnt about the above from Eben Upton’s Raspberrypi User Guide (ver 1) and from a very good and readable Linux book called “The Linux Command Line” by William Shotts.
There also are tools like Aptidue which is a package manager that allows for e.g. deletion of a package(s) and a lot more. I have it but have not really done much with it. I tend to follow the KISS principal where possible. You very likely know all this anyway.
Mike S
7:30 pm EST
Simon, have now tried the new GPIO4. We are not there yet but some signs of progress.
On invoking the scratch pgm (see end), the stepper does not turn but now at least one of the 4 inputs is activated (have LEDs on all 4 ULN2003 inputs). The input from Pin11 (Orange) is ON. The pgm is frozen with all the other pins OFF. The ULN2003 module is identical to the one shown in Mat Hawkins (Raspberry Pi Spy) stepper write-up where his ULN2003 inputs are IN1, In2, IN3, IN4. My pin assignments are: IN1 (Blue, Pin 15), IN2 (Pink, Pin 13), IN3 (Yellow, Pin12), IN4(Orange, Pin11).
Scratch pgm
1) When “Flag” checked
2) Broadcast Stepper
3) Set MotorA to N (N=0, 10, 20,….90,100)
Hope this helps somewhat……lets battle on.
Mike S
Ok reboot and try invoking the system from LX terminal
open LX terminal and type
sudo ./scratchgpio4/scratchgpio4.sh
once scratch is running click back to looking at the terminal window
Are there any errors showing?
Simon
Simon, yes there is an error. LX terminal text as follows:
————————–
Trying
There was an error connecting to Scratch!
I couldn’t find a Mesh session at host 127.0.0.1, port: 42001
—————————
The above 3 lines repeat on the screen ad infinitude……..
Mike
Yes. You hence to kill it from another session when it’s run this way. Did Scratch launch?
This is extremely puzzling
Simon, no scratch did not launch. The 3 text lines just kept repeating on the screen.
Mike s
Simon – it seems to be telling us it cannot find scratchgpio4.sh in folder scratchgpio4
Mike S
Dear god and little fishes as my granny might have said!
Ok
it must be finding scratchgpio4.sh as we tell it to run and it runs 🙂
ca nyou cd /home/pi/Documents and do ls to see if there is anything in it
Can you then cd Scratch Projects then ls and see if anything in it ?
Is rsc.sb in there?
Can you cat /home/pi/scratchgpio4/scratchgpio4.sh and see if the last lines says
scratch — document “/home/pi/Documents/Scratch Projects/rsc.sb” &
Simon
You are running this on a Raspberry Pi? 🙂
Ps does the 2nd last line of that cat say
sudo python scratchgpio_handler4.py 127.0.0.1 standard &
Simon
Simon…more….doing an ls I see DIRs for among others, scratchgpio and scratchgpio4.
Scratchgpio4 DIR contents are:
scratchgpio4.sh, sgh_gpiocontroller.py, scratchgpio4_handler4.py, scratchgpio4plus.sh, sgh_Stepper.py, sgh_Stepper.pyc plus some Adafruit files (5) and killsgh.sh
Scratchgpio DIR contents are:
Scratchgpio3.sh, scratchgpio_handler3.py, 3 x Adafuit files, servomotorpitx and servodpirocom
Hope this helps somewhat…
Mike S.
Carry on with the questions I asked but also compare this ls of my scratchgpio4 setup
Adafruit_I2C.py scratchgpio_handler4.py sgh_PiGlow.pyc
Adafruit_I2C.pyc sgh_Adafruit_8x8.py sgh_PiMatrix.py
Adafruit_PWM_Servo_Driver.py sgh_Adafruit_LEDBackpack.py sgh_PiMatrix.pyc
Adafruit_PWM_Servo_Driver.pyc sgh_GPIOController.py sgh_servod
killsgh.sh sgh_GPIOController.pyc sgh_Stepper.py
scratchgpio4plus.sh sgh_PCF8591P.py sgh_Stepper.pyc
scratchgpio4.sh sgh_PiGlow.py
with yours – ignoring .pyc files as there are irrevalavent
Simon
Simon, difficult to stop this process, CTRL-C and CTRL-Z do not work. I would use KILL or TERM if I could get to command line, which I cannot. I will just power the Pi down. ( last reply should read “infinitem” not what my iPad decided to change it to!
Mike S,
Simon – re your 7:39pm reply. The text displayed is exactly as I show in the 3 text lines in the my 6.02 pm reply. I entered the command line exactly as per you 7:18 pm reply. There was no “standard ………” Text. Is this what you asked!
Documents – contains some of my stuff including Scratch Projects and RPi.GPIO-0.4.1a
Scratch Project – contains some of my stuff plus rsc.sb
Mike S.
Simon – yes, I am indeed running this on a Pi (new rev 2 one)
I think our responses may be overlapping.
Mike S.
Simon – copy/paste of scratchgpio4.sh, I’m on the Pi now to be able to do this:
#!/bin/bash
#Version 0.2 – add in & to allow simulatenous running of handler and Scratch
#Version 0.3 – change sp launches rsc.sb from “/home/pi/Documents/Scratch Projects”
#Version 0.4 – 20Mar13 meltwater – change to use provided name for home
#Version 1.0 – 29Oct13 sw – change to cd into simplesi_scratch_handler to run servods OK
sudo pkill -f scratch_gpio_handler*
sudo pkill -f scratchgpio_handler*
cd /home/pi/scratchgpio4
sudo python scratchgpio_handler4.py 127.0.0.1 standard &
Mike S,
4:04 pm EST
Simon – confirming that our scratchgpio4 DIRs contain identical pgm names/extensions.
Mike S
Hi Mike
Some of your answers don’t seem to match with my questions but nevertheless we are finally getting there.
From all the evidence it would seem that instead of my script launching the scratchgpio_handler4.py rprog and then running Scratch – its is only launching the handler.
for some reason, my installer has not created the correct scratchgpio4.sh script
can you delete /home/pi/scratchgpio4/scratchgpio4.sh
then make sure you are back in /home/pi
run the download again
sudo wget http://goo.gl/6VqdL8 -O isgdev.sh
run the installer
sudo bash isgdev.sh
then cat /home/pi/scratchgpio4/scratchgpio4.sh and make sure the last line reads
scratch –document “/home/pi/Documents/Scratch Projects/rsc.sb” &
it it does – then just launch ScratchGPIO4 from desktop
IF IT DOESN’T then cat /home/pi/scratchgpio4/scratchgpio4plus.sh
if the last line of that reads
scratch –document “/home/pi/Documents/Scratch Projects/rsc.sb” &
then launch ScratchGPIO4plus icon from desktop
Simon
4:45 PM EST
Simon – carried out all of your instructions except to launch the icon. Confirming that the last line of scratchgpio4.sh does indeed read as (copy/pasted it):
scratch –document “/home/pi/Documents/Scratch Projects/rsc.sb” &
I will give it try next but have to go out for a few hours.
Thanks for all this. If you did not get all your questions answered likely due to our reply sequencing and multiple phone calls i was receiving.
Mike S.
4:44 pm EST
Simon, well after all that I am sorry to report that the stepper still is not stepping. As before its just pin11 that comes ON (LED lit) and stays on. Based on my experience with the python stepper pgm (went through Mat Kings code) it looks like the scratch pgm is not, for some reason, sequencing through the repeating 4-state sequence of (1000, 0100, 0010, 0001) which, as I’m sure you know well, turns on/off the 4 pin ULN2003 inputs/outputs in this sequence.
Does all this work at your end? if it does then I’m really “concerned”.
Got to go out.
Mike S.
Mike,
I would go over the connections again if I were you. I am working off a recent download of scratchgpio4 stable version and I have two stepper motors working both with MotorA/B and PositionA/B. The only difference from Simon’s diagram is that I am using a ULN2803 which has 8 outputs so I can drive both motors off the same chip. I am using an old calculator charger as the external power supply but I have used a 4xAA battery pack also.
I had problems originally simply from mixing up pins 11/12 and I got the sort of symptoms you described further up – half- running. I was also the person who got caught up in the change from broadcasting “StepperA” to just “Stepper” that Simon referred to above.
I hope this is some help in confirming that the current stable version works.
I am running on a rev2 board made in China.
I hope you get sorted out, it is very frustrating going through the problems but there is great satisfaction when it finally works!
regards
Michael
Thanks Michael. Yea, I am getting a bit disheartened here. I think Simon’s had enough, he’s been extremely helpful. At least the Python program works. I’m familiar with the ULN2803. I am very heartened though that it’s working for you with two steppers. I also have two steppers that each came with uln2003 boards and LEDs (EBay from a US supplier). I have checked the wiring “n” times where n is approaching infinity. My DC motor is working well through Scratch using the SN754410 H-bridge. With it it’s easy to also change the motor spin direction. I think next I will download the most recent Raspbian and cut a new SD card; although I did update it a fews back with apt-get update/upgrade etc so in theory all should be well. We’ll keep on truckin’
Mike S.
Right – you say your boards have LEDS?
Lets see if we can get them to light up
Try this
On GreenFlag
forever
broadcast pin11on
wait 1
broadcast pin11off
wait 1
broadcast pin12on
wait 1
broadcast pin12off
wait 1
broadcast pin13on
wait 1
broadcast pin13off
wait 1
broadcast pin14on
wait 1
broadcast pin14off
wait 1
Simon
Hi Simon,
In GPIO4:
When green flag clicked
Broadcast Stepper
Set MotorA to 100
This turns LED A on but nothing from the motor. Any ideas?
Hi – can you re-download V4 again and re-install it please as I had a bug in there thats been recently fixed 🙂
Then try again and see what happens
if it doesn’t work on 2nd time try this
On green flag
broadcast pin11on
wait 1
broadcast pin11off
wait 1
and see if the led blinks
Hi Mike
Sorry about this – having a bit of problem with my versions
I just MADE SURE this time that the normal version has the bug fix in it.
So I’ve just updated it at 12:43 – so make sure you download again after that time
regards
Simon
And yet again – I forgot to press a button 🙁
Ok now at 12:48 – definetely all I’ll eat my RPi !!!!!!
Simon
I think I need to hand in my 25m Programming Certificate 🙁
My RPi was a bit chewy but its now eaten 🙂
The version available from 13:06 onwards WILL DEFINITELY WORK or I’m packing it all in 🙂
One things I’ve learnt – don’t put different versions of code in the same folder – this WON’T happen again 🙂
Simon
Hi Simon,
Yes, the LED blinks.
Broadcast Stepper
Set MotorA to 100
now does nothing (no LED turned on) and if I re-try the pin11 blink afterwards this no longer does anything.
Mike F
Have you re-downloaded today and reinstalled again?
Did you see all the disasters I had yesterday? 🙂
Yes – reinstalled GPIO4 just now using sudo wget http://goo.gl/6VqdL8 -O isgdev.sh
Is that right? Please don’t hand any certificates back on my account!
Mike
Try the stable version please :). That’s what I made sure (5 times) yesterday that REALLY works 🙂
Right oh! Can you tell me where to find it?
Sorry -was out and about
Hi Simon,
Looking through the thread above I’m not sure where to find your latest version. Google brings up https://github.com/cymplecy/scratch_gpio is that any good?
No – you want http://cymplecy.wordpress.com/2013/04/22/scratch-gpio-version-2-introduction-for-beginners/
Simon
(Sorry – thought I’d posted that)
Simon – That’s brilliant – my motor is spinning! 🙂
I think I may have mis-interpreted your instructions above as I’ve realised the ‘broadcast stepper’ block has to be activated first under a separate ‘when …’ block from ‘set MotorA …’
Now to experiment with a second motor attached! 🙂
Many thanks Simon for your time and help!
Mike
I jsut simply do
On Green Flag
broadcast Stepper
Set MotorA to 0
Set MotorB to 0
And then use something like
When UpArrow pressed
Set MotorA to 100
Set MotorB to 100
When DownArrow press
Set MotorA to -100
Set MotorB to -100
etc
Note the Scratch “feature” – if a variable isn’t changed (even from 1 GreenFlag event to another) then its value will not be resent so therefore no change occurs to Motors etc
So I always make the GreenFlag event reset back to 0
regards
Simon
Hi! I’m a complete freshie to this and I’m trying to get two steppers to work but no luck 🙁 I was wondering where the battery supply is supposed to be connected in the diagram above if there are two ULN2003s? Because the motor diagram with the battery supply consisted of only one ULN2003
Thanks
P.S. how do you know if the RPi is damaged? Will it not turn on or something?
Hi the diagram shows the motors powered from the Pi itself but in retrospect I should have shown a battery powered setup and then moved onto the self-powered version (as you really need to power your Pi through the main USB and not the micro-USB. Anyway – to power using a battery – disconnect the red wire going from the 5V pin on the RPi to the breadboard (the far right red wire) Then you can safely connect a battery -ve wire to the same horizontal row the black wires are connected to (the top one) and connect the +ve side of your battery to the 2nd horizontal row that the red wire from the Rpi used to be connected to.
I’d recommend just getting one stepper going first
Re-damage to your RPi – so many different ways of blowing it up – sometimes it will not power again – sometimes just one of the pins won’t work properly but everything else will.
Lots of people manage to wire things up but the secret is small steps – this is part 3 of my learning sequence 🙂
Simon
regards
Simon
thank you for the new diagram si! i think i have connecting all properly now 🙂 but the only thing is i cannot get the motors to function. i have check the voltage of each wire and of the motor and the all show a voltage so i’m guessing they are broken or anything but i can’t seem to get Scratch instruction working with the steppers 🙁
any ideas where it could have potentially gone wrong?
Steppers are proving to be the bane of my life 🙂
switch off and on and then start again with this
On greenflag
broadcast AllOff
On Spacebar
forever
broadcast pin11on
broadcast pin15off
wait 0
broadcast pin12on
broadcast pin11off
wait 0
broadcast pin13on
broadcast pin12off
wait 0
broadcast pin15on
broadcast pin13off
wait 0
which manually simulates what the stepper code is doing
Simon
sorry my typos are really bad! i meant that i cannot get the stepper to work with Scratch and also that i’m sure there aren’t any broken wires since i have checked the voltage across each of them
Just try out my last reply and see what happens please
Simon
Thanks si but still no luck 🙁 This is so stressful, I don’t know where it has gone wrong :/
Well – like I said before – this is step 3 – its hard to remote work out what’s going on as we don’t know if step 1 works. (blinking an LED)
If you are up for a bit of geek stuff we could try running things manually and see if we can find out more info.
Switch off and on (Very important)
Load in normal Scratch (NOT SCRATCHGPIO)
File Open then find rsc.sb and open it.
Click on Enable Remote Sensor Connections
Minimise Scratch
Run LX Terminal and then type the following
cd scratchgpio5
sudo python scratchgpio_handler5.py
Can you take a picture of the screen and email it to me
simplecy@googlemail.com
(or copy and paste on here what you see?)
Simon
Okay I shall have a go at that but ill have to email you later as I have to go to school now 🙂
When I open rsc.sb it says file may be damaged, cannot read. ..
Can I download it from somewhere?
Aah – that’s implying somethings got a bit corrupted somewhere
Can you re-download and re-install ScratchGPIO5 and try the above again?
If you email me your address (and your in UK) I’ll lendyou a pre-made board with LEDs on that you can use to test
simplecy@googlemail.com
Simon
Thank you for all the help si! But like you said I have dived into the deep end so I shall try your tutorial for just a simple motor first after asking my school for one and see how I can get on
Thanks again sorry about all this nonsense!
I have now updated the instructions and diagram to show the steppers being powered from an external battery which is much more appropriate for beginners
How do you change coil modes?
I’ll just answer this one 🙂
Maximum speed of those little steppers is about 12rpm
to change coil modes
broadcast 2Coil (default – gives more torque)
broadcast 1Coil
broadcast HalfStep
(default value that gives maximum turning force) to 1Coil or HalfStep
found a problem with the handler. it keeps erroring out when using SID (undefined stepmode as variable I think it is because you use stepmode instead of 1stepmode).
I tried erasing the error (as it seems like it just a ‘print’ command and switching to half-step mode but doesn’t seem to do anything. wheel spins at the exact same speed.
well on arduino I got a full rotation with a wheel at 4s compared to 7s with the pi. the arduino was in half-step mode.
Hello Simon, is it possible to control stepper motors with Scratch GPIO using a adafruit stepper motor HAT?
Unfortunately not as that HAT is a bit complicated hardware wise (and I’ve not got one to develop support for it)
Sorry
Simon