I'd like to extend my OpenEVSE to monitor more things... and change its behaviour based on the values. I have the v5.5 board plus the Wifi module that came with it in the advanced kit. As far as I can tell there are a good 3 unused ADC pins on the AtMega MCU and a whole lot more on the Espressif.
I see others have successfully connected to ADC3 on the AtMega some years ago, but looking at it I don't know if I'm up to the task of soldering that one... and unfortunately it doesn't look like any test point or pad was added to the board in the subsequent revisions.
Does anyone have some advice for me on which pin would be easiest to get to?
I know about the HTTP interface, but there's a few reasons I don't want to use it: I often won't have a wifi network, reliability is a concern even for the standalone network, and it'd be a waste when we already have 2 perfectly good microcontrollers with unused pins sitting there.
The pads on the ESP32 Wifi board are much easier to solder to than the 328p pins. Additionally, the WiFi has much more RAM and flash available.
OK awesome thanks very much! Looking at them I thought that might be the case. If I go via the Wifi module then there won't be a fight over the charging control either. And I'd need to modify it to add to the interface anyway. Yeah I'll do that then! Is there a schematic of some sort for the module so I can tell what pins are in use? I can't really see if there are traces going under the chip.
So last week I took a punt and managed to solder pins 23 and 24 (wasted half an hour trying lead-free solder, then did it in seconds with 60:40). They had the largest visible pads and were easiest to access. These are GPIO15 = ADC2_CH3 and GPIO2 = ADC2_CH2.
However, it proved impossible to use them, because all 10 of the ADC2 pins are non functional when using wifi! Not even for a one-off reading. This would have been awesome to know beforehand :/
At one time the manufacturer promised a fix, but later they decided not to. Some folks found workarounds by stopping wifi, doing the reading, then starting it again... but that sounds like a lot of hassle.
So today I got the soldering iron out again, unsoldered pins 23 and 24, and have now successfully soldered pins 7 (GPIO35 = ADC1_CH7) and 9 (GPIO33 = ADC1_CH5). It was okay, and my soldering skill is very low :) Pin 7 is definitely working with all the ADC functions I tried, and I think pin 9 is too but I only need one for now. Note to anyone else doing this, the ADC range is not the full 0 to 3.3 V. By default it's something like 0.1 to 1.1 V, but can be attenuated on chip to go up to around 3 V. Adjust your source accordingly.
Also, the firmware environment is pretty sweet: maybe slightly overengineered but very easy to extend and interoperate with the existing functionality. Very nice, well done folks!