Reading 2 digit 7 segments with ESP32 - Page 1
Forum section: electronics / projects

author: Stealthrt
author_rank: Regular Contributor
timestamp: May 12, 2022, 01:29:42 am
content: I have been trying to contact a forum member (https://www.troublefreepool.com/threads/automation-of-intex-swg.228606/page-2#post-2128055) that has done a modification (https://www.troublefreepool.com/threads/automation-of-intex-swg.228606/) to his pool equipment in order to control it remotely instead of having to go to the box every time and check on the codes. His has released the source code on his github page (https://github.com/tonyflores1006/intex-swg-iot).However, I have a different model than he does so I do not think his ESP32 code will work on mine.His equipment contains a TM1650 for the 2 digit 7 segment display. I am unable to find out if my version has the TM1650 or something else.His schematic looks like this:I have all the components that are displayed in the schematic. I have the ESP32 and the Level shifter.Another forum member had the same chip but some pins were different. His schematic looks like this:So, since I do not have the same setup as they do is there any IC I can get that would make reading the 2 digit 7 segments easier than trying to read each led and determining what letter/number is being displayed? I can use the 4n25/35 optocoupler to "press" any of the 6 buttons and have an analog read for the 8 LEDs to determine which ones of those are on. The only trouble I foresee is the 2 digit 7 segments reading.Note: Also posted to the following forums:Reading 2 digit 7 segments with ESP32https://www.electronicspoint.com/forums/threads/reading-2-digit-7-segments-with-esp32.297108/https://forum.allaboutcircuits.com/threads/reading-2-digit-7-segments-with-esp32.186817/https://www.electro-tech-online.com/threads/reading-2-digit-7-segments-with-esp32.163357/https://www.electronics-lab.com/community/index.php?/topic/48746-reading-2-digit-7-segments-with-esp32/

author: ledtester
author_rank: Super Contributor
timestamp: May 12, 2022, 03:10:16 am
content: The ESP32 board appears to work by sniffing the I2C traffic to and from the TM1650.The chip on your PCB looks like it could be a TM1650 - a lot of the pins seem to be connected as if it were that chip.Here's the pinout of the TM1650:and here I've annotated your PCB with where various pins are connected to:You should check the annotations with a question mark to see if they are correct.So the header pins on the PCB appear to be (from left to right):1: SCL2: SDA3: Vcc4: GNDViewed from the top side of the board the pin order is: GND, Vcc, SDA, SCL.This matches the ESP32 board header pinout with the difference that pins 3 and 4 are swapped.More info on the TM1650:https://components101.com/ics/tm1650-led-driver-ic

author: Stealthrt
author_rank: Regular Contributor
timestamp: May 12, 2022, 03:14:25 am
content: I appreshat you taking the time to draw that out ledtester.I'll spend tomorrow hooking up the circuit and seeing what all I can find out.

author: Stealthrt
author_rank: Regular Contributor
timestamp: May 13, 2022, 12:14:31 pm
content: So I'm looking at my version of the ESP32 that I have (Known as the Lolin32)And looking at their schematic I see that they call out GPIO 16, 17, 18 & 19. However, I do not have the same pin layout as they do...Go figure...- GPIO 19 -> SWG main board clock- GPIO 18 -> SWG main board data- GPIO 17 -> Display board clock- GPIO 16 -> Display board dataSo, I take it my layout would be:GPIO 19 -> GPIO 19 MISOGPIO 18 -> GPIO 18 CLKGPIO 17 -> GPIO 17 TXGPIO 16 -> GPIO 16 RXThat look correct?

author: ledtester
author_rank: Super Contributor
timestamp: May 13, 2022, 01:26:24 pm
content: Can you provide the link to the github project?

author: Stealthrt
author_rank: Regular Contributor
timestamp: May 13, 2022, 01:30:15 pm
content: Quote from: ledtester on May 13, 2022, 01:26:24 pmSorry I was unaware it did not place the url's where I had them. Its now corrected in the OP.

author: ledtester
author_rank: Super Contributor
timestamp: May 13, 2022, 01:59:45 pm
content: The pin assignments appear to be defined here:https://github.com/tonyflores1006/intex-swg-iot/blob/3701e1863e37f8e0390bd7e1345269a1b8db4305/main/IntexSWG.h#L24Code:#define clockPin GPIO_NUM_19#define dataPin GPIO_NUM_18#define clockDispPin GPIO_NUM_17#define dataDispPin GPIO_NUM_16#define powerRelayPin GPIO_NUM_0clockPin and dataPin are the pins that are monitored. The code also seems to talk to a TM1650 using dataDispPin and clockDispPin.The monitoring code is here:https://github.com/tonyflores1006/intex-swg-iot/blob/3701e1863e37f8e0390bd7e1345269a1b8db4305/main/IntexSWG.cpp#L168You might want to extract that code and get it working first with a simple test app -- like just print the sniffed communications to the serial output.

author: Stealthrt
author_rank: Regular Contributor
timestamp: May 13, 2022, 09:35:01 pm
content: Quote from: ledtester on May 13, 2022, 01:59:45 pmSo I'm looking at my version of the ESP32 that I have (Known as the Lolin32)And looking at their schematic I see that they call out GPIO 16, 17, 18 & 19. However, I do not have the same pin layout as they do...Go figure...- GPIO 19 -> SWG main board clock- GPIO 18 -> SWG main board data- GPIO 17 -> Display board clock- GPIO 16 -> Display board dataSo, I take it my layout would be:GPIO 19 -> GPIO 19 MISOGPIO 18 -> GPIO 18 CLKGPIO 17 -> GPIO 17 TXGPIO 16 -> GPIO 16 RXThat look correct?

author: ledtester
author_rank: Super Contributor
timestamp: May 13, 2022, 11:21:18 pm
content: The IntexSWG.cpp code appears to act as if it were a TM1650 on GPIO pins clockPin and dataPin and then talks to a real TM1650 on pins clockDispPin and dataDispPin. That is, it is meant to be inserted between your control board and the display board.The clockDispPin and dataDispPin pair is not a TX/RX pair -- it's another I2C clock/data pair. You can use whatever GPIO pins you want as long as the pin definitions in the source code match what you're using.I would first test the code by modifying this routine to emit the values of the statusDigits to via the serial port:https://github.com/tonyflores1006/intex-swg-iot/blob/3701e1863e37f8e0390bd7e1345269a1b8db4305/main/IntexSWG.cpp#L411And then I would program another microcontroller with a program that sends commands to a TM1650 -- like a TM1650 demo program. Hooking the two up will allow you to determine if the ESP32 code is correctly capturing and decoding the TM1650 traffic. The point is not to use your control board for initial testing. Also, if you write your own program you'll know exactly what is being sent to the TM1650 so you'll know if the ESP32 code is working correctly or not.

author: Stealthrt
author_rank: Regular Contributor
timestamp: April 20, 2023, 12:24:41 pm
content: Hey all I finally picked up this project again in hopes I can get it working before opening up my pool this year.I have populated the pcb board with all the needed components and hooked the main board to it as well as the display board. However, when I turn on both the esp32 and main board I get nothing on the display? the display has 5v going to it so i know its not a connection issue.When calling the rest api callhttp://192.168.1.219:8080/api/v1/intex/swg/statusI get the following:Code:{"data": {"display": {"status": "ON","brightness": 3,"current_code": ""},"status": {"power": "BUS_ERROR","boost": "OFF","sleep": "OFF","o3_generation": "OFF","pump_low_flow": "OFF","low_salt": "OFF","high_salt": "OFF","service": "OFF"},"mode": {"working": false,"programming": false}}}I'm not sure what is causing the "BUS_ERROR". I had this both on a breadboard and on the official PCB and I get the same error on both. I have also hooked up both ends of the JST connectors to each other bypassing the esp32 and that also works as it should so its not the wiring issue causing it.The front of my PCB looks like this:And on the back I had to make modifications since my 5v/ground are swapped:When I hook the display board up to the main board without the esp32 it displays a red dot on the led display which indicates its in off mode:I am unable to get in touch with the original owner of this setup on the forum so I'm hoping someone here can help me figure out why its not working.