Web gecontroleerde rover (13 / 14 stap)

Stap 13: De Python/kolf code

Dit bot gebruikt Python en het kolf web framework. U kunt meer informatie over kolf hier als u geïnteresseerd bent.

Het grote verschil van een kolf app en normale Python script is klasse/methode gebruikt om te doen de afhandeling van URI. Buiten dat is het vrijwel normale Python voor het grootste deel.

 #!/usr/bin/env python # # Wifi/Web driven Rover # # Written by Scott Beasley - 2015 # # Uses RPIO, pyserial and Flask # import time import serial from RPIO import PWM from flask import Flask, render_template, request app = Flask (__name__, static_url_path = '') # Connect to the comm port to talk to the Roboclaw motor controller try: # Change the baud rate here if different than 19200 roboclaw = serial.Serial ('/dev/ttyAMA0', 19200) except IOError: print ("Comm port not found") sys.exit (0) # Speed and drive control variables last_direction = -1 speed_offset = 84 turn_tm_offset = 0.166 run_time = 0.750 # Servo neutral position (home) servo_pos = 1250 servo = PWM.Servo ( ) servo.set_servo (18, servo_pos) # A little dwell for settling down time time.sleep (3) # # URI handlers - all the bot page actions are done here # # Send out the bots control page (home page) ("/") def index ( ): return render_template ('index.html', name = None) ("/forward") def forward ( ): global last_direction, run_time print "Forward" go_forward ( ) last_direction = 0 # sleep 100ms + run_time time.sleep (0.100 + run_time) # If not continuous, then halt after delay if run_time > 0: last_direction = -1 halt ( ) return "ok" ("/backward") def backward ( ): global last_direction, run_time print "Backward" go_backward ( ) last_direction = 1 # sleep 100ms + run_time time.sleep (0.100 + run_time) # If not continuous, then halt after delay if run_time > 0: last_direction = -1 halt ( ) return "ok" ("/left") def left ( ): global last_direction, turn_tm_offset print "Left" go_left ( ) last_direction = -1 # sleep second time.sleep (0.500 - turn_tm_offset) # stop halt ( ) time.sleep (0.100) return "ok" ("/right") def right ( ): global last_direction, turn_tm_offset print "Right" go_right ( ) # sleep second time.sleep (0.500 - turn_tm_offset) last_direction = -1 # stop halt ( ) time.sleep (0.100) return "ok" ("/ltforward") def ltforward ( ): global last_direction, turn_tm_offset print "Left forward turn" go_left ( ) # sleep second time.sleep (0.250 - (turn_tm_offset / 2)) last_direction = -1 # stop halt ( ) time.sleep (0.100) return "ok" ("/rtforward") def rtforward ( ): global last_direction, turn_tm_offset print "Right forward turn" go_right ( ) # sleep second time.sleep (0.250 - (turn_tm_offset / 2)) last_direction = -1 # stop halt ( ) time.sleep (0.100) return "ok" ("/stop") def stop ( ): global last_direction print "Stop" halt ( ) last_direction = -1 # sleep 100ms time.sleep (0.100) return "ok" ("/panlt") def panlf ( ): global servo_pos print "Panlt" servo_pos -= 100 if servo_pos < 500: servo_pos = 500 servo.set_servo (18, servo_pos) # sleep 150ms time.sleep (0.150) return "ok" ("/panrt") def panrt ( ): global servo_pos print "Panrt" servo_pos += 100 if servo_pos > 2500: servo_pos = 2500 servo.set_servo (18, servo_pos) # sleep 150ms time.sleep (0.150) return "ok" ("/home") def home ( ): global servo_pos print "Home" servo_pos = 1250 servo.set_servo (18, servo_pos) # sleep 150ms time.sleep (0.150) return "ok" ("/panfull_lt") def panfull_lt ( ): global servo_pos print "Pan full left" servo_pos = 500 servo.set_servo (18, servo_pos) # sleep 150ms time.sleep (0.150) return "ok" ("/panfull_rt") def panfull_rt ( ): global servo_pos print "Pan full right" servo_pos = 2500 servo.set_servo (18, servo_pos) # sleep 150ms time.sleep (0.150) return "ok" ("/speed_low") def speed_low ( ): global speed_offset, last_direction, turn_tm_offset speed_offset = 42 turn_tm_offset = 0.001 # Update current direction to get new speed if last_direction == 0: go_forward ( ) if last_direction == 1: go_backward ( ) # sleep 150ms time.sleep (0.150) return "ok" ("/speed_mid") def speed_mid ( ): global speed_offset, last_direction, turn_tm_offset speed_offset = 84 turn_tm_offset = 0.166 # Update current direction to get new speed if last_direction == 0: go_forward ( ) if last_direction == 1: go_backward ( ) # sleep 150ms time.sleep (0.150) return "ok" ("/speed_hi") def speed_hi ( ): global speed_offset, last_direction, turn_tm_offset speed_offset = 126 turn_tm_offset = 0.332 # Update current direction to get new speed if last_direction == 0: go_forward ( ) if last_direction == 1: go_backward ( ) # sleep 150ms time.sleep (0.150) return "ok" ("/continuous") def continuous ( ): global run_time print "Continuous run" run_time = 0 # sleep 100ms time.sleep (0.100) return "ok" ("/mid_run") def mid_run ( ): global run_time print "Mid run" run_time = 0.750 halt ( ) # sleep 100ms time.sleep (0.100) return "ok" ("/short_time") def short_time ( ): global run_time print "Short run" run_time = 0.300 halt ( ) # sleep 100ms time.sleep (0.100) return "ok" # # Motor drive functions # def go_forward ( ): global speed_offset if speed_offset != 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) else: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_backward ( ): global speed_offset if speed_offset != 42: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (255 - speed_offset)) else: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) def go_left ( ): global speed_offset if speed_offset != 42: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (128 + speed_offset)) else: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_right ( ): global speed_offset if speed_offset != 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) else: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (128 + speed_offset)) def halt ( ): roboclaw.write (chr (0)) if __name__ == "__main__" : app.run (host = '0.0.0.0', port = 80, debug = True) 

Als u niet willen of nodig debug informatie uit kolf, stelt u foutopsporing op 'false' op de app.run-regel.

Als __name__ == "__main__":

app.run (host = '0.0.0.0', poort 80, = debug = False)

U kunt ook het wijzigen van de poort waarop de kolf http server hier ook luistert.

Gerelateerde Artikelen

Reuze Web gereguleerde Rover - afkomstig van BayLab voor de Instructables sponsoring programma

Reuze Web gereguleerde Rover - afkomstig van BayLab voor de Instructables sponsoring programma

dit Instructable zal u tonen hoe te een PowerWheels auto zetten in een web gecontroleerde rover. Ik zal u laten zien hoe zelfs de oudste, junkiest PowerWheels auto zet in een snelle telepresence auto.Stap 1: Prepping de auto PowerWheels auto's zijn n
Web gecontroleerde vakantie huis verlichting

Web gecontroleerde vakantie huis verlichting

Dit is een uitbreiding van een eerdere Instructable op permanente vakantie LED-verlichting voor huis.Nu dat alle de LEDs zijn bekabeld, krijgt de uitdaging die er elke vakantie wijzigen het patroon. U kon toevoegen sommige drukknoppen om te kiezen tu
LinkitONE Web gecontroleerde LED

LinkitONE Web gecontroleerde LED

Ooit wilde om je eigen web gecontroleerde LED? Heb je een LinkitONE bord? Wilt u meer doen dan dat? dan is deze tutorial is geschikt voor u!Hier ik zal u stap voor stap tonen hoe maak je een web gecontroleerde geleid met behulp van de LinkitONE Raad
Web gecontroleerde Wifi LED Tower

Web gecontroleerde Wifi LED Tower

Dit project is dat een web gecontroleerde LED toren die een Arduino en het schild van de Wifi verbinding met een webserver maakt om opdrachten afkomstig van gebruikers. Het doel was het project mobiel maakt, zodat het kan worden genomen naar shows en
Web gecontroleerde socket door Arduino

Web gecontroleerde socket door Arduino

Ik maakte een Web gecontroleerde socket door Taiwan gekloond Arduino, die gebaseerd is door Arduino Pro Mini en ESP8266-1, de officiële site van deze kloon is: Webduino Web x Arduino =We kunnen het programma door de eenvoudige HTML, CSS en JavaScript
Nog een ander Exploration Rover web-gecontroleerde (met Raspberry Pi en Arduino. Android, Iphone, PC, MAC compatible)

Nog een ander Exploration Rover web-gecontroleerde (met Raspberry Pi en Arduino. Android, Iphone, PC, MAC compatible)

Hier is een andere exploration rover, gebouwd in 1 uur of minder, zonder dat hoeft te programmeren. Everthing die u nodig is in het vak! Het geeft je basis te bouwen en verbeteren van uw eigen rover.RaspberryPi met wifi USB-adapter, USB-webcam, de we
Web gecontroleerde EggBot

Web gecontroleerde EggBot

Controle van de oorspronkelijke EggBot via Web Browser!De EggBot wordt meestal gecontroleerd door Inkscape op de hostcomputer uitgevoerd. Als u wilt tekenen een afbeelding op een ei, stuurt Inkscape een heleboel opdrachten via USB. Want de EggBot vol
Stem gecontroleerde Rover Robot

Stem gecontroleerde Rover Robot

Dit instructable is over het geen seriële gecontroleerde robot besturen met uw stem! Ik zal u tonen de schets van de Arduino gebruikt voor de rover robot en de Microsoft Visual Studio C# windows forms-toepassing. Dit is een zeer eenvoudige taak en ik
Een telefoon gecontroleerd rover (Intel Edison + Blynk + Arduino)

Een telefoon gecontroleerd rover (Intel Edison + Blynk + Arduino)

achtergrondverhaal: (als u te lui om Lees overslaan)Het was mei (jaar 2015). Een student in zijn vorm 4 (10e klas?) kwam net thuis van school en hij aangedreven op zijn computer, als een dagelijkse routine, om te controleren op berichten op de social
Intel IoT Edison web gecontroleerde LED

Intel IoT Edison web gecontroleerde LED

Dit instructable laat zien hoe de Arduino IDE combineren met node.js, standaard beschikbaar in Edisons Yocto linux, om elementen van de Arduino op afstand, via een webinterface te bedienen. Simpel gezegd, kunt u druk op een knop vanuit elke browser o
Web gecontroleerde Arduino LED

Web gecontroleerde Arduino LED

Dit instructable toont u hoe te bouwen een Web-enabled tri-color LED gebaseerd op een Arduino en de WIZnet Ethernet-shield, beheersbare vanuit elke webbrowser .Omdat de LED wordt blootgesteld kunnen door middel van een eenvoudige RESTful web-service
Eenvoudige telefoon gecontroleerd Rover

Eenvoudige telefoon gecontroleerd Rover

De MotorAir is een van de gemakkelijkste manieren die ik gezien heb tot het besturen van een robot vanaf uw telefoon.Ik zal lopen via het instellen van een up, maar eerst laten we kijkt naar de Specs ook zoals sommige voor- en nadelen.Specificaties:m
Web Gecontroleerde Surveillance Camera

Web Gecontroleerde Surveillance Camera

het doel van dit werk is om te laten zien, hoe te bouwen systeem voor markttoezicht met de interface van de web-pagina. De webcam kan worden omgezet in de verticale of horizontale richting door de interface, maar alleen in het gebied die grens sensor
Web gecontroleerde multifunctionele RoboT

Web gecontroleerde multifunctionele RoboT

Het maken van een web control multi functionele robot gebouwd met minimale hardware en elementaire programmering bouwen met populaire open source platform dwz raspberry pi. Afgezien van fundamentele motorische controle, deze tutorial is gericht op he