Arduino: Mit der Kraft der zwei Herzen
Die Arduino-Modelle Uno und Mega haben neben dem großen Mikrocontroller auch einen kleineren auf dem Board, der allerdings meist brach liegt. Mit wenigen Schritten lässt er sich nutzen.
Wer einen Arduino programmiert, arbeitet dabei mit dem großen Mikrocontroller auf dem Board, im Falle des Arduino Uno einem Atmega 328P. Doch sowohl der Uno als auch der Mega besitzen einen zweiten Atmega-Mikrocontroller mit der Bezeichnung Atmega 16u2. Er wickelt die Kommunikation zwischen dem großen Mikrocontroller und der USB-Schnittstelle ab.
Obwohl der Atmega 16u2 weniger leistungsfähig ist als der große Mikrocontroller, ist er doch mit der reinen Funktion als USB-Brücke nicht ausgelastet. Nico Hood hat deshalb einen neuen Bootloader für den kleinen Chip programmiert, mit dem auch auf diesen eigene Sketches aufgespielt werden können. Der Arduino kann danach trotzdem noch ganz normal über USB und Arduino-IDE programmiert werden. Lediglich der eher für Erfahrene interessante Zugriff über die Atmels eigene IDE namens Flip funktioniert dann nicht mehr.
Um den Bootloader Hoodloader2 zu installieren, ist keine zusätzliche Hardware notwendig, mit Ausnahme einiger Kabel und eines 100 nF-Kondensators. Damit wird der Arduino mit sich selbst verkabelt und ein Sketch zur Installation hochgeladen. Danach muss die Installation des neuen Bootloaders auf dem 16u2 über die serielle Konsole der Arduino IDE bestätigt werden. Alternativ kann der Bootloader per ISP aufgespielt werden.
Wird danach der Arduino wieder per Arduino IDE angesprochen, werden eigene Sketches auf dem 16u2 installiert. Unter Windows muss unter Umständen der USB-Treiber neu konfiguriert werden, ansonsten wird er wie ein Arduino Micro oder Leonardo innerhalb der Arduino IDE angesprochen. Um den großen Mikrocontroller wieder anzusprechen, ist es notwendig, den Bootloader-Modus zu wechseln. Dazu muss der Reset-Pin des 16u2 zweimal kurzgeschlossen werden, beim erneuten Kurzschließen wird wieder der 16u2 angesprochen.
Auf dem Arduino stehen 7 GPIO-Anschlüsse des 16u2 zur Verfügung, vier davon in Form unbestückter Lötaugen am Mikrocontroller und drei als Teil der Sechser-Pinreihe daneben. Außerdem enthält Hoodloader2 den USB-Core des HID-Projektes von Hood. Dadurch kann der Arduino als Tastatur, Maus oder Gamepad an einem Computer genutzt werden. Programme auf dem 16u2 sind allerdings durch den kleinen 500 Byte großen Ram und 12 KByte großen Flashspeicher begrenzt. Per serieller Schnittstelle kann aber mit dem großen Mikrocontroller kommuniziert werden, was diese Beschränkung etwas mildert.
Obwohl der Bootloader im Wesentlichen fertig ist, will Nico Hood noch weiter daran arbeiten, insbesondere zusätzliche Beispiele ergänzen.
Die Idee hatte ich auch schon einmal, aber aus Aufwandsgründen nicht weiter verfolgt...