Projekt: Ardudoro

Als mein erstes Arduino Projekt möchte ich „Ardudoro“ vorstellen.
Der Name „Ardudoro“ setzt sich aus Arduino und Pomodoro zusammen.
Was Pomodoro ist wird in diesem Wikipediaartikel sehr gut beschrieben.

Der Grund für Ardudoro

Wie jedes Projekt hat dieses auch einen Grund, auf Arbeit setzen wir Pomodoro häufig ein und es wird von jedem Entwickler angenommen und auch ausgerichtet, jedoch ist der Zustand nicht immer für jeden Ersichtlich so kommt es des öfteren vor das der Projektleiter oder andere Kollegen oder Fremdmitarbeiter diese Pomodorosession stört.

Durch dieses einfache Gerät wird es nun möglich sein deutlich kenntlich zu machen wenn eine Pomodorosession läuft.

Die Komponenten

Es wurden folgende Komponenten verwednet:

  • Sodial Nano (nachbau des Arduino Nano) – 4,85€
  • Sodial 3 Farb RGB – 2,25€
  • Lochrasterplatine – 2,50€
  • Lötzinn, Lötkolben (15Watt)
  • Schrauben (M3), ein Sperrholzbrett (4mm stark)
  • eine Dose

Der Experimentelle Aufbau

Da das Hauptaugenmerk auf die Entwicklung einer Java Anwendung bestand ist der Aufbau so simple gehalten wie möglich.

Die Arduino Anwendung

Auch wenn das Gerät kein Original Arduino ist läßt sich mit der Arduino IDE für dieses Gerät entwickeln, man muss nur unter Tools->Board->Arduino Nano w/ ATmega328 einstellen und das Gerät über einen freien USB Anschluss mit dem PC verbinden.
(Nicht über einen USB Hub.)

Einstellungen für den Sodial Nano in der Arduino IDEDer Quellcode für den Nano

Wenn man das Programm auf den Nano hochläd und in der Arduino IDE den Seriellen Monitor öffnet, wird eine kurze Hilfe angezeigt was für ein String erwartet wird.

Dieser String setzt sich aus folgenden Werten zusammen:

  • s – signalisiert den Start
  • r – der Wert für die Farbe Rot als dreistellige ganzzahl (zbsp. 000 oder 154)
  • g – der Wert für die Farbe Grün als dreistellige ganzzahl (zbsp. 000 oder 154)
  • b – der Wert für die Farbe Balu als dreistellige ganzzahl (zbsp. 000 oder 154)
  • t – die Zeit wie lange die LED aufleuchten soll, in Millisekunden
  • e- signalisiert das Ende

Wie im Quellcode ersichtlich ist wird genau ein fest definierter aufbau eines Strings verwartet.
Folgende Fehler könnten sich bisher einschleichen:

  • es werden die Parameter für die Farben (rot,grün,blau) vertauscht
  • es wird mehr als ein Parameter für eine Farbe eingegeben
  • es wird der Wert für die Farbe nicht 3 Stellig eingegeben
  • es werden nicht nur nummerische Zeichen für den Wert der Farbe eingegeben
  • es wird ein Parameter vergessen
  • usw.

Diese Liste läßt sich sicherlich beliebig erweitern jedoch ist dieser Aufbau für ein kleines Tutorial völlig ausreichend.

Die Java Anwendung LEDFrame

Java Anwendung LEDFrame

Absenden eines Strings aus der Anwendung

Die Anwendung stellt mit der Oberfläche die Einstellungen für den Aufbau der Verbindung sowie die wahl der Farbe und die Leuchtdauer bereit.

Nachdem der Benutzer alle Daten gewählt hat wird über den Button folgende aktion ausgeführt:

Wie hier zusehen ist wird der erwartete String über die Methode String.format (Zeile 8) in das im Arduino Programm definierte Format gebracht wird somit ist sichergestellt das hier wenig schiefgehen kann.

Es wird nun der Port geöffnet, der String wird geschrieben und danach wird der Port wieder geschlossen.

Da die Klasse SerialCommunication die Klasse jssc.SerialPort „nur“ Wrappt sind die dahinterliegenden Methoden nicht sichtbar dies ist von mir so gewollt da das konstukt in jssc simple jedoch etwas fehleranfällig ist. Fraglich ist warum ich ein SerialPortEvent auslösen muss damit ich etwas auf den Seriellen Port schreiben kann. Dies bedeutet ich blähe meinen Code unnütz auf, dieses habe ich gelöst indem die Klasse SerialCommunication dieses für mich erledigt und ich mich mit weniger Methoden und Klassen beschäftigen muss.

Die gesamte Java Klasse.

SerialCommunication

Was an der Klasse SerialCommunication fehlt ist die Möglichkeit zu lesen. Diese Funktionalität wird mit dem nächsten Projekt implementiert.

UML Diagramm

Zur verdeutlichung wie das Programm LEDFrame aufgebaut ist soll folgendes UML Klassendiagramm dienen.

UML Diagramm der Anwendung LEDFrame

Die Kommunikation zwischen der Anwendung LEDFrame und dem Arduino erfolgt über die Klasse SerialCommunication diese leitet sich aus der Klasse jssc.SerialPort ab.
Das Package JSSC kann über Maven oder als externe JAR Datei >>hier<< bezogen werden.

UML Diagramm der Klasse SerialCommunication

Das Video

Java Projekt "Ardudoro"

 

Das Fertige Programm zum Download inkl. Sourcen

Anwendung LEDFrame

Quellcode zur Anwendung LEDFrame

JavaDoc

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.