<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki.opensourceecology.de/index.php?action=history&amp;feed=atom&amp;title=Zacplus_cyd_firmware_readme</id>
	<title>Zacplus cyd firmware readme - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.opensourceecology.de/index.php?action=history&amp;feed=atom&amp;title=Zacplus_cyd_firmware_readme"/>
	<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.de/index.php?title=Zacplus_cyd_firmware_readme&amp;action=history"/>
	<updated>2026-05-14T09:21:17Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Open Source Ecology - Germany</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.opensourceecology.de/index.php?title=Zacplus_cyd_firmware_readme&amp;diff=25798&amp;oldid=prev</id>
		<title>Case: Die Seite wurde neu angelegt: „# Step-by-step guide  &gt; zum kompilieren und flashen der Mess-Firmware auf dem CYD-basierten Messrig. &gt; &gt; **Stand: 04.09.2025**  &lt;&lt;&lt;&lt;&lt;&lt;&lt; HEAD:Hardware/Messinter…“</title>
		<link rel="alternate" type="text/html" href="https://wiki.opensourceecology.de/index.php?title=Zacplus_cyd_firmware_readme&amp;diff=25798&amp;oldid=prev"/>
		<updated>2025-10-09T21:31:25Z</updated>

		<summary type="html">&lt;p&gt;Die Seite wurde neu angelegt: „# Step-by-step guide  &amp;gt; zum kompilieren und flashen der Mess-Firmware auf dem CYD-basierten Messrig. &amp;gt; &amp;gt; **Stand: 04.09.2025**  &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; HEAD:Hardware/Messinter…“&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;# Step-by-step guide &lt;br /&gt;
&amp;gt; zum kompilieren und flashen der Mess-Firmware auf dem CYD-basierten Messrig.&lt;br /&gt;
&amp;gt;&lt;br /&gt;
&amp;gt; **Stand: 04.09.2025**&lt;br /&gt;
&lt;br /&gt;
&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; HEAD:Hardware/Messinterface/src/README.md&lt;br /&gt;
## Vorbereitung&lt;br /&gt;
&lt;br /&gt;
0. Bringe die Arduino-IDE(2) auf einen Stand von 2.3.6 oder neuer. Normalerweise würde die Arduino-IDE nach dem Start von sich aus schon auf eine neuere Version von sich selbst hinweisen und diese zum download und zum installieren anbieten.&lt;br /&gt;
=======&lt;br /&gt;
Stand: 04.09.2025&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt;&amp;gt; d39efec (added modified version of lv_conf.h):Hardware/Messinterface/src/howto-firmware-setup.txt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
**Installiere folgende Libs:**&lt;br /&gt;
&lt;br /&gt;
1. Installiere Adafruit INA219 by Adafruit, V. 1.2.3 oder höher.&lt;br /&gt;
&lt;br /&gt;
2. Installiere TFT_eSPI by BodmerA, Version V. 2.5.43 oder höher. Hier sollte im Verzeichnis ~/Arduino/libraries/TFT_eSPI die Datei User_Setup.h ersetzt werden durch eine gleichnamige Datei, welche zu finden ist unter&lt;br /&gt;
https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display/tree/main/DisplayConfig/User_Setup.h . Oder ev. auch durch https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display/blob/main/DisplayConfig/CYD2USB/User_Setup.h, falls auf dem CYD noch ein USB-C Anschluss mit drauf ist, siehe dazu auch zur Unterscheidung unter https://github.com/witnessmenow/ESP32-Cheap-Yellow-Display den Abschnitt &amp;quot;How do I know if a display is a CYD?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
3. Installiere XPT2046_Touchscreen by Paul Stoffregen, V. 1.4  oder höher. &lt;br /&gt;
&lt;br /&gt;
4. Installiere lvgl  by Kisvegabor, V. 9.2.2 oder höher. Kopiere ausserdem unsere modifizierte lv_conf.h ein Verzeichnis höher, also direkt nach ~/Arduino/libraries .  Falls das nicht funktioniert kann man auch anders vorgehen, dazu muss die Datei zunächst wieder gelöscht werden.  Kopiere nun aus dem Verzeichnis ~/Arduino/libraries/lvgl die Datei lv_conf_template.h ein Verzeichnis höher und benenne sie um in lv_conf.h.  Nun ändere die Zeile&lt;br /&gt;
&lt;br /&gt;
/* clang-format off */&lt;br /&gt;
#if 0 /*Set it to &amp;quot;1&amp;quot; to enable content*/&lt;br /&gt;
&lt;br /&gt;
um in &lt;br /&gt;
&lt;br /&gt;
/* clang-format off */&lt;br /&gt;
#if 1 /*Set it to &amp;quot;1&amp;quot; to enable content*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dann ändere die Zeile &lt;br /&gt;
&lt;br /&gt;
/*Interface for TFT_eSPI*/&lt;br /&gt;
#define LV_USE_TFT_ESPI         0&lt;br /&gt;
&lt;br /&gt;
um in&lt;br /&gt;
&lt;br /&gt;
/*Interface for TFT_eSPI*/&lt;br /&gt;
#define LV_USE_TFT_ESPI         1&lt;br /&gt;
&lt;br /&gt;
Nun ändere noch die Zeilen&lt;br /&gt;
&lt;br /&gt;
/*Montserrat fonts with ASCII range and some symbols using bpp = 4&lt;br /&gt;
 *https://fonts.google.com/specimen/Montserrat*/&lt;br /&gt;
#define LV_FONT_MONTSERRAT_8  0&lt;br /&gt;
#define LV_FONT_MONTSERRAT_10 0&lt;br /&gt;
#define LV_FONT_MONTSERRAT_12 0&lt;br /&gt;
#define LV_FONT_MONTSERRAT_14 0&lt;br /&gt;
#define LV_FONT_MONTSERRAT_16 0&lt;br /&gt;
#define LV_FONT_MONTSERRAT_18 0&lt;br /&gt;
#define LV_FONT_MONTSERRAT_20 0&lt;br /&gt;
#define LV_FONT_MONTSERRAT_22 0         &lt;br /&gt;
#define LV_FONT_MONTSERRAT_24 0&lt;br /&gt;
&lt;br /&gt;
um in&lt;br /&gt;
&lt;br /&gt;
/*Montserrat fonts with ASCII range and some symbols using bpp = 4&lt;br /&gt;
 *https://fonts.google.com/specimen/Montserrat*/&lt;br /&gt;
#define LV_FONT_MONTSERRAT_8  1&lt;br /&gt;
#define LV_FONT_MONTSERRAT_10 1&lt;br /&gt;
#define LV_FONT_MONTSERRAT_12 1&lt;br /&gt;
#define LV_FONT_MONTSERRAT_14 1&lt;br /&gt;
#define LV_FONT_MONTSERRAT_16 1&lt;br /&gt;
#define LV_FONT_MONTSERRAT_18 1&lt;br /&gt;
#define LV_FONT_MONTSERRAT_20 1&lt;br /&gt;
#define LV_FONT_MONTSERRAT_22 1         &lt;br /&gt;
#define LV_FONT_MONTSERRAT_24 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Das sollte alles gewesen sein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
**Installiere folgende boards:**&lt;br /&gt;
&lt;br /&gt;
5. Installiere esp32 by Espressif Systems, V. 3.2.0 (Achtung, höhere Versionen scheinen nicht zu funktionieren .... oder nur dann wenn vorher bereits schon mal die Version 3.2.0 installiert worden war !!!) .  Die Installation kann mehrere Minuten dauern. &lt;br /&gt;
Ev. ist es hilfreich, im Menu File --&amp;gt; Preferences --&amp;gt; Additional Boards Manager URLs noch die folgende URL einzutragen: https://espressif.github.io/arduino-esp32/package_esp32_index.json &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
**Testcode compilieren:**&lt;br /&gt;
&lt;br /&gt;
6. Versuche folgenden Testcode zu kompilieren:&lt;br /&gt;
&lt;br /&gt;
```c&lt;br /&gt;
// test-hello-world for CYD&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;lvgl.h&amp;gt;&lt;br /&gt;
#include &amp;lt;TFT_eSPI.h&amp;gt;&lt;br /&gt;
#include &amp;lt;XPT2046_Touchscreen.h&amp;gt;&lt;br /&gt;
#define SCREEN_WIDTH 240&lt;br /&gt;
#define SCREEN_HEIGHT 320&lt;br /&gt;
/*LVGL draw into this buffer, 1/10 screen size usually works well. The size is in bytes*/&lt;br /&gt;
#define DRAW_BUF_SIZE (SCREEN_WIDTH * SCREEN_HEIGHT / 10 * (LV_COLOR_DEPTH / 8))&lt;br /&gt;
uint32_t draw_buf[DRAW_BUF_SIZE / 4];&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
    Serial.begin(115200);&lt;br /&gt;
    Serial.println(&amp;quot;LVGL Start&amp;quot;);&lt;br /&gt;
    lv_init();&lt;br /&gt;
    lv_display_t * disp;&lt;br /&gt;
    disp = lv_tft_espi_create(SCREEN_WIDTH, SCREEN_HEIGHT, draw_buf, sizeof(draw_buf));&lt;br /&gt;
    lv_display_set_rotation(disp, LV_DISPLAY_ROTATION_270);&lt;br /&gt;
    lv_obj_t * text_label = lv_label_create(lv_screen_active());&lt;br /&gt;
    lv_label_set_text(text_label, &amp;quot;Hello ZACplus Team !&amp;quot;);&lt;br /&gt;
    lv_obj_align(text_label, LV_ALIGN_CENTER,0,0);&lt;br /&gt;
    // static lv_style_t style_text_label;&lt;br /&gt;
    // lv_style_init(&amp;amp;style_text_label);&lt;br /&gt;
    // lv_style_set_text_font(&amp;amp;style_text_label, &amp;amp;lv_font_montserrat_18);&lt;br /&gt;
    // lv_obj_add_style(text_label, &amp;amp;style_text_label, 0);  &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
   lv_timer_handler(); &lt;br /&gt;
   delay(5); &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// end of testcode ----&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
7. IDE Einstellungen:  &lt;br /&gt;
&lt;br /&gt;
- Menu --&amp;gt; Tools --&amp;gt; Board --&amp;gt; esp32 --&amp;gt; ESP32 dev module&lt;br /&gt;
- Menu --&amp;gt; Tools --&amp;gt; FlashMode --&amp;gt; QIO&lt;br /&gt;
- Menu --&amp;gt; Tools --&amp;gt; Partition Scheme --&amp;gt; No OTA (2MB App / 2MB SPIFFS)&lt;br /&gt;
- Menu --&amp;gt; Tools --&amp;gt; Upload Speed --&amp;gt; 921600 (falls Probleme dann mit 115200 versuchen, ev. USB-Kabel austauschen)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Upload:&lt;br /&gt;
&lt;br /&gt;
Um den kompilierten code von der Arduino-IDE auf das CYD zu flashen ist es erforderlich dass der User die passenden Berechtigungen hat. Dazu muss er der Gruppe &amp;quot;dialout&amp;quot; zugeordnet werden, unter manchen Linuxen heisst die passende Gruppe auch uucp.&lt;br /&gt;
&lt;br /&gt;
Dieses macht man als root oder mit sudo:&lt;br /&gt;
&lt;br /&gt;
Add User to Dialout Group&lt;br /&gt;
To grant a user access to serial devices like /dev/ttyUSB0, they should be added to the appropriate group. On Debian-based systems like Ubuntu, the standard group is dialout.&lt;br /&gt;
Use the command &lt;br /&gt;
&lt;br /&gt;
sudo usermod -a -G dialout $USER&lt;br /&gt;
&lt;br /&gt;
to add the current user to this group, or replace $USER with the specific username. After adding the user, they must log out and log back in for the group membership change to take effect. On Arch-based distributions like Manjaro, the equivalent group is uucp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9. Sonstiges:&lt;br /&gt;
&lt;br /&gt;
- Menu --&amp;gt; File --&amp;gt; Preferences --&amp;gt; Auto save   disablen bzw. Haken entfernen !   Beschwerdebrief an Arduino-Entwickler verfassen und diesen mit Mordrohungen garnieren.&lt;br /&gt;
&lt;br /&gt;
- gutes Tutorial:  https://www.youtube.com/watch?v=FneWsC1clhc&amp;amp;t=299s&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10. Sofern der Testcode läuft kann man jetzt auch den Firmware-code im IDE-Editor hereinladenin Form der Datei &amp;quot;cyd_rig1n_good.ino&amp;quot; und kompilieren. Dazu muss aber vorher noch die Zeile&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;PubSubClient.h&amp;gt; auskommentiert werden, also so:&lt;br /&gt;
&lt;br /&gt;
// #include &amp;lt;PubSubClient.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Nun sollte es gehen.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=======================================================&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
## Raspberry Pi Zero 2 W als Server aufsetzen&lt;br /&gt;
------------------------------------------&lt;br /&gt;
&lt;br /&gt;
1. von der RaspberryPi-Webseite (https://www.raspberrypi.com/software/) das Programm RaspberryPi Imager downloaden und für das Modell &amp;quot;Raspberry Pi Zero 2 W&amp;quot; das passende OS (Raspberry Pi OS 64 Bit) auf eine SD-Karte installieren.  Vorher noch als &amp;quot;OS Anpassungen anwenden&amp;quot; unter &amp;quot;Allgemein&amp;quot; als Hostname &amp;quot;zacpluspiserver&amp;quot; und als username &amp;quot;pi&amp;quot; und als password &amp;quot;raspberry&amp;quot; angeben. Daneben unter &amp;quot;Dienste&amp;quot; &amp;quot;SSH aktivieren&amp;quot; anhaken und &amp;quot;Passwort zur Authentifizierung verwenden&amp;quot;.  Anschliessend den Schreibvorgang starten.&lt;br /&gt;
&lt;br /&gt;
2. Sich in einer Linux-Shell mit dem Befehl &amp;quot;nmap -sP 192.168.178.*&amp;quot; anzeigen lassen welche Rechner sich im lokalen Netzwerk befinden.&lt;br /&gt;
&lt;br /&gt;
3. SD-Karte bei Raspi Zero 2 W reinschieben und  diesen per USB-Kabel mit Strom versorgen (Netzteil mit min. 2A, besser mehr) --&amp;gt; er bootet&lt;br /&gt;
&lt;br /&gt;
4. Nochmal mit &amp;quot;nmap -sP 192.168.178.*&amp;quot; alle Rechner im Netz anzeigen lassen.  Derjenige dessen IP-Adresse neu hinzugekommen ist, ist unser RaspiZero.&lt;br /&gt;
&lt;br /&gt;
5. Aus der Shell mit ssh im RaspiZero einloggen, zB. &amp;quot;ssh pi@192.168.178.160&amp;quot;&lt;br /&gt;
&lt;br /&gt;
6. Danach landet man auf dem Raspi in einer Shell und kann dort nun regulär weiterarbeiten.&lt;br /&gt;
&lt;br /&gt;
   Optional:  Dort &amp;quot;sudo raspi-config&amp;quot; eingeben und unter Interface-options --&amp;gt; VNC --&amp;gt; enablen. Nun kann man von seinem Desktop aus mit dem Programm &amp;quot;VNC-Viewer&amp;quot; auch auf die Desktop-Oberfläche des RaspiZero remote zugreifen. Den VCN-Viewer kann man sich bei realvnc.com downloaden.&lt;br /&gt;
&lt;br /&gt;
7. In der Shell folgendes eintippern (ich spar mir ab jetzt die Anfuehrungszeichen):&lt;br /&gt;
&lt;br /&gt;
```bash&lt;br /&gt;
cd  ~&lt;br /&gt;
git clone git clone https://codeberg.org/case06/liquid&lt;br /&gt;
sudo su&lt;br /&gt;
apt-get install rrdtool&lt;br /&gt;
apt-get install bc cu lighttpd coreutils&lt;br /&gt;
exit&lt;br /&gt;
&lt;br /&gt;
```&lt;/div&gt;</summary>
		<author><name>Case</name></author>
	</entry>
</feed>