IoT - kontrollera en Raspberry Pi Robot över internet med HTML och shell skript endast (3 / 9 steg)
Steg 3: Kontrollera motorer med Raspberry Pi och WiringPi
Vid denna punkt, WiringPi biblioteket är installerat och du kan styra alla GPIO direkt från kommandoraden på bildskärmen RPi. Nästa steg är att skapa en logik för att kontrollera motorerna. För att göra det, kommer vi att använda en H-bron, L-293-D. Denna H-brygga kan styra 2 motorer. Det har för varje motorer, 3 ingångar:
- Motor vänster: "Aktivera"; "motor +" och "motor-"
- Motor just: "Aktivera"; "motor +" och "motor-"
Båda "motorer gör" input kommer att anslutas till varandra och kommer att kontrolleras av GPIO.18. Detta stift kommer att ansvara för kontrollen hastighet. Om du inte vill kontrollera hastigheten, lämna dessa stift i hög, till exempel. Vi kommer att diskutera detta vidare i det här steget.
Låt oss göra en konvention som om vi vill motorn kvar att köra framåt, vi måste setup motor + så högt och motor-som låg. För att köra på en omvänd riktning, vi måste göra motsatsen: motor-som hög och motor + så lågt.
Det bästa sättet att verkligen definiera rätt ingångar för styrning av motor riktning, är att testa dem när den riktiga motorn är församlingen.
Låt oss tilldelade GPIOs för H-överbryggar ingångar:
- Motor till vänster +: GPIO.5
- Vänster - motor: GPIO.6
- Motor höger +: GPIO.13
- Rätt - motor: GPIO.19
Baserat på ovanstående antaganden, kan en logik tabell byggas med möjliga nivåer som ska tilldelas de GPIOs (se tabell bild). Nästa steg är att skapa skalskript för att köra motorerna
Varje skriptfil är i huvudsak oformaterad text. När en textfil görs ett försök att bli avrättad, kommer att skal analysera igenom dem för ledtrådar om huruvida de är skript eller inte, och hur man hanterar allt ordentligt. På grund av detta finns det några riktlinjer du behöver veta.
- Varje skript bör att vara med "#! / bin/bash" (The Hash-Bang hacka}
- Varje ny rad är ett nytt kommando
- Kommentarrader börja med en #
- Kommandon är omgivna av)
När ett skal tolkar genom en textfil, mest direkta sättet att identifiera filen som ett skript är genom att göra din första raden: #! / bin/bash (The Hash-Bang hacka). Om du använder en annan shell, ersätta sin väg här. Kommentarrader börja med hash-värden (#), men att lägga till bang (!) och shell vägen när det är en slags hacka som kommer att kringgå denna kommentar regel och kommer att tvinga skriptet ska köras med skal som den här raden pekar på.
Till exempel för att skapa ett skalskript för att köra motorerna "Framåt", baserat på ovanstående tabell, måste vi skapa den fil nedan (Använd den bästa redigeraren för dig. Jag använder NANO för det):
sudo nano forward.cgi
#! / bin/bash
gpio -g skriva 5 1
gpio -g skriva 6 0
gpio -g skriva 13 1
gpio -g skriva 19 0
.
När skriptet har skapats, måste vi ge den behörighet som ska köras:
sudo chmod 755 forward.cgi
Nu, att köra skriptet:
sudo./forward.cgi
4 lysdioder användes för att testa skript, den riktiga motorer kommer att läggas på ytterligare ett steg. Om arbeten, korrespondent lysdioder måste vara på (se bild).
Observera att jag använder .cgi som filtillägget. CGI betyder "Common Gateway Interface". Det är ett standardiserat sätt för webbservrar att samverka med körbara program installerade på en server som genererar webbsidor dynamiskt. Sådana program kallas CGI-skript eller helt enkelt cgi; de är oftast skrivna på ett skriptspråk, men kan skrivas i alla programmeringsspråk.
Gå på, måste samma idé tillämpas för andra möjligheter i föregående tabell:
sudo nano stop.cgi
#! / bin/bash
gpio -g skriva 5 0
gpio -g skriva 6 0
gpio -g skriva 13 0
gpio -g skriva 19 0
.
sudo nano reverse.cgi
#! / bin/bash
gpio -g skriva 5 0
gpio -g skriva 6 1
gpio -g skriva 13 0
gpio -g skriva 19 1
.
sudo nano left.cgi
#! / bin/bash
gpio -g skriva 5 0
gpio -g skriva 6 1
gpio -g skriva 13 1
gpio -g skriva 19 0
.
sudo nano right.cgi
#! / bin/bash
gpio -g skriva 5 1
gpio -g skriva 6 0
gpio -g skriva 13 0
gpio -g skriva 19 1
.
När skripten skapats måste du ge dem behörighet att vara utförda, samma som gjordes med forward.cgi
sudo chmod 755 stop.cgi
sudo chmod 755 reverse.cgi
sudo chmod 755 left.cgi
sudo chmod 755 right.cgi
Nu, kör några tester för att bekräfta att allt fungerar:
./forward.cgi
./left.cgi
./Reverse.cgi
./Right.cgi
./stop.cgi
Det är en god praxis att vi har en specifik katalog för de program som används och kallar det "bin". Så, om du vill spara skript som vi kommer att använda i projektet, vi måste skapa en katalog som cgi-bin som innehåller alla körbara skript (eller binära filer). Till exempel /var/ www/cgi-bin.
Så, låt oss skapa katalogen www under var, var vår hemsida kommer att placeras och under det, cgi-bin katalogen med skript:
sudo mkdir/var/www
sudo mkdir /var/ www/cgi-bin
Nu, låt oss flytta alla filer till denna nya katalog:
sudo mv /*.sgi /var/ www/cgi-bin
CD /var/ www/cgi-bin
Med linje-kommandot ls, kan du se de filer som skapas (se foto).
LS
En sista sak innan vi flyttar till ett annat steg. Om du pånyttfödd RPi, kommer att GPIOs återvända till deras standard tillstånd som är indata. Så, måste vi ändra skriptet /etc/rc.local som körs på alla hallon start. Strax före det sista kommandot på skriptet == > avsluta 0, vi måste inkludera de GPIOs kommandona:
sudo nano /etc/rc.local
…
gpio -g läge 5 ut
gpio -g läge 6 ut
gpio -g läge 13 ut
gpio -g läge 19 ut
...
utgång 0
Nu, när som helst som som RPI startar, det kommer att vara redo att styra designade utgångarna.