Introduksjon
PgBox robot er en robot bygget på to koblings-bokser og Raspberry Pi som hoved computer. Kapitlene her vil beskrive så godt som i detalj hvordan roboten blir bygget og programmert. Det vil også beskrevet hvor delene er skaffet.
PgBoxRobot skal bli en robot basert på Raspberry Pi B Revisjon 2. Raspberry Pi B er et lite elektronikk-kort datamaskin som er bygget på en 700 Mhz single core prosessor. Jeg går ut ifra at den skal holde til PgBoxRobot prosjektet, vi får se om det blir installert kamera og OpenCV etterhvert.
Raspbian
Der er mange forskjellige Linux distribusjoner for Raspberry Pi, PgBox Robot bruker Raspbian, som er en Debian variant.
For å installere Raspbian kan man gjøre følgende:
- Last ned Raspbian Debian Wheezy version:
- https://www.raspberrypi.org/downloads/
- Følgende versjon er valgt: 2015-05-05-raspbian-wheezy.zip
- Formater et SD kort til ext4 gjerne med Gparted
- Pass på at du vet hva du gjør så du formaterer riktig disk.
- Pakk ut fila 2015-05-05-raspbian-wheezy.zip
- Åpne terminal i den mappa du har pakket ut 2015-05-05-raspbian-wheezy.zip
- Skriv følgende kommando for å skrive Raspbian imaget til SD kortet, i dette tilfellet ligger SD kortet på /dev/sde
- sudo umount /dev/sde
- sudo dcfldd bs=4M if=2015-05-05-raspbian-wheezy.img of=/dev/sde
- Pass på å skrive til riktig disk slik som her sde, skriver du til sda for eksempel er dette gjerne operativ system disken og du ødelegger operativsystemet ditt.
- Kjør: sudo sync
- sync forsikrer å flushe minnet slik at det er sikkert å ta ut minnekortet.
Etter installasjonen settes minnekortet inn i Raspbarry Pi enheten.
Bruk SSH for å logge på din Raspberry Pi etter å ha satt inn minnekortet og bootet opp.
- ssh pi@192.168.1.73
- passord raspberry
- Dette er IP adressen din Raspberry har fått på ditt nettverk.
- Konfigurer Raspberry
- sudo raspi-config
- oppdater din raspberry:
- sudo apt-get update
- sudo apt-get ugrade
Nå skal Raspberry Pi-en være klar til bruk. Og vi kan begynne å programmere og koble til enheter som skal inn i roboten, som da motordrivere, sensorer osv..
PROGRAMMERINGSSPRÅK
Det er flere måter/programmeringsspråk man kan bruke for å programmere en robot på Raspberry Pi.
I første omgang vil det bli benyttet Python, noe som vil legge en del sandtids begrensninger på roboten. Men i de aller fleste tilfeller vil styreprogrammet respondere fort nok for å få utført robotens oppgaver uten problemer. Om man har programmert litt i Python, er det raskt å utvikle programmer for en slik robot, da mye ligger tilgjengelig i biblioteker. Det er også laget en god del biblioteker for Raspberry Pi, men om det man ønsker å bruker ikke finnes i disse bibliotekene man skal bruke kan kanskje C kode være lettere om man skal lage drivere.
Man kan også programmere i C, C++ og ellers alt som Linux har å by på.
CoDeSys er også et PLS programeringsverktøy man kan benytte på Pi.Dette gjør din Pi til en PLS. CoDeSys for Raspberry Pi koster 50 Euro fra store.codesys.com.
MOTOR ENHET HARDWARE
Motorer, hjul og styringselektronikk for fremdriftsmodulen er alt kjøpt på e-bay, og montert i en koblingsboks fra Biltema.
Roboten har to hjul et på hver side og et kulehjul bak.
For å styre motorene er det benyttet to kanaler fra en RC servo kontroller, som kontrolleres ved hjelp av UART serieport RS232. Denne gir ut PWM signal tilsvarende for kontroll av RC servoer.
Der er en motordriver for hver motor, dette er RC motor drivere for bøstemotorer. Det er viktig at dette er drivere uten bremse ellers vil det være vanskelig å kontrollere roboten når retningen skal snus. Disse motordriverene blir styrt fra RC servo kontroller kortet.
Der er to hjul, dette for at roboten skal kunne snu rundt sin egen akse. Dette er det mest vanlige for denne typen roboter som benytter odemetristyring. Kulehjulet hjelper da til for at roboten skal kunne snu om egen akse.
360deg lineære potmeter er montert som encodere.
- Motor og hjul: 2 sets Smart Car Robot Plastic Tire Wheel Tyre + DC3-6V Gear Motor For Robot
- http://www.ebay.com/itm/160934072552
- Kulehjul: Roller Ball Bearing Metal Caster Flexible for Smart Car robot
- Servodriver kort: 16 Channels Servo Motor USB UART Controller Driver Board For Arduino Robot MCU
- Motor driver: RC 10A Brushed ESC Two Way Motor Speed Controller No Brake For 1/16 1/18
Ferdig motor boks.
Motor driver.
Motor driver.
POWER SUPPLY
For å kunne benytte både nettspenning og batteri på roboten må man ha et power supply.
Det meste på roboten benytter 5V power, tilsvarende power fra USB.
For å få tilstrekkelig med effekt er det benyttet et «DC-DC Converter 12V to 5V 3A Step Down Power Supply Module Micro USB Waterproof» kjøpt på e-bay.
Link: DC-DC Converter 12V to 5V 3A Step Down Power Supply Module Micro USB Waterproof
Det er også satt inn sikringer, en on/off knapp, og en 12V power inn plugg.
Det siste bildet her viser en rekke med pinner for 5V og GND.
Som bildene viser er det meste på roboten festet med enten skruer eller limpistol.
Wifi
For å slippe ledning på roboten er det installert en Wifi enhet, WiPi, som er et USB wifi adapter, designet for Raspberry Pi.
WiPi enheten er kjøpt på komplett.no
https://www.komplett.no/product/837677/datautstyr/hovedkort/tilbehr/wi-pi
For å få enheten til å virke på mitt trådløse nettverk måte WiPien konfigureres.
Konfigurasjon;
pi@raspberrypi ~ $ sudo cp /etc/network/interfaces /etc/network/interfaces_org
pi@raspberrypi ~ $ sudo jed /etc/network/interfaces
interfaces filen ser ut som følger:
auto lo
iface lo inet loopback
auto eth0
allow-hotplug eth0
iface eth0 inet manual
auto wlan0
allow-hotplug wlan0
iface wlan0 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
auto wlan1
allow-hotplug wlan1
iface wlan1 inet manual
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
Endre auto wlan0 til:
allow-hotplug wlan0
auto wlan0
iface wlan0 inet dhcp
wpa-ssid «Ditt nettverks SSID»
wpa-psk «Ditt nettverks passord»
pi@raspberrypi ~ $ sudo ifdown wlan0
pi@raspberrypi ~ $ sudo ifup wlan0
Da skal Raspberry Pi kortet være tilknyttet ditt trådløse nettverk.
Ultrasonic Range Sensor HC-SR04
HC-SR04 er en ultralydsensor som kan måle avstand fra ca 2 cm til 4 meter, med veldig god nøyaktighet.
Det må skrives en driver i kontrollsystemet for denne sensoren.
Sensoren virker ved at man setter ut en startpuls. Når HC-SR04 får startpulsen sender den en 8 pulsers ultralyd burst. Deretter registreres ekkoet av kontrollsystemet. Man må i driveren beregne hvor lang tid det tar fra puls til ekko.
Small PIR Sensor HC-SR501
Pyroelectric Infrared Body Motion Sensor.
Rom-sensor som registrerer bevegelse i rommet basert på infrarødt lys. Det er en slik sensor foran og en bak på roboten.
Denne sensoren skal detektere bevegelse i rommet foran eller bak roboten, slik at den kan snu seg mot der bevegelsen er. Det vil si at kommer det en person inn i rommet vil roboten registrere dette og snu seg mot denne.
5.0MP infrared Camera module
Kameramodulen er en tilpasset kameramodul for Raspberry Pi.
Den kobles til en av kontaktene på Pi-brettet, og bruker CSI-grensesnittet.
CSI-bussen har en høy datahastighet som gir nesten ingen forsinkelse på kameraet, sammenlignet med et standard USB-kamera som kan ha en forsinkelse på opptil et par sekunder.
8 Analog input modul Custard Pi 3
Custard pi 3-kortet er et 12-bits 8-kanals analogt io-kort for Raspberry Pi. Kortet kan plugges direkte inn i en Pi. SPI-grensesnittet brukes til dataoverføringen.