Kein Empfang

Der erste Versuch, beide Komponenten über ein eigenes Programm zu verbinden ist (na klar..) gescheitert. Der Pegelwandler zeigt zwar ein Senden an, der µC kann aber keine Daten empfangen. Da ich bis jetzt auch nur mit dem Microcontroller gesendet habe, kann ich einen Softwarebug nicht auschließen, halte ihn sogar für wahrscheinlich. Immerhin scheint ja das Programm auf dem Raspi zu funktionieren.

Ich merke immer stärker, dass ich nicht vorankomme, wie gewollt.

Verbindung

Jetzt sind der Raspi und der Microcontroller hardwaremäßig mit einander verbunden. Dazu musste ich noch ein Adapterkabel löten, was auch nochmal Zeit brauchte. Jetzt bin ich bereit für erste Softwaretests, wo zum ersten mal dann beide Geräte konmmunizieren. Der Raspi sendet schon, der µC hatt aber noch Probleme die Daten zu empfangen. Ob das an dem Programm oder vielleicht an dem Pegelwandler oder dem Adpaterkabel liegt, weiß ich nicht.

Klein, aber Wichtig

Nach langem warten ist der Pegelwandler, der die 12V Spannung des µC an die 3,3V des Raspis anpassen soll, da. So könnten jetzt beide biderektional mit ein ander kommunizieren. Das ist wichtig, da ja später einmal das Hauptprogramm auf dem Raspberry Pi laufen soll. Der Microcontroller übernimmt dann nur noch das regeln der Motoren und die 5V AD-Wandlung.IMG_1562Das ist der Pegelwandler ohne Kabel. Sehr klein und handlich!

IR Sensor

Heute habe ich den ersten Versuch mit dem schon gezeigten IR Abstandssensor gemacht. Wie erwartet funktioniert er nicht so wie er soll. Komischer Weise wird in meinem Programm immer der maximal zu messende Abstand von 80 cm ausgegeben. Da das Programm aber mit den Lichtschranken anstandslos funktioniert, kann ich einen Fehler dort ausschließen. Auch das braucht wohl seine Zeit..

Viel Neues

Das Motorregelungsprogramm funktioniert jetzt so wie ich mir das vorstelle. Alle Räder regeln sich auf einen Referenzmotor ein. Das dauert zwar noch etwas, passiert aber verlässlich. So drehen sich nach einer kurzen Zeit alle Räder gleich schnell. Allerdings wie gehabt nur bis zu einem Viertel der Höchstgeschwindigkeit. Auch der Raspberry Pi ist jetzt auf dem Roboter montiert, die Kamera vorerst auf einem kleinen Holzmast festgeklebt. Da ich für den Raspi aber noch eine Spannungsversorgungsplatine löten muss, wird er noch „extern“ über Kabel betrieben.IMG_1534So sieht der Bot doch schon ein bisschen mehr nach Curiosity aus! Als Zusamenfassung, von allem, was ich in der Ferien (und überhaupt) geschafft habe, hier ein cooles Video. Der Roboter fährt vom Programm geregelt gerade. Ausserdem nimmt er über die Kamera seine Fahrt selber auf!

Motorregelung v1.0

Die erste Version meines Regelungsprogrammes tut was der Name von ihm verlangt – es regelt die Motoren. Wenn auch nicht so wie von mir erwartet. Die Motoren drehen mal schnell, mal langsam, mal gar nicht. Das ist natürlich nicht gewünscht, so wird ein Update in kürze folgen.

Der Grund für dieses Verhalten ist wahrscheinlich, dass das Programm einfach zu schnell reagiert. Es vergleicht immer und immer wieder die Geschwindigkeit und versuch diese anzupassen. Da das aber immer schnell nach ein ander passiert, stellt sich in dieser sehr kurzen Zeitspanne keine Veränderung ein und das Programm versucht nachzuregeln.

Videostream

Das Streamen eines Videos über Wlan mit dem Raspi und das Empfangen an einem Pc klappt jetzt selbst in Full HD problemlos. Es gibt leichte Verzögerungen, die aber kaum auffallen. Das Video ist allerdings stumm, da die Kamera kein eingebautes Mikrofon hatt. Ich werde mein Drehzahlregler so schnell wie möglich fertigstellen, so das der Roboter fahrtüchtig ist.

Kamera

Sie ist da: die Kamera für den Raspberry Pi. Kernstück ist ein 5MP Sensor. Die Cam nimmt Videos in Full HD auf und schießt Fotos in der Auflösung 2592 × 1944. Ob der Videostream in Full HD ruckelfrei übertragen werden kann, muss sich noch zeigen.IMG_1497Das Kabel ist mit knapp 15 cm recht kurz. Wenn die Kamera später auf den Kameramast kommt, muss ich eine Verlängerung bauen.

Immer die 1023..

Ich habe den Fehler in meinem programm gefunden: ähnlich wie bei der Übertragung über Rs232 habe ich dem ADC Wert zu wenig Speicher reserviert. So wurde der Wert in ein Byte „gequetscht“.. Nach dem das behoben ist, funktioniert das Programm wie gewollt. Aber nur solang die Motoren mit maximal einem Viertel der Höchstgeschwindigkeit drehen. Wenn sie sich nämlich schneller drehen, kommt der ADC mit messen bei allen vier Rädern nicht mehr nach und verschluckt sich. Um trotdem höchstgeschwindigkeit zu fahren, muss ich wohl die Auflösung der Drehscheiben reduzieren. Also Zähne abschneiden. Mal schauen, ob mir noch etwas besseres einfällt..