Blog
ESP32 Add-on Modules: RC522, ADS1115, Max17048
The weird-but-useful modules: an RFID reader, a 16-bit ADC, a battery fuel gauge, and a magnetic switch. Each is a few wires and one library.
How to Make Smart EMV Card Reader with ESP32?
You can read a card’s UID with an RC522 — enough for door locks and RFID badges — but a real EMV payment reader is not buildable on an ESP32: no secure element, and attempting it is illegal without certification. Smart card projects on ESP32 mean access control and NFC tags.
How to Connect RC522 to ESP32?
SPI, five wires: SDA/SS→GPIO5, SCK→GPIO18, MOSI→GPIO23, MISO→GPIO19, RST→GPIO22, plus 3V3 and GND. The MFRC522 library matches those defaults out of the box. The module is 3.3V only; 5V is the fastest way to buy a new one. RC522 examples get you reading a UID in ten minutes.
Why is my RC522 not detecting cards?
Range and wiring, in that order. The antenna reads 3-5cm at best — cards must nearly touch the module, and metal under the PCB kills it instantly. Then check the SPI pins against your board’s defaults. If the library initializes but never sees a card, hold the card flat and still.
How to Read a SCT013 with an ADS1115 ESP32?
Pick your SCT013 variant first: the 0-1V output type connects straight to the ADS1115 (PGA at ±1.024V), while the 33mA type needs a burden resistor. Wire the ADS1115 on I2C (0x48 default), sample at ~100Hz, compute RMS in code. My first build read everything 2.7x high because I’d bought the wrong variant — check the model number first.
Why use ADS1115 instead of the ESP32’s built-in ADC?
Precision and stability. The built-in ADC is 12-bit with a famously non-linear response and a noisy reference; the ADS1115 is 16-bit with programmable gain and a clean reference. For a current transformer or any tiny analog signal it’s the difference between numbers and measurements — plus four channels and four addresses.
How to Use the MAX17048 with ESP32?
Two wires on I2C: VCC→3V3, GND, SDA→GPIO21, SCL→GPIO22, plus VCELL to your LiPo’s positive terminal. The chip reports state of charge as a register; the SparkFun MAX1704x library wraps it in a few calls. It’s a fuel gauge, not a voltmeter — it tracks current flow and stays honest under load where a voltage divider lies.
MAX17048 or a simple voltage divider for battery level?
Divider for good enough, gauge for actually usable. A divider plus analogRead maps voltage to percentage — fine for a hobby display, miserable under load, because LiPo sag fakes low battery. The gauge costs ~$2, uses the same two I2C wires, and returns a percentage that ignores sag. Choose by whether a wrong reading matters.
Which Reed Switch to Use with ESP32?
A small SPST normally-open reed switch, any brand — glass-encapsulated ones rated for a few watts work perfectly, because you’re switching 3.3V at microamps. Wire one leg to a GPIO, the other to GND, enable INPUT_PULLUP, and read HIGH→LOW as the magnet arrives. Debounce in code with 20-50ms. Door and window sensors are the classic use.
Can RC522, ADS1115, and MAX17048 share one ESP32?
Yes, cleanly: RC522 on SPI, ADS1115 at 0x48 and MAX17048 at 0x36 on the same I2C bus — no address conflict. All three are low-current, so one 3V3 rail handles them. Sketch the bus layout on paper before the breadboard; it saves a rewire.
Where do I find complete wiring examples for these modules?
Our knowledge base has pin-by-pin diagrams for RC522, ADS1115, and MAX17048, including the SCT013 burden resistor math. If a config behaves differently on your board, tell us — module clones differ more than the datasheets admit. Contact us with the model number.
Before Blaming the Module
RC522, ADS1115, MAX17048 — all I2C/SPI peripherals, all diagnosed the same way from our side: run the I2C scanner (does it answer at its address?), or the SPI loopback (does the bus echo?). Power and addressing get cleared in one minute, before module-specific drivers enter the conversation.