In dit Instructable we willen nemen wat we geleerd hebben in "Make: it Robotics Starter Kit – draadloze connectiviteit" en "Make: it Robotics Starter Kit – vastleggen van Sensor Data" en combineert deze gegevens vastleggen van de sensorgegevens in real time en stuur deze gegevens naar een programma dat draait op onze computer draadloos.
Dus als u uw robot die is geconfigureerd voor het gebruik van de zender en de ontvanger niet hebt, neem een kijkje op de blogpost "Make: it Robotics Starter Kit – vastleggen van Sensor Data" en opnieuw configureren van uw robot en FTDI kabel.
Om de sensorgegevens verzenden op onze computer we weer hebben een paar kleine wijzigingen aanbrengen in ons programma van de Arduino lineFollow.ino:
Commentaar uit de volgende regel, zoals we niet langer onze teller-variabele hoeven.
int de teller;
Commentaar uit de variabele initialisatie van de teller variabele:
Counter = 0;
In de functie van de loop van het programma commentaar uit de volgende regels:
mySerial.println (counter, DEC);
teller ++;
Voeg de volgende regel aan de loop-functie:
mySerial.println (Actie1, HEX);
Als (Actie1! = Actie2)
{
Als (Actie1 == 3)
line_following.go_forward(50);
Als (Actie1 == 1)
line_following.line_following_turn_left(50);
Als (Actie1 == 2)
line_following.line_following_turn_right(50);
Als (Actie1 == 0)
line_following.go_forward(50);
}
Actie2 = Actie1;
}
Wanneer we de robot lopen onze sensorgegevens zal wirelessly afgeven aan onze computer, maar we willen niet alleen het vastleggen van de seriële gegevens met behulp van de seriële Monitor met de resultaten worden weergegeven als hexadecimale getallen.
Wij willen weergeven in real-time de feitelijke aanwijzingen die de robot wordt gegeven op basis van de sensorgegevens. We niet de seriële Monitor gebruiken om dit te doen.
We moeten een programma schrijven dat vergelijkbare logica als ons lineFollow.ino programma heeft. Dus we gaan ontwikkelen een Python programma dat de gegevens van seriële poort leest en de aanwijzingen dat de Robot heeft gekregen in plain Engels uitprinten.
Bijgevoegd is het Python programma, we zullen het analyseren van het programma in een beetje. Als u dit nog niet gedaan, verwijzen naar de eerdere blogpost "Make: it Robotics starterskit-binaire deel" 1 "en Bekijk de Video op hoe te opstelling Python op uw computer.
seriële importeren
importeren
De instructies van de import bieden bibliotheekfuncties die onze Python programma nodig om te communiceren op de seriële poort.
def main():
De instructie definieert een functie genaamd main()
ser seriële =. Seriële ('COM3', 1200, timeout = 0)
Deze verklaring maakt een seriële object en het object vertelt welke seriële poort te luisteren op, welke baudrate te gebruiken en de timeout = 0 wordt gebruikt om te lezen van de gegevens wanneer het beschikbaar is zonder te wachten.
terwijl 1:
De terwijl 1: instructie wordt gebruikt om te beginnen met een lus die wordt herhaald en eindigt niet als de voorwaarde voor 1 altijd waar is.
waarde = ser.read(1)
Hier lezen we één byte van de gegevens van de seriële poort en deze waarde aan de variabele waarde opslaan.
Als waarde > = '0' en de waarde < = '3':
Als de inhoud van de variabele waarde is tussen 0 en 3 uit te voeren van de inhoud van de als verklaring
Als waarde == '0' of waarde == '3'
"Ga door" afdrukken
Als de variabele waarde uitvoeren 1 of 3 vervolgens het afdrukken "gaan doorsturen" bericht.
Als waarde == '1':
Print "Turn Left"
Als de variabele waarde 1 is dan het bericht "Turn Left" afdrukken
Als waarde == '2':
Print "Turn Right"
Als de variabele waarde 2 is dan het bericht "Turn Right" afdrukken
Als __name__ == "__main__": main()
Als dit programma uitvoeren wordt uitgevoerd en geen bibliotheekbestand vervolgens de hoofdfunctie.
Vergeet niet dat python is een streepje gevoelige gevoelige taal. Als uw inspringing niet correct is uw programma genereert syntaxisfouten wanneer u wilt uitvoeren. Tellen uw spaties inspringen wanneer de code in je teksteditor omgaan.
Vergeet niet wanneer u uw USB-kabel in naar de Arduino zul je om te controleren of dat de seriële poort correct is voor de seriële poortinstellingen in de Arduino IDE programma aansluiten.
Verwijzen naar de blogpost "Make: it Robotics Starter Kit - vastleggen van Sensor Data" voor informatie over het bepalen van de juiste seriële poort en hoe te opstelling van de Arduino IDE.
Als u een andere USB-poort voor uw FTDI USB-kabel gebruikt, zal uw seriële poort worden ook verschillende.
Plaats uw readSerial.py-programma in een map op uw computer en start een MS-DOS-Prompt en wisseling woninggids voor naar de dezelfde maplocatie van uw readSerial.py-programma.
De opdracht uitvoeren vanaf de opdrachtprompt:
Python-runSerial.py
Als u eventuele fouten tegenkomt, controleren of uw programma runSerial.py is ingesteld op de juiste seriële poort.
Zorg ervoor dat u uw stuurprogramma bestuur en FTDI kabel correct bedraad.
Als u vreemde tekens worden afgedrukt op uw troepenleiding prompt krijgt, controleert u of dat uw baud-rate is hetzelfde in de Arduino lineFollow.ino en readSerial.py 's.
Als je gedaan hebt alles correct, wanneer uw robot volgt de zwarte lijn uw Python programma volgende produceren weergegeven in de afbeelding hierboven output moet.