Close

Update - New Code, RW pin, Power - November 4, 2024

A project log for DSC Neo Alarm Integration for Home Assistant

An ESP32 based virtual keypad integration for DSC Neo Alarm Systems

valdezValdez 11/04/2024 at 18:390 Comments

User @kushki7 discovered some bugs when building my design for his own system. After a long debugging and re-programming session with him we have fixed these issues. 

We discovered that the timing of the reading the data from the bus is critical and has to happen as fast as possible. We also found some code bugs in the interrupt routine that were causing issues. 

For the timing issue, we removed the need to check the RW pin as the keypad never reads the data from the LCD controller RAM and so checking when the RW is low when RS is high is not necessary as RW will always be low when RS is high. It just isn't necessary for capturing the write data and the added complexity of checking the RW line adds processing to the interrupt where we want it the fastest as possible - right before reading the data lines.   An updated PCB design may come sometime in the future to reflect this.

The code in instructions section corrects these bugs found, and does a few other optimizations for reading the data. 

Power management - @kushki7 also had a greater strain on power running the ESP32 off his keypads 3.3V+. It ran, but he felt it was pulling a lot of power from the keypad causing his display to slow down and dim and decided to run his ESP32 off an external 5V USB power source. I never had this issue, and it likely depends on each individuals alarm panel setup and power demands. If you want to run the ESP32 off an external power source, disconnect the V+ line from the PCB to the keypad. Gnd must stay connected between the keypad and PCB or the data signals will not make any sense to the ESP32 (the signals are voltages or potential differences between Gnd so the ESP32 and keypad must share a common Gnd).  

Discussions