Zacplus cyd firmware readme: Unterschied zwischen den Versionen
Case (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „# Step-by-step guide > zum kompilieren und flashen der Mess-Firmware auf dem CYD-basierten Messrig. > > **Stand: 04.09.2025** <<<<<<< HEAD:Hardware/Messinter…“) |
(kein Unterschied)
|
Neueste Überarbeitung vom 9. Oktober 2025, 21:31 Uhr
- Step-by-step guide
> zum kompilieren und flashen der Mess-Firmware auf dem CYD-basierten Messrig. > > **Stand: 04.09.2025**
<<<<<<< HEAD:Hardware/Messinterface/src/README.md
- Vorbereitung
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.
=
Stand: 04.09.2025 >>>>>>> d39efec (added modified version of lv_conf.h):Hardware/Messinterface/src/howto-firmware-setup.txt
- Installiere folgende Libs:**
1. Installiere Adafruit INA219 by Adafruit, V. 1.2.3 oder höher.
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 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 "How do I know if a display is a CYD?"
3. Installiere XPT2046_Touchscreen by Paul Stoffregen, V. 1.4 oder höher.
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
/* clang-format off */
- if 0 /*Set it to "1" to enable content*/
um in
/* clang-format off */
- if 1 /*Set it to "1" to enable content*/
Dann ändere die Zeile
/*Interface for TFT_eSPI*/
- define LV_USE_TFT_ESPI 0
um in
/*Interface for TFT_eSPI*/
- define LV_USE_TFT_ESPI 1
Nun ändere noch die Zeilen
/*Montserrat fonts with ASCII range and some symbols using bpp = 4
*https://fonts.google.com/specimen/Montserrat*/
- define LV_FONT_MONTSERRAT_8 0
- define LV_FONT_MONTSERRAT_10 0
- define LV_FONT_MONTSERRAT_12 0
- define LV_FONT_MONTSERRAT_14 0
- define LV_FONT_MONTSERRAT_16 0
- define LV_FONT_MONTSERRAT_18 0
- define LV_FONT_MONTSERRAT_20 0
- define LV_FONT_MONTSERRAT_22 0
- define LV_FONT_MONTSERRAT_24 0
um in
/*Montserrat fonts with ASCII range and some symbols using bpp = 4
*https://fonts.google.com/specimen/Montserrat*/
- define LV_FONT_MONTSERRAT_8 1
- define LV_FONT_MONTSERRAT_10 1
- define LV_FONT_MONTSERRAT_12 1
- define LV_FONT_MONTSERRAT_14 1
- define LV_FONT_MONTSERRAT_16 1
- define LV_FONT_MONTSERRAT_18 1
- define LV_FONT_MONTSERRAT_20 1
- define LV_FONT_MONTSERRAT_22 1
- define LV_FONT_MONTSERRAT_24 1
Das sollte alles gewesen sein.
- Installiere folgende boards:**
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. Ev. ist es hilfreich, im Menu File --> Preferences --> Additional Boards Manager URLs noch die folgende URL einzutragen: https://espressif.github.io/arduino-esp32/package_esp32_index.json
- Testcode compilieren:**
6. Versuche folgenden Testcode zu kompilieren:
```c // test-hello-world for CYD
- include <lvgl.h>
- include <TFT_eSPI.h>
- include <XPT2046_Touchscreen.h>
- define SCREEN_WIDTH 240
- define SCREEN_HEIGHT 320
/*LVGL draw into this buffer, 1/10 screen size usually works well. The size is in bytes*/
- define DRAW_BUF_SIZE (SCREEN_WIDTH * SCREEN_HEIGHT / 10 * (LV_COLOR_DEPTH / 8))
uint32_t draw_buf[DRAW_BUF_SIZE / 4];
void setup() {
Serial.begin(115200);
Serial.println("LVGL Start");
lv_init();
lv_display_t * disp;
disp = lv_tft_espi_create(SCREEN_WIDTH, SCREEN_HEIGHT, draw_buf, sizeof(draw_buf));
lv_display_set_rotation(disp, LV_DISPLAY_ROTATION_270);
lv_obj_t * text_label = lv_label_create(lv_screen_active());
lv_label_set_text(text_label, "Hello ZACplus Team !");
lv_obj_align(text_label, LV_ALIGN_CENTER,0,0);
// static lv_style_t style_text_label;
// lv_style_init(&style_text_label);
// lv_style_set_text_font(&style_text_label, &lv_font_montserrat_18);
// lv_obj_add_style(text_label, &style_text_label, 0);
}
void loop() {
lv_timer_handler(); delay(5);
}
// end of testcode ---- ```
7. IDE Einstellungen:
- Menu --> Tools --> Board --> esp32 --> ESP32 dev module - Menu --> Tools --> FlashMode --> QIO - Menu --> Tools --> Partition Scheme --> No OTA (2MB App / 2MB SPIFFS) - Menu --> Tools --> Upload Speed --> 921600 (falls Probleme dann mit 115200 versuchen, ev. USB-Kabel austauschen)
8. Upload:
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 "dialout" zugeordnet werden, unter manchen Linuxen heisst die passende Gruppe auch uucp.
Dieses macht man als root oder mit sudo:
Add User to Dialout Group 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. Use the command
sudo usermod -a -G dialout $USER
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.
9. Sonstiges:
- Menu --> File --> Preferences --> Auto save disablen bzw. Haken entfernen ! Beschwerdebrief an Arduino-Entwickler verfassen und diesen mit Mordrohungen garnieren.
- gutes Tutorial: https://www.youtube.com/watch?v=FneWsC1clhc&t=299s
10. Sofern der Testcode läuft kann man jetzt auch den Firmware-code im IDE-Editor hereinladenin Form der Datei "cyd_rig1n_good.ino" und kompilieren. Dazu muss aber vorher noch die Zeile
- include <PubSubClient.h> auskommentiert werden, also so:
// #include <PubSubClient.h>
Nun sollte es gehen.
===========================================
- Raspberry Pi Zero 2 W als Server aufsetzen
1. von der RaspberryPi-Webseite (https://www.raspberrypi.com/software/) das Programm RaspberryPi Imager downloaden und für das Modell "Raspberry Pi Zero 2 W" das passende OS (Raspberry Pi OS 64 Bit) auf eine SD-Karte installieren. Vorher noch als "OS Anpassungen anwenden" unter "Allgemein" als Hostname "zacpluspiserver" und als username "pi" und als password "raspberry" angeben. Daneben unter "Dienste" "SSH aktivieren" anhaken und "Passwort zur Authentifizierung verwenden". Anschliessend den Schreibvorgang starten.
2. Sich in einer Linux-Shell mit dem Befehl "nmap -sP 192.168.178.*" anzeigen lassen welche Rechner sich im lokalen Netzwerk befinden.
3. SD-Karte bei Raspi Zero 2 W reinschieben und diesen per USB-Kabel mit Strom versorgen (Netzteil mit min. 2A, besser mehr) --> er bootet
4. Nochmal mit "nmap -sP 192.168.178.*" alle Rechner im Netz anzeigen lassen. Derjenige dessen IP-Adresse neu hinzugekommen ist, ist unser RaspiZero.
5. Aus der Shell mit ssh im RaspiZero einloggen, zB. "ssh pi@192.168.178.160"
6. Danach landet man auf dem Raspi in einer Shell und kann dort nun regulär weiterarbeiten.
Optional: Dort "sudo raspi-config" eingeben und unter Interface-options --> VNC --> enablen. Nun kann man von seinem Desktop aus mit dem Programm "VNC-Viewer" auch auf die Desktop-Oberfläche des RaspiZero remote zugreifen. Den VCN-Viewer kann man sich bei realvnc.com downloaden.
7. In der Shell folgendes eintippern (ich spar mir ab jetzt die Anfuehrungszeichen):
```bash cd ~ git clone git clone https://codeberg.org/case06/liquid sudo su apt-get install rrdtool apt-get install bc cu lighttpd coreutils exit
```