Styra elmotorer med Raspberry Pi och RaspiRobotBoard V2

OBS! Motorerna vi använder i denna guide ska drivas med högst 6V, och batteripacket skickar ut 6*1,5V = 9V. Det bör gå bra eftersom koden kör motorerna på halvfart, men mycket högre än så ska man nog inte gå.DSC_0167

 

En av många tillämpningar för Raspberry Pi är att driva robotar. Man kan, med hjälp av sensorer, göra autonoma (självgående) sådana. Det ska vi dock inte titta på i detta inlägg, utan bara introducera ett smidigt expansionskort för att styra upp till två elmotorer med en Pi.

Expansionskortet i fråga heter ”RaspiRobot Board V2”, och är baserat på en motorkontroller av modell L293. Man sätter det direkt på GPIO-porten (fungerar på alla Rasberry Pi:s), och därmed blir det väldigt lite kabeldragning eftersom de enda kablar som behövs går till batteriet och de två motorerna.

En annan fördel med detta kort är att det finns ett färdigt kodbibliotek att använda, vilket förenklar programmerandet av roboten avsevärt.

Vi använder en av våra robotplattformar med två motordrivna hjul tillsammans med en RaspiRobot V2, ett batteripack för 6xAA-batterier och en Raspberry Pi Model B+. Länkar till alla delar:

https://www.m.nu/robotplattform-2wd-ink-hjul-och-motorer-p-1129.html
https://www.m.nu/raspirobot-board-v2-p-1477.html
https://www.m.nu/6-x-aa-battery-holder-with-55mm21mm-plug-p-962.html
https://www.m.nu/b-paketkonfigurator-raspberry-pi-mod-b-p-1516.html

Att ansluta det hela är, som tidigare nämnt, 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.

DSC_0165

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/ . Längst ner finns koden som nedladdning!

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, så att vi kan köra vår robot utan skärm och tangentbord anslutna. 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:

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:

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 (observera att våra motorer drar lite ojämnt, det kan man justera med de avancerade kommandona)!

Här är även källkoden i nedladdningsbart format:

Raspi Robot Board - Raspberry Pi code (382 nedladdningar)

Kommentera