注意:

The Funtoo Linux project has transitioned to "Hobby Mode" and this wiki is now read-only.

Difference between revisions of "Funtoo Power Monitor"

From Funtoo
Jump to navigation Jump to search
(Created page with "= Making a Funtoo Based DC Voltage/Current Monitoring System Using a Raspberry Pi and INA219 Breakout Board = ''N.B.: This page is mostly a placeholder with the big picture it...")
 
Line 22: Line 22:
* Vcc goes to pin 4 on the GPIO header
* Vcc goes to pin 4 on the GPIO header
* Gnd goes to pin 6 on the GPIO header
* Gnd goes to pin 6 on the GPIO header
* SCL goes to pin 3 on the GPIO header
* SCL goes to pin 5 on the GPIO header
* SDA goes to pin 5 on the GPIO header
* SDA goes to pin 3 on the GPIO header
* A ground line to the RPi will be needed, so connect a wire to pin 9 on the GPIO header
* A ground line to the RPi will be needed, so connect a wire to pin 9 on the GPIO header



Revision as of 02:20, April 19, 2017

Making a Funtoo Based DC Voltage/Current Monitoring System Using a Raspberry Pi and INA219 Breakout Board

N.B.: This page is mostly a placeholder with the big picture items spelled out. I will flesh it out more as I have more time to devote to it. —Ed

Most guides on the internet for doing things like power monitoring on a Raspberry Pi are Debian distro based, and, as such, lack essential things that will make them work on a distro like Funtoo. This guide focuses on creating a DC voltage and DC current monitoring system utilizing the INA219 Current Sensor Breakout board.

The INA219 can measure DC voltages up to +32V and DC current up ±3.2A (it can measure higher currents with a different sense resistor).

Basic Outline

  • Acquire parts (RPi, INA219, misc. hookup wires, etc)
  • Connect parts
  • Install & configure software on the RPi

Acquire Parts

Obviously, we'll need to acquire a Raspberry Pi, an INA219 breakout board, and various wires to connecting things up.

Connect Parts

Once we have acquired the INA219 and soldered the headers on it, we can now hook it up to our Raspberry Pi. The basic connections are (pins on the INA219 going from left to right):

  • Vcc goes to pin 4 on the GPIO header
  • Gnd goes to pin 6 on the GPIO header
  • SCL goes to pin 5 on the GPIO header
  • SDA goes to pin 3 on the GPIO header
  • A ground line to the RPi will be needed, so connect a wire to pin 9 on the GPIO header

Connect a wire to Vin+ on the INA219 terminal connector. If you intend to measure current, connect another wire to Vin- on the terminal connector.

Install & Configure Software

Out of the box, the Raspberry Pi disables the I²C bus, so we have to enable it. First, add the following lines to /boot/config.txt:

   /boot/config.txt - Raspberry Pi configuration
dtparam=i2c1=on
dtparam=i2c_arm=on

We'll also need to have a module loaded at boot time as well. Add the following to /etc/conf.d/modules:

   /etc/conf.d/modules - I²C module configuration
modules="i2c_dev"

Next, we need to install a Python module to read the smbus. The python USE flag should be enabled:

root # emerge -avq i2c-tools

Here's where things get messy. We need four more packages (pi_ina219, RPi.GPIO, Adafruit_GPIO, and Adafruit_PureIO) but they aren't in the tree yet. Hopefully by the time this is revised there will be ebuilds for these packages. For now, it's enough to download and install them using their installation methods.

Testing

With i2c-tools installed, we can check to see if the RPi can see the INA219 board (use -y 0 for a 256MB RPi):

root # i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --

Assuming you didn't change the address of the board (up to four can be connected to the same I²C bus), you should see a 40 in the output. Also, assuming that the i2c_dev module was loaded on boot, you should see an i2c device in /dev:

root # ls /dev/i2c*
/dev/i2c-1

For measuring straight DC voltages, all that is needed is to connect the Vin+ wire to the battery positive, and connect the RPi ground (the wire connected to pin 9 on the GPIO header) to the battery negative. If you intend to measure the current consumption of a circuit while powered by the battery being monitored, you will want to connect the Vin- wire to the positive side of the circuit, and RPi ground to the negative side of the circuit.

   Note

There should be no arcing or sparking anywhere! If there is, immediately disconnect the offending part, and double check all your connections to make sure that they are correct, and that nothing is shorting out.

Once your circuit is hooked up, you can use the example program in the pi_ina219 package to test that things are working as they should:

root # ./example.py
Bus Voltage    : 6.384 V
Bus Current    : 0.100 mA
Supply Voltage : 6.384 V
Shunt voltage  : 0.010 mV
Power          : 0.000 mW