A smarter LCC for the Lelit Bianca V2, with Wi-Fi and stuff.
Based on the protocol dissection I'm doing in magnusnordlander/lelit-bianca-protocol.
This project is moving to https://github.com/variegated-coffee. Don't manufacture this board, there's a new revision coming.
Consider this project beta quality.
The revision B PCB works well. Manufacturing files are available in the pcb/
directory. Unless you're very good at soldering fine pitch by hand, I suggest manufacturing with SMT assembly. I've used JLCPCB for my manufacturing runs, and the files have worked well there. I do have some spares of both the Rev A PCB (just the PCB) and the Rev B PCB (the difficult components already soldered, but does need a connector, buttons, a display and an Arduino). If you have experience of embedded programming, want to help with the project and you want one of the PCBs, reach out.
I am considering making a Rev C PCB that doesn't use an Arduino, but rather RP2040 and ESP32 chips directly. This would allow for a relocated display connector (similar to the original LCC) and a better antenna, which is useful since the board is located inside a metal enclosure. We'll have to see though.
Considering this plugs in to an expensive machine it bears to mention: Anything you do with this, you do at your own risk. Components have been fried already during the course of this project. Your machine uses both line voltage power, high pressured hot water, steam and other dangerous components. There is a risk of both damaging the machine, personal injury and property damage, the liability for which you assume yourself. This is not the stage to get on board with this project if you aren't willing to deal with those risks.
This project has only been tested on a Bianca V2. There are (at the time of writing) three versions of the Bianca, V1, V2, and V3. To my understanding it should work on a Bianca V1, but it's untested. As for the Bianca V3, it features upgraded hardware (a different solenoid valve with high/low flow signals), which this project doesn't support. Since I don't have access to a Bianca V3 (for reverse engineering or otherwise), support is currently not on the roadmap.
The LCC-relevant hardware differences between a V2 and a V3 Bianca (to my understanding) are the following:
Most notably, the Gicar box is the same, which is very interesting.
Like I said, I do not have access to a Bianca V3, so reverse engineering the protocol changes for the V3 would be difficult, and validation would be impossible. That being said, if someone were to reverse engineer the protocol changes, a new version of this firmware could be made that would be backwards-compatible with the Bianca V2. That is absolutely an interesting proposition.
Create a smart replacement for the "LCC" PID module used in the Lelit Bianca with open source hardware and software.
This project is using the Arduino RP2040 Connect, a dual core ARM Cortex-M0+ board with a Ublox Nina W102 module.
A custom PCB has been designed (see pcb/
) that is designed to fit in the original LCC enclosure. A BOM for components is also available. Aside from the Arduino RP2040 Connect, the PCB has push buttons for + and -, a resistor divider for the 5V Control Board UART signal, and a flat flex connector for a SSD1309 based OLED. The PCB has been designed with surface mount components, but uses relatively large 1206 caps and resistors, which are somewhat simple to hand solder.
I have been considering a new hardware revision, which instead of using an Arduino RP2040 Connect, uses just a plain RP2040, and a plain ESP32 (of some kind, though if I know myself, it'll probably be an ESP32-S3).
The main motivations are the following:
There's also a couple of more errata like things I would add in a new revision:
This being said, I haven't made up my mind about whether to do a future revision at all.
The project is using arduino-cli, with earlephilhower/arduino-pico. Core 0 runs UI and external communications, and will communicate with core 1 through pico_util/queue
. Core1 does not store it's parameters. Core0 reads them from LittleFS, and passes them to Core1 through regular message passing.
Hold the plus button while booting to trigger configuration mode. In configuration mode, a safe packet is continually sent to the control board, and a WiFi access point is created, with the SSID LCC-XXXXXX
, where XXXXXX
is the last 6 hex digits of the unit's MAC address. It is password protected, using the same password as the SSID, (i.e. LCC-XXXXXX
). Therein you can configure your WiFi network and MQTT settings.
Hold the minus button while booting to trigger OTA mode. As in configuration mode, a safe packet is continually sent to the control board. It connects to the WiFi configured in configuration mode. Use ArduinoOTA to send new firmware. The controller doesn't automatically reboot after OTA, so after the OTA is complete and the display goes blank, manually cycle power.
In this firmware, Core0 and Core1 will swap functions.
In this firmware, a custom firmware for the Ublox Nina W102 will be developed to handle network communication.
(In no particular order)
The firmware is MIT licensed (excepting dependencies, which have their own, compatible licenses), and the hardware is CERN-OHL-P.