Build a dual-battery monitor for Arduino, Part Two
Today we'll access the battery readings from Python on a Raspberry Pi so you can use the data from within your own programs.
Copy and paste the code below into a file named aaimi_battery_monitor.py on your Raspberry Pi. You can also download the full setup folder including yesterday's Arduino sketch from here.
#AAIMI Battery Monitor #Part of the AAIMI Project #aaimi.anthscomputercave.com #By Anthony Hartup import serial import time battery1 = 0.0 battery2 = 0.0 arduino = serial.Serial('/dev/ttyUSB0', 9600) def get_float_string(n): return str(''.join(d for d in n if d.isdigit() or d == '.')) def power_check(sensor): global battery1, battery2 if sensor == 'a': arduino.write('a') elif sensor == 'b': arduino.write('b') while True: try: time.sleep(0.01) raw_power = arduino.readline() power = get_float_string(raw_power) if sensor == 'a': battery1 = float(power) print(power) return power elif sensor == 'b': battery2 = float(power) print(power) return power except: pass KeyboardInterrupt
You may need to change the "ttyUSB0" port in line 12 in the code above. See How to configure a serial connection between an Arduino and a Raspberry Pi to learn more.
Run the module
From a terminal, navigate to the folder containing the file and type sudo python.
When Python loads type import aaimi_battery_monitor as abm.
Now type abm.power_check('a').
You should see the voltage for your first battery.
To see the voltage for the second battery type abm.power_check('b').
Now, here we are only using the module in a Python shell, but you can import this module into any of your Python programs and call it in the same way as the examples above. You can then decide how your program should react to the voltage levels.
Previous: Dual battery monitor
There are currently no comments for this article.