Victron–Monitors (Technical)


A month before heading back to Canada for last hurricane season we suffered a failure of one of our Chinese MPPT solar controllers. Then shortly after that I started noticing one of the other controllers was not holding the optimal voltage for the solar panels (essentially rendering the MPPT function useless). I suspect both of these issues were tied to our lightening strike as both those controllers survived that event(however they lasted a year after that strike). So facing replacement of 2 out of our 4 solar controllers I decided that I would replace 3 with Victron Bluesolar MPPT controllers. I would then keep the 2 remaining Chinese ones (not struck by lightening) for our smallest solar bank, 1 controller as backup.

Unfortunately when it came time to order the new controllers I discovered that the accessories for the Victron controllers are priced VERY high. A remote display currently sells on Amazon for $80USD and I would require 3. The other option is to purchase a Bluetooth dongle, but even those sell for $55USD each. I did originally purchase one Bluetooth dongle but it’s a real pain in the rear to move it around to each controller everyday. It also has other strange requirements, like it only works on Android and Macintosh, but not Windows. So as a cruiser with loads of time on my hands I began thinking and using my Googlefoo to see if I could come up with a solution to remotely display the pertinent data for each controller.


During my brainstorming session I set the following requirements:

1. MUST be a physical display for each controller somewhere in the boat. The Bluetooth dongle is neat, but I don’t want to rely on external equipment (dead tablet battery means I can’t see the data).

2. Must be powered from the solar controller itself, or 12V from the boat.

3. Must display the required data (Battery volts, amps flowing into batts, watts the panels are producing and voltage of the panels).

4. Just display, no requirement to change controller settings. (I could use the Bluetooth dongle when I needed to do that)

4. Be efficient (only use small amounts of power)


So with the requirements set out I began my research. My search began with the port on the controllers that the optional Bluetooth dongle and remote display plugs into (Victron call it a port). I was delighted to discover that not only is this port a simple serial port running at 19200 baud, but Victron has released whitepapers on the protocol used (Victron Whitepaper). The controllers actually run 2 different protocols, a plain text version and a more advanced HEX version that allows settings to be changed. Since I had no requirement to change settings, the default plain text version would make things super simple. This opened up a whole realm of possibilities as interpreting and displaying plain text could be done by thousands of devices.


If I had been back in Canada I would have probably decided on designing a custom circuit board and using a PIC microcontroller (probably foolishly complex). However, that just wasn’t a possibility on the boat. I needed to pick items that would just require wiring and no custom board designing, etching and populating. So with a little brainstorming I came up with the following BOM (bill of materials). Since we had guests coming, I ordered the items to our address in Canada so our guests could bring them.

– Arduino Nano (1 for each controller)

– 16 X 2 LCD Display with I2C interface (blue backlight cause its sexy)

– JST-PH 2.00mm pitch 4-pin connectors (sigh Amazon sent the wrong ones).


I choose the Arduino Nano for a couple of reasons. First, in the Victron whitepaper I discovered that the VCC pin on the port could not supply enough current to run a standard backlight display. This meant that I would need to power a display from another source. Since the Arduino Nano has an onboard voltage regulator, I could use it to power the display from the house 12V. Second, size, the Nano is tiny and would allow me to physically affix it to the display easily. Finally, cost, although there are better Arduino boards (like the Micro), the Nano rains supreme on cost. I was able to get a 3 pack on for $18.21CDN. As to the 16 X 2 display, I didn’t really require an I2C interface as I would have had enough pins on the Nano. However having only 4 wires to hookup made the project that much simpler and only increased the cost by a few dollars for all three displays (work smart, not hard).  The costs breakdown is as follows.

Arduino Nanos  (3 pack)   – $18.21(cdn)

I2C 16 X 2 displays(3)         – $8.65(cdn)

JST connectors (10)            – $3.11(cdn)

Total                              – $29.97 (CANADIAN FOR ALL 3 DISPLAYS)

For shame Victron.. If a mere mortal like me can buy AT RETAIL the components to make a functional display for your MPPT controllers for less than 1/8th the cost of your displays, you are doing something wrong. You are either overcharging, or have overdesigned. Sure, you would need to include an enclosure, but at economies to scale it shouldn’t be hard to hit that price point for manufacture.  Maybe its time to start thinking about offering a simplistic display. Hell, raise the price of your controllers and include it in the box.


Alright once I had all the materials in hand, I knocked up a quick proof of concept version that I could use as a test bed to write and debug the code. Once I confirmed everything worked as expected I made the following schematic as a reference.



Here is a schematic of the Victron port. Ports are in different orientations depending on which model of MPPT you have!


Image from


A couple of things to note about the above schematic.

1. The TX pin on the VE.Direct port must go to the RX pin on the Arduino and vice versa (think about it, TX on one needs to talk to RX on other)

2. You will notice I only have 3 wires going to the port (4 pin port). You do not require the 5V pin if you only connect to the Victron when its powered by the house batts. The 5V pin is only required if you want to connect to the Victron when its disconnected from everything else and in this instance you would never need to do that. Technically, I only require 2 pins as I’m not sending anything to the RX port on the Victrons. However I decided to keep the 3rd pin in case I wanted to play with fancy stuff in the future.

3. Yes, I’m using a software serial port. However at 19200 baud the software serial port is %100 reliable. The Atmega chip has more than enough grunt. (This is why the RXO and TXI pins are not being used on the Arduino)

4. GND pins are GND pins. It doesn’t matter which GND goes where. Wire it up in the easiest manner.


Here is a quick verbal breakdown of the pinout.

ICSP GND             – LCD ground pin

5V pin                    – LCD VCC

A4                          – LCD SDA

A5                           – LCD SCL

GND pin(D side)  – Victron ground

D2                          – Victron TX

D3                          – Victron RX

VIN                         – +12V In (from house batts)

GND pin(A side) – -12V In (from house batts)


Now as to the software. This gave me a little trouble since I had not written in C++ in 15 years. Obtaining the data from the Victron was easy. Displaying text on the LCD was easy. However, I just couldn’t figure out how to parse the text data coming from the Victron. I did write some code that kind of worked, but it looked like it was written by a baby monkey with autism. I floundered for a day before I finally ceded and turned to the Arduino examples and the forums. Of course I found some nice neat code examples that just needed a little glue logic. I have attached the sketch to the bottom of this post and its free for anyone to download and use. It now looks like it was written by a normal baby monkey. I have also attached the required LiquidCrystal_I2C includes as a zip file. Use the “Add Zip Library” function in Arduino studio to install the library.

Before anyone asks.. YES its possible to display any of the parameters output by the Victron. I have actually left an extra parameter (CS) in the code as an example. I’m not sure you would want to display anything different as the 4 parameters I’m displaying are the most important for monitoring your solar setup. However, if you purchased a bigger display (20 X 4 I2C displays are available) it might be nice to display extra data. It should also be possible to add a little bit of code to turn the entire thing into a Victron data cable. This would allow you to use VictronConnect software on your Windows/Mac computer on top of the monitor functions I intended (yes, I actually tested this).


So finally here are some pictures of the finished product.


Backside of our “Energy Display Center”. As you can see I have made some changes  a few times. I wished I could have just bought a new front cover, but I can’t find the electrical box outside of St. Martin. The green boards are the LCDs with the Arduino’s zip tied to the back with double sided tape between!


The completed displays. I could have done a better job cutting, but its pretty tough with a Dremel. It looks better in real life, most of the flaws are not visible. So, the three on the left are the monitors for the Victron controllers, the one on the top right is the display for our wind generator, and the one on the bottom is the last Chinese controller we have aboard. Having this display is amazing as I can see the energy coming in from every source.

P.S. The top display says “INIT” because I’m still waiting for a connector. Since Amazon sent the wrong connectors, I have had to source them down here. I bought the first 2 connectors, but I have a line on a dead Bluetooth dongle so I don’t have to buy that final connector.


Here is a picture the updated version of the software. I have now added a letter to the top far right to show the status of the charger (B=Bulk, A=Absorb, F=Float, O=Off). I have also go the cable to get all three displays working.



VictronDisplay Source Code

LiquidCrystal_I2C Library

  11 comments for “Victron–Monitors (Technical)

  1. Henrik
    February 28, 2018 at 9:03 pm

    So how do you handle the sea air for these electronics? Are you not worried about corrosion? And yes…I did read this whole post.

    • travis
      March 1, 2018 at 6:06 am

      Believe it or not, but cheap Chinese electronics seem to do better out here. My theory is they use full leaded solder and its more resistant to corrosion.

      I’m not to worried about these gauges as they are housed in a electrical box in a good location. I will keep an eye on them, but I’m pretty sure I won’t have corrosion issues with them. If I do, they are pretty cheap to replace. If I have to replace them, I would coat the new ones in conformal coating or even clear nail polish.

  2. Brian
    March 13, 2018 at 9:30 am

    Very nicely done. Very nice that Victron left the barn door open so that you could easily get the data.

    Other than lightening strikes how are those Chinese MPPT controllers working? Do they cause RFI on HF radios?

    • travis
      March 13, 2018 at 2:02 pm

      We only have 1 of the Chinese controllers left aboard. It does alright. The efficiency is pretty close to the Victron units.

      However… The Victrons are just better. They are better built, have better support, have better accessories, ect. I have only kept the 1 Chinese controller as its only working on a single 100W panel. Some day I will upgrade that bank to 200W and I will most likely change to Victon controllers.

      They do not cause RFI on our VHF at all. We do not have a SSB. However, everyone says our boat is really quiet on the VHF. No buzzing or anything!

  3. Lars
    March 13, 2018 at 2:35 pm

    Very nice, my compliments! Just a few questions (for now…):
    1/ would it make sense to use the 12V ‘load’ or if absent the ‘battery’ output from the Victron controller itself to power the Arduino?
    2/ personally I would not choose blue backlighted displays. They indeed look cool, but at night they are much too bright and ruin your night vision. I would prefer red, but switchable red backlight would even be better. Could this be achieved in your setup?
    3/ do you know the rated power (mW) of one Arduino + display?

    • travis
      March 13, 2018 at 3:57 pm

      Thank you for the kind words.

      1 – I prefer to have them hooked to my main buss bar so that my “whole house” meter records the usage. (See point 3)

      2 – Red displays are available everywhere and usually cheaper (. However, there have actually been studies to show blue lights are just as friendly as red to night vision. The displays arefairly dim though and I have not noticed any effect to my night vision. However.. There is a sleep section in my code, simply adding lcd.noBacklight(); to that section and then adding lcd.Backlight(); to the wake section would turn the backlight off once the panels stop putting any current into the batts, then back on in the morning! I like having them lighted so I can see the batt voltage at 2am when I get up for pee!

      3 – No I don’t know the power of the 2 combined. However, its SUPER low. All three displays are lighted at night and we noticed ZERO difference in our nightly draw. I’m guessing that all 3 Arduinos and displays are drawing about 0.1A or less.

  4. March 14, 2018 at 12:25 am

    My compliment Travis. Sounds like a great project, lots of fun and well done.

    Matthijs Vader / Victron

    • travis
      March 14, 2018 at 5:22 am

      Thanks Matthijs.. It was a fun project. It was refreshing to work with a product that had not only left everything open, but actually published data on the protocols.

      I love my Victron MPPT controllers (especially with displays). Keep up the good work.

  5. Max
    January 2, 2020 at 9:11 pm

    Great Travis!!!
    This is exactly what I’m looking for and you save a lot of time of my life.
    This is great. thanks a lot.

    Now I would like to make some upgrade:
    – Install a bigger tft panel on 4 lines
    – Like your installation, I have also three regulators, so to save space on board I would like to install a Push button and use only one panel and one arduino and scroll between the data,
    – Add a page with the sum of the three regulators, so I can know exactly how much all the system charge.

    And when everything work I would like to send all the data to a cloud or an API on a web server to have details so I will be able to see from any mobile.

    I will keep you update.
    s/y Y2K

    • travis
      January 3, 2020 at 9:17 am

      I look forward to your update, however I will make some suggestions.

      1. I ran into the limitations of a software UART on this project. I highly suggest you pick an Arduino that has a hardware UART that is not shared with the programming USB port.

      2. Since you want to interface 3 controllers to 1 Arduino, then I recommend a much more powerful Arduino. I would go for a MEGA 2560 as it has 4 hardware UART and a ton of other pins to hook up the larger screen and ESP8260 (for sending data out to the internet).

      3. I would stick with a smaller screen and I2C interface. The I2C interface is VERY easy and will save you hours of messing around.

      4. If you want to get fancy, you could pick a touchscreen TFT and then use the screen touch instead of a button for switching display panels.

      On another note.. Thank you so much for the donation. I really appreciate it.

      Please don’t hesitate to ask questions if you run into some problems.


      • Max
        January 3, 2020 at 9:41 pm

        Hi Travis,
        yes, I always use I2C because you have only 4 cables and it’s easy to use.

        About the panel, this afternoon I’ve finish the code and it works perfectly on the Arduino Nano with three input (victron controller).
        With the new SoftwareSerial library it is possible to have more input togheter, I’ve alredy used for another project with two GPS.
        So now with only one button, I can have all the details in one LCD.
        I will change it to the bigger one, the 40×4 so I can understan which regulator I’m monitoring.

        I’ve already tested a TFT, but it need a Mega board to use it, otherwise with the UNO you don’t have enought input pin for the serial input, and the problem is that it is really big and the space with all the other panel that I’ve already is not enough.

        About the ESP8260, I normally use the WemoD1, it is a UNO with ESP8260, very powerfull and compatible, all in one board.

        Anyway, I will finish in the next days and I’ll send you code and pictures.


        s/y Y2K

Leave a Reply to Max Cancel reply

Your email address will not be published. Required fields are marked *