-- Leo's gemini proxy

-- Connecting to republic.circumlunar.space:1965...

-- Connected

-- Sending request

-- Meta line: 20 text/gemini

Raspberry Pi Jam "Chaos Car!"


Raspberry Pi 1

+ battery pack

+ Bluetooth USB dongle

+ i-racer bluetooth car

+ Raspberry Pi camera

+ some Python code

+ loads of sellotape

=


[‡ 20170121 154747]


[‡ 20170121 154747]


Chaos car!


Here's the code:


#!/usr/bin/env python2

import os
import random
import bluetooth
import sys
import time

car_name = "DaguCar"

def find_car_mac( car_name ):
   ret = None

   print "Scanning for a device called %s..." % car_name

   devices = bluetooth.discover_devices()

   for addr in devices:
       dev_name = bluetooth.lookup_name( addr )
       if dev_name == car_name:
           print "Car found!  (MAC=%s)" % addr
           time.sleep( 1 )
           return addr
       else:
           print "Skipping device named '%s'." % dev_name

   sys.stderr.write( "Couldn't find a device called %s!\n" % car_name )
   sys.exit( 1 )

#car_mac = find_car_mac( car_name )

print "Using hard-coded MAC address"
car_mac = "20:13:04:23:05:71"

print "Connecting to the car at %s..." % car_mac

sock = bluetooth.BluetoothSocket( bluetooth.RFCOMM )
sock.connect( ( car_mac, 1 ) )

class Car:
   def turn_right(self):
       print("looking right")
       sock.send( '\x6A' )
   def turn_left(self):
       print("looking left")
       sock.send( '\x5A' )
   def roll_forward(self):
       print("watch out in front coming forward")
       sock.send( '\x1A' )
   def roll_backward(self):
       print("beep beep going backward")
       sock.send( '\x2A' )
   def wait(self):
       print("waiting")
       sock.send( '\x00' )

car = Car()

instruction = ["turn right", "turn left", "roll forward", "roll backward", "wait"]

while True:
   ci = random.choice(instruction)
   if ci == "turn right":
       car.turn_right()
   elif ci == "turn left":
       car.turn_left()
   elif ci == "roll forward":
       car.roll_forward()
   elif ci == "roll backward":
       car.roll_backward()
   elif ci == "wait":
       car.wait()
   time.sleep(0.5)


Improving the code to avoid bumping into walls is left as an exercise for the reader.


Originally posted at 2017-01-22 13:01:33+00:00. Automatically generated from the original post : apologies for the errors introduced.


original post

-- Response ended

-- Page fetched on Sun May 19 03:47:14 2024