ShineLAN-X: Ethernet + MQTT funktioniert

- Korrekte SPI2-Pins (PB12-PB15, RST=PC8) aus Referenz-Firmware übernommen
- LEDs eingebunden (PC7/PB0/PB1/PC5), Startup-Blink
- DHCP aktiviert, MQTT-Broker auf Heimnetz (<MQTT-BROKER-IP>)
- Modbus UART auf USART3 (PB10/PB11, 115200 Baud) vorkonfiguriert
- Kein RS485 DE/RE Pin — Wechselrichter nutzt direkten UART
- UART-Port ausgelötet, muss nach Messung der korrekten Pins angepasst werden

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
retr0
2026-04-17 05:43:06 +02:00
parent b6f5c9c371
commit 054f8c3fa6
2 changed files with 158 additions and 180 deletions
+35 -18
View File
@@ -1,22 +1,35 @@
#pragma once
// ============================================================
// NETZWERK — ENC28J60 Ethernet (Bitbang-SPI auf Port C)
// Pin-Belegung — Quelle: https://github.com/mwalle/shinelanx-modbus
// Gleiche Platine, verifizierte Pins
// STM32F103RBT6, LQFP-64
// Hardware-SPI nicht nutzbar — alle SPI-Pins liegen auf Port C
// ============================================================
// Bitbang-SPI Pins (alle gemessen)
#define ETH_CS_PIN PC7 // ENC28J60 Pin 7 /CS → STM32 Pin 36 (gemessen)
#define ETH_SCK_PIN PC6 // ENC28J60 Pin 6 SCK → STM32 Pin 35 (gemessen)
#define ETH_MISO_PIN PC8 // ENC28J60 Pin 4 SO → STM32 Pin 37 (gemessen)
#define ETH_MOSI_PIN PC9 // ENC28J60 Pin 5 SI → STM32 Pin ?? (noch unbekannt, Scan läuft)
// ENC28J60 — SPI2 (Hardware-SPI)
// LQFP-64: PB12=33, PB13=34, PB14=35, PB15=36, PC6=37, PC8=39
#define ETH_CS_PIN PB12 // ENC28J60 /CS (SPI2 NSS)
#define ETH_SCK_PIN PB13 // ENC28J60 SCK (SPI2 SCK)
#define ETH_MISO_PIN PB14 // ENC28J60 SO (SPI2 MISO)
#define ETH_MOSI_PIN PB15 // ENC28J60 SI (SPI2 MOSI)
#define ETH_RST_PIN PC8 // ENC28J60 /RESET
#define ETH_INT_PIN PC6 // ENC28J60 INT# (optional, polling reicht)
// ENC28J60 Reset
#define ETH_RST_PIN PB13 // ENC28J60 Pin 18 /RESET → STM32 Pin 32, 500Ω
// LEDs
#define LED_DEBUG PC7 // Debug-LED (grün o.ä.)
#define LED_RED PB1 // RGB Rot
#define LED_GREEN PB0 // RGB Grün
#define LED_BLUE PC5 // RGB Blau
// Taster
#define BTN_USER PA3 // User-Taster (low-aktiv)
// ============================================================
// NETZWERK
// ============================================================
// 0 = DHCP, 1 = Statische IP
#define USE_DHCP 0
#define USE_DHCP 1
// Nur relevant wenn USE_DHCP = 0
#define STATIC_IP 192,168,2,15
@@ -30,19 +43,23 @@
// ============================================================
// MQTT
// ============================================================
#define MQTT_BROKER "192.168.2.84"
#define MQTT_BROKER "192.168.1.1"
#define MQTT_PORT 1883
#define MQTT_USER "" // Leer lassen wenn kein Auth
#define MQTT_PASSWORD ""
#define MQTT_USER "mqtt"
#define MQTT_PASSWORD "HIER_MQTT_PASSWORT_EINTRAGEN"
#define MQTT_CLIENT "growatt-shinelan"
// ============================================================
// RS485 / MODBUS
// RS485 DE/RE → STM32 Pin 25 = PB1 (LQFP-64 neu gemessen)
// USART1: TX=PA9 (Pin 40), RX=PA10 (Pin 41)
// MODBUS / WECHSELRICHTER-UART
// Growatt kommuniziert über USB-CDC (virtueller COM-Port) bei 115200 Baud —
// kein klassisches RS485, kein DE/RE-Pin nötig.
// Bestätigt durch ESPHome-Configs (tx=1, rx=3, baud=115200, kein flow_control_pin).
// Kandidat für STM32: USART3 (PB10=TX, PB11=RX) — auf Platine nachmessen!
// PA3 = Taster → USART2 (PA2/PA3) scheidet aus.
// ============================================================
#define RS485_DE_PIN PB1 // RE/DE Steuerpin → STM32 Pin 25
#define MODBUS_BAUD 9600 // Growatt Standard-Baudrate
#define MODBUS_TX_PIN PB10 // USART3 TX — TODO: auf Platine bestätigen
#define MODBUS_RX_PIN PB11 // USART3 RX — TODO: auf Platine bestätigen
#define MODBUS_BAUD 115200 // Growatt USB-CDC Baudrate (nicht 9600 RS485!)
#define MODBUS_ADDR 1 // Modbus Slave-Adresse des Wechselrichters
// ============================================================