Die Software für den Roboter kann grob in 3 Teile eingegliedert werden:
- Client Seite: Eine Website die die Daten der Sensoren anzeigt sowie zum Steuern des Roboters verwendet wird. Es ist also keine extra Software Installation notwendig, um den Roboter zu Steuern. Im Frontend kommen die Sprachen/Frameworks HTML, Thymeleaf, JavaScript und CSS verwendet. Es wird aber alles einfach gehalten, so das mit normalen Programmierkenntnisse das ganze verständlich sein sollte.
- Middleware: Die Middleware wird in der Sprache Java geschrieben. Dabei kommt das Spring-Boot Framework zum Einsatz. Es kann so ein Webserver zur Ausspielung der Website schnell umgesetzt werden. Zudem ist in der Middleware die gesamte Logik hinterlegt. Hier werden die Eingaben von der Website aufgenommen und an die Hardware weiter übermittelt. Ebenso werden alle Werte von der Hardware (Sensoren) an die Middleware übermittelt und an das Frontend (Website) weiter geleitet.
- Firmeware: Die Hardware selbst wird mit Python umgesetzt. Nicht umsonst endet der Name RaspberryPi mit Pi. Somit kann bei der Hardware Entwicklung auf zahlreiche Bibliotheken und eine große Community zurückgegriffen werden.
Zur Kommunikation der einzelnen Schichten (Frontend, Middleware, Firmeware/Hardware) werden Websocket Verbindungen eingerichtet. Damit sind wir in der Lage in Echtzeit und bidirektional Daten zwischen den Schichten auszutauschen.
Wir bedienen und Allgemein ausschließlich auf OpenSource Software. Das gesamte Projekt ist ebenfalls über BitBucket erreichbar und kann also einfach auch heruntergeladen werden.
Als Entwicklungsumgebung wird die IDE Eclipse Verwendet. Zum Bauen der Software kommt das Software Management Tool Maven zum Einsatz. Es wird nicht auf die einzelnen Tools und Frameworks eingegangen, da es dazu wesentlich bessere Tutorials gibt.
Wer also Faul ist: Hier geht es direkt zum Code: DIY-Robot
Hinweis: Der Code wird ständig weiter entwickelt, es kann also keine Gewähr auf Dokumentation und aktueller Codestatus gegeben werden. Es sollte aber dennoch alles gut auffindbar sein.
Bevor also mit der Entwicklung begonnen seid, ist es ratsam schon mal das eine oder andere Programm mit diesen Technologien geschrieben zu haben. Grundkenntnisse mit dem Spring-Framework, Maven, Python, Java und in HTML/JS/CSS sind also von großen Vorteil.