Stap 3: Controle motoren met Raspberry Pi en WiringPi
Op dit punt, de WiringPi-bibliotheek is geïnstalleerd en u kunt elke GPIO rechtstreeks vanaf de command line op uw monitor RPi. De volgende stap is het creëren van een logica om te controleren van de motoren. Om dat te doen, zullen we gebruik maken van een H-brug, de L-293-D. Deze H-brug kunt 2 motoren. Het heeft voor elk motoren, 3 ingangen:
- Motor links: "enable"; "motor +" en "motor-"
- Motor recht: "enable"; "motor +" en "motor-"
Beide "motoren maakt" input zal worden verbonden en wordt gecontroleerd door GPIO.18. Deze pin is verantwoordelijk voor de controle van de snelheid. Als u niet dat control de snelheid wilt, laat u deze pinnen bijvoorbeeld in hoog. in deze stap zullen we dit verder bespreken.
Laten we een Verdrag dat als we de motor links uitvoeren wilt, dat moeten we setup motor + zo hoog en motor-zo laag. Als u wilt uitvoeren op een omgekeerde richting, moeten we het tegenovergestelde: motor-als hoog en motor + zo laag.
De beste manier om echt definiëren de juiste ingangen voor het beheersen van de motor richting, is om ze te testen wanneer de echte motor is vergadering.
Laten we die de GPIOs voor H-bruggen ingangen zijn toegewezen:
- Motor links +: GPIO.5
- Links - motor: GPIO.6
- Motor rechts +: GPIO.13
- Recht - motor: GPIO.19
Gebaseerd op de bovenstaande aannames, kan een logica tabel worden opgebouwd met de mogelijke niveaus worden toegewezen aan de GPIOs (zie afbeelding van de tabel). De volgende stap is het creëren van shell-scripts voor het uitvoeren van de motoren
Elk scriptbestand is in wezen de tekst zonder opmaak. Als een tekstbestand wordt geprobeerd moet worden uitgevoerd, zal de schelpen ontleden door hen voor aanwijzingen over of ze scripts of niet, en hoe te behandelen alles goed. Vanwege dit zijn er een paar richtlijnen die je moet weten.
- Elk script moet wezen met "#! / bin/bash" (de Hash-Bang Hack}
- Elke nieuwe regel is een nieuwe opdracht
- Regels met opmerkingen beginnen met een #
- Opdrachten zijn omringd door)
Wanneer een shell door middel van een tekstbestand parseert, het meest directe manier om het bestand als een script is door het maken van uw eerste lijn: #! / bin/bash (de Hash-Bang kappen). Als u een andere shell gebruikt, vervang het pad hier. Regels met opmerkingen beginnen met knoeiboel (#), maar de bang (!) en de shell-pad toevoegen nadat het is een soort houwer die deze regel commentaar zal mijden en zal dwingen het script uit te voeren met de shell die deze regel naar verwijst.
Bijvoorbeeld wilt maken van een shellscript voor het uitvoeren van de motoren "Vooruit", op basis van de bovenstaande tabel, moet we maken het bestand balg (gebruik de beste editor voor u. Ik ben met behulp van NANO daarvoor):
sudo nano forward.cgi
#! / bin/bash
GPIO -g schrijven 5 1
GPIO -g schrijven 6 0
GPIO -g schrijven 13 1
GPIO -g schrijven 19 0
.
Zodra het script is gemaakt, moeten wij toestemming om te worden uitgevoerd:
sudo chmod 755 forward.cgi
Nu, het script uit te voeren:
sudo./forward.cgi
4 LEDs werden gebruikt voor het testen van de scripts, de echte motoren op een verdere stap zal worden toegevoegd. Als de werken, de correspondent LEDs moet worden op (zie foto).
Merk op dat ik als de bestandsextensie .cgi gebruiken. CGI betekent "Common Gateway Interface". Het is een standaard manier voor webservers met uitvoerbare programma's zijn geïnstalleerd op een server die dynamisch genereren van webpagina's. Dergelijke programma's worden genoemd van CGI scripts of gewoon CGI's; ze zijn meestal geschreven in een scripttaal, maar kunnen worden geschreven in een willekeurige programmeertaal.
Gaande is, moet het zelfde idee gelden voor de andere mogelijkheden van de vorige tabel:
sudo nano stop.cgi
#! / bin/bash
GPIO -g schrijven 5 0
GPIO -g schrijven 6 0
GPIO -g schrijven 13 0
GPIO -g schrijven 19 0
.
sudo nano reverse.cgi
#! / bin/bash
GPIO -g schrijven 5 0
GPIO -g schrijven 6 1
GPIO -g schrijven 13 0
GPIO -g schrijven 19 1
.
sudo nano left.cgi
#! / bin/bash
GPIO -g schrijven 5 0
GPIO -g schrijven 6 1
GPIO -g schrijven 13 1
GPIO -g schrijven 19 0
.
sudo nano right.cgi
#! / bin/bash
GPIO -g schrijven 5 1
GPIO -g schrijven 6 0
GPIO -g schrijven 13 0
GPIO -g schrijven 19 1
.
Zodra de scripts zijn gemaakt moet u machtigen hen om te worden uitgevoerd, dezelfde zoals werd gedaan met forward.cgi
sudo chmod 755 stop.cgi
sudo chmod 755 reverse.cgi
sudo chmod 755 left.cgi
sudo chmod 755 right.cgi
Nu, het uitvoeren van sommige tests om te bevestigen dat alles werkt:
./forward.cgi
./left.cgi
./reverse.cgi
./right.cgi
./stop.cgi
Het is een goede gewoonte dat wij hebben van een specifieke map voor de programma's gebruikt en noem het "bin". Wij dus, om de scripts die we zullen gebruiken in het project opslaat, moet u een map zoals cgi-bin met alle uitvoerbare scripts (of binaire bestanden) maken. Bijvoorbeeld, /var/ www/cgi-bin.
Dus, laten we de www directory onder var, waar onze webpagina geplaatst worden zal en eronder, de cgi-bin directory met de scripts maken:
sudo mkdir/var/www
sudo mkdir /var/ www/cgi-bin
Nu, laten we alle bestanden naar deze nieuwe map verplaatsen:
sudo mv /*.sgi /var/ www/cgi-bin
CD /var/ www/cgi-bin
Met behulp van de lijn commando ls, kunt u de bestanden die zijn gemaakt (zie foto).
ls
Een laatste ding voordat we overgaan tot een andere stap. Als u de RPi rebooten, zullen de GPIOs hun standaardmodus thats INPUT terugkomen. Dus, we moeten veranderen het /etc/rc.local script dat wordt uitgevoerd op een Raspberry van start. Net voor de laatste opdracht in het script == > 0, sluiten we de opdrachten in de modus GPIOs moet bevatten:
sudo nano /etc/rc.local
…
GPIO -g modus 5 uit
GPIO -g modus 6 uit
GPIO -g modus 13 uit
GPIO -g modus 19 uit
...
exit 0
Nu, op elk moment dat die de RPI begint, het zal klaar om te controleren de ontworpen uitgangen.