示例#1
0
文件: gui.py 项目: rdmejia/tesis
    def btn_start_shot_click(self):
        self.mw_states = []
        self.xyz_shots = []
        for device in self.mw_devices:
            # try:
            #     device.connect()
            # except:
            #     print 'connection to %s failed (the device might be already connected)' % device.address
            self.mw_states.append(
                MetaWearState(device, self.mw_positions[device.address], self))

        for s in self.mw_states:
            libmetawear.mbl_mw_settings_set_connection_parameters(
                s.device.board, 7.5, 7.5, 0, 6000)
            sleep(1.5)

            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)

            signal = libmetawear.mbl_mw_acc_get_acceleration_data_signal(
                s.device.board)
            libmetawear.mbl_mw_datasignal_subscribe(signal, None, s.callback)

            libmetawear.mbl_mw_acc_enable_acceleration_sampling(s.device.board)
            libmetawear.mbl_mw_acc_start(s.device.board)

        # t = Timer(15, self.time_elapsed)
        # t.start()
        print 'shot has started'
        return
示例#2
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)
示例#3
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)
示例#4
0
    def init_device(self, device):
        print(f"Configuring device: {device.device.address}")
        # reset(device.device)
        libmetawear.mbl_mw_settings_set_connection_parameters(
            device.device.board, 7.5, 7.5, 0, 6000)
        sleep(1.5)

        libmetawear.mbl_mw_acc_set_odr(device.device.board, 25.0)
        libmetawear.mbl_mw_acc_set_range(device.device.board, 8.0)
        libmetawear.mbl_mw_acc_write_acceleration_config(device.device.board)
示例#5
0
    def setup(self):
        #Set up file
        self.file.write(
            "Time, Time from start (s), Acc x, Acc y, Acc z, Gyro x, Gyro y, Gyro z, Mag x, Mag y, Mag z \n"
        )

        #Set up board
        libmetawear.mbl_mw_settings_set_connection_parameters(
            self.device.board, 7.5, 7.5, 0, 6000)

        #Acceleration sampling frequency
        libmetawear.mbl_mw_acc_set_odr(s.device.board,
                                       100.0)  #fastest frequency is 400 Hz
        #range of acceleration
        libmetawear.mbl_mw_acc_set_range(s.device.board, 16.0)
        #write acceleration config
        libmetawear.mbl_mw_acc_write_acceleration_config(s.device.board)

        #Gyro sampling frequency
        libmetawear.mbl_mw_gyro_bmi160_set_odr(self.device.board,
                                               8)  #9 = 200Hz, 8 = 100Hz
        #Gyro range
        libmetawear.mbl_mw_gyro_bmi160_set_range(
            self.device.board, 0)  #0 = 2000 dps, 1 = 1000 dps
        #Write gyro config
        libmetawear.mbl_mw_gyro_bmi160_write_config(self.device.board)

        libmetawear.mbl_mw_mag_bmm150_set_preset(self.device.board, 3)

        sleep(1.5)

        e = Event()

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

        fn_wrapper = cbindings.FnVoid_VoidP_VoidP(processor_created)

        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)
        mag = libmetawear.mbl_mw_mag_bmm150_get_b_field_data_signal(
            self.device.board)
        signals = (c_void_p * 2)()
        signals[0] = gyro
        signals[1] = mag
        libmetawear.mbl_mw_dataprocessor_fuser_create(acc, signals, 2, None,
                                                      fn_wrapper)
        e.wait()

        libmetawear.mbl_mw_datasignal_subscribe(self.processor, None,
                                                self.callback)
示例#6
0
    def setup(self):
        # s represents a device's MAC address
        for s in self.states:

            # Device configuration
            print("Configuring device...")

            # Not sure what these parameters are for, but they're synchronized with the rest of the settings.
            libmetawear.mbl_mw_settings_set_connection_parameters(
                s.device.board, 7.5, 7.5, 0, 6000)

            # Acceleration
            libmetawear.mbl_mw_acc_set_odr(s.device.board,
                                           25.0)  # 25 Hz data collection rate
            libmetawear.mbl_mw_acc_set_range(s.device.board, 16.0)  # Unsure
            libmetawear.mbl_mw_acc_write_acceleration_config(
                s.device.board)  # Save to the board's configuration
            signal_acceleration = libmetawear.mbl_mw_acc_get_acceleration_data_signal(
                s.device.board)
            libmetawear.mbl_mw_datasignal_subscribe(signal_acceleration,
                                                    s.callback_accel)
            libmetawear.mbl_mw_acc_enable_acceleration_sampling(s.device.board)

            # Gyrometer
            libmetawear.mbl_mw_gyro_bmi160_set_odr(s.device.board,
                                                   6)  # 6 is index for 25 Hz
            libmetawear.mbl_mw_gyro_bmi160_write_config(s.device.board)
            signal_gyro = libmetawear.mbl_mw_gyro_bmi160_get_rotation_data_signal(
                s.device.board)
            libmetawear.mbl_mw_datasignal_subscribe(signal_gyro,
                                                    s.callback_gyro)
            libmetawear.mbl_mw_gyro_bmi160_enable_rotation_sampling(
                s.device.board)

            # Magnometer
            libmetawear.mbl_mw_mag_bmm150_configure(s.device.board, 1, 1,
                                                    6)  # 6 is index for 25 Hz
            signal_mag = libmetawear.mbl_mw_mag_bmm150_get_b_field_data_signal(
                s.device.board)
            libmetawear.mbl_mw_datasignal_subscribe(signal_mag, s.callback_mag)

            # Run LED - Stays green until IMUs / system starts with a pulse
            pattern = LedPattern(repeat_count=Const.LED_REPEAT_INDEFINITELY)
            libmetawear.mbl_mw_led_load_preset_pattern(byref(pattern),
                                                       LedPreset.SOLID)
            libmetawear.mbl_mw_led_write_pattern(s.device.board,
                                                 byref(pattern),
                                                 LedColor.GREEN)
            libmetawear.mbl_mw_led_play(s.device.board)
        return
states = []
for i in range(len(sys.argv) - 1):
    d = MetaWear(sys.argv[i + 1])
    d.connect()
    print("Connected to " + d.address)
    states.append(State(d))

for s in states:
    print("Configuring device")
    libmetawear.mbl_mw_settings_set_connection_parameters(
        s.device.board, 7.5, 7.5, 0, 6000)
    sleep(1.5)

    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)

    signal = libmetawear.mbl_mw_acc_get_acceleration_data_signal(
        s.device.board)
    libmetawear.mbl_mw_datasignal_subscribe(signal, None, s.callback)

    libmetawear.mbl_mw_acc_enable_acceleration_sampling(s.device.board)
    libmetawear.mbl_mw_acc_start(s.device.board)

sleep(3.0)

for s in states:
    libmetawear.mbl_mw_acc_stop(s.device.board)
    libmetawear.mbl_mw_acc_disable_acceleration_sampling(s.device.board)
print("Searching for device...")
d = MetaWear(sys.argv[1])
d.connect()
print("Connected to " + d.address)
print("Configuring device")
libmetawear.mbl_mw_settings_set_connection_parameters(d.board, 7.5, 7.5, 0,
                                                      6000)
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),
clf = classificationModelTrain(dfFeaturesTrainingSet)

#___________________________________________
''' Configuring the device '''

#Starts the measures
for s in states:  #for each device
    print("\nConfiguring device...")
    libmetawear.mbl_mw_settings_set_connection_parameters(
        s.device.board, 7.5, 7.5, 0, 6000)
    sleep(1.5)

    #set the parameters for the measure
    libmetawear.mbl_mw_acc_set_odr(
        s.device.board, 50.0)  #sets the output data rate (frequency, in Hz)
    libmetawear.mbl_mw_acc_set_range(s.device.board,
                                     8.0)  #sets the full scale range
    libmetawear.mbl_mw_acc_write_acceleration_config(
        s.device.board)  #writes the acceleration settings to the board

    dataSignal = libmetawear.mbl_mw_acc_get_acceleration_data_signal(
        s.device.board
    )  #retrieves the data signal representing acceleration data
    libmetawear.mbl_mw_datasignal_subscribe(
        dataSignal, None, s.callback
    )  #subscribes to a data stream, processing messages with the given handler

    libmetawear.mbl_mw_acc_enable_acceleration_sampling(
        s.device.board)  #enables acceleration sampling
    libmetawear.mbl_mw_acc_start(
        s.device.board)  #switches the accelerometer to active mode
    print('Device ready')
示例#10
0
callback = FnVoid_VoidP_DataP(data_handler)
samples = 0

device = MetaWear("EA:5F:96:E7:1F:3D")
device.connect()
print("Connected to " + device.address)

print("Configuring device")
libmetawear.mbl_mw_settings_set_connection_parameters(device.board, 7.5, 7.5,
                                                      0, 6000)
sleep(1.5)

libmetawear.mbl_mw_acc_set_odr(device.board,
                               100.0)  #sets output data range in Hz
libmetawear.mbl_mw_acc_set_range(device.board,
                                 16.0)  #sets full scale range in g's
libmetawear.mbl_mw_acc_write_acceleration_config(device.board)

#retrieves and returns pointer to data signal representing acceleration data
signal = libmetawear.mbl_mw_acc_get_acceleration_data_signal(device.board)
libmetawear.mbl_mw_datasignal_subscribe(
    signal, None,
    callback)  #subscribes to data stream, processes msgs with given handler

libmetawear.mbl_mw_acc_enable_acceleration_sampling(
    device.board)  #enables acceleration sampling
libmetawear.mbl_mw_acc_start(
    device.board)  #switches accelerometer to active mode

sleep(5.0)
示例#11
0
print("Connected")

event = Event()
init_handler = FnVoid_VoidP_Int(lambda caller, status: event.set())
libmetawear.mbl_mw_metawearboard_initialize(device.board, init_handler)
event.wait()

if libmetawear.mbl_mw_metawearboard_is_initialized(device.board) != 0:
    device.serialize()

    print("model = " +
          str(libmetawear.mbl_mw_metawearboard_get_model_name(device.board)))
    libmetawear.mbl_mw_settings_set_connection_parameters(
        device.board, 7.5, 7.5, 0, 6000)
    libmetawear.mbl_mw_acc_set_odr(device.board, 50.0)
    libmetawear.mbl_mw_acc_set_range(device.board, 4.0)
    libmetawear.mbl_mw_acc_write_acceleration_config(device.board)

    samples = []

    def counter(data):
        samples.append(copy.deepcopy(parse_value(data)))

    data_handler = FnVoid_DataP(counter)
    signal = libmetawear.mbl_mw_acc_get_packed_acceleration_data_signal(
        device.board)
    libmetawear.mbl_mw_datasignal_subscribe(signal, data_handler)

    libmetawear.mbl_mw_acc_enable_acceleration_sampling(device.board)
    libmetawear.mbl_mw_acc_start(device.board)
    print("Sampling data")