Bafang BBS0x Motor mit Microcontroller ESP32 und Handy-App steuern
In diesem Artikel stelle ich euch eine Lösung vor mit der ihr das normale Display (SW102, DC18, 750C u.v.a.m.) nicht mehr benötigt. Anstelle des Bafang-Displays könnt ihr euer Handy nutzen. Außerdem könnt ihr direkt mit dem Handy die Motorparameter (viele nennen es auch Programmierung) ändern.
Den Quelltext für das Projekt gebe ich noch nicht heraus. Ich stelle nur die fertig kompilierten Files zur Verfügung.
Dem Controller habe ich den Namen BabaController gegeben.
Grundlagen zum Projekt
- Android Handy mit mindestens Android Version 7.
- ESP32 Microcontroller
- Diverse elektronische Bauteile, Kabel, Gehäuse
- Elektronik Schutzlack (wichtig!)
- Optional: 433 MHz Fernbedienung (Garagendrücker)
- Optional: Bluetooth Fernbedienung
- Optional: Kadenzsensor
- Optional: Pulsgurt
- Optional: bessere Steckverbindungen
Funktionsweise (kurz)
Schaltplan und Bauanleitung Baba-Controller
Teileliste
1. ESP 32
Getestet mit ESP32-WROOM-32D. Grundsätzlich gehen auch andere ESP32-Modelle. Ihr müsst halt schauen ob euer ESP32 die benötigten PINs hat und es ggf. ausprobieren ob die Firmware mit eurem funktioniert.
2. Buzzer
Zum Ausgeben von Signaltönen
3. RX480R-4CH
Das ist ein 4-Kanal 433MHz Empfänger. Dieser empfängt die Signale der Fernbedienung (Garagendrücker).
4. BME280E
Das Modul wird für die Lufttemperatur, Luftdruck, Luftfeuchtigkeit und zur Bestimmung Höhenmeter anhand des Luftdrucks benutzt. Hinweis: aktuell (Ende 2021) ist der BME280 (quadratischer silberner Chip) sehr teuer. Anfang des Jahres hatte ich für 10 Stück noch 20€ inklusive Versand auch China bezahlt. Heute (29.12.2021) soll die gleiche Bestellung über 70€ kosten. Wenn ihr das Ding also nicht günstig bekommt, lasst es erst mal weg!
5. DS18B20 + 4.7kΩ Widerstand
Mit Hilfe des DS18B20 wird die Lufttemperatur bestimmt. Außerdem wird damit der BME280E initialisiert.
6. Spannungswandler
Der Spannungswandler versorgt unseren ESP32 mit der Batteriespannung des E-Bikes. Je nach Batterie sind das zwischen 30Volt bis 60Volt. Ich nutze eine 48Volt Batterie. Diese hat im vollgeladenen Zustand 54,75 Volt. Sollte eure Batterie mehr Volt liefern, müsst ihr einen anderen Spannungswandler nutzen der dazu passt. Ich nutze diesen hier: LM2596 DC DC Step Down Converter
7. Gehäuse
Ich nutze ein kleines fertiges ABS Kunststoffgehäuse und packe alles dort hinein. Die Größe 82x52x35mm ist ausreichend.
8. 5-poliger Stecker und optional einen anderen besseren Stecker
Der ESP wird mit dem 5-poligen Julet Stecker mit dem grünen Anschluss des Motors verbunden. Achtet darauf, wenn ihr euch das 5-polige Kabel besorgt, dass ihr die Pin-Belegung nicht verwechselt. Manchmal bekommt man auch Stecker deren Kabelfarben anders sind wie beim Original. Lasst euch also nicht von der Kabelfarbe irritieren. Nur weil ein Kabel rot ist muss es deshalb nicht der +-Pol sein. Messt jeden Pin nach!
9. Optionale Steckverbindungen
Ich empfehle den original 5-poligen Stecker mit einem anderen Kabel und Schraubstecker zu verbinden. Der original Julet Stecker ist nicht besonders robust. Müsst ihr diesen mehrfach trennen/stecken, geht dieser leicht kaputt. Zusätzlich habe ich bei mir den DS18B20 und den BME280 über solch einen Stecker angebunden, damit ich diesen Sensor auch abmachen und säubern kann. Dafür nutze ich einen weißen Stecker, wie unten auf den Fotos zu sehen ist.
Fernbedienung (Garagentüröffner)
Bluetooth Fernbedienung
Pulsgurt
Kadenzsensor
Elektronik Schutzlack
Verkabelung
Die Verbindungen im Detail:
ESP32 Pin 22 -> BME SCL
ESP32 GND -> BME GND
ESP32 3v3 -> BME 3v3
ESP32 GND -> Buzzer - (Minus)
ESP32 Pin 2 -> Buzzer + (Plus)
ESP32 Pin 19 -> Bafang TX (grünes Kabel)
ESP32 Pin 23 -> Bafang RX (weißes Kabel)
ESP32 Pin 12 -> RX480 D0
ESP32 Pin 14 -> RX480 D1
ESP32 Pin 27 -> RX480 D2
ESP32 Pin 26 -> RX480 D3
ESP32 Pin 13 -> DS18B20 DQ (mittler Pin 2)
ESP32 Pin 13 -> 4,7kΩ Widerstand
ESP32 GND -> 4,7kΩ Widerstand
ESP32 3v3 -> DS18B20 VDD (rechter Pin 3)
ESP32 GND -> DS18B20 GND (linker Pin 1)
Bafang 5-poliger Julet Stecker -> braunes Kabel mit orangem Kabel verbinden.
Bafang 5-poliger Julet Stecker oranges Kabel (+48V) mit DC DC Step Down Konverter + (Plus) verbinden
Bafang 5-poliger Julet Stecker schwarzes Kabel (GND) mit DC DC Step Down Konverter - (GND) verbinden
Ausgangsspannung des DC DC Step Down Konvertes auf 5V einstellen!
ESP32 VIN (5V Eingang) mit DC DC Step Down Ausgang verbinden
ESP32 GND mit DC DC Step Down GND Ausgang verbinden.
Nicht GND des Bafang mit GND Ausgang des DC/DC Konverters verbinden!
Hier ein paar Fotos vom fertig zusammengebauten BabaController. Ihr könnt natürlich auch ein anderes Gehäuse nehmen, es muss halt nur alles reinpassen. Grundsätzlich könnt ihr auch einen kleineren ESP32 nehmen. Achtet halt darauf ob die von mir genutzten GPIO Pins verfügbar sind. Dann sollte es auch mit einem anderen ESP32 kein Problem geben.
![]() |
Fertiger BabaController: weißes Kabel = BMP280 + DS18B20, schwarzes Kabel geht zum Bafang |
Bekannte Probleme
Keine ... bis auf den BME280. Schaut euch mal folgende 2 Foto an ...![]() |
Verdreckter BMP280 Sensor |
Der BME280 muss, damit er richtig messen kann, auch quasi an der Luft hängen. Leider führt das aber dazu, dass er auch jede Menge Dreck abbekommt, wenn man durch das Gelände fährt. Ihr seht auf dem Foto diesen dicken Klumpen Matsch, der klebt genau auf dem Sensorchip. Resultat: die Messergebnisse sind alle vollkommen daneben. Der Luftdruck, Luftfeuchtigkeit und Temperatur werden nicht mehr richtig gemessen. Weil der Luftdruck nicht richtig ist, ist dann natürlich auch die Höhenmeterberechnung vollkommen daneben. Leider habe ich dafür noch nicht die optimale Lösung gefunden. Falls ihr Vorschläge habt, nur her damit!
You are amazing
AntwortenLöschen