OLs1hKYN0cPDnUg8JZlxRpR9tShmB2pFT
Published

Learning and Building a Raspberry Pie Robot

Zumo robot as a learning platform.

BeginnerWork in progress1,632
Learning and Building a Raspberry Pie Robot

Things used in this project

Hardware components

Raspberry Pi Zero W
£8.00
×1
Pibow Zero W
£4.17
×1
Jumper Jerky Junior - Male to Male
£2.08
×1
GPIO Hammer Header (Solderless) - Female
£2.50
×1
2x Micro Metal Gearmotor (Extended back shaft) - 50:1
£4.17*2=£8.34
×2
2x Micro Metal Gearmotor (Extended back shaft) - 298:1
£4.17*2=£8.34
×2
USB Hub
Free
×1
Mini HDMI to HDMI/DVI
Free
×1
A broken RC car with some parts...
Free
×1
Dual L298N H Bridge Stepper Motor Driver Controller Board
£3.95
×1
SanDisk 16GB Ultra Memory Card Micro SD SDHC UHS-1 CLASS 10 80MB/s + SD Adapter
£7.94
×1
Dual L298N H Bridge Stepper Motor Driver Controller Board Arduino, Pi, ESP - UK
£3.95
×1
USB A 2.0 Female to Micro USB B Male OTG Adapter Data Cable Mobile hard drive
£0.99
×1
AmazonBasics High-Speed HDMI 2.0 Cable - 0.9m / 3 Feet (Latest Standard) Supports Ethernet, 3D, Audio Return
£3.99
×1
Silverline AS16 Solder, 20 g
£1.85
×1
10PCS SPDT On/On 2 Position Miniature Toggle Switch AC 125V/3A
£1.74
×1
Aukru 40x 20cm Male-Female Jumper Wire Cable Dupont Cord for Arduino Raspberry pi
£3.99
×1
Zumo Chassis Kit (No Motors)
£20.29
×1
PCA9685 16 Channel 12-bit PWM Servo motor Driver I2C Module For Servo Arduino UK
£2.95
×1
Meccano construction kit Job Lot
£25.95
×1
Camera Module for Raspberry Pi Zero - Without infra-red filter
£11.67
×1
Speaker pHAT
£10.00
×1

Hand tools and fabrication machines

Soldering iron (generic)
Soldering iron (generic)
£5.21

Story

Read more

Custom parts and enclosures

html directory

cgibin, images, html files, sounds.

Schematics

Connections Diagram

Code

index.html

HTML
Main website to control the robot, see video and play sounds. Rest of the files in html.zip
<html>
<head>
<script src="script_min.js"></script>
</head>

<style>
body {background-color: lightyellow}
h1 {color:blue}

button {
	color: blue;
	background:lightgrey;
	border: 1px solid #000;
	border-radius: 8px;
	position: center;
}

</style>

<body onload="setTimeout('init();', 100);">

<div style="text-align:center">

  <style type="text/css">
.tg  {border-collapse:collapse;border-spacing:0;margin:0px auto;}
.tg td{font-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.tg th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;}
.tg .tg-yw4l{vertical-align:top}
</style>
  
<table class="tg">
  <tr>
    <th class="tg-yw4l">    <center>
      <div><img id="mjpeg_dest" /></div>
    </center>
    </th>
    <th class="tg-yw4l"><button style="height: 75px; width: 75px" onclick="forward()"><img style="height: 65px"src="/images/forward.png"></button>
	<br><br><br><br>
	<img hspace="10" style="padding-left: 5px">
	<button style="height: 75px; width: 75px" onclick="left()"><img style="height: 65px"src="/images/left.png"></button>
	<img hspace="20" style="padding-left: 10px">
	<button style="height: 75px; width: 75px" onclick="stop()"><img style="height: 63px"src="/images/stop.png"></button>
	<img hspace="20" style="padding-left: 10px">
	<button style="height: 75px; width: 75px" onclick="right()"><img style="height: 65px"src="/images/right.png"></button>
	<img hspace="10" style="padding-left: 5px">
	<br><br><br><br>
	<button style="height: 75px; width: 75px" onclick="reverse()"><img style="height: 65px"src="/images/reverse.png"></button><br><br>
</th>
    <th class="tg-yw4l">
<button onclick="espeak_purpose()">What is my purpose?</button><br>
<button onclick="espeak_compute()">That does not compute.</button><br>
<button onclick="espeak_captain()">Captain, I have...</button><br>
<button onclick="espeak_fuel()">Where's my fuel?</button><br>
<button onclick="espeak_threelaws()">Three Laws of Robotics.</button><br>
<button onclick="espeak_exterminate()">EXTERMINATE!</button><br>
<button onclick="espeak_makeitso()">Make it so.</button><br>
<button onclick="espeak_statementverified()">Statement verified.</button><br>
<button onclick="espeak_opportunity()">Did I hear Exciting Opportunity?</button><br>
<button onclick="espeak_cofee()">Time for coffee.</button><br>
<button onclick="espeak_tea()">Time for tea.</button><br>
<button onclick="espeak_father()">Im Your Father.</button><br>
</th>
<th class="tg-yw41">
<button onclick="led_kitt()">K.I.T.T</button><br>
<button onclick="mpg321_failure()">Failure</button><br>
<button onclick="mpg321_sonar()">Sonar</button><br>
<button onclick="mpg321_train()">Train Whistle</button><br>
<button onclick="mpg321_xfiles()">XFiles</button><br>
<button onclick="mpg321_muppets()">Muppets</button><br>
<button onclick="mpg321_nuclear()">Nuke</button><br>
<button onclick="mpg321_starwars()">Star Wars</button><br>
</th>

  </tr>
</table>


<script>

var xmlhttp;
xmlhttp=new XMLHttpRequest();

function forward()
{
	xmlhttp.open("GET","cgi-bin/forward.cgi",true);
	xmlhttp.send();
}
function stop()
{
	xmlhttp.open("GET","cgi-bin/stop.cgi",true);
	xmlhttp.send();
}
function left()
{
	xmlhttp.open("GET","cgi-bin/left.cgi",true);
	xmlhttp.send();
}
function right()
{
	xmlhttp.open("GET","cgi-bin/right.cgi",true);
	xmlhttp.send();
}
function reverse()
{
	xmlhttp.open("GET","cgi-bin/reverse.cgi",true);
	xmlhttp.send();
}

function lowspeed()
{
	xmlhttp.open("GET","cgi-bin/lowspeed.cgi",true);
	xmlhttp.send();
}
function regularspeed()
{
	xmlhttp.open("GET","cgi-bin/regularspeed.cgi",true);
	xmlhttp.send();
}
function highspeed()
{
	xmlhttp.open("GET","cgi-bin/highspeed.cgi",true);
	xmlhttp.send();
}
function nospeed()
{
	xmlhttp.open("GET","cgi-bin/nospeed.cgi",true);
	xmlhttp.send();
}





function espeak_purpose()
{
        xmlhttp.open("GET","cgi-bin/espeak_purpose.cgi",true);
        xmlhttp.send();
}
function espeak_compute()
{
        xmlhttp.open("GET","cgi-bin/espeak_compute.cgi",true);
        xmlhttp.send();
}
function espeak_captain()
{
        xmlhttp.open("GET","cgi-bin/espeak_captain.cgi",true);
        xmlhttp.send();
}
function espeak_fuel()
{
        xmlhttp.open("GET","cgi-bin/espeak_fuel.cgi",true);
        xmlhttp.send();
}
function espeak_threelaws()
{
        xmlhttp.open("GET","cgi-bin/espeak_threelaws.cgi",true);
        xmlhttp.send();
}
function espeak_exterminate()
{
        xmlhttp.open("GET","cgi-bin/espeak_exterminate.cgi",true);
        xmlhttp.send();
}
function espeak_makeitso()
{
        xmlhttp.open("GET","cgi-bin/espeak_makeitso.cgi",true);
        xmlhttp.send();
}
function espeak_statementverified()
{
        xmlhttp.open("GET","cgi-bin/espeak_statementverified.cgi",true);
        xmlhttp.send();
}
function espeak_opportunity()
{
        xmlhttp.open("GET","cgi-bin/espeak_opportunity.cgi",true);
        xmlhttp.send();
}
function espeak_cofee()
{
        xmlhttp.open("GET","cgi-bin/espeak_cofee.cgi",true);
        xmlhttp.send();
}
function espeak_tea()
{
        xmlhttp.open("GET","cgi-bin/espeak_tea.cgi",true);
        xmlhttp.send();
}           


function espeak_father()
{
        xmlhttp.open("GET","cgi-bin/espeak_father.cgi",true);
        xmlhttp.send();
}



function led_kitt()
{
        xmlhttp.open("GET","cgi-bin/led_kitt.cgi",true);
        xmlhttp.send();
}


function mpg321_failure()
{
        xmlhttp.open("GET","cgi-bin/mpg321_failuretrumpet.cgi",true);
        xmlhttp.send();
}


function mpg321_sonar()
{
        xmlhttp.open("GET","cgi-bin/mpg321_sonar.cgi",true);
        xmlhttp.send();
}

function mpg321_train()
{
        xmlhttp.open("GET","cgi-bin/mpg321_trainwhistle.cgi",true);
        xmlhttp.send();
}

function mpg321_xfiles()
{
        xmlhttp.open("GET","cgi-bin/mpg321_xfiles.cgi",true);
        xmlhttp.send();
}


function mpg321_father()
{
        xmlhttp.open("GET","cgi-bin/mpg321_mappets.cgi",true);
        xmlhttp.send();
}

function mpg321_nuclear()
{
        xmlhttp.open("GET","cgi-bin/mpg321_nuclear.cgi",true);
        xmlhttp.send();
}

function mpg321_starwars()
{
        xmlhttp.open("GET","cgi-bin/mpg321_starwars.cgi",true);
        xmlhttp.send();
}

</script>

</body>
</html>

Credits

OLs1hKYN0cPDnUg8JZlxRpR9tShmB2pFT
2 projects • 3 followers

Comments