SCC Alternative – ESP-I2CCUL Bridge und I2CCUL

Begonnen von BennySt, 25 Februar 2018, 14:25:20

Vorheriges Thema - Nächstes Thema

BennySt

Hallo zusammen,

ich habe in den letzten Monaten ein neues Interface für den CUL entwickelt, das I2C Interface. Mit dem neuen Interface ist es möglich CULs per I2C-Bus anzusprechen. Dies hat den Vorteil nicht für jeden CUL einen freien USB/Serialport zu benötigen, sondern lediglich 2 Drähte für I2C. Die Änderungen sind bereits in der aktuellen https://github.com/heliflieger/a-culfw eingepflegt.

Auf Grundlage des I2CCULs ist dann die ESP-I2CCUL Bridge entstanden. Sie dient dazu den CUL  im Netzwerk erreichbar zu machen. Aufgrund des I2C-Bus jedoch nicht nur einen sondern mehrere. Sie kann in FHEM wie ein SCC Device definiert werden.

define CUL_ESP CUL X.X.X.X:23 0000
define CUL_ESP2 STACKABLE_CC CUL_ESP
define CUL_ESP3 STACKABLE_CC CUL_ESP2
define CUL_ESP4 STACKABLE_CC CUL_ESP3


Hardware
- I2CCUL:
   - ProMini – 3.3V/8Mhz oder 5V/16Mhz.
   - CC1101
- ESP-I2CCUL Bridge
   - Wemos D1 mini
   - 2 Widerstände

Ich habe zu Entwicklung die 5V/16Mhz Pro Minis benutzt. Diese laufen mit 3.3V meistens zuverlässig, wenn auch nicht ganz in der Spezifikation. Dies kommt jedoch nur beim Bootloader zum tragen. Die CULFW setzt einen Clockdivider von 2, womit der ATmega effektiv nur mit 8MHz läuft.
Der große Vorteil, ist der Wegfall von Pegelkonvertern zwischen ESP-Atmega-CC1101.
Die Spannungsversorgung wird dabei vom 3.3v LDO des Wemos übernommen. Dieser ist mit 500mA spezifiziert und hat genug Reserven für 4 I2CCULs.

Die I2C Adresse der I2CCULs kann entweder per A1,A2 am ProMini gesetzt oder per Firmware fest einprogrammiert werden.

Software   
Die Firmware gibt es in meinem GitHub-Repository https://github.com/Diggen85/ESP-I2CCUL-Bridge
Sie ist in einem frühen Stadium, funktioniert jedoch. Ein paar Ideen zur Weiterentwicklung habe ich schon.

Sie erstellt beim ersten Start einen AccessPoint, ,,ESP-I2CCUL-Bridge". Damit verbunden kann man unter 192.168.4.1 die Bridge dann mit seinem Wifi verbinden.
Aktuell wird über Seriell, 115200Baud noch eine Menge Infos ausgegeben. Dort werden z.B. die aktuelle IP und empfangene/gesendet Befehle angezeigt.

Über eure Kritik, Vorschläge, etc. würde ich mich freuen. Bei Bedarf kann ich auch gerne kompilierte FW oder weitere Schaltpläne bereitstellen.

locutus

#1
Ich trage hierzu mit Schaltplan, Platine und Gerberdaten bei.

Erforderliche Bestückung für Arduino Pro Mini 5V
- 470 Ohm und 1k Widerstände für CC1101 Signalpegelanpassung
- 10k Widerstände und N-Kanal-MOSFET Transistoren für Signalpegelanpassung am I²C-Bus
- Lötbrücke J1 auf 5V Betriebsart setzen

Erforderliche Bestückung für Arduino Pro Mini 3.3V
- 4,7k Pull-up Widerstände (R1 und R2) am I²C-Bus
- Signalleitungen SDA/SCL und CSN/SCL/MOSI mit Draht brücken. Signalleitungen sind durch weiße Linien auf der Unterseite der Platine gekennzeichnet.
- Lötbrücke J1 auf 3V3 Betriebsart setzen


gloob

#2
Klingt ja sehr interessant.

Wie wird das ganze denn in FHEM eingebunden?
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

BennySt

Es wird ganz simpel wie ein CUL bzw. wie ein SCC in FHEM eingebunden
define CUL_ESP CUL X.X.X.X:23 0000
define CUL_ESP2 STACKABLE_CC CUL_ESP
define CUL_ESP3 STACKABLE_CC CUL_ESP2
define CUL_ESP4 STACKABLE_CC CUL_ESP3

meier81

Hallo Benny,

nun kann ich dir ja hier im Forum schreiben.

Habe deine angepasste Software nun mal aufgespielt um das Thema bei mir wieder neu auszuprobieren. Habe nun folgendes Problem: Wenn ich die Pullup-Widerstände im I2C-Bus einbaue bekomme ich am Seriallog Fehlermeldungen und keine Verbindung (siehe Anhang mit Widerständen).

Lasse ich die Widerstände weg bekomme ich Verbindung, die Daten sehen aber sehr komisch aus (siehe Anhang ohne Widerstände)

Habe lediglich in deinem ESP8266 Sketch folgende Zeilen angepasst (zum Test habe ich nur einen Arduino Mini Pro 3.3V dran)

#define CULCOUNT        1
//const char CULADDR[CULCOUNT] = {0x70, 0x71, 0x72, 0x73};
const char CULADDR[CULCOUNT] = {0x70};


In den Arduino-Dateien habe ich nichts verändert, Programm mit make program-433 erzeugt und geflasht, alles einwandfrei geklappt.

Hoffe du hast noch eine Idee

Gruß Markus
QNAP NAS mit Debian VM, darauf FHEM, debmatic, influxdb2 und Grafana || HB-RF-ETH || SIGNALduino 433MHz mit Maple mini || WS980 Wetterstation || Xiaomi Mi Robot mit valetudo-FW || Buderus web KM100 || div. Tasmota-Devices

meier81

So, hab mich jetzt heut morgen nochmals drangesetzt, läuft jetzt alles einwandfrei, keine Ahnung wo der Fehler lag. Einfach alles nochmal neu geflasht und geht.

Super Arbeit Benny, vor allem das du das senden möglich gemacht hast. Meine Funksteckdosen gehen auch alle einwandfrei.

Gruß

Markus
QNAP NAS mit Debian VM, darauf FHEM, debmatic, influxdb2 und Grafana || HB-RF-ETH || SIGNALduino 433MHz mit Maple mini || WS980 Wetterstation || Xiaomi Mi Robot mit valetudo-FW || Buderus web KM100 || div. Tasmota-Devices

gloob

Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

gloob

Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

BennySt

Guten Morgen  :)

Tot würde ich nicht sagen, eher am Schlafen.
Das Jahr über war ich mehr mit SmartHome abbauen, umziehen und akt. wieder aufbauen beschäftigt.
Die Platine läuft jedoch nach wie vor bei mir, problemlos. Leider haben sich außer euch nie wirklich Leute dafür interessiert.
Für eine Platine schreibe am besten locutus per PN an. Er hat Sie hergestellt und bestimmt noch welche. Ein 3D-Druck Gehäuse habe ich für meine Platinen auch angefertigt. Bei Interesse würde ich es zur Verfügung stellen.

PS:
Aktuell würde ich Sie so definieren und nicht mehr über STACKABLE_CC

define CUL1 CUL 192.168.178.53:23 0000
define SCC1 STACKABLE CUL1
define CUL2 CUL FHEM:DEVIO:SCC1:9600 0000
define SCC2 STACKABLE CUL2
define CUL3 CUL FHEM:DEVIO:SCC2:9600 0000
define SCC3 STACKABLE CUL3
define CUL4 CUL FHEM:DEVIO:SCC3:9600 0000

RaspiLED

Hi,
Naja nachdem die MapleCULs jetzt laufen ist der Weg über I2C nicht mehr so spannend, oder?
Gruß Arnd


Gesendet von iPhone mit Tapatalk
Raspberry Pi mit FHEM, CUL, Signalduino, MySensors, HomeBridge, Presence, WifiLight2, Bravia, ...

BennySt

Ich gebe zu für den simplen User tut der MapleCUN "genau das selbe".

Er hat zwar "Einschränkung" welche die ESP Bridge nicht hat, diese verwendet jedoch auch 4 "echte" CULs mit allen Funktionen, z.B IR.
Nicht falsch verstehen, die Codeänderungen von telekatz sind bestimmt eine Menge Arbeit gewesen und ich habe selbst einmal probiert mehrere CCs an einen Atmega zu betreiben. Der ganze CUL-Code ist jedoch ziemlich durcheinander und ein neu Programmieren wäre bestimmt einfacher gewesen. Die ganzen Änderungen dort mit unterzubringen, Respekt. Ich habe den letzten Code nicht gesehen bin aber gespannt wie er die doppelten Eeprom-Daten und Freq.-Sachen gelöst hat.

Das Interessante am I2CCUL ist jedoch nicht die ESP-Bridge. Die ist im Prinzip eher als nützliche Demo zu sehen. Das I2C Interface würde z.B. auch, theoretisch, den direkten Anschluss an einen RPI ohne seriellen Wandler ermöglichen.

meier81

Hey Jungs,

hatte mit Benny auch schon vor Monaten das ganze bei mir zum laufen gebracht, habe mir damals auch eine Platine für 2 CUL´s erstellt. Bild hab ich mal angefügt.

Gruß

Markus
QNAP NAS mit Debian VM, darauf FHEM, debmatic, influxdb2 und Grafana || HB-RF-ETH || SIGNALduino 433MHz mit Maple mini || WS980 Wetterstation || Xiaomi Mi Robot mit valetudo-FW || Buderus web KM100 || div. Tasmota-Devices