Exemplo n.º 1
0
    def setup(self):
        libmetawear.mbl_mw_settings_set_connection_parameters(self.device.board, 7.5, 7.5, 0, 600)
        sleep(1.5)

        e = Event()

        def processor_created(context, pointer):
            self.processor = pointer
            e.set()
        fn_wrapper = cbindings.FnVoid_VoidP_VoidP(processor_created)

        # set accelerometer to 100Hz sampling rate and range to +/- 16 g's
        libmetawear.mbl_mw_acc_set_odr(s.device.board, 100.0)
        libmetawear.mbl_mw_acc_set_range(s.device.board, 16.0)
        libmetawear.mbl_mw_acc_write_acceleration_config(s.device.board)
        
        # set gyro to 100Hz sampling rate and +/- 1000 deg/sec. 
        libmetawear.mbl_mw_gyro_bmi160_set_odr(s.device.board, MBL_MW_GYRO_BMI160_ODR_100Hz)
        libmetawear.mbl_mw_gyro_bmi160_set_range(s.device.board, MBL_MW_GYRO_BMI160_RANGE_1000dps)
        libmetawear.mbl_mw_gyro_bmi160_write_config(s.device.board)


        acc = libmetawear.mbl_mw_acc_get_acceleration_data_signal(self.device.board)
        gyro = libmetawear.mbl_mw_gyro_bmi160_get_rotation_data_signal(self.device.board)

        signals = (c_void_p * 1)()
        signals[0] = gyro

        # libmetawear.mbl_mw_dataprocessor_accounter_create(signals, None, fn_wrapper)
        fuser = create_voidp(lambda fn: libmetawear.mbl_mw_dataprocessor_fuser_create(acc, signals, 1, None, fn), resource = "fuser", event = e)
        accounter = create_voidp(lambda fn: libmetawear.mbl_mw_dataprocessor_accounter_create(fuser, None, fn), resource = "accounter", event = e)
		
        # libmetawear.mbl_mw_datasignal_subscribe(self.processor, None, self.callback)
        libmetawear.mbl_mw_datasignal_subscribe(accounter, None, self.callback)
Exemplo n.º 2
0
    def setup(self):
        # set BLE connection params (min connect interval, max interval,
        # latency, timeout) all in milliseconds
        libmetawear.mbl_mw_settings_set_connection_parameters(
            self.device.board, 7.5, 7.5, 0, 6000)
        # set BLE advertising strength (higher strength = higher power consumption
        # but theoretically better connectivity)
        libmetawear.mbl_mw_settings_set_tx_power(self.device.board, 4)
        sleep(1.5)

        e = Event()

        def processor_created(context, pointer):
            self.processor = pointer
            e.set()

        fn_wrapper = metacbindings.FnVoid_VoidP_VoidP(processor_created)

        # set accelerometer to 100Hz sampling rate and range to +/- 16 g's
        libmetawear.mbl_mw_acc_set_odr(s.device.board, 100.0)
        libmetawear.mbl_mw_acc_set_range(s.device.board, 16.0)
        libmetawear.mbl_mw_acc_write_acceleration_config(s.device.board)

        # set gyro to 100Hz sampling rate and +/- 1000 deg/sec.
        libmetawear.mbl_mw_gyro_bmi160_set_odr(s.device.board,
                                               MBL_MW_GYRO_BMI160_ODR_100Hz)
        libmetawear.mbl_mw_gyro_bmi160_set_range(
            s.device.board, MBL_MW_GYRO_BMI160_RANGE_1000dps)
        libmetawear.mbl_mw_gyro_bmi160_write_config(s.device.board)

        # get pointers referencing the acc and gyro data signals
        acc = libmetawear.mbl_mw_acc_get_acceleration_data_signal(
            self.device.board)
        gyro = libmetawear.mbl_mw_gyro_bmi160_get_rotation_data_signal(
            self.device.board)

        signals = (c_void_p * 1)()
        signals[0] = gyro

        # //libmetawear.mbl_mw_dataprocessor_accounter_create(signals, None, fn_wrapper)

        # chain two processors together (fuser and accounter) to get timestamped acc+gyro data
        # create a fuser "data processor" which packages the acc and gyro signals into same packets before sending
        fuser = create_voidp(
            lambda fn: libmetawear.mbl_mw_dataprocessor_fuser_create(
                acc, signals, 1, None, fn),
            resource="fuser",
            event=e)
        # accounter processor adds correct epoch data to BLE packets, necessary for timestamping stream-mode data
        accounter = create_voidp(
            lambda fn: libmetawear.mbl_mw_dataprocessor_accounter_create(
                fuser, None, fn),
            resource="accounter",
            event=e)

        # //libmetawear.mbl_mw_datasignal_subscribe(self.processor, None, self.callback)
        libmetawear.mbl_mw_datasignal_subscribe(accounter, None, self.callback)
 def connect_to_sensor(self):
     self.device.connect()
     self.signal = libmetawear.mbl_mw_acc_get_acceleration_data_signal(
         self.device.board)
     self.logger = create_voidp(
         lambda fn: libmetawear.mbl_mw_datasignal_log(
             self.signal, None, fn),
         resource="acc_logger")
     logging.info('metawear device connected')
     return 1
Exemplo n.º 4
0
def createTimer(mmr):
    mmr.parameters = I2cReadParameters(device_addr=AD7745_ADDR,
                                       register_addr=REG_CAP_DATA)

    e = Event()

    mmr.timer = create_voidp(
        lambda fn: libmetawear.mbl_mw_timer_create_indefinite(
            mmr.device.board, 11, 0, None, fn),
        resource="timer",
        event=e)
    libmetawear.mbl_mw_event_record_commands(mmr.timer)
    libmetawear.mbl_mw_datasignal_read_with_parameters(mmr.i2c_signal,
                                                       byref(mmr.parameters))
    create_voidp_int(
        lambda fn: libmetawear.mbl_mw_event_end_record(mmr.timer, None, fn),
        event=e)
    print(mmr.timer)
    mmr.timer_id = libmetawear.mbl_mw_timer_get_id(mmr.timer)
    print("id" + str(mmr.timer_id))
Exemplo n.º 5
0
import sys
import time

print("Searching for device...")
d = MetaWear(sys.argv[1])
d.connect()
print("Connected to " + d.address)

print("Configuring device")

try:
    print("Get and log acc signal")
    signal = libmetawear.mbl_mw_acc_get_acceleration_data_signal(d.board)
    logger = create_voidp(
        lambda fn: libmetawear.mbl_mw_datasignal_log(signal, None, fn),
        resource="acc_logger")

    print("Start logging")
    libmetawear.mbl_mw_logging_start(d.board, 0)

    print("Start acc")
    libmetawear.mbl_mw_acc_set_odr(d.board, 400.)
    libmetawear.mbl_mw_acc_write_acceleration_config(d.board)
    libmetawear.mbl_mw_acc_enable_acceleration_sampling(d.board)
    libmetawear.mbl_mw_acc_start(d.board)

    print("Logging data for 10s")
    time.sleep(10.0)

    print("Setop acc")
Exemplo n.º 6
0
import sys

# connect
print("Searching for device...")
d = MetaWear(sys.argv[1])
d.connect()
print("Connected to " + d.address)

try:
    # setup events
    e = Event()
    print("Configuring device")
    
    # get temp signal and setup logger
    signal = libmetawear.mbl_mw_multi_chnl_temp_get_temperature_data_signal(d.board, MetaWearRProChannel.ON_BOARD_THERMISTOR)
    logger = create_voidp(lambda fn: libmetawear.mbl_mw_datasignal_log(signal, None, fn), resource = "temp_logger", event = e)
    
    # create a timer
    timer = create_voidp(lambda fn: libmetawear.mbl_mw_timer_create_indefinite(d.board, 1000, 0, None, fn), resource = "timer", event = e)
    
    # record an event
    libmetawear.mbl_mw_event_record_commands(timer)
    
    # event is to read temp signal
    libmetawear.mbl_mw_datasignal_read(signal)
    create_voidp_int(lambda fn: libmetawear.mbl_mw_event_end_record(timer, None, fn), event = e)
    
    # start logging
    libmetawear.mbl_mw_logging_start(d.board, 0)
    
    # start timer
Exemplo n.º 7
0
# create callback
callback = FnVoid_VoidP_DataP(lambda ctx, p: print("{epoch: %d, value: %s}" % (
    p.contents.epoch, parse_value(p))))

# get temp signal
print("Configuring device")
signal = libmetawear.mbl_mw_multi_chnl_temp_get_temperature_data_signal(
    d.board, MetaWearRProChannel.ON_BOARD_THERMISTOR)

# subscribe to temp signal
libmetawear.mbl_mw_datasignal_subscribe(signal, None, callback)

# create timer - fires ever 1000ms
timer = create_voidp(lambda fn: libmetawear.mbl_mw_timer_create_indefinite(
    d.board, 1000, 0, None, fn),
                     resource="timer",
                     event=e)

# create event based on timer - read temp when timer fires
libmetawear.mbl_mw_event_record_commands(timer)
libmetawear.mbl_mw_datasignal_read(signal)
create_voidp_int(
    lambda fn: libmetawear.mbl_mw_event_end_record(timer, None, fn), event=e)

# start timer
libmetawear.mbl_mw_timer_start(timer)

# wait 5s
print("Stream temp data for 5s")
sleep(5.0)
Exemplo n.º 8
0
print("Connecting to %s..." % (address))
d = MetaWear(address)
d.connect()
print("Connected")

print("Setting up Device")
libmetawear.mbl_mw_settings_set_connection_parameters(d.board, 7.5, 7.5, 0, 6000)

Long = LedPattern(pulse_duration_ms=1000, high_time_ms=500, high_intensity=16, low_intensity=16, repeat_count=Const.LED_REPEAT_INDEFINITELY)
sleep(1.0)

# Collecting GPIO and Switch Data
switch = libmetawear.mbl_mw_switch_get_state_data_signal(d.board)
GPIO = libmetawear.mbl_mw_gpio_get_analog_input_data_signal(d.board, 1, 0)

GPIO_logger = create_voidp(lambda fn: libmetawear.mbl_mw_datasignal_log(GPIO, None, fn), resource = "logger")
libmetawear.mbl_mw_datasignal_subscribe(switch, None, switch_callback)

timer = create_voidp(lambda fn: libmetawear.mbl_mw_timer_create_indefinite(d.board, 1000, 0, None, fn), resource = "timer", event = e) #sampling (ms)
libmetawear.mbl_mw_event_record_commands(timer)
libmetawear.mbl_mw_datasignal_read(GPIO)
libmetawear.mbl_mw_datasignal_read(switch)
create_voidp_int(lambda fn: libmetawear.mbl_mw_event_end_record(timer, None, fn), event = e)

# Logging Sensor Data
try:
    libmetawear.mbl_mw_led_write_pattern(d.board, byref(Long), LedColor.GREEN)
    libmetawear.mbl_mw_led_play(d.board)
    sleep(1.0)
    libmetawear.mbl_mw_led_stop_and_clear(d.board)
sleep(1.0)

e = Event()

try:
    # setup accelerometer (odr 50Hz and 2Gs)
    libmetawear.mbl_mw_acc_bmi160_set_odr(d.board, AccBmi160Odr._50Hz)
    libmetawear.mbl_mw_acc_set_range(d.board, 2.0)
    libmetawear.mbl_mw_acc_write_acceleration_config(d.board)

    # start to setup rms->avg->thresh->log chain
    acc_signal = libmetawear.mbl_mw_acc_get_acceleration_data_signal(d.board)

    # create RMS - root mean square of acc X,Y,Z
    rms = create_voidp(lambda fn: libmetawear.mbl_mw_dataprocessor_rms_create(
        acc_signal, None, fn),
                       resource="RMS",
                       event=e)
    print("RMS created")

    # setup averager - averages over 8 RMS samples @ 50Hz
    avg = create_voidp(lambda fn: libmetawear.
                       mbl_mw_dataprocessor_average_create(rms, 8, None, fn),
                       resource="averager",
                       event=e)
    print("Averager created")

    # setup event on avg - reset averager
    libmetawear.mbl_mw_event_record_commands(avg)
    libmetawear.mbl_mw_dataprocessor_average_reset(avg)
    create_voidp_int(
        lambda fn: libmetawear.mbl_mw_event_end_record(avg, None, fn), event=e)
Exemplo n.º 10
0
#logger = create_voidp(lambda fn: libmetawear.mbl_mw_datasignal_log(signal, None, fn), resource = "acc_logger")

parameter_VT = I2cReadParameters(device_addr = AD7745_ADDR, register_addr=REG_VT_DATA)

parameters = I2cReadParameters(device_addr = AD7745_ADDR, register_addr= REG_CAP_DATA)

sampling = 1
temp = []

libmetawear.mbl_mw_datasignal_read_with_parameters(i2c_signal, byref(parameter_VT))
libmetawear.mbl_mw_datasignal_read_with_parameters(i2c_signal, byref(parameter_VT))
libmetawear.mbl_mw_datasignal_read_with_parameters(i2c_signal, byref(parameter_VT))

e = Event()

timer = create_voidp(lambda fn: libmetawear.mbl_mw_timer_create(mmr.device.board, 11, 10000, 0,None, fn), resource="timer", event = e)
libmetawear.mbl_mw_event_record_commands(timer)
libmetawear.mbl_mw_datasignal_read_with_parameters(i2c_signal, byref(parameters))
create_voidp_int(lambda fn: libmetawear.mbl_mw_event_end_record(timer, None, fn), event = e)

libmetawear.mbl_mw_timer_start(timer)

sleep(15.0)

libmetawear.mbl_mw_timer_remove(timer)


print("writing...")

for i in range(len(mmr.timeStamp)):
    df.loc[i] = [mmr.timeStamp[i], mmr.date[i], mmr.i2c[i]]
Exemplo n.º 11
0
import platform
import sys

device = MetaWear(sys.argv[1])
device.connect()
print("Connected to " + device.address)

e = Event()

print("Configuring device")
accel_signal = libmetawear.mbl_mw_acc_get_acceleration_data_signal(
    device.board)

libmetawear.mbl_mw_macro_record(device.board, 1)
rss = create_voidp(lambda fn: libmetawear.mbl_mw_dataprocessor_rss_create(
    accel_signal, None, fn),
                   resource="rss",
                   event=e)
avg = create_voidp(lambda fn: libmetawear.mbl_mw_dataprocessor_average_create(
    rss, 4, None, fn),
                   resource="avg",
                   event=e)
threshold = create_voidp(
    lambda fn: libmetawear.mbl_mw_dataprocessor_threshold_create(
        avg, ThresholdMode.BINARY, 0.5, 0.0, None, fn),
    resource="threhsold",
    event=e)
ths_below = create_voidp(
    lambda fn: libmetawear.mbl_mw_dataprocessor_comparator_create(
        threshold, ComparatorOperation.EQ, -1.0, None, fn),
    resource="ths_below",
    event=e)