Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Python examples rework #27

Open
wants to merge 15 commits into
base: master
Choose a base branch
from
25 changes: 19 additions & 6 deletions Python/ADC.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,29 @@
import sys, time
import sys, signal, time
import navio.Common.util

import navio.adc
import navio.util

navio.util.check_apm()
if navio.Common.util.get_navio_version() == "NAVIO2":
import navio.Navio2.ADC as ADC
else:
import navio.Navio.ADC as ADC

adc = navio.adc.ADC()
navio.Common.util.check_apm()


def signal_handler(signal, frame):
print 'You pressed Ctrl+C!'
sys.exit(0)


signal.signal(signal.SIGINT, signal_handler)
# print 'Press Ctrl+C to exit'

adc = ADC()
results = [0] * adc.channel_count

while (True):
s = ''
for i in range (0, adc.channel_count):
for i in range(0, adc.channel_count):
results[i] = adc.read(i)
s += 'A{0}: {1:6.4f}V '.format(i, results[i] / 1000)
print(s)
Expand Down
83 changes: 46 additions & 37 deletions Python/AccelGyroMag.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,38 +26,47 @@
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
"""

import spidev
import time
import argparse
import sys
import navio.mpu9250
import navio.util

navio.util.check_apm()
import navio.Common.mpu9250
import navio.Common.util
import navio.Navio2.lsm9ds1

parser = argparse.ArgumentParser()
parser.add_argument("-i", help = "Sensor selection: -i [sensor name]. Sensors names: mpu is MPU9250, lsm is LSM9DS1")
navio.Common.util.check_apm()

if len(sys.argv) == 1:
print "Enter parameter"
parser.print_help()
sys.exit(1)
elif len(sys.argv) == 2:
sys.exit("Enter sensor name: mpu or lsm")
def get_inertial_sensor():

args = parser.parse_args()
if (navio.Common.util.get_navio_version() == "NAVIO2"):

if args.i == 'mpu':
print "Selected: MPU9250"
imu = navio.mpu9250.MPU9250()
elif args.i == 'lsm':
print "Selected: LSM9DS1"
imu = navio.lsm9ds1.LSM9DS1()
else:
print "Wrong sensor name. Select: mpu or lsm"
sys.exit(1)
parser = argparse.ArgumentParser()
parser.add_argument("-i", help = "Sensor selection: -i [sensor name]. Sensors names: mpu is MPU9250, lsm is LSM9DS1")

if len(sys.argv) == 1:
print "Enter parameter"
parser.print_help()
sys.exit(1)
elif len(sys.argv) == 2:
sys.exit("Enter sensor name: mpu or lsm")

args = parser.parse_args()

if args.i == 'mpu':
print "Selected: MPU9250"
return navio.Common.mpu9250.MPU9250()
elif args.i == 'lsm':
print "Selected: LSM9DS1"
return navio.Navio2.lsm9ds1.LSM9DS1()
else:
print "Wrong sensor name. Select: mpu or lsm"
sys.exit(1)
else:
print "Selected: MPU9250"
return navio.Common.mpu9250.MPU9250()


imu = get_inertial_sensor();

if imu.testConnection():
print "Connection established: True"
Expand All @@ -69,23 +78,23 @@
time.sleep(1)

while True:
# imu.read_all()
# imu.read_gyro()
# imu.read_acc()
# imu.read_temp()
# imu.read_mag()
# imu.read_all()
# imu.read_gyro()
# imu.read_acc()
# imu.read_temp()
# imu.read_mag()

# print "Accelerometer: ", imu.accelerometer_data
# print "Gyroscope: ", imu.gyroscope_data
# print "Temperature: ", imu.temperature
# print "Magnetometer: ", imu.magnetometer_data
# print "Accelerometer: ", imu.accelerometer_data
# print "Gyroscope: ", imu.gyroscope_data
# print "Temperature: ", imu.temperature
# print "Magnetometer: ", imu.magnetometer_data

# time.sleep(0.1)
# time.sleep(0.1)

m9a, m9g, m9m = imu.getMotion9()
m9a, m9g, m9m = imu.getMotion9()

print "Acc:", "{:+7.3f}".format(m9a[0]), "{:+7.3f}".format(m9a[1]), "{:+7.3f}".format(m9a[2]),
print " Gyr:", "{:+8.3f}".format(m9g[0]), "{:+8.3f}".format(m9g[1]), "{:+8.3f}".format(m9g[2]),
print " Mag:", "{:+7.3f}".format(m9m[0]), "{:+7.3f}".format(m9m[1]), "{:+7.3f}".format(m9m[2])
print "Acc:", "{:+7.3f}".format(m9a[0]), "{:+7.3f}".format(m9a[1]), "{:+7.3f}".format(m9a[2]),
print " Gyr:", "{:+8.3f}".format(m9g[0]), "{:+8.3f}".format(m9g[1]), "{:+8.3f}".format(m9g[2]),
print " Mag:", "{:+7.3f}".format(m9m[0]), "{:+7.3f}".format(m9m[1]), "{:+7.3f}".format(m9m[2])

time.sleep(0.5)
time.sleep(0.5)
9 changes: 5 additions & 4 deletions Python/Barometer.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,13 @@

import time

import navio.ms5611
import navio.util
import navio.Common.util

navio.util.check_apm()
import navio.Common.ms5611

baro = navio.ms5611.MS5611()
navio.Common.util.check_apm()

baro = navio.Common.ms5611.MS5611()
baro.initialize()

while(True):
Expand Down
52 changes: 25 additions & 27 deletions Python/GPS.py
Original file line number Diff line number Diff line change
@@ -1,50 +1,48 @@
import navio.util
import navio.ublox

import navio.Common.ublox

if __name__ == "__main__":

ubl = navio.ublox.UBlox("spi:0.0", baudrate=5000000, timeout=2)
ubl = navio.Common.ublox.UBlox("spi:0.0", baudrate=5000000, timeout=2)

ubl.configure_poll_port()
ubl.configure_poll(navio.ublox.CLASS_CFG, navio.ublox.MSG_CFG_USB)
ubl.configure_poll(navio.Common.ublox.CLASS_CFG, navio.Common.ublox.MSG_CFG_USB)
#ubl.configure_poll(navio.ublox.CLASS_MON, navio.ublox.MSG_MON_HW)

ubl.configure_port(port=navio.ublox.PORT_SERIAL1, inMask=1, outMask=0)
ubl.configure_port(port=navio.ublox.PORT_USB, inMask=1, outMask=1)
ubl.configure_port(port=navio.ublox.PORT_SERIAL2, inMask=1, outMask=0)
ubl.configure_port(port=navio.Common.ublox.PORT_SERIAL1, inMask=1, outMask=0)
ubl.configure_port(port=navio.Common.ublox.PORT_USB, inMask=1, outMask=1)
ubl.configure_port(port=navio.Common.ublox.PORT_SERIAL2, inMask=1, outMask=0)
ubl.configure_poll_port()
ubl.configure_poll_port(navio.ublox.PORT_SERIAL1)
ubl.configure_poll_port(navio.ublox.PORT_SERIAL2)
ubl.configure_poll_port(navio.ublox.PORT_USB)
ubl.configure_poll_port(navio.Common.ublox.PORT_SERIAL1)
ubl.configure_poll_port(navio.Common.ublox.PORT_SERIAL2)
ubl.configure_poll_port(navio.Common.ublox.PORT_USB)
ubl.configure_solution_rate(rate_ms=1000)

ubl.set_preferred_dynamic_model(None)
ubl.set_preferred_usePPP(None)

ubl.configure_message_rate(navio.ublox.CLASS_NAV, navio.ublox.MSG_NAV_POSLLH, 1)
ubl.configure_message_rate(navio.ublox.CLASS_NAV, navio.ublox.MSG_NAV_PVT, 1)
ubl.configure_message_rate(navio.ublox.CLASS_NAV, navio.ublox.MSG_NAV_STATUS, 1)
ubl.configure_message_rate(navio.ublox.CLASS_NAV, navio.ublox.MSG_NAV_SOL, 1)
ubl.configure_message_rate(navio.ublox.CLASS_NAV, navio.ublox.MSG_NAV_VELNED, 1)
ubl.configure_message_rate(navio.ublox.CLASS_NAV, navio.ublox.MSG_NAV_SVINFO, 1)
ubl.configure_message_rate(navio.ublox.CLASS_NAV, navio.ublox.MSG_NAV_VELECEF, 1)
ubl.configure_message_rate(navio.ublox.CLASS_NAV, navio.ublox.MSG_NAV_POSECEF, 1)
ubl.configure_message_rate(navio.ublox.CLASS_RXM, navio.ublox.MSG_RXM_RAW, 1)
ubl.configure_message_rate(navio.ublox.CLASS_RXM, navio.ublox.MSG_RXM_SFRB, 1)
ubl.configure_message_rate(navio.ublox.CLASS_RXM, navio.ublox.MSG_RXM_SVSI, 1)
ubl.configure_message_rate(navio.ublox.CLASS_RXM, navio.ublox.MSG_RXM_ALM, 1)
ubl.configure_message_rate(navio.ublox.CLASS_RXM, navio.ublox.MSG_RXM_EPH, 1)
ubl.configure_message_rate(navio.ublox.CLASS_NAV, navio.ublox.MSG_NAV_TIMEGPS, 5)
ubl.configure_message_rate(navio.ublox.CLASS_NAV, navio.ublox.MSG_NAV_CLOCK, 5)
ubl.configure_message_rate(navio.Common.ublox.CLASS_NAV, navio.Common.ublox.MSG_NAV_POSLLH, 1)
ubl.configure_message_rate(navio.Common.ublox.CLASS_NAV, navio.Common.ublox.MSG_NAV_PVT, 1)
ubl.configure_message_rate(navio.Common.ublox.CLASS_NAV, navio.Common.ublox.MSG_NAV_STATUS, 1)
ubl.configure_message_rate(navio.Common.ublox.CLASS_NAV, navio.Common.ublox.MSG_NAV_SOL, 1)
ubl.configure_message_rate(navio.Common.ublox.CLASS_NAV, navio.Common.ublox.MSG_NAV_VELNED, 1)
ubl.configure_message_rate(navio.Common.ublox.CLASS_NAV, navio.Common.ublox.MSG_NAV_SVINFO, 1)
ubl.configure_message_rate(navio.Common.ublox.CLASS_NAV, navio.Common.ublox.MSG_NAV_VELECEF, 1)
ubl.configure_message_rate(navio.Common.ublox.CLASS_NAV, navio.Common.ublox.MSG_NAV_POSECEF, 1)
ubl.configure_message_rate(navio.Common.ublox.CLASS_RXM, navio.Common.ublox.MSG_RXM_RAW, 1)
ubl.configure_message_rate(navio.Common.ublox.CLASS_RXM, navio.Common.ublox.MSG_RXM_SFRB, 1)
ubl.configure_message_rate(navio.Common.ublox.CLASS_RXM, navio.Common.ublox.MSG_RXM_SVSI, 1)
ubl.configure_message_rate(navio.Common.ublox.CLASS_RXM, navio.Common.ublox.MSG_RXM_ALM, 1)
ubl.configure_message_rate(navio.Common.ublox.CLASS_RXM, navio.Common.ublox.MSG_RXM_EPH, 1)
ubl.configure_message_rate(navio.Common.ublox.CLASS_NAV, navio.Common.ublox.MSG_NAV_TIMEGPS, 5)
ubl.configure_message_rate(navio.Common.ublox.CLASS_NAV, navio.Common.ublox.MSG_NAV_CLOCK, 5)
#ubl.configure_message_rate(navio.ublox.CLASS_NAV, navio.ublox.MSG_NAV_DGPS, 5)

while True:
msg = ubl.receive_message()
if msg is None:
if opts.reopen:
ubl.close()
ubl = navio.ublox.UBlox("spi:0.0", baudrate=5000000, timeout=2)
ubl = navio.Common.ublox.UBlox("spi:0.0", baudrate=5000000, timeout=2)
continue
print(empty)
break
Expand Down
21 changes: 15 additions & 6 deletions Python/LED.py
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
import sys

import navio.leds
import time
import navio.util
import os

import navio.Common.util
if navio.Common.util.get_navio_version() == "NAVIO2":
import navio.Navio2.Led as Led
else:
import navio.Navio.Led as Led


navio.util.check_apm()
if (os.getuid() != 0):
print "Not root. Please, launch like this: sudo python LED.py"
exit(-1)

led = navio.leds.Led()
navio.Common.util.check_apm()

led = Led()

led.setColor('Yellow')
print "LED is yellow"
Expand Down Expand Up @@ -37,3 +45,4 @@
led.setColor('Yellow')
print "LED is yellow"
time.sleep(1)

16 changes: 10 additions & 6 deletions Python/RCInput.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
import sys, time
import time

import navio.rcinput
import navio.util
import navio.Common.util

navio.util.check_apm()

rcin = navio.rcinput.RCInput()
if navio.Common.util.get_navio_version() == "NAVIO2":
import navio.Navio2.RCInput as RCInput
else:
import navio.Navio.RCInput as RCInput

navio.Common.util.check_apm()

rcin = RCInput()
while (True):
period = rcin.read(2)
print period
time.sleep(1)

22 changes: 15 additions & 7 deletions Python/Servo.py
Original file line number Diff line number Diff line change
@@ -1,16 +1,24 @@
import sys
import time
import os

import navio.pwm
import navio.util
import navio.Common.util

navio.util.check_apm()
if navio.Common.util.get_navio_version() == "NAVIO2":
import navio.Navio2.RCOutput as RCOutput
else:
import navio.Navio.RCOutput as RCOutput

SERVO_MIN = 1.250 # ms
SERVO_MAX = 1.750 # ms
PWM_OUTPUT = 0
SERVO_MIN = 1.250 #ms
SERVO_MAX = 1.750 #ms

with navio.pwm.PWM(PWM_OUTPUT) as pwm:
if (os.getuid() != 0):
print "Not root. Please, launch like this: sudo python Servo.py"
exit(-1)

navio.Common.util.check_apm()

with RCOutput(PWM_OUTPUT) as pwm:
pwm.set_period(50)
pwm.enable()

Expand Down
2 changes: 2 additions & 0 deletions Python/navio/Common/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from .mpu9250 import MPU9250
from .ms5611 import MS5611
File renamed without changes.
File renamed without changes.
File renamed without changes.
5 changes: 5 additions & 0 deletions Python/navio/util.py → Python/navio/Common/util.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,8 @@ def check_apm():
ret = sub.call(["ps -AT | grep -c ap-timer > /dev/null"], shell = True)
if ret <= 0:
sys.exit("APM is running. Can't launch the example")

def get_navio_version():
file = open("/sys/firmware/devicetree/base/hat/product_id")
version = "NAVIO" if file.readline(6) == "0x0001" else "NAVIO2"
return version
36 changes: 36 additions & 0 deletions Python/navio/Navio/ADC.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
from adafruit_ads1x15 import ADS1x15

class ADC():
ADS1015 = 0x00 # 12-bit ADC
ADS1115 = 0x01 # 16-bit ADC

# Select the gain
# gain = 6144 # +/- 6.144V
gain = 4096 # +/- 4.096V
# gain = 2048 # +/- 2.048V
# gain = 1024 # +/- 1.024V
# gain = 512 # +/- 0.512V
# gain = 256 # +/- 0.256V

# Select the sample rate
# sps = 8 # 8 samples per second
# sps = 16 # 16 samples per second
# sps = 32 # 32 samples per second
# sps = 64 # 64 samples per second
# sps = 128 # 128 samples per second
sps = 250 # 250 samples per second
# sps = 475 # 475 samples per second
# sps = 860 # 860 samples per second

# Initialise the ADC using the default mode (use default I2C address)
# Set this to ADS1015 or ADS1115 depending on the ADC you are using!

channel_count = 4

def __init__(self):
self.adc = ADS1x15(ic=self.ADS1115)

def read(self, ch):
return self.adc.readADCSingleEnded(ch, self.gain, self.sps)


Loading