raspberry pi 遙控車
TRANSCRIPT
Meeting
Raspberry Pi 4020D034 4020D037 4020D063 4020D068
1
OutlineL298N GPIO
2
WEB_for_Pi_Car Web_Get_Control_Car Python
PythonPiGETGETup() = 1astern() = 2left () = 3right() = 4stop() = OtherPiGPIOGPIOPi3Wi-FiAP
L298N IN GPIOOUT IC
ENA( ENB )IN1( IN3 )IN2( IN4 )OUT1( OUT3 )OUT2( OUT4 )0XXXX1001010111010111
GPIOIN1 A1 = 36IN2 B1 = 32IN3 A2 = 38IN4 B2 = 40IN1 A3 = 31IN2 B3 = 33IN3 A4 = 37IN4 B4 = 35
6
Import WEB Server GPIO
PORT WEB Server
GPIO
GPIO
get Float
get
9
index.html
get
init
WEB Server
10
index.html get
12
Thank you for listening!
import SimpleHTTPServerimport SocketServerimport RPi.GPIO as GPIO
PORT = 80
# Right frontA1 = 36B1 = 32
# Left frontA2 = 38B2 = 40
# Right rearA3 = 31B3 = 33
# Left rearA4 = 37B4 = 35
# Init SetGPIO.setmode(GPIO.BOARD)GPIO.setwarnings(False)
GPIO.setup(A1, GPIO.OUT)GPIO.setup(B1, GPIO.OUT)
GPIO.setup(A2, GPIO.OUT)GPIO.setup(B2, GPIO.OUT)
GPIO.setup(A3, GPIO.OUT)GPIO.setup(B3, GPIO.OUT)
GPIO.setup(A4, GPIO.OUT)GPIO.setup(B4, GPIO.OUT)
def stop(): GPIO.output(A1, False) GPIO.output(B1, False)
GPIO.output(A2, False) GPIO.output(B2, False)
GPIO.output(A3, False) GPIO.output(B3, False)
GPIO.output(A4, False) GPIO.output(B4, False)
def up(): GPIO.output(A1, True) GPIO.output(B1, False)
GPIO.output(A2, True) GPIO.output(B2, False)
GPIO.output(A3, True) GPIO.output(B3, False)
GPIO.output(A4, True) GPIO.output(B4, False)
def astern(): GPIO.output(A1, False) GPIO.output(B1, True)
GPIO.output(A2, False) GPIO.output(B2, True)
GPIO.output(A3, False) GPIO.output(B3, True)
GPIO.output(A4, False) GPIO.output(B4, True)
def right(): GPIO.output(A1, False) GPIO.output(B1, False)
GPIO.output(A2, True) GPIO.output(B2, False)
GPIO.output(A3, False) GPIO.output(B3, False)
GPIO.output(A4, True) GPIO.output(B4, False)
def left(): GPIO.output(A1, True) GPIO.output(B1, False)
GPIO.output(A2, False) GPIO.output(B2, False)
GPIO.output(A3, True) GPIO.output(B3, False)
GPIO.output(A4, False) GPIO.output(B4, False)
def isfloat(value): try: float(value) return True except ValueError: return False
def RPi_Control(Object, Value): if Object == "CAR" and isfloat(Value): Value = float(Value) if Value == 1: up() return True if Value == 2: astern() return True if Value == 3: left() return True if Value == 4: right() return True stop() return False
class Handler(SimpleHTTPServer. SimpleHTTPRequestHandler): def do_GET(self):
# Open index.html file = open("/home/pi/car/index.html", "r") self.wfile.write(file.read()) file.close()
#self.path value have "?" ex. /?n=10 if "?" in self.path and "&" not in self.path:
#self.path split "?" -> / and n=10 reserved n=10 query_str = self.path.split("?", 1)[1]
#query_str split "=" -> n and 10 #Ctrl_Obj = n Ctrl_Value = 10 Ctrl_Obj, Ctrl_Value = query_str.split("=", 1)
RPi_Control(Ctrl_Obj, Ctrl_Value)
stop()
httpd = SocketServer.TCPServer(("", PORT), Handler)
sa = httpd.socket.getsockname()print "Serving HTTP on", sa[0], "port", sa[1], "..."httpd.serve_forever()
Control Panel
Straight
Astern
Left
Right
OStop