Nibo Burger mit Hindernisvermeidung und Nibo blue als Datensender im Atmel Studio 7
Wie man den Burger in Atmel Studio 7 programmiert hat „AitanaAlmaguer“ unter diesem
Link prima beschrieben. Mit ATmega16 und 15MHz
Hier habe ich eine Vorlage beschrieben und angehängt für den Burger mit ATMega1284p mit 20MHz.
Dafür müssen u.a. in Toolchain ein paar Dinge geändert werden. Da der Code von Nils Springob bedingte Programmierung einsetzt und sonst möglicherweise falsch compiliert wird. Zu anderen Abweichungen vom Originalcode komme ich später. Wer sich im Atmel Studio die
Vorlage lädt braucht das nicht.
In diesem Artikel:
www.roboter.cc/index.php?option=com_kunena&view=topic&catid=19&id=2698&Itemid=20
beschreibe ich wie man eine sicheren 20MHz Takt mit ein paar kleinen Modifikationen hinbekommt. Es ist dafür nicht der volle Umfang notwendig. Die Aufstockung und die AA Batterien kann man sich sparen, wenn es einem nur um die 20Mhz ankommt. Dann sollte man aber statt der ISP Buchse auf der Platine ein Kabel verwenden um einen Programmer anzuschließen.
-
Wieso Nibo blue beim Hindernis einsetzen?
Beim Experimentieren mit dem Burger hatte ich immer ein Problem: Wie komme ich an Sensormesswerte die der Burger gerade misst. Das Maroon Shield ist dafür nicht wirklich geeignet. Warum also nicht einfach die Daten zu einem Terminalprogramm auf dem PC senden?
Den Code im Programm von Nibo blue (Niboprot Libs) bedarf es gar nicht. Es ist vor allem ein Parser der auf Kommandos antwortet. Um über Bluetooth zum PC Daten zu senden brauchen wir nur die USART Befehle. Vielleicht um ein paar Kommandos ergänzt. Den Rest macht der Nibo blue alleine. Mit einem Bluetooth Stick am PC kann man eine Verbindung von einem Terminal Programm zum Nibo blue aufbauen. Ich mache das über Tera Term (frei erhältlich). Mein USB Stick stellt mir dabei 4 COM Verbindungen zur Verfügung. In meinem Fall (!) ist es COM14 die Baudrate ist 9600 Baud. In diesem Beispiel lese ich die Odometriedaten aus.
So wie ich das hier in der main Loop mache ist es nicht nur ein Beispiel und nicht unbedingt sinnvoll, da die Übertragung zuviel Zeit braucht. Die Motor-Steuerung arbeitet mit Interrupts, die beim USART - Senden aber ausgeschaltet werden.
Eine höhere Baudrate und ein timergesteuertes Senden wäre sinnvoll. Messwerte sollten in einen Puffer geschrieben werden. Der dann Timer- Interrupt gesteuert alle 1s oder 500ms ausgegeben wird. In der übrigen Zeit kann die Motorsteuerung unbehelligt arbeiten. So weit bin ich aber noch nicht.
Eine Beschreibung meiner Abweichungen original Quellcode beschreibe ich im Nachtrag.