ESP8266 Programmierung

Mathias
Beiträge: 5227
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: ESP8266 Programmierung

Beitrag von Mathias »

Mit 2.6.0 scheint es zu funktionieren.
Zu früh gefreut, jetzt spinnt auch diese. :roll:
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

PascalDragon
Beiträge: 520
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: ESP8266 Programmierung

Beitrag von PascalDragon »

Mathias hat geschrieben:
So 16. Jan 2022, 17:01
Ich hatte mal den ESP32 Compiler probiert.
Da war er sogar so nett und hat in die Fehlermeldung geschrieben, das folgende Paket noch installiert werden müssen:

Code: Alles auswählen

sudo apt install python3-pip
sudo apt install python3.8-venv
Das ist nicht der Compiler, der das schreibt, sondern das SDK von Espressif.
FPC Compiler Entwickler

Mathias
Beiträge: 5227
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: ESP8266 Programmierung

Beitrag von Mathias »

PascalDragon hat geschrieben:
Mo 17. Jan 2022, 13:48
Mathias hat geschrieben:
So 16. Jan 2022, 17:01
Ich hatte mal den ESP32 Compiler probiert.
Da war er sogar so nett und hat in die Fehlermeldung geschrieben, das folgende Paket noch installiert werden müssen:

Code: Alles auswählen

sudo apt install python3-pip
sudo apt install python3.8-venv
Das ist nicht der Compiler, der das schreibt, sondern das SDK von Espressif.
Sowas habe ich schon vermutet, habe es nur etwas blöd formuliert .
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5069
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: ESP8266 Programmierung

Beitrag von af0815 »

Unter Windows habe ich 1.8.19
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5069
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: ESP8266 Programmierung

Beitrag von af0815 »

Socke hat geschrieben:
Sa 15. Jan 2022, 23:47
Mathias hat geschrieben:
Sa 15. Jan 2022, 15:43
Schade, das das FPC Team das (noch) nicht im Griff hat. Da hat Arduino und Sloeber die Nase vorn.
Es gibt ja immerhin ein Ticket dazu: https://gitlab.com/freepascal.org/fpc/s ... sues/30294
Falls es wem Interessiert, es hat da einiges an Bewegung bzw. Überlegungen gegeben. Das Thema dürfte für einige Bereiche bereits diskutiert worden sein. Mal sehen was im nächsten (oder weiter entfernten) Trunk dann auftaucht. Eines ist klar, es ist nicht trivial.

Danke an Socke für den Link.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Mathias
Beiträge: 5227
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: ESP8266 Programmierung

Beitrag von Mathias »

af0815 hat geschrieben:
Mo 17. Jan 2022, 18:22
Unter Windows habe ich 1.8.19
Ich habe es gerade mit einem nativen Windows 8.1 probiert. Genau das gleiche Problem. Ich habe bald das Gefühl, das es an den Platinen liegt.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 5227
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: ESP8266 Programmierung

Beitrag von Mathias »

@af0815
Musstest du irgend eine Taste auf deinem ESP8266 drücken ?
Das gab mir einer als Tip im Arduino Forum, aber gebracht hat es nichts.
Ich habe auch nach den Tasten gegoogelt, da steht, das diese nur gebraucht werden, wen man eine externen Programmer verwendet.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5069
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: ESP8266 Programmierung

Beitrag von af0815 »

Mathias hat geschrieben:
Di 18. Jan 2022, 16:27
@af0815
Musstest du irgend eine Taste auf deinem ESP8266 drücken ?
Ich habe auf den ESP keine Tasten und auch keine USB-Buchse.

Ich musste 3 Brücken setzen und den USB-RS232 Adapter richtig verbinden. Nach dem Programmieren sind die Brücken tw. wegzunehmen und tw. zu ändern für den Betrieb. Habe ich aber in der Doku bei mir von AZ-Delivery gefunden.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Mathias
Beiträge: 5227
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: ESP8266 Programmierung

Beitrag von Mathias »

Dann sieht deiner anders aus als meiner.
Im Anhang ein Bild von meinem.
Dateianhänge
H90c3fc69b26e45e985eb2df7c91b576dd.jpg
H90c3fc69b26e45e985eb2df7c91b576dd.jpg (78.89 KiB) 934 mal betrachtet
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5069
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: ESP8266 Programmierung

Beitrag von af0815 »

Meiner ist kleiner als deiner :-)
esp8266.jpeg
esp8266
(138.91 KiB) Noch nie heruntergeladen
Ich will die kleinen Versionen verwenden, da ich damit plane im Wohnwagen diverse Fühler damit WIFI fähig zu machen. Ich möchte auch den Strom minimieren und das geht nur damit so unnötige Fresser wie USB-RS232 Umsetzer nicht ins Design aufzunehmen. Das heißt den esp8266 auch in den tiefen Schlaf zu schicken, wenn keine Messungen anstehen. Als ersten Sensor verwende ich einmal einen DS18B20 der ist Onewire und man kann einige Sensoren an einen einzigen Pin festmachen. In Arduino habe ich schon Daten auf einer Weboberfläche geschafft (war leicht, weil das Beispiel sowieso vorhanden war :-) )

Deswegen habe ich mich für den esp8266 entschieden. Klein, vielleicht Stromsparend aber trotzdem kommunikativ.

Die Platinengröße von dir erreiche ich mit meinem stm32. Dort habe ich keine Rücksicht genommen.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Mathias
Beiträge: 5227
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: ESP8266 Programmierung

Beitrag von Mathias »

Mathias hat geschrieben:
So 16. Jan 2022, 19:29
af0815 hat geschrieben:
So 16. Jan 2022, 18:27
Unter Arduino für beide Prozessoren kein Problem. Sowohl der esp8266 als auch der esp32 gwhen out of the box unter Win10, wenn man beachtet, das sich der Comport ändert, weil es ein anderes Gerät ist.
Ich habe es auf dem Laptop auch gerade probiert, das gleiche Problem.
USB-Kabel hab ich auch schon andere probiert.

Code: Alles auswählen

esptool.py v3.0
Serial port /dev/ttyUSB0
Connecting........_____....._____....._
Traceback (most recent call last):
  File "/home/tux/.arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/upload.py", line 66, in <module>
    esptool.main(cmdline)
  File "/home/tux/.arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/esptool/esptool.py", line 3552, in main
    esp.connect(args.before, args.connect_attempts)
  File "/home/tux/.arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/esptool/esptool.py", line 522, in connect
    last_error = self._connect_attempt(mode=mode, esp32r0_delay=True)
  File "/home/tux/.arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/esptool/esptool.py", line 499, in _connect_attempt
    self.sync()
  File "/home/tux/.arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/esptool/esptool.py", line 437, in sync
    self.command(self.ESP_SYNC, b'\x07\x07\x12\x20' + 32 * b'\x55',
  File "/home/tux/.arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/esptool/esptool.py", line 396, in command
    if byte(data, 0) != 0 and byte(data, 1) == self.ROM_INVALID_RECV_MSG:
  File "/home/tux/.arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/esptool/esptool.py", line 138, in byte
    return bitstr[index]
IndexError: index out of range
IndexError: index out of range
Das beste wird wohl sein, wen ich mich im Arduino Forum melde.
Heute habe ich nochmals einen Anlauf genommen. Nun habe ich noch meinen letzten/dritten Original verpackten ESP8266 ausgepackt. Dieser scheint perfekt zu laufen, vorallem in der Arduino IDE.

Nun habe ich einen Cross-Compiler mit fpcupdeluxe für den ESP8266 gebaut. In diesem habe ich die Plattform auf FreeRTOS/xetensa/lx106 gestellt. Den Debugger deaktiviert und F9 gedrückt. Und es kompilierte fehlerfrei. In meinem Projektordner hat es eine *.bin gegeben.
Diese habe ich mit folgendem Kommando hochgeladen.

Code: Alles auswählen

/bin/python3 -I /n4800/DATEN/Programmierung/Lazarus/Tutorials/Embedded/Xtensa/ESP8266/UP_Loader/upload.py --chip esp8266 --port /dev/ttyUSB0 --baud 115200 --before default_reset --after hard_reset write_flash 0x0 /n4800/DATEN/Programmierung/Lazarus/Tutorials/Embedded/Xtensa/ESP8266/Erster_Versuch/Project1.bin
Welches auch fehlerfrei durchlief. die Python-Scripte habe ich von Arduino kopiert.

Nun wollte ich einen Blinker mit den Sourcen, welche ich weiter oben gefunden habe ausprobieren, nur bleibt da die LED dunkel. :roll:

Code: Alles auswählen

program blink;

type
  Tgpio_config = record
    pin_bit_mask: uint32;  // Pin mask of pins to configure
    mode: integer;         // 0 = disabled, 1 = input, 2 = output, 6 = output open drain
    pull_up_en: integer;   // 0 = disabled, 1 = enabled
    pull_down_en: integer; // 0 = disabled, 1 = enabled
    intr_type: integer;    // 0 = disabled, 1 = positive edge, 2 = negative edge, 3 = any edge, 4 = low level, 5 = high level
  end;

const
  // GPIO pin number for pin connected to LED
  LED = 2;  // NodeMCU LED on ESP-12E module

// Return value is error code, 0 = success
function gpio_config(constref gpio_cfg: Tgpio_config): integer; external;

// mode: GPIO_MODE_DISABLE = 0, GPIO_MODE_INPUT = 1, GPIO_MODE_OUTPUT = 2, GPIO_MODE_OUTPUT_OD = 6
function gpio_set_direction(gpio_num: integer; mode: integer): integer; external;

// level: Low = 0, High = 1
function gpio_set_level(gpio_num: integer; level: uint32): integer; external;

procedure vTaskDelay(xTicksToDelay: uint32); external;

var
  cfg: Tgpio_config;

begin
  cfg.pin_bit_mask := 1 shl ord(LED);
  cfg.mode := 1;
  cfg.pull_up_en := 0;
  cfg.pull_down_en := 0;
  cfg.intr_type := 0;
  gpio_config(cfg);

  gpio_set_direction(LED, 2);
  repeat
    writeln('.');
    gpio_set_level(LED, 0);
    vTaskDelay(100);
    writeln('*');
    gpio_set_level(LED, 1);
    vTaskDelay(100);
  until false;
end.       
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5069
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: ESP8266 Programmierung

Beitrag von af0815 »

Ich habe mir eine eigene Version mit den originalen Toolchain gebaut, erst mit dem ist es gegangen. Ich habe es mit dem reinen fpcupdeluxe noch nicht geschafft eine Lauffähige Version zu erzeugen.

Aktuell ist für mich die Arduino Lösung der beste und einfachste Zugang.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Mathias
Beiträge: 5227
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: ESP8266 Programmierung

Beitrag von Mathias »

Juhu, bei mir geht es jetzt auch mit dem Lazarus, welches ich mit fpcupdeluxe gebaut habe.

Dazu habe ich deine flash.bat modifiziert.

Code: Alles auswählen

/bin/esptool -cesp8266 -p /dev/ttyUSB0 -b115200 --before default_reset --after hard_reset write_flash 0x0 bootloader.bin 0x10000 Project1.bin 0x8000 partitions_singleapp.bin
Auch habe ich die beiden Dateien "bootloader.bin, partitions_singleapp.bin" in mein Project-Verzeichniss kopiert.
Zuerst hat mein ESPTool, welches ich von Arduino gemotzt, das eine Serial Bibliothek fehlt. Nun habe ich gemerkt, das ich dieses gar nicht brauche, da mein Linux die ESPTool selbst an Board hat. Ein einfaches

Code: Alles auswählen

apt install esptool
genügt.
Schon genial, was Linux schon an Board hat, welches man unter Windows alles mühsam zusammensuchen muss,

Im Anhang mein Project, welches unter Lazarus läuft. Es enthält den Blink-Code von af0815.
Dateianhänge
Mein_Blinker.zip
(739.87 KiB) 13-mal heruntergeladen
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

Mathias
Beiträge: 5227
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunc)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: ESP8266 Programmierung

Beitrag von Mathias »

Ich habe noch eine Frage zu dem Code von Af0815.
Wie muss ich den Com-Port bei Serial-Monitor einstellen, das ich die Daten empfangen kann, welche mit writeln geschrieben werden ?
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 5069
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Niederösterreich
Kontaktdaten:

Re: ESP8266 Programmierung

Beitrag von af0815 »

The ESP8266 spits out some diagnostic information initially at 74880
Wenn meines wissens nichts anderes Programmiert ist, so kommt das mit den schrägsten Baudwerten die ich je gesehen habe heraus.

Hintergrund:
it is not a bug. the esp ROM bootloader expects a 40 MHz crystal, but most esp8266 modules use 26 MHz crystal. then the resulting baud rate is 74880 instead of 115200 used by the bootloader.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten