Skip to content
This repository was archived by the owner on Jul 20, 2025. It is now read-only.

Commit 480c79b

Browse files
committed
new examples
1 parent c3d3844 commit 480c79b

File tree

10 files changed

+671
-0
lines changed

10 files changed

+671
-0
lines changed

examples/full_reset.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# usage: python full_reset.py [mac]
2+
from __future__ import print_function
3+
import sys
4+
from mbientlab.metawear import MetaWear, libmetawear
5+
from mbientlab.metawear.cbindings import *
6+
from time import sleep
7+
from threading import Event
8+
9+
device = MetaWear(sys.argv[1])
10+
device.connect()
11+
print("Connected")
12+
13+
libmetawear.mbl_mw_logging_stop(device.board)
14+
libmetawear.mbl_mw_logging_clear_entries(device.board)
15+
libmetawear.mbl_mw_macro_erase_all(device.board)
16+
libmetawear.mbl_mw_debug_reset_after_gc(device.board)
17+
print("Erase logger and clear all entries")
18+
sleep(1.0)
19+
20+
libmetawear.mbl_mw_debug_disconnect(device.board)
21+
sleep(1.0)
22+
23+
device.disconnect()
24+
print("Disconnect")
25+
sleep(1.0)

examples/led_dongle.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# usage: python led.py [mac]
2+
from __future__ import print_function
3+
from mbientlab.metawear import MetaWear, libmetawear
4+
from mbientlab.metawear.cbindings import *
5+
from time import sleep
6+
from threading import Event
7+
8+
import sys
9+
10+
device = MetaWear(sys.argv[1], hci_mac="B8:27:EB:F2:61:2E")
11+
device.connect()
12+
print("Connected")
13+
14+
pattern= LedPattern(repeat_count= Const.LED_REPEAT_INDEFINITELY)
15+
libmetawear.mbl_mw_led_load_preset_pattern(byref(pattern), LedPreset.SOLID)
16+
libmetawear.mbl_mw_led_write_pattern(device.board, byref(pattern), LedColor.GREEN)
17+
libmetawear.mbl_mw_led_play(device.board)
18+
19+
sleep(5.0)
20+
21+
libmetawear.mbl_mw_led_stop_and_clear(device.board)
22+
sleep(1.0)
23+
24+
device.disconnect()
25+
sleep(1.0)

examples/led_temp.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# usage: python led.py [mac]
2+
from __future__ import print_function
3+
from mbientlab.metawear import MetaWear, libmetawear
4+
from mbientlab.metawear.cbindings import *
5+
from time import sleep
6+
from threading import Event
7+
8+
import sys
9+
10+
device = MetaWear(sys.argv[1])
11+
device.connect()
12+
print("Connected")
13+
14+
pattern= LedPattern(repeat_count= Const.LED_REPEAT_INDEFINITELY)
15+
libmetawear.mbl_mw_led_load_preset_pattern(byref(pattern), LedPreset.SOLID)
16+
libmetawear.mbl_mw_led_write_pattern(device.board, byref(pattern), LedColor.GREEN)
17+
libmetawear.mbl_mw_led_play(device.board)
18+
19+
sleep(5.0)
20+
21+
libmetawear.mbl_mw_led_stop_and_clear(device.board)
22+
sleep(1.0)
23+
24+
device.disconnect()
25+
sleep(1.0)

examples/motion_record_log.py

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
# usage: python stream_acc.py [mac1] [mac2] ... [mac(n)]
2+
from __future__ import print_function
3+
from mbientlab.metawear import MetaWear, libmetawear, parse_value, create_voidp_int, create_voidp
4+
from mbientlab.metawear.cbindings import *
5+
from time import sleep
6+
from threading import Event
7+
8+
import platform
9+
import sys
10+
11+
12+
if sys.version_info[0] == 2:
13+
range = xrange
14+
15+
class State:
16+
def __init__(self, device):
17+
self.device = device
18+
self.samples = 0
19+
self.events = {"processor" : Event(), "event" : Event(), "log" : Event(), "download" : Event() }
20+
21+
def processor_created(self, context, signal):
22+
self.passthrough_signal = signal
23+
self.events["processor"].set()
24+
25+
def logger_ready(self, context, pointer):
26+
self.logger = pointer
27+
self.events["log"].set()
28+
29+
def event_ready(self, context, board, status):
30+
print(status)
31+
self.events["event"].set()
32+
33+
def wont_be_used():
34+
print("nothing")
35+
36+
37+
states = []
38+
for i in range(len(sys.argv) - 1):
39+
d = MetaWear(sys.argv[i + 1])
40+
d.connect()
41+
print("Connected to " + d.address)
42+
states.append(State(d))
43+
44+
for s in states:
45+
processor_created_fn= FnVoid_VoidP_VoidP(s.processor_created)
46+
logger_created_fn= FnVoid_VoidP_VoidP(s.logger_ready)
47+
event_created_fn = FnVoid_VoidP_VoidP_Int(s.event_ready)
48+
49+
print("Configuring device")
50+
libmetawear.mbl_mw_settings_set_connection_parameters(s.device.board, 7.5, 7.5, 0, 6000)
51+
sleep(1.5)
52+
53+
# setup accelerometer
54+
libmetawear.mbl_mw_acc_set_range(s.device.board, 16.0)
55+
libmetawear.mbl_mw_acc_set_odr(s.device.board, 25)
56+
libmetawear.mbl_mw_acc_write_acceleration_config(s.device.board)
57+
print("setup accelerometer sensor")
58+
59+
# get acc signal
60+
acc_signal = libmetawear.mbl_mw_acc_get_acceleration_data_signal(s.device.board)
61+
print("get accelerometer signal")
62+
63+
# setup passthrough on acc data for x samples and log it
64+
s.events["processor"].clear()
65+
print("setup passthrough")
66+
passthrough = libmetawear.mbl_mw_dataprocessor_passthrough_create(acc_signal, PassthroughMode.COUNT, 0, None, processor_created_fn)
67+
s.events["processor"].wait()
68+
69+
# setup logger
70+
s.events["log"].clear()
71+
libmetawear.mbl_mw_datasignal_log(s.passthrough_signal, None, logger_created_fn)
72+
s.events["log"].wait()
73+
74+
sleep(1.0)
75+
76+
# setup any motion
77+
libmetawear.mbl_mw_acc_bosch_set_any_motion_count(s.device.board, 2)
78+
libmetawear.mbl_mw_acc_bosch_set_any_motion_threshold(s.device.board, 0.1)
79+
libmetawear.mbl_mw_acc_bosch_write_motion_config(s.device.board)
80+
print("setup bmi160 motion recognition")
81+
82+
# get motion signal
83+
motion_signal = libmetawear.mbl_mw_acc_bosch_get_motion_data_signal(s.device.board)
84+
print("get motion signal")
85+
86+
# create event that changes count based on motion signal
87+
s.events["event"].clear()
88+
libmetawear.mbl_mw_event_record_commands(motion_signal)
89+
libmetawear.mbl_mw_dataprocessor_passthrough_set_count(s.passthrough_signal, 10)
90+
print("create event that changes counter based on motion")
91+
libmetawear.mbl_mw_event_end_record(motion_signal, None, event_created_fn)
92+
s.events["event"].wait()
93+
94+
# start
95+
print("Start")
96+
libmetawear.mbl_mw_logging_start(s.device.board, 0)
97+
libmetawear.mbl_mw_acc_enable_acceleration_sampling(s.device.board)
98+
libmetawear.mbl_mw_acc_start(s.device.board)
99+
libmetawear.mbl_mw_acc_bosch_enable_motion_detection(s.device.board)
100+
libmetawear.mbl_mw_acc_bosch_start(s.device.board)
101+
102+
print("0 min")
103+
sleep(60.0)
104+
print("1 min")
105+
sleep(60.0)
106+
print("2 min")
107+
sleep(60.0)
108+
print("3 min")
109+
sleep(60.0)
110+
print("4 min")
111+
sleep(60.0)
112+
print("5 min")
113+
sleep(60.0)
114+
print("6 min")
115+
sleep(60.0)
116+
print("7 min")
117+
sleep(60.0)
118+
print("8 min")
119+
sleep(60.0)
120+
print("9 min")
121+
sleep(60.0)
122+
print("10 min")
123+
124+
for s in states:
125+
print("Stop")
126+
libmetawear.mbl_mw_acc_stop(s.device.board)
127+
libmetawear.mbl_mw_acc_disable_acceleration_sampling(s.device.board)
128+
libmetawear.mbl_mw_acc_bosch_disable_motion_detection(s.device.board)
129+
libmetawear.mbl_mw_acc_bosch_stop(s.device.board)
130+
libmetawear.mbl_mw_logging_stop(s.device.board)
131+
132+
print("Downloading data")
133+
sleep(1.0)
134+
135+
s.events["download"].clear()
136+
def progress_update_handler(context, entries_left, total_entries):
137+
if (entries_left == 0):
138+
s.events["download"].set()
139+
140+
fn_wrapper = FnVoid_VoidP_UInt_UInt(progress_update_handler)
141+
download_handler = LogDownloadHandler(context = None, \
142+
received_progress_update = fn_wrapper, \
143+
received_unknown_entry = cast(None, FnVoid_VoidP_UByte_Long_UByteP_UByte), \
144+
received_unhandled_entry = cast(None, FnVoid_VoidP_DataP))
145+
146+
log_callback = FnVoid_VoidP_DataP(lambda ctx, p: print("{epoch: %d, value: %s}" % (p.contents.epoch, parse_value(p))))
147+
libmetawear.mbl_mw_logger_subscribe(s.logger, None, log_callback)
148+
libmetawear.mbl_mw_logging_download(s.device.board, 0, byref(download_handler))
149+
s.events["download"].wait()
150+
Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
# usage: python stream_acc.py [mac1] [mac2] ... [mac(n)]
2+
from __future__ import print_function
3+
from mbientlab.metawear import MetaWear, libmetawear, parse_value, create_voidp_int, create_voidp
4+
from mbientlab.metawear.cbindings import *
5+
from time import sleep
6+
from threading import Event
7+
8+
import platform
9+
import sys
10+
11+
12+
if sys.version_info[0] == 2:
13+
range = xrange
14+
15+
class State:
16+
def __init__(self, device):
17+
self.device = device
18+
self.samples = 0
19+
self.events = {"processor" : Event(), "event" : Event(), "log" : Event(), "download" : Event() }
20+
21+
def processor_created(self, context, signal):
22+
self.passthrough_signal = signal
23+
self.events["processor"].set()
24+
25+
def logger_ready(self, context, pointer):
26+
self.logger = pointer
27+
self.events["log"].set()
28+
29+
def event_ready(self, context, board, status):
30+
print(status)
31+
self.events["event"].set()
32+
33+
def wont_be_used():
34+
print("nothing")
35+
36+
37+
states = []
38+
for i in range(len(sys.argv) - 1):
39+
d = MetaWear(sys.argv[i + 1])
40+
d.connect()
41+
print("Connected to " + d.address)
42+
states.append(State(d))
43+
44+
for s in states:
45+
processor_created_fn= FnVoid_VoidP_VoidP(s.processor_created)
46+
logger_created_fn= FnVoid_VoidP_VoidP(s.logger_ready)
47+
event_created_fn = FnVoid_VoidP_VoidP_Int(s.event_ready)
48+
49+
print("Configuring device")
50+
libmetawear.mbl_mw_settings_set_connection_parameters(s.device.board, 7.5, 7.5, 0, 6000)
51+
sleep(1.5)
52+
53+
# setup accelerometer
54+
libmetawear.mbl_mw_acc_set_range(s.device.board, 16.0)
55+
libmetawear.mbl_mw_acc_set_odr(s.device.board, 25)
56+
libmetawear.mbl_mw_acc_write_acceleration_config(s.device.board)
57+
print("setup accelerometer sensor")
58+
59+
# get acc signal
60+
acc_signal = libmetawear.mbl_mw_acc_get_acceleration_data_signal(s.device.board)
61+
print("get accelerometer signal")
62+
63+
# setup passthrough on acc data for x samples and log it
64+
s.events["processor"].clear()
65+
print("setup passthrough")
66+
passthrough = libmetawear.mbl_mw_dataprocessor_passthrough_create(acc_signal, PassthroughMode.COUNT, 0, None, processor_created_fn)
67+
s.events["processor"].wait()
68+
69+
# setup logger
70+
s.events["log"].clear()
71+
libmetawear.mbl_mw_datasignal_log(s.passthrough_signal, None, logger_created_fn)
72+
s.events["log"].wait()
73+
74+
sleep(1.0)
75+
76+
# setup any motion
77+
libmetawear.mbl_mw_acc_bosch_set_any_motion_count(s.device.board, 2)
78+
libmetawear.mbl_mw_acc_bosch_set_any_motion_threshold(s.device.board, 0.1)
79+
libmetawear.mbl_mw_acc_bosch_write_motion_config(s.device.board)
80+
print("setup bmi160 motion recognition")
81+
82+
# get motion signal
83+
motion_signal = libmetawear.mbl_mw_acc_bosch_get_motion_data_signal(s.device.board)
84+
print("get motion signal")
85+
86+
# create event that changes count based on motion signal
87+
s.events["event"].clear()
88+
libmetawear.mbl_mw_event_record_commands(motion_signal)
89+
libmetawear.mbl_mw_dataprocessor_passthrough_set_count(s.passthrough_signal, 10)
90+
print("create event that changes counter based on motion")
91+
libmetawear.mbl_mw_event_end_record(motion_signal, None, event_created_fn)
92+
s.events["event"].wait()
93+
94+
# start
95+
print("Start")
96+
libmetawear.mbl_mw_logging_start(s.device.board, 0)
97+
libmetawear.mbl_mw_acc_enable_acceleration_sampling(s.device.board)
98+
libmetawear.mbl_mw_acc_start(s.device.board)
99+
libmetawear.mbl_mw_acc_bosch_enable_motion_detection(s.device.board)
100+
libmetawear.mbl_mw_acc_bosch_start(s.device.board)
101+
102+
sleep(6.0)

0 commit comments

Comments
 (0)