I’ve had a number of requests from people wanting to use the MPPSolar PIP4048 solar charger/mains inverter. So, I’m going to start a resource here. I’ll add in bits of Arduino code and any data sheets as I go along, together with any useful information that I come across.

The serial protocol is here_;


Here is some of the Arduino code to drive the PIP4048:-


Please note that the code is simply extracts from my project. I’t won’t just run! I’ve left in the bits where I send data to an MQTT server running on a RaspberryPi, justto show you how to use the data that comes back. The Command QPIGS to the PIP4048 reads a packet of data containing things like solar input voltage, current load power, etc. The other command that I’m using is QPIWS which reads and decodes various status bits from the PIP4048 – things like has the mains/generator power dropped out. All of the bits are stored in the array pipstatus[] and decoded.

I’ve also uploaded a full version of the code here ppip4048monitor

Please note that this uses an ATMEGA1284 processor to take advantage of the two serial ports as I’ve hooked a GPS receiever up to read the time from the GPS Satellite system. If you use an Arduino Uno with an Ethernet shield (W5200 or compatible), then just delete the GPS code and use the commented out ethernet time library…you’ll also need to change the references to Serial1.write to Serial.write throughout the code.