From f56c31bf6d59009b4419053177afbec1243fb8a7 Mon Sep 17 00:00:00 2001 From: Bernhard Heinloth <heinloth@cs.fau.de> Date: Mon, 11 Nov 2019 16:52:12 +0100 Subject: [PATCH] Add Arduino Support (again) --- INSTALL.md | 42 ++++++++++++++++++-- README.md | 16 ++++++++ firmware/{config.example.h => main/config.h} | 0 firmware/main/timecube.cpp | 2 +- firmware/sketch_timecube/accelerometer.cpp | 1 + firmware/sketch_timecube/accelerometer.h | 1 + firmware/sketch_timecube/config.h | 1 + firmware/sketch_timecube/sketch_timecube.ino | 1 + firmware/sketch_timecube/timelog.h | 1 + 9 files changed, 61 insertions(+), 4 deletions(-) rename firmware/{config.example.h => main/config.h} (100%) create mode 120000 firmware/sketch_timecube/accelerometer.cpp create mode 120000 firmware/sketch_timecube/accelerometer.h create mode 120000 firmware/sketch_timecube/config.h create mode 120000 firmware/sketch_timecube/sketch_timecube.ino create mode 120000 firmware/sketch_timecube/timelog.h diff --git a/INSTALL.md b/INSTALL.md index 32eb05a..81fc15d 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -1,5 +1,39 @@ Installation der Firmware -------------------------- +========================= + +Die Firmware des Zeitwürfels kann entweder über *Arduino IDE* oder *ESP IDF* übersetzt und übertragen werden. + + +Arduino IDE +----------- + +*Arduino* erlaubt einen schnellen Einstieg, allerdings sind erweiterte (stromsparendere) Konfigurationsmöglichkeiten hier nicht möglich. + +### Vorbereitung + + 1. Aktuelle [Arduino IDE](https://www.arduino.cc/en/main/software) installieren + 2. Unter Windows den (unsignierten) [FireBeetle ESP32 Treiber](https://git.oschina.net/dfrobot/FireBeetle-ESP32/raw/master/FireBeetle-ESP32.inf) installieren. + 3. Arduino Umgebung für den FireBeetle ESP32 gemäß [DFRobot Wiki](https://wiki.dfrobot.com/FireBeetle_ESP32_IOT_Microcontroller(V3.0)__Supports_Wi-Fi_&_Bluetooth__SKU__DFR0478) hinzufügen: + * Unter *Datei* / *Voreinstellungen* als *Zusätzliche Boardverwalter-URLs* die Adresse `http://download.dfrobot.top/FireBeetle/package_esp32_index.json` eingeben und mittels *OK* bestätigen + * Unter *Werkzeuge* / *Board: ...* den *Boardverwalter...* öffnen, das automatische Update abwarten und dann den *FireBeetle-ESP32-Mainboard by DFRobot DFRDuino* in einer aktuellen Version (0.0.9) installieren + + +### Verwendung + + 1. Die Arduino IDE starten und `firmware/sketch_timecube/sketch_timecube.ino` öffnen -- weitere Tabs mit den restlichen Dateien werden ebenfalls geladen + 2. Unter *Werkzeuge* / *Board: ...* den *FireBeetle-ESP32* auswählen + 3. Die Datei `config.h` anpassen, ggf. weitere Änderungen vornehmen + 4. Mit *Überprüfen/Kompilieren* unter *Sketch* die getätigten Änderungen prüfen. + 5. Den Zeitwürfel per USB mit dem PC verbinden und unter *Werkzeuge* / *Port* entsprechend auswählen (z.B. `/dev/ttyUSB0`) + 6. Ebenfalls unter *Werkzeuge* den *Uploadspeed* auf `115200` stellen und ebenda *Serieller Monitor* starten + 7. Unter *Sketch* / *Hochladen* das Übertragen der Firmware starten. Und warten. + 8. Auf dem seriellen Monitor erscheint eine Ausgabe nach erfolgreichem Start. + + +ESP IDF +------- + +Das *Espressif IoT Development Framework* ist das offizielle Entwicklungsframework für den ESP32 und erlaubt (durch die Datei `sdkconfig`) eine erweiterte Konfiguration des zugrunde liegenden [FreeRTOS](https://www.freertos.org/)-Kernels, wie z.B. eine niedrigere Taktfrequenz. ### Voraussetzungen @@ -11,6 +45,8 @@ Folgende Komponenten werden benötigt: ### Vorbereitung +Die Konfiguration in der Datei `firmware/main/config.h` muss angepasst werden. + Auf einem debianoiden Linux mit aktueller Version können die benötigten Komponenten wie folgt installiert werden: # Dieses Repo für Firmware rekursiv auschecken @@ -37,9 +73,9 @@ Nach der Vorbereitung im `timecube`-Verzeichnis folgende Schritte ausführen: make -### Flashen des Würfels +### Flashen des Zeitwürfels -Mittels `make flash` kann die Software dann auf den Würfel geflasht werden. +Mittels `make flash` kann die Firmware dann auf den via USB verbundenen Würfel übertragen werden. Hat man mehr als einen ESP32 angeschlossen, dann kann/muss man mittel Umgebungsvariable `ESPPORT` angeben, welcher Chip geflasht werden soll: `ESPPORT=/dev/ttyUSB5 make flash` diff --git a/README.md b/README.md index 79c9d33..d9cab9a 100644 --- a/README.md +++ b/README.md @@ -28,6 +28,22 @@ Anleitung * [Anleitung zum Bauen der Firmware für den Würfel](INSTALL.md) +Lizenz +------ + +Der Zeitwürfel ist Freie Software: Sie können es unter den Bedingungen +der GNU Affero General Public License, wie von der Free Software Foundation, +Version 3 der Lizenz, weiter verteilen und/oder modifizieren. + +Der Zeitwürfel wird in der Hoffnung, dass es nützlich sein wird, aber +OHNE JEDE GEWÄHRLEISTUNG, bereitgestellt; sogar ohne die implizite +Gewährleistung der MARKTFÄHIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. +Siehe die [GNU Affero General Public License](LICENSE) für weitere Details. + +Sie sollten eine Kopie der GNU Affero General Public License zusammen mit diesem +Programm erhalten haben. Wenn nicht, siehe https://www.gnu.org/licenses/ . + + Grundüberlegungen ----------------- diff --git a/firmware/config.example.h b/firmware/main/config.h similarity index 100% rename from firmware/config.example.h rename to firmware/main/config.h diff --git a/firmware/main/timecube.cpp b/firmware/main/timecube.cpp index 46d12ee..c037951 100644 --- a/firmware/main/timecube.cpp +++ b/firmware/main/timecube.cpp @@ -11,7 +11,7 @@ #include <driver/rtc_io.h> #include <driver/adc.h> -#include "../config.h" +#include "config.h" #include "accelerometer.h" #include "timelog.h" diff --git a/firmware/sketch_timecube/accelerometer.cpp b/firmware/sketch_timecube/accelerometer.cpp new file mode 120000 index 0000000..a10fea9 --- /dev/null +++ b/firmware/sketch_timecube/accelerometer.cpp @@ -0,0 +1 @@ +../main/accelerometer.cpp \ No newline at end of file diff --git a/firmware/sketch_timecube/accelerometer.h b/firmware/sketch_timecube/accelerometer.h new file mode 120000 index 0000000..9e2c372 --- /dev/null +++ b/firmware/sketch_timecube/accelerometer.h @@ -0,0 +1 @@ +../main/accelerometer.h \ No newline at end of file diff --git a/firmware/sketch_timecube/config.h b/firmware/sketch_timecube/config.h new file mode 120000 index 0000000..bb79bec --- /dev/null +++ b/firmware/sketch_timecube/config.h @@ -0,0 +1 @@ +../main/config.h \ No newline at end of file diff --git a/firmware/sketch_timecube/sketch_timecube.ino b/firmware/sketch_timecube/sketch_timecube.ino new file mode 120000 index 0000000..7cefa8a --- /dev/null +++ b/firmware/sketch_timecube/sketch_timecube.ino @@ -0,0 +1 @@ +../main/timecube.cpp \ No newline at end of file diff --git a/firmware/sketch_timecube/timelog.h b/firmware/sketch_timecube/timelog.h new file mode 120000 index 0000000..7f09873 --- /dev/null +++ b/firmware/sketch_timecube/timelog.h @@ -0,0 +1 @@ +../main/timelog.h \ No newline at end of file -- GitLab