Okej! Då var det dokumentationsdags.
Vi använder alltså robotplattformen med två motordrivna hjul tillsammans med en Raspi Robot v2 motorkontroller (L293-baserad), ett batteripack för 6xAA-batterier och en Raspberry Pi Model B+. Länkar till alla delar:
https://www.m.nu/robotplattform-2wd-ink ... -1129.html
https://www.m.nu/raspirobot-board-v2-p-1477.html
https://www.m.nu/6-x-aa-battery-holder- ... p-962.html
https://www.m.nu/b-paketkonfigurator-ra ... -1516.html
Att ansluta det hela är väldigt simpelt. Det går att provköra motorerna på Raspberry Pi:ns strömförsörjning innan man ansluter batteripacket. Då sätter man helt enkelt RaspiRobotBoard v2 på GPIO-porten (använder man B+ får man se till att den sitter på rätt ställe), och därefter ansluter man motorerna till
"L" och
"R" på utgångarna.
Därefter är det färdigt att provköra! Här följer ett stycke kod som först släcker de två LED-lamporna på RRB2, och sen tänder en av dem. På detta sätt ser man när RPi:n bootat upp och startat skriptet när endast en av lamporna lyser.
I övrigt är koden rätt välkommenterad. Jag döpte denna fil till
"Rasrob2.py" och placerade den i mappen
/home/pi/python/ .
Kod: Markera allt
# This is a collection of sample code for the
# Raspi Robot v2:
# https://www.m.nu/raspirobot-board-v2-p-1477.html
#
# It uses the "raspirobotboard2" Python library from:
# https://github.com/simonmonk/raspirobotboard2
#
# By: Jonas Lundblad @ www.m.nu
# Import the RaspiRobot library and init variable "rr"
# as the controller
from rrb2 import *
from time import sleep
rr = RRB2()
# The RRB2 has two LED lights that can be controlled:
rr.set_led1(0)
rr.set_led2(1)
time.sleep(3)
# To control the motor(s), there are two different interfaces.
# Here is the simple interface:
# Set the same speed to both motors (half speed), direction forward
# (until user overrides the command)
rr.forward()
rr.set_led1(1)
# Sleep command to delay for 1 second
time.sleep(1)
#Stop the motor
rr.stop()
rr.set_led1(0)
time.sleep(1)
# It is also possible to define amount of time (in seconds):
#rr.forward(1)
# And finally, setting the motor speed (1 is full speed):
#rr.forward(1, 0.1)
# The second interface is more advanced and looks like this:
# rr.set_motors(left_speed, left_direction, right_speed, right_direction)
# Setting half speed and different directions wold be:
rr.set_motors(0.5, 1, 0.5, 0)
time.sleep(2)
rr.set_motors(0, 0, 0, 0)
time.sleep(1)
# Reverse rotation
rr.set_motors(0.5, 0, 0.5, 1)
time.sleep(2)
rr.stop()
# Additionally, it is possible to connect a "HC-SR04"
# Ultrasonic distance sensor to the connector labeled "SONAR"
# https://www.m.nu/hcsr04-ultrasonic-sensor-p-1072.html
# To get the distance from such a device, simply type:
#rr.get_distance()
Men vad är väl ett skript som man måste logga in och starta manuellt? Vi vill ju såklart att det startar automatiskt när Pi:n gör det. Vi börjar med att skapa ett "shellscript", vilket är en körbar fil. Jag döpte min fil till
"pylaunch.sh" och placerade den i samma mapp som python-skriptet:
Kod: Markera allt
#!/bin/sh
# pylaunch.sh
# execute a script on startup
cd /
cd home/pi/python
sudo python Rasrob2.py
cd /
Om man nu kör detta script kommer det exekvera Python-koden.
Vi vill även logga felmeddelanden med mera som kan tänkas skrivas ut av skriptet. För att lagra dessa på ett smidigt ställe skriver vi:
Och skapar då en mapp i vilken vi kan placera loggar.
För att sedan få det att autostarta använder vi "cron", som kan användas för att schemalägga olika aktiviteter.
För att öppna konfigurationen för cron skriver man
Och då öppnas en fil i nano (den textbaserade texteditorn). Ta dig längst ner med piltangenterna och lägg till följande rad:
Kod: Markera allt
@reboot sh /home/pi/python/pylaunch.sh >/home/pi/python/logs/cronlog 2>&1
Denna kod kör skriptet vid uppstart och loggar eventuella utskrifter till en cronlog-fil i mappen vi skapade tidigare.
Mycket svårare än så är det inte, och här är en liten video på slutresultatet!
https://www.youtube.com/watch?v=PofHrANuHpM
//Jonas, m.nu