Mit dieser Arduino-basierten Touchscreen-Fernbedienung kann man Cerea-Funktionen, die über die serielle Schnittstelle zur Verfügung stehen, komfortabel steuern. Hier kann man sie in Aktion sehen!
Aktuell unterstützte Funktionen
-
Setzen von MARK, A, B, rechts, links, AUTO via Touchscreen (Kommando: @CEREA)
-
Zurücklesen des @SDOSE-Kommandos um, abhängig von der ersten Teilbreite und der GPS-Geschwindigkeit ein Relais zu steuern (RELAY_PIN_1/2; Standard: Pins 49/53). Kann über den Touchscreen aktiviert bzw. deaktiviert werden (Aktiv wenn "Aktiv" und "Streu" Tasten gesetzt sind).
-
Steuert Relais auch manuell über Touchscreen ("Streu" Taste).
-
Zurücklesen von @STATUSAM, falls verfügbar, um GUI synchron zu halten
-
Anzeigen der aktuellen Teilbreitenstatus (Vierecke oben im Display: grau = nicht genutzt, rot = nicht aktiv, grün = aktiv)
-
BETA: Steuern der einzelnen Teilbreiten (1-10) mit dem @BOOMBOX Kommando (Seite 2: 1 - 10; durch Wechsel der Seite könnten Statusnachrichten von Cerea versäumt werden, d.h. das GUI ist für einige Momente nicht synchronisiert mit Cerea)
-
Vibrationsfeedback bei Touchscreenbetätigung; Signal kann auf frei wählbaren Digitalpin gelegt werden (VIBRATION_MOTOR_PIN; Standard: eingebaute LED-Pin des Boards, welcher auf dem MEGA Pin 13 entspricht) und die Vibrationsdauer ist einstellbar (VIBRATION_TIME_MS; Standard: 200 ms)
Nötige Hardware
- Arduino MEGA 2560
- 3.5" TFT/Touchscreen Shield (480x320; 16 Bit Farben) unterstützt durch die Adafruit TFTLCD und Touchscreen Bibliotheken (getestet: Kuman Version mit ILI9486; weitere können ergänzt werden)
- Bei USB-basierter seriellen Kommunikation: Kondensator (>22 µF)
- Optional: Vibrationsmotor (z.B. seeed Groove VM)
- Optional: Relais (z.B. seeed Groove 2CH Relay)
Wichtig bei USB-basierter seriellen Kommunikation: Standardmäßig setzt sich der Arduino bei der Initialisierung der seriellen Kommunikation komplett zurück. Im Falle der Cerea-Kommunikation denkt der Arduino aus irgendeinem Grund er wird neu geflasht und friert dadurch ein. Um diesen Auto-Reset zu Verhindern muss ein Kondensator zwischen dem "Reset" und dem "GND" Pin angeschlossen werden.
Riku vom deutschen Cerea forum hat ein ausgezeichnetes Gehäuse für den Arduino konstruiert und die Daten netterweise zur Verfügung gestellt. Die Basisanleitung kann man hier finden und die Erweiterung hier. WICHTIG: Dieses Gehäuse passt nur mit Release vor 0.2.2 zusammen, da es die neu eingeführten Teilbreitenstatus-Indikatoren nicht berücksichtigt. Bitte verwenden Sie Release 0.2.1 falls Sie planen das beschriebene Gehäuse nachzubauen.
Abhängigkeiten
Um diesen Sketch zu verwenden müssen die folgenden Bibliotheken heruntergeladen und in die Arduino IDE importiert werden. Entweder kann man diese direkt herunterladen und mittels ("Sketch"->"Add .ZIP Library") importieren oder man sucht sie im Arduino IDE Library Manager ("Tools"->"Library Manager"). Es wird empfohlen die Bibliotheken aktuell zu halten.
- Adafruit GFX Library <-- Wichtig: Version 1.5.3 nutzen
- Adafruit TFT-LCD Library
- Adafruit Touchscreen Library
- MCUFRIEND_kbv Library
Cerea ist ein GPS-basiertes Autolenksystem für die Landwirtschaft. Es wird von einer spanischen Firma namens SOLUCIONES TECNOLOGICAS CEREA aktiv für Windows entwickelt.
Das System nutzt die serielle Schnittstelle um Kommandosequenzen auszutauschen, welche es ermöglichen dieses mit einem beliebigen Gerät mit serieller Schnittstelle fernzusteuern. Die folgenden gelisteten Kommandos wurden Reverse Engineered, daher keine Garantie!
Generelles:
- "1" repräsentiert an/true
- "0" repräsentiert aus/false
- Jedes Kommando wird mit einem CR-LF (
\r\n
) beendet
Kommandos scheinen im 0,5 Sekundentakt anzukommen (Bestätigung benötigt).
Cerea Kommando | Funktion | Beschreibung | Beispiel |
---|---|---|---|
@STATUSAM;A;M;END | A: AUTO [1/0] M: MARK [1/0] |
Aktueller Status MARK und AUTO. | "@STATUSAM;1;1;END\r\n" (AUTO und MARK aktiv) |
@CEREA;VGPS;-1; S0;S1;...;S9;END |
VGPS: GPS Geschw. in km/h [float] -1: reserviert S0‑9: Teilbreiten [1/0] |
Aktuelle GPS Geschw. und Teilbreitenstatus (von links nach rechts). Anzahl an übertragenen Teilbreiten entspricht Einstellung in Cerea (max. 10). |
"@CEREA;5.0;-1;1;END\r\n" (GPS Geschw. 5.0 km/h; Teilbreite 1 aktiv) |
@HIDRAU;F;END | F: Flag [1/0] | Falls Sektion schon bearbeitet wurde, wird dies hier signalisiert. | "@HIDRAU;1;END\r\n" (Sektion schon bearbeitet) |
Cerea Kommando | Funktion | Beschreibung | Beispiel |
---|---|---|---|
@SDOSE;M;C;U;U; AP;BP;A;L;R;TL;TR;END |
M: MARK [1/0] C: CONTOUR [1/0] U: UNBEKANNT [1/0] AP: A point [1/0] BP: B point [1/0] A: AUTO [1/0] L: LINKS [1/0] R: RECHTS [1/0] TL: WENDE LINKS [1/0] TR: WENDE RECHTS [1/0] |
Steuert Cerea. | "@SDOSE;1;0;0;0; \ 0;0;1;0;0;0;0;END\r\n" (aktiviere MARK und AUTO) |
@MARK | - | Aktiviert MARK. | "@MARK\r\n" (aktiviert MARK) |
@AUTO | - | Aktiviert AUTO. | "@AUTO\r\n" (aktiviert MARK) |
@BOOMBOX; S0;S1;...;S9;END |
S0‑9: Teilbreiten [1/0] | Setzt Teilbreitenstatus (von links nach rechts). Der Status von allen 10 Teilbreiten muss übertragen werden. |
"@BOOMBOX; \ 0;0;0;0;0;0;0;0;0;0;\r\n" (deaktiviere alle Teilbreiten) |
@PRESION;P;END | P: Druck [float] | Setzte Druck in ? (Bestätigung benötigt). |
"@PRESION;1.0;END\r\n" (setze Druck auf 1.0) |
@CAUDAL;F;END | F: Durchflussmenge [float] | Setzte Durchflussmenge in L/min (Bestätigung benötigt). |
"@CAUDAL;1.0;END\r\n" (setze Durchflussmenge auf 1.0) |
@APLICADO;A;END | A: Angew. Durchfluss [float] | Setzte angew. Durchflussmenge in L/ha (Bestätigung benötigt). |
"@APLICADO;1.0;END\r\n" (setze angew. Durchflussmenge auf 1.0) |
Falls dieses Projekt / die Info hilfreich war, kann man mich hier mit einer "Maß" Bier unterstützten :)