Neuartiges CUL Interface - miniCUL mit WLAN-Schnittstelle

Begonnen von locutus, 25 Oktober 2015, 23:12:21

Vorheriges Thema - Nächstes Thema

locutus

#480
ESP8285 (PSF-A85) flashen

Erforderliche Tools:
USB-zu-TTL Adapter mit 3.3V Logik
Dupontkabel (Jumperkabel) weiblich / männlich
Lötkolben
Flash Download Tools
esp-link Firmware


Minimalanforderungen:
https://www.itead.cc/blog/how-to-update-firmware-for-psf-a85-module

Das PSF-A85 Modul auf dem miniCUL erfüllt bereits im eingebauten Zustand die Mindestanforderungen. EN und RST sind via Pull-up Resistor mit 3.3V verbunden, IO15 liegt via Pull-down Resistor auf GND. Zum Flashen werden ausschließlich die rot markierten Pins benötigt.


esp-link Firmware flashen:
- Jumperkabel an 3V3, TX, RX und GND am PSF-A85 anlöten und mit einem USB-zu-TTL Adapter verbinden
- GPIO0 (IO0) mit GND verbinden
- USB-zu-TTL Adapter mit einem PC verbinden
- Flash Download Tools starten, ESP8285 DownloadTool auswählen
- COM Port, Baudrate und Firmware einstellen (siehe Abbildung)
- Auf START klicken
- Warten bis Flashvorgang abgeschlossen ist
- Verbindungen entfernen


esp-link Pin assignment:
Konfiguration wie hier agbebildet.


Alle miniCUL Komponenten laufen ausschließlich mit 3.3V, aus diesem Grund darf kein USB-zu-TTL Wandler mit 5V Logik angeschlossen werden!


TeleDet

#481
@locutus ... kannst du hellsehen ??? ::) :D

Habe heute den miniCUL V2 fertig zusammengebaut und versucht a-culfw zu flashen ...

pi@raspi ~/a-culfw/culfw/Devices/miniCUL $ ls -l /dev/serial/by-id
insgesamt 0
lrwxrwxrwx 1 root root 13 Jan 21 15:54 usb-FTDI_FT230X_Basic_UART_DN02XUCR-if00-port0 -> ../../ttyUSB0


pi@raspi ~/a-culfw/culfw/Devices/miniCUL $ ./flash.sh
-------------------------------------------------------------
This program flash the miniCUL device with new firmware.
Please set the device into the bootloader mode
-------------------------------------------------------------
Please select a device:
1 = miniCUL 868MHz
2 = miniCUL 433MHz
Please select device (1-2): 1
Programming mode:
1 = Programming via USB
2 = Programming over LAN (miniCUL with WLAN)
Please select device (1-2): 1
Please insert the port for your device [default /dev/ttyUSB0]:

The device will now be flashed
Continue (y/n)?y
Call now avrdude -p atmega328p -c arduino -P /dev/ttyUSB0 -b 57600 -D -U flash:w:./miniCUL_868MHZ.hex:i
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00

avrdude done.  Thank you.

pi@raspi ~/a-culfw/culfw/Devices/miniCUL $


aber das ist irgendwie nicht möglich! Mein Gedanke war nun, dass wohl zuerst der ESP8285 geflasht
werden muss.  ::)

Hab also hier nach einer brauchbaren Anleitung gesucht ... und leider nix gefunden!  :(

Und nun haust Du einfach mal den Post raus ...  :D ;D

Liege ich mit meiner Vermutung richtig, dass erst der ESP geflasht werden muss bevor
man die a-culfw auf den Atmega flashen kann??
Und, ist es möglich den ESP im eingelöteten Zustand zu flashen (ggf. Kontakte anlöten etc.)??

Gruß TeleDet

locutus

Zitat von: TeleDet am 21 Januar 2018, 17:52:12
Habe heute den miniCUL V2 fertig zusammengebaut und versucht a-culfw zu flashen ...

pi@raspi ~/a-culfw/culfw/Devices/miniCUL $ ls -l /dev/serial/by-id
insgesamt 0
lrwxrwxrwx 1 root root 13 Jan 21 15:54 usb-FTDI_FT230X_Basic_UART_DN02XUCR-if00-port0 -> ../../ttyUSB0


pi@raspi ~/a-culfw/culfw/Devices/miniCUL $ ./flash.sh
-------------------------------------------------------------
This program flash the miniCUL device with new firmware.
Please set the device into the bootloader mode
-------------------------------------------------------------
Please select a device:
1 = miniCUL 868MHz
2 = miniCUL 433MHz
Please select device (1-2): 1
Programming mode:
1 = Programming via USB
2 = Programming over LAN (miniCUL with WLAN)
Please select device (1-2): 1
Please insert the port for your device [default /dev/ttyUSB0]:

The device will now be flashed
Continue (y/n)?y
Call now avrdude -p atmega328p -c arduino -P /dev/ttyUSB0 -b 57600 -D -U flash:w:./miniCUL_868MHZ.hex:i
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x00
avrdude: stk500_recv(): programmer is not responding
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x00

avrdude done.  Thank you.

pi@raspi ~/a-culfw/culfw/Devices/miniCUL $


aber das ist irgendwie nicht möglich!
Vermutlich weil der Arduino Pro or Pro Mini (3.3V, 8 MHz) Bootloader auf dem ATMEGA328P fehlt.

Zitat von: TeleDet am 21 Januar 2018, 17:52:12
Liege ich mit meiner Vermutung richtig, dass erst der ESP geflasht werden muss bevor man die a-culfw auf den Atmega flashen kann??
Falsch! Es sind zwei voneinander unabhängige serielle Schnittstellen.

Zitat von: TeleDet am 21 Januar 2018, 17:52:12
Und, ist es möglich den ESP im eingelöteten Zustand zu flashen (ggf. Kontakte anlöten etc.)??
Geht aus dem HOWTO etwas ganz anderes hervor?

TeleDet

@locutus ... Danke für den Denkanstoß  ::) :)

ZitatGeht aus dem HOWTO etwas ganz anderes hervor?
Nein! War nur die Überlegung ob durch die restliche Beschaltung auf der Platine
etwas den Vorgang "stören" könnte!?  ;) Frage damit beantwortet!  :D

Gruß TeleDet



TeleDet

Hallo Locutus,

vielen Dank für Deine Empfehlung! Optiboot wird dann direkt meine Wahl als Bootloader werden.
Wenn ich mir die Befehlszeile für avrdude aus Deinem Beitrag ansehe so ist die bis auf einen Parameter identisch
mit dem was flash.sh von a-culfw macht.


Befehl aus a-culfw flash.sh:
avrdude -p atmega328p -c arduino -P /dev/ttyUSB0 -b 57600 -D -U flash:w:addon.hex:i

Befehl aus deinem Beitrag:
avrdude -p atmega328p -c arduino -P /dev/ttyUSB0 -b 57600 -U flash:w:addon.hex:i


Also sollte (ohne den Parameter "-D" jetzt zu kennen) a-culfw mittels flash.sh dann ohne Probleme
flashbar sein.

Kennst Du vielleicht eine Möglichkeit den Bootloader auf den Atmega zu bekommen ohne einen
Arduino als ISP-Programmer zu verwenden? An die Kontakte kommt man ja auf der Platine des miniCUL
irgendwie schon ran. Da ich aber 7 Stück vom miniCUL V2 gebaut habe und demnach alles 7 mal machen
muss, wäre es eine echte Erleichterung nicht irgendwo Drähtchen anlöten zu müssen um sie mit dem ISP
zu verbinden. Eventuell direkter? Keine Ahnung, vielleicht über avrdude oder ähnliches?  ::) Ich hatte leider
noch nicht die Zeit mal tief in Google abzutauchen, von daher wäre ich für Anregungen sehr dankbar!!!  ;)

Gruß TeleDet


habeIchVergessen

den PFS-A85 bekomme ich nicht geflasht. Mit EN auf HIGH konnte ich folgenden Mitschnitt auf der seriellen abgreifen.

auch der atmega328p will nicht, dass ich den Bootloader flashe (CC1101 und PFS-A85 sind nicht bestückt).

Hat jemand Tipps für mich?

PS: nach papa's FDGK hatte ich meine Fähigkeiten als besser eingeschätzt!

PeMue

#487
Zitat von: habeIchVergessen am 25 Januar 2018, 17:00:07
... den PFS-A85 bekomme ich nicht geflasht.
Mit welchem Tool flashst Du denn den PFS-A85? Mit dem NodeMCU Flasher? ESPTools? Wenn der auf die serielle Schnittstelle zugreift, kann ein Terminal nicht gleichzeitig zugreifen ...

Gruß PeMue

Edit: Hier gibt es ggf. Hilfe  ;)
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

habeIchVergessen

#488
ESPFlashDownloadTool_v3.6.3

zusätzlich zu 3V3, GND, TX, RX und gpio0, müssen en high und gpio15 low sein (s. hier).
beim booten vom flash muss gpio0 nicht low sein.

atmega328: bootloader flashen geht, wenn TP1 und TP2 geschlossen werden (oder eben an R2)

locutus

#489
Zitat von: TeleDet am 23 Januar 2018, 19:51:51
Also sollte (ohne den Parameter "-D" jetzt zu kennen) a-culfw mittels flash.sh dann ohne Probleme flashbar sein.
avrdude Option -D = Disable flash erase

Zitat von: TeleDet am 23 Januar 2018, 19:51:51
Kennst Du vielleicht eine Möglichkeit den Bootloader auf den Atmega zu bekommen ohne einen Arduino als ISP-Programmer zu verwenden?
https://github.com/esp8266/Arduino/tree/master/libraries/ESP8266AVRISP

Zitat von: TeleDet am 23 Januar 2018, 19:51:51
An die Kontakte kommt man ja auf der Platine des miniCUL irgendwie schon ran. Da ich aber 7 Stück vom miniCUL V2 gebaut habe und demnach alles 7 mal machen muss, wäre es eine echte Erleichterung nicht irgendwo Drähtchen anlöten zu müssen um sie mit dem ISP zu verbinden.
ISP Verbindung nutzt 6 Leitungen zur Programmierung.
MISO, MOSI, SCK, 3.3V und GND können direkt an das CC1101 Funkmodul (im eingebauten Zustand) angelötet werden. RST mit C1 oder R2 verbinden.

TeleDet

@locutus

Vielen Dank für die Super Infos! Wenn ich es schaffe werde ich mal versuchen
meine Schritte zu dokumentieren und eine kleine Anleitung daraus basteln.  ;)

Vielen Dank nochmal  :D

Gruß TeleDet

habeIchVergessen

@locutus:
im Screenshot der esp-link config wird gpio 2 (TX1) als reset-Pin für den atmega328 benutzt.
TP1 und TP2 verstehe ich als offene Lötbrücke, richtig? Sofern offen, kann der ESP kein reset am atmega auslösen.
was bewirkt C9?

locutus

C1 Auto-Reset über die DTR Leitung USB-seitig.
C9 Auto-Reset über die DTR Leitung WLAN-seitig.

Siehe auch Hinweis zum Firmware-Update.

habeIchVergessen

#493

wenn ich C1 und C9 bestücke sowie TP1 und TP2 schließe, kann ich nicht per gpio2 (ESP) ein Reset am atmega auslösen (USB geht).
egal was ich mache, die Spannung an Pin 29 vom atmega (oder R2/C9) sinkt nicht unter 1,6V.

vermutlich sind die 4,8V vor C1 (RTS USB) zu hoch, damit C9 (gpio2 ESP) mit 3,3V richtig schalten kann.
der ESP verabschiedet sich (reboot) auch releativ zuverlässig nach ca. 5 Versuche.

ohne C1 geht gpio2 (ESP)! USB natürlich nicht!

kann das über die Kapazität beeinflusst werden? Wenn ja, wie wird das berechnet?

habe die Lösung in den sourcen von esp-link gefunden (gpio2 auf LOW und dann ein delay(2000)).

hatte vorher "nur" bis 500 getestet.

TeleDet

 ::) ::) ::) Damit der Kondensator C9 die Spannung an Pin 29 des Atmega328P entsprechend lange genug runter zu ziehen kann, um einen eindeutigen RESET zu erzeugen.

Aber wie setzt du das nun um im ESP ?? ??? Wo machst du welche Änderungen?  ::)

Gruß TeleDet