Example #1
0
 def __init__(self, buss_id, address):
     self.gyro = Gyroscope(buss_id, address)
     self.gyro_full_scale = 245
     self.acc = Accelerometer(buss_id, address)
     self.acc_full_scale = 2
     self.fifo = Fifo(buss_id, address)
     self.temp = Temperature(buss_id, address)
Example #2
0
    def run(self):
        index = 0
        max = len(self.file_list)
        for file in self.file_list:
            index = index + 1
            self.config_dict['accelerometer'].update({
                'index': index,
                'max': max
            })
            accelerometer_featurizer = Accelerometer(
                file, self.config_dict['accelerometer'])
            df_feature_windows, df_acc = accelerometer_featurizer.run_feature_extraction(
            )
            df_feature_windows.to_csv(
                os.path.join(self.out_dir, 'acc_' + os.path.basename(file)))

        return 1
Example #3
0
class Minimu:
    VERSION = 'minimu9v5'

    def __init__(self, buss_id, address):
        self.gyro = Gyroscope(buss_id, address)
        self.gyro_full_scale = 245
        self.acc = Accelerometer(buss_id, address)
        self.acc_full_scale = 2
        self.fifo = Fifo(buss_id, address)
        self.temp = Temperature(buss_id, address)

    def enable(self, odr=104):
        self.gyro.enable(odr)
        self.gyro_full_scale = self.gyro.get_full_scale_selection()
        self.acc.enable(odr)
        self.acc_full_scale = self.acc.get_full_scale_selection()
        self.fifo.enable(odr)

    def disable(self):
        self.gyro.disable()
        self.acc.disable()
        self.fifo.disable()

    def read_fifo_raw(self):
        data = np.array(self.fifo.get_data(), dtype=np.int)
        return data

    def read_fifo(self):
        data = np.array(self.fifo.get_data(), dtype=np.double)
        try:
            data[:, :3] *= 1
        except IndexError:
            sleep(0.1)
            data = np.array(self.fifo.get_data(), dtype=np.double)

        data[:, :3] *= self.gyro_full_scale
        data[:, -3:] *= self.acc_full_scale
        data[data > 0] /= 32767
        data[data < 0] /= 32768
        return data

    def read_temperature(self):
        return self.temp.get_temperature()
Example #4
0
        dTmDiff = errorSignal[2, 0] - errorSignal[0, 0]  #get time diff
        drvt = getDerivative(errorSignal[0, 1], errorSignal[2, 1], dTmDiff)

        #PID control equation
        PID = ((0.2) * errorSignal[1, 1] + (0.2) * agrInteg + (0.2) * drvt) + 1

#    print (errorSignal)
#    print ("________")

    return PID, agrInteg


#------------program system start------------#

#sensor objects
acc = Accelerometer()
alt = Altimeter()

#start clock count
tm = time.time()

#make dir to record flight data
root = "/home/pi/Documents/Flight Data/"
stamp = time.asctime(time.localtime(time.time()))
os.makedirs(root + stamp)

#to store max values for use in determining when to initiate controls
vMax = 0
hMax = 0

#for the storage of the error signals of previous cycles || structure: index | time, error
Example #5
0
# dev = True

import machine
# from umqtt.simple import MQTTClient
from accelerometer import Accelerometer
import config
import array
from rollingaverage import RollingStats
import mannet

drumstick_id = config.id

# See wiki for pinout: https://github.com/jackosx/CAMP/wiki/ESP32-Hardware

# TODO: Make high or low in config to support 2 sticks
stick = Accelerometer(scl=config.accel_scl, sda=config.accel_sda)

buzz = machine.Pin(config.buzz_pin, machine.Pin.OUT)
buzz.value(0)

striking = False

g_thresh = config.threshold

queue_len = 100
strike_avg = RollingStats(10, 10)

debounce_count = 0
buzz_count = 0
led_count = 0  # TODO for LEDs on strike
from accelerometer import Accelerometer
from barometer import Barometer
from gps import GPSSensor

import numpy as np
from time import sleep

# Initialise the i2c bus
I2CBUS_NUMBER = 1
bus = SMBus(I2CBUS_NUMBER)

# Initialise the gyroscope
gyroscope1 = Gyroscope(bus)

# Initialise the accelerometer
accelerometer1 = Accelerometer(bus)

# Initialise the barometer
barometer1 = Barometer(bus)
barometer1.calibrate()

# Initialise the GPS
gps1 = GPSSensor()
gps1.initialise()

# Initialise the server
server = com.ServerSocket()
server.connect()

try:
    while True:
Example #7
0
import machine
from umqtt.simple import MQTTClient
from accelerometer import Accelerometer
import config
import array
from rollingaverage import RollingStats

drumstick_id = config.id

# client = MQTTClient("drumstick-{}".format(config.id), "manatee.local")
# client.connect()

# See wiki for pinout: https://github.com/jackosx/CAMP/wiki/ESP32-Hardware

# TODO: Make high or low in config to support 2 sticks
stick = Accelerometer()
striking = False

g_thresh = config.threshold

queue_len = 100
hit_queue = array.array("H", [0] * queue_len)
hit_idx = 0
hit_count = 0
strike_avg = RollingStats(10, 10)
debounce_count = 0

prev_x, prev_y, prev_z = 0, 0, 0


# For debugging. Allows dev to adjust touch_thresh in REPL
Example #8
0
class MesureWindow(Screen):
    mesureState = ObjectProperty(None)
    acc = Accelerometer()
    analysisBtn = ObjectProperty(None)
    analyse = ObjectProperty(None)
    image_analyse = ObjectProperty(None)
    count = NumericProperty(1)
    image_command = ObjectProperty(None)

    def on_pre_enter(self):
        self.image_analyse.source = str(Path(os.path.abspath(__file__)).parent.joinpath("posture_img").joinpath("blank.png"))
        self.image_command.source = str(Path(os.path.abspath(__file__)).parent.joinpath("posture_img").joinpath("command.png"))

    def on_enter(self):
        self.click  = 0
        self.acc.stop = False

    def mesure_Btn(self):
        self.click+=1
        if self.click == 1 :
            self.image_command.source = str(Path(os.path.abspath(__file__)).parent.joinpath("posture_img").joinpath("blank.png"))
            t2 = Thread(target=self.acc.save_data)
            t2.start()
            self.mesureState.text = "[color=000000]Currently analyzing your posture...[/color]"
            self.analysisBtn.text = "Stop analysis"
            self.analysisBtn.background_color = (1,0,0,1)
            self.countdown()

        if self.click ==2 :
            self.event.cancel()
            self.acc.stop = True
            self.mesureState.text = "[color=000000]Posture analysis is completed[/color]"
            self.analysisBtn.text = "See the results"
            self.analysisBtn.background_color = (0,0,0,1)
            self.image_analyse.source = str(Path(os.path.abspath(__file__)).parent.joinpath("posture_img").joinpath("blank.png"))

        if self.click == 3 : 
            self.analyse.get_possible_file()
            try:
                day = self.acc.date
            except:
                pass
            else:
                self.analyse.available_session(day)
                session = self.analyse.sessions[-1]
                self.analyse.confirmDate.text = day
                self.analyse.btnSession.text = session
                self.analyse.btnSession.background_color = 0,1,0,1
                kv.current = "analyse"

    def on_leave(self):
        self.analysisBtn.text = "Start analysis"
        self.analysisBtn.background_color =0,1,0,1
        self.mesureState.text = ""

    def countdown(self):
        self.event = Clock.schedule_interval(self.update_label,0.5)

    def update_label(self,time_limit):
        #Function update_label is called every .5 sec, and the stickmans positions is updated by selecting the next image
        self.count+=1
        self.image_analyse.source = str(Path(os.path.abspath(__file__)).parent.joinpath("posture_img").joinpath("stickmans").joinpath(str(self.count)+".png"))
        if self.count ==28:
            self.count = 0
Example #9
0
from accelerometer import Accelerometer
from sounds import Taunter
from consumer import KnockDetectingConsumer

reader = Accelerometer()
taunter = Taunter()
consumer = KnockDetectingConsumer(reader, taunter.taunt)

if __name__ == "__main__":
    consumer.loop()
Example #10
0
import time
from pirc522 import RFID

from tags import WeightTag
from display import Display
from accelerometer import Accelerometer
from log import log
import http

rf = RFID()
display = Display()
accel = Accelerometer()
tagWeight = 0


def handle_tag(tag):
    # tag.weight = 20
    global tagWeight
    weightRead = tag.weight
    if weightRead and weightRead != tagWeight:
        display.show(weightRead)
    if weightRead:
        tagWeight = tag.weight


def get_tag():
    rf.request()
    err, uid = rf.anticoll()
    if not err:
        # log('Tag read, UID:', uid)
        tag = WeightTag(rf, uid)
Example #11
0
import numpy as np
import sys
from accelerometer import Accelerometer
from line_us import LineUs

# Open LineUs robot
my_line_us = LineUs('line-us.local')
time.sleep(1)
# Set speed
my_line_us.g94(30)

# Open camera
cap = cv2.VideoCapture(0)

# Open acceleromenter
accel = Accelerometer("/dev/ttyACM0")

# Create windows
img = np.zeros((int(1125 / 2), int(2000 / 2), 3))
cv2.namedWindow('Drawing image')
cv2.namedWindow('Camera')

x = 0
y = 0

# Main loop
while (1):
    time.sleep(0.001)

    # Get camera frame
    ret, gray = cap.read()
Example #12
0
sd = SD()
os.mount(sd, '/sd')
csv_file = open('/sd/data.csv', 'a')
log_file = open("/sd/log.txt", 'a')

logging.basicConfig(level=logging.DEBUG, filename=log_file)
logger = logging.getLogger("RoomMonitor")
logger.debug("Main loop starting")

comms = Comms()
wifi = WiFiManager()
comms.add_manager(0, wifi)

manager = DataManager(csv_file=csv_file)
acc = Accelerometer(
    py, config.manager_mqtt_user + "/feeds/" + config.manager_mqtt_name +
    ".acceleration")
manager.add_sensor(acc)
light = Light(
    py, config.manager_mqtt_user + "/feeds/" + config.manager_mqtt_name +
    ".light-1", config.manager_mqtt_user + "/feeds/" +
    config.manager_mqtt_name + ".light-2")
manager.add_sensor(light)
press = Pressure(
    py, config.manager_mqtt_user + "/feeds/" + config.manager_mqtt_name +
    ".pressure")
manager.add_sensor(press)
temphum = TempHum(
    py, config.manager_mqtt_user + "/feeds/" + config.manager_mqtt_name +
    ".temperature", config.manager_mqtt_user + "/feeds/" +
    config.manager_mqtt_name + ".humidity")