Firmware

Aus wiki
Zur Navigation springen Zur Suche springen

Wichtig

Deine LEDs sollten nicht mit dem arduclock Board verbunden sein, wenn du das Board nur über die USB Schnittstelle mit deinem Laptop/PC verbindest. Durch den hohen Strombedarf kann dein Laptop/PC schaden nehmen.


Configuration.h

In der Configuration.h Datei werden Einstellungen für die Firmware vorgenommen. In der Datei sind Variablen deklariert, deren Werte verändert werden können. Damit du den Code besser verstehen kannst, werden hinter zwei // (Schrägstrichen) Kommentare verwendet. Einzelne Variablen lassen sich durch zwei // (Schrägstriche) auskommentieren. D.h. die Variablen sind deaktiviert und werden vom Compiler nicht beachtet. In der Hilfe wird dir noch einmal die Kommentarfunktion erklärt. Die Configuration.h Datei lässt sich am Besten mit einem Editor öffnen der auch Zeilennummern anzeigt z.B. "Sublime Text" oder Notepad++ für MAC/Windows. Zeilennummern haben den Vorteil, dass du die hier im Wiki beschriebenen Konfigurationsschritte leichter in deiner Datei finden kannst.

Updates

Updates der Firmware können über USB, OTA oder den Webserver der Uhr eingespielt werden. Um die Firmware über USB zu verändern wird ein FTDI Programmer mit 3.3V Ausgang benötigt.

USB

Updates der Firmware können über USB aufgespielt werden (FTDI Programmer mit 3,3V erforderlich). Achte auf die Spannung von 3,3V wenn du die UART Schnittstelle benutzt! Damit auch LEDs mit einer höheren "logic input voltage" vom ESP angesprochen werden können, besitzt das arduclock Board einen integrierten Logikpegelwandler. Aufgrund technischer Restriktionen muss der gewählte digitale Pin für die LEDs geändert werden. (Der Levelshifter zieht den Pin auf High. Pin D8 muss aber beim Start auf Low sein). Deshalb muss in der Firmware die Definition für "PIN_LEDS_DATA" und "PIN_BUZZER" umgeschrieben werden. Editiere dazu die Datei "Configuration.h". (Dies ist nur notwendig, wenn die Firmware von der offiziellen Seite herunterladen wurde). Unter Downloads findest du eine angepasste Firmware Version für das arduclock Board.


Configuration.h

Zeile 190

#define PIN_BUZZER 15 // D8 LOW_Start

Zeile 193

#define PIN_LEDS_DATA 14 // D5 Levelshifter



Benötigte Werkzeuge

Folgende Programme, Hardware, Firmware und Bibliotheken werden benötigt:


Arduino IDE for Windows/MAC (1.8.13)

FTDI Adapter FT232RL 3.3V (WICHTIG: 3.3V)

Firmware: Downloads


Benötigte Bibliotheken: (empfohlene Version in Klammern)

Einige Bibliotheken können direkt über den Boardverwalter bzw. über die Bibliotheksverwaltung in der Arduino IDE heruntergeladen werden. Bibliotheken die dort nicht zu finden sind, bekommt man auf Github über die Google Suchmaschine.

In den Einstellungen der Arduino IDE muss unter "zusätzliche Boardverwalter-URL" die folgende Adresse eingetragen sein:

http://arduino.esp8266.com/stable/package_esp8266com_index.json


esp8266 by ESP8266 Community (2.7.4) <<-- THIS IS IMPORTANT!

Arduino_JSON by Arduino (0.1.0)

Adafruit NeoPixel by Adafruit (1.8.0)

Adafruit Unified Sensor by Adafruit (1.1.4)

ArduinoHttpClient by Arduino (0.4.0)

ArduinoOTA by Juraj Andressy (1.0.4)

DHT sensor library by Adafruit (1.4.1)

DS3232RTC by Jack Christensen (2.0.0)

IRremoteESP8266 by Sebastien Warin (2.7.14)

Time by Michael Margolis (1.6.1)

SunRise by Cyrus Rahman (2.0.2)


Bibliothek für die Integration eines Displays:

OLED SSD1306



ArduinoOTA benötigt Python 2.7.x (Python 3.x ist nicht supported).

Python kann man sich auf python.org herunterladen. Der Link dazu:

https://www.python.org/downloads/

Wichtig: bei Costomize Python "Add python.exe to Path" aktivieren. Nach der Installation sollte ein Reboot erfolgen.

Installation Python
















Hinweis für MAC user: Sobald die Sourcen über die Boardverwaltung zum ESP8266 Board upgedatet werden, bekomme ich beim Kompilieren in der ArduinoIDE Fehler angezeigt. Mir hilft dieser Fix:

~/Library/Arduino15/packages/esp8266/tools/python3/3.7.2-post1

unlink python3

ln -s /usr/local/bin/python3 python3



Ergänzung Firmware "plus"

Die Firmware "plus" benötigt zusätzliche Bibliotheken und eine Arduino IDE Erweiterung.


  • Openweather API-Key

https://openweathermap.org/ für die Wetterinformationen.


  • Software Serial für ESP8266:

https://circuits4you.com/2016/12/14/software-serial-esp8266/

Link zur Library: https://circuits4you.com/wp-content/uploads/2016/11/SoftwareSerial.zip

Oder hier: Bibliothek "Software Serial"


  • MP3-Player:

https://wiki.dfrobot.com/DFPlayer_Mini_SKU_DFR0299

Link zur Library: https://github.com/DFRobot/DFRobotDFPlayerMini/archive/1.0.5.zip

Oder hier: Bibliothek "DFRobotDFPlayerMini"


  • BME280 (Über den Bibliotheksverwalter in der Arduino IDE):

"Adafruit bme280" Bibliothek. --> Adafruit_BME280.h (2.1.4)

"Adafruit Unified Sensor" Bibliothek --> Adafruit_Sensor.h (1.1.4)


  • ESP8266 Sketch Data Upload:

Das Favicon, Events, Animationen, html Seiten und css Files der mp3 Firmware liegen im SPIFFS des ESP. Die Firmware kann direkt auf diesen Flash Speicher zugreifen und Daten speichern. Die Informationen sind auch nach einem Neustart verfügbar. Um Daten in den ESP Speicher hochzuladen wird eine Erweiterung für die Arduino IDE benötigt. Damit kann das "data" Verzeichniss über "Sketch Data upload" übertragen werden (vorher den Seriellen Monitor zumachen!). Beim Upload muss der ESP in den Upload-Modus versetzt werden. Wie das geht, wird im Unterkapitel 3.3 Firmware#Firmware-Upload-Modus beschrieben.


ESP8266 Sketch Data Upload














Wenn du den Menüpunkt "ESP8266 Sketch Data Upload" nicht hast, hier die Anleitung dazu:

https://github.com/esp8266/arduino-esp8266fs-plugin/

oder

https://www.az-delivery.de/blogs/azdelivery-blog-fur-arduino-und-raspberry-pi/entwurf-daten-in-den-flash-speicher-des-esp-ablegen


Arduino IDE Compiler Einstellungen

Über Werkzeuge das Board: "Generic ESP8266 Module" auswählen und die unteren Optionen auswählen.


ESP8266
















Compiler-Options: (Empfohlen für das arduclock Board)

Board: "Generic ESP8266 Module"

Builtin LED: "2"

Upload Spee: "115200"

CPU Frequency: "80 MHz"

Crystal Frequency: "26 MHz"

Flash Size: "4M (FS:2MB OTA:1019KB)"

Flash Mode: "DOUT (compatible)"

Flash Frequency: "40MHz"

Reset Method: "no dtr (aka ck)"

Debug port: "Disabled"

Debug Level: "None"

IwIP Variant: "v2 Lower Memory"

VTables: "Flash"

Exceptions: "Legacy (new can return nullptr)".

Erase Flash: "Only Sketch"

Espressif FW: "nonos-sdk 2.2.1+119(191122)"

SSL Support: "All SSL ciphers"

Port: "your USB port"



Ergänzung Firmware "plus"

Die Firmware funktioniert mit diesen veränderten Compiler Einstellungen am Besten:

CPU Frequency: "160 MHz"

SSL Support: "Basic SSL ciphers"


Compiler Options


























Firmware-Upload-Modus

Das arduclock Board wie auf dem Bild mit dem FTDI Programmer verbinden. Dabei auf die Polung und die richtige Spannung von 3.3V achten! Wichtig: Deine LEDs sollten nicht mit dem arduclock Board verbunden sein, wenn du das Board nur über die USB Schnittstelle mit deinem Laptop/PC verbindest.

Falls du einen Touch Sensor angeschlossen hast, muss dieser vom arduclock Board getrennt werden, sonst kommt es beim Kompilieren zu Fehlern!

Wähle den benutzten USB-Port in den Compiler-Optionen aus. Jetzt kannst du die Firmware kompilieren und hochladen.


FTDI



























Während die Arduino IDE die Firmware kompiliert, muss der ESP in den Firmware-Upload-Modus versetzt werden. Sobald deine Arduino IDE "Connecting..." anzeigt, musst du beide Tasten (RESET & FLASH) gleichzeitig drücken und dann erst die Reset-Taste loslassen. Der ESP wird geflasht!

Arduino IDE möchte sich verbinden



















OTA

Wie weiter oben bereits erwähnt, wird die Bibliothek "ArduinoOTA" mit eingebunden. OTA (Over the Air) erlaubt es dir über die ArduinoIDE dein Board direkt über WLAN zu flashen. Wichtig: Es muss sich bereits eine Firmware mit der ArduinoOTA Bibliothek auf dem arduclock Board befinden, damit OTA funktioniert!


ArduinoOTA benötigt Python 2.7.x (Python 3.x ist nicht supported).

Python kann man sich auf python.org herunterladen. Der Link dazu:

https://www.python.org/downloads/

Wichtig: bei Costomize Python "Add python.exe to Path" aktivieren. Nach der Installation sollte ein Reboot erfolgen.

Installation Python
















OTA

Möchte man nun sein Sketch auf das arduclock Board hochladen, wählt man in der Arduino IDE unter "Port" die entsprechende Netzwerkschnittstelle. Das geht natürlich erst, wenn du mit deinem Heimnetzwerk verbunden bist. Wie das geht steht im Kapitel Erste Schritte. Wird das Board nicht angezeigt, reicht es oft die Arduino IDE neu zu starten.




OTA Uploads sind Passwort geschützt. Das Passwort lautet: 1234

Das Passwort kann in der Configuration.h Datei in Zeile 18 geändert werden.


Configuration.h

Zeile 18

#define OTA_PASS "1234"


Mehr Informationen rund um das Thema "OTA" findest du unter diesem Link: http://arduino.esp8266.com/Arduino/versions/2.3.0/doc/ota_updates/readme.html



Bei einem Update über OTA oder dem Webbrowser können alle Sensoren und die LEDs am Board angeschlossen bleiben.



Webbrowser

Die Firmware bietet dir die Möglichkeit auch Updates über den Webbrowser durchzuführen. Hierfür rufst du folgende Adresse in deinem Webbrowser auf: "http://your_clocks_ip/update"

Es öffnet sich die folgende Maske.

Update über den Webbrowser








Als nächstes musst du deine kompilierte Binärdatei hochladen. Diese Datei exportierst du über die Arduino IDE.

Kompilierte Binärdatei exportieren












Du kannst über den Befehl "reset" auch einen Neustart der Uhr erzwingen: http://your_clocks_ip/reset

Qlockwork mp3 Version:

Reset: http://your_clocks_ip/reboot

WLAN Parameter löschen: http://your_clocks_ip/wifireset


Weitere Befehle, die über den Webbrowser funktionieren, sind in der [Readme] Datei dokumentiert.



Hinweis: Die Verwendung der Qlockwork-Firmware erfolgt auf eigene Gefahr. Eine Änderungen der Firmware kann die auf dem arduclock Board befindliche Sicherung auslösen. Siehe hierzu das Kapitel LEDs.