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)
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
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))
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")
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
# 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)
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)
#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]]
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)