CAN-Bus mit ESP32-C3 & MCP2515 funktioniert nicht

Hallo,
ich habe genau das gleiche Problem wie hier geschildert:
EspHome (ESP32) + MCP2515 + CAN BUS - Integrationen - simon42 Community

Ein ESP32 mit MCP2515 um ein Huawei R4850 Netzteil zu steuern.
Hier die Hardware, mit 3,3V & A1050 mit 5V angebunden:

und hier mein verwendeter Code:

esphome:
  name: esp32-c3
  friendly_name: esp32-c3

external_components:
  - source: github://mb-software/esphome-huawei-r4850

esp32:
  board: esp32-c3-devkitm-1
  framework:
    type: arduino
#    type: esp-idf

# Enable logging
logger:
#  level: DEBUG
#  logs:
#    canbus: INFO


# Enable Home Assistant API
api:
  encryption:
    key: "abc"

ota:
  password: "abc"


wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password


  use_address: 192.168.3.120
  manual_ip:
    static_ip: 192.168.3.120
    gateway: 192.168.2.1
    subnet: 255.255.254.0
    dns1: 192.168.2.1 

#############################

# web_server:

  # Enable fallback hotspot (captive portal) in case wifi connection fails
#  ap:
#    ssid: "Esp32-C3-Huawei-R4830"
#    password: "TODDPA2OUSMM"

####################################################################  

spi:
  id: spi_bus
  clk_pin: GPIO0
  miso_pin: GPIO2
  mosi_pin: GPIO1
  
############################
canbus:
  - platform: mcp2515
    id: can
    spi_id: spi_bus
    cs_pin: GPIO3
    use_extended_id: true
    can_id: 0
    bit_rate: 125kbps
###########################

huawei_r4850:
  canbus_id: can
  update_interval: 5s

sensor:
  - platform: huawei_r4850
    output_voltage:
      name: Output voltage
    output_current:
      name: Output current
    output_power:
      name: Output power
    input_voltage:
      name: Input voltage
    input_current:
      name: Input current
    input_power:
      name: Input power
    input_frequency:
      name: Input frequency
    efficiency:
      name: Efficiency
    input_temp:
      name: Input temperature
    output_temp:
      name: Output temperature
    

number:
  - platform: huawei_r4850
    output_voltage:
      name: Set output voltage
    max_output_current:
      name: Max output current

button:
  - platform: huawei_r4850
    set_offline_values:
      name: Set offline values
      

Wie man im Code sieht, wurde dieser weitestgehend von hier übernommen.

Es werden mir keine Daten angezeigt.

Wenn ich die Schaltung mit einem ESP8266 wie hier aufbaue, funktioniert es grundsätzlich aber der ESP8266 verliert teilweise mehrfach am Tag seine Einstellungen und es handelt sich dabei um einen “Closed Code” :frowning:

Hat jemand eine Idee, weshalb das mit einem ESP32 nicht funktioniert?

Danke & Gruß
Jens

Ohne MCP2515 auf dem ESP32 umsetzen. Vermutlich wird das Modul nicht gepflegt weil es auf dem ESP32 nicht benötigt wird.

MfG

Hallo,
hab’s jetzt nochmal mit einem ESP8266 & MCP2515 getestet, gleiches Verhalten:
Keine Fehlermeldung aber auch keine Daten → nan

Beim ESP32 kommt ohne den MCP2515 diese Meldung im Log:
“Component canbus is marked FAILED” was mit den Modul nicht kommt.

[21:44:14][C][logger:193]:   Level for 'canbus': INFO
[21:44:14][C][spi:068]: SPI bus:
[21:44:14][C][spi:069]:   CLK Pin: GPIO0
[21:44:14][C][spi:070]:   SDI Pin: GPIO2
[21:44:14][C][spi:071]:   SDO Pin: GPIO1
[21:44:14][C][spi:076]:   Using HW SPI: SPI
[21:44:14][E][component:082]:   Component canbus is marked FAILED

Nächste Woche müssten ein paar sn65hvd230 CanBus Transceiver ankommen, mal sehen, ob’s dann mit denen funktioniert :crossed_fingers:

Gruß
Jens

Hallo,
mit sn65hvd230 CanBus Transceiver und einem ESP32-C3 funktioniert’s jetzt:

Mir ist leider gerade nicht klar, wie das genau mit der Steuerung umgesetzt ist und ob beim schreiben der nicht flüchtige Speicher verwendet wird.
Wäre bei XXX Schreibzugriffen am Tag nicht so günstig :frowning:

Gruß
Jens

Welchen Flash meinst du ? Den im ESP oder den im Huawei Netzteil?

Was hast du denn damit vor?

Mein Battery Pack ist noch nicht da, daher kann ich meinen Code noch nicht wirklich produktiv testen. Hängt nur eine Last am Netzteil. Ich spreche das Netzteil im Sekundendakt an, wegen bestmöglicher Null-Einspeisung.

MfG

Hallo SpenZerX,
habe ich nicht klar formuliert, ich meinte den Flashspeicher im Huawei-Netzteil.

Um sicher zu gehen, müsste ich mir die Register anschauen, die im Projekt auf → github://mb-software/esphome-huawei-r4850 verwendet werden :roll_eyes:

Sonst läuft die Regelung halbwegs bei mir, manchmal schwingt das System um den Zielwert.
Ich habe das heute nochmals geändert und muss die Tage sehen, wie gut die Regelung jetzt funktioniert. Das System ist bei mir recht träge da ich die Zählerwerte aktuell nur alle 6s auslese und müsste das erstmal auf einen kürzeren Messintervall anpassen.

Gruß
Jens