Ejemplo n.º 1
0
class DfrobotBoard(Board):
    """
    Board class for drobot hardware.
    """
    def __init__(self):

        super(DfrobotBoard, self).__init__()

        # pin mappings
        self.pin_mappings = PinMappings(temp_pin=3,
                                        flame_pin=2,
                                        speaker_pin=15,
                                        reference_voltage=1.0)

        if HARDWARE_CONFIG.platform == KNOWN_PLATFORMS.firmata:
            addSubplatform(GENERIC_FIRMATA, "/dev/ttyACM0")
            self.pin_mappings += 512
            self.pin_mappings.reference_voltage = 0.33

        self.temp = Aio(self.pin_mappings.temp_pin)
        self.flame = Aio(self.pin_mappings.flame_pin)
        self.speaker = Gpio(self.pin_mappings.speaker_pin)

        self.speaker.dir(DIR_OUT)

    def update_hardware_state(self):
        """
        Update hardware state.
        """

        obj_temp = self.read_obj_temp()
        self.trigger_hardware_event(TEMP_READING, obj_temp)

        flame_detected = self.detect_flame()
        self.trigger_hardware_event(FLAME_DETECTED, flame_detected)

    # hardware functions
    def read_obj_temp(self):

        return ((500 * self.temp.read()) /
                1024) * self.pin_mappings.reference_voltage

    def detect_flame(self):

        return (self.flame.read() * self.pin_mappings.reference_voltage >= 300)

    def play_beep(self):

        self.speaker.write(1)
        SCHEDULER.add_job(lambda: self.speaker.write(0),
                          "date",
                          run_date=datetime.utcnow() + timedelta(seconds=1))

    def play_temp(self):

        self.play_beep()

    def play_flame(self):

        self.play_beep()
Ejemplo n.º 2
0
    def __init__(self):

        super(DfrobotBoard, self).__init__()

        # pin mappings
        self.pin_mappings = PinMappings(temp_pin=3,
                                        flame_pin=2,
                                        speaker_pin=15,
                                        reference_voltage=1.0)

        if HARDWARE_CONFIG.platform == KNOWN_PLATFORMS.firmata:
            addSubplatform(GENERIC_FIRMATA, "/dev/ttyACM0")
            self.pin_mappings += 512
            self.pin_mappings.reference_voltage = 0.33

        self.temp = Aio(self.pin_mappings.temp_pin)
        self.flame = Aio(self.pin_mappings.flame_pin)
        self.speaker = Gpio(self.pin_mappings.speaker_pin)

        self.speaker.dir(DIR_OUT)
    def __init__(self):

        super(DfrobotBoard, self).__init__()

        # pin mappings
        self.pin_mappings = PinMappings(accel_x_pin=3,
                                        accel_y_pin=2,
                                        accel_z_pin=1,
                                        screen_register_select_pin=8,
                                        screen_enable_pin=9,
                                        screen_data_0_pin=4,
                                        screen_data_1_pin=5,
                                        screen_data_2_pin=6,
                                        screen_data_3_pin=7,
                                        screen_analog_input_pin=0)

        if HARDWARE_CONFIG.platform == KNOWN_PLATFORMS.firmata:
            addSubplatform(GENERIC_FIRMATA, "/dev/ttyACM0")
            self.pin_mappings += 512

        self.screen = SAINSMARTKS(self.pin_mappings.screen_register_select_pin,
                                  self.pin_mappings.screen_enable_pin,
                                  self.pin_mappings.screen_data_0_pin,
                                  self.pin_mappings.screen_data_1_pin,
                                  self.pin_mappings.screen_data_2_pin,
                                  self.pin_mappings.screen_data_3_pin,
                                  self.pin_mappings.screen_analog_input_pin)

        # accelerometer setup
        self.ax = Aio(self.pin_mappings.accel_x_pin)
        self.ay = Aio(self.pin_mappings.accel_y_pin)
        self.az = Aio(self.pin_mappings.accel_z_pin)

        self.acceleration_detected = False
    def __init__(self):

        super(DfrobotBoard, self).__init__()

        # pin mappings
        self.pin_mappings = PinMappings(
            accel_x_pin=3,
            accel_y_pin=2,
            accel_z_pin=1,
            screen_register_select_pin=8,
            screen_enable_pin=9,
            screen_data_0_pin=4,
            screen_data_1_pin=5,
            screen_data_2_pin=6,
            screen_data_3_pin=7,
            screen_analog_input_pin=0
        )

        if HARDWARE_CONFIG.platform == KNOWN_PLATFORMS.firmata:
            addSubplatform(GENERIC_FIRMATA, "/dev/ttyACM0")
            self.pin_mappings += 512

        self.screen = SAINSMARTKS(
            self.pin_mappings.screen_register_select_pin,
            self.pin_mappings.screen_enable_pin,
            self.pin_mappings.screen_data_0_pin,
            self.pin_mappings.screen_data_1_pin,
            self.pin_mappings.screen_data_2_pin,
            self.pin_mappings.screen_data_3_pin,
            self.pin_mappings.screen_analog_input_pin
        )

        # accelerometer setup
        self.ax = Aio(self.pin_mappings.accel_x_pin)
        self.ay = Aio(self.pin_mappings.accel_y_pin)
        self.az = Aio(self.pin_mappings.accel_z_pin)

        self.acceleration_detected = False
Ejemplo n.º 5
0
"""
Some sample mappings:

x, y = vr_x.read(), vr_y.read()
if y == 0 and 500 < x < 600:
    rover.send(Move.FORWARD)
elif y > 1000 and 500 < x < 600:
    rover.send(Move.BACKWARD)
elif x == 0 and 500 < y < 600:
    rover.send(Move.LEFT)
elif x > 1000 and 300 < y < 600:
    rover.send(Move.RIGHT)
else:
    pass
"""
from mraa import Aio

X_PIN = 0
Y_PIN = 1

vr_x = Aio(X_PIN)
vr_y = Aio(Y_PIN)
class DfrobotBoard(Board):
    """
    Board class for drobot hardware.
    """
    def __init__(self):

        super(DfrobotBoard, self).__init__()

        # pin mappings
        self.pin_mappings = PinMappings(accel_x_pin=3,
                                        accel_y_pin=2,
                                        accel_z_pin=1,
                                        screen_register_select_pin=8,
                                        screen_enable_pin=9,
                                        screen_data_0_pin=4,
                                        screen_data_1_pin=5,
                                        screen_data_2_pin=6,
                                        screen_data_3_pin=7,
                                        screen_analog_input_pin=0)

        if HARDWARE_CONFIG.platform == KNOWN_PLATFORMS.firmata:
            addSubplatform(GENERIC_FIRMATA, "/dev/ttyACM0")
            self.pin_mappings += 512

        self.screen = SAINSMARTKS(self.pin_mappings.screen_register_select_pin,
                                  self.pin_mappings.screen_enable_pin,
                                  self.pin_mappings.screen_data_0_pin,
                                  self.pin_mappings.screen_data_1_pin,
                                  self.pin_mappings.screen_data_2_pin,
                                  self.pin_mappings.screen_data_3_pin,
                                  self.pin_mappings.screen_analog_input_pin)

        # accelerometer setup
        self.ax = Aio(self.pin_mappings.accel_x_pin)
        self.ay = Aio(self.pin_mappings.accel_y_pin)
        self.az = Aio(self.pin_mappings.accel_z_pin)

        self.acceleration_detected = False

    def update_hardware_state(self):
        """
        Update hardware state.
        """

        current_acceleration = self.detect_acceleration()
        if current_acceleration != self.acceleration_detected:
            if current_acceleration:
                self.trigger_hardware_event(ACCELERATION_DETECTED)
            self.acceleration_detected = current_acceleration

    # hardware functions
    def detect_acceleration(self):
        """
        Detect acceleration change.
        """

        ax = self.ax.read()
        ay = self.ay.read()
        az = self.az.read()

        if ax > 412 or ay > 412 or az > 412:
            return True
        else:
            return False

    def write_message(self, message, line=0):
        """
        Write message to LCD screen.
        """

        message = message.ljust(16)
        self.screen.setCursor(line, 0)
        self.screen.write(message)
        print(message)

    def change_background(self, color):
        """
        Change LCD screen background color.
        No effect on the dfrobot.
        """

        pass
class DfrobotBoard(Board):

    """
    Board class for drobot hardware.
    """

    def __init__(self):

        super(DfrobotBoard, self).__init__()

        # pin mappings
        self.pin_mappings = PinMappings(
            accel_x_pin=3,
            accel_y_pin=2,
            accel_z_pin=1,
            screen_register_select_pin=8,
            screen_enable_pin=9,
            screen_data_0_pin=4,
            screen_data_1_pin=5,
            screen_data_2_pin=6,
            screen_data_3_pin=7,
            screen_analog_input_pin=0
        )

        if HARDWARE_CONFIG.platform == KNOWN_PLATFORMS.firmata:
            addSubplatform(GENERIC_FIRMATA, "/dev/ttyACM0")
            self.pin_mappings += 512

        self.screen = SAINSMARTKS(
            self.pin_mappings.screen_register_select_pin,
            self.pin_mappings.screen_enable_pin,
            self.pin_mappings.screen_data_0_pin,
            self.pin_mappings.screen_data_1_pin,
            self.pin_mappings.screen_data_2_pin,
            self.pin_mappings.screen_data_3_pin,
            self.pin_mappings.screen_analog_input_pin
        )

        # accelerometer setup
        self.ax = Aio(self.pin_mappings.accel_x_pin)
        self.ay = Aio(self.pin_mappings.accel_y_pin)
        self.az = Aio(self.pin_mappings.accel_z_pin)

        self.acceleration_detected = False

    def update_hardware_state(self):

        """
        Update hardware state.
        """

        current_acceleration = self.detect_acceleration()
        if current_acceleration != self.acceleration_detected:
            if current_acceleration:
                self.trigger_hardware_event(ACCELERATION_DETECTED)
            self.acceleration_detected = current_acceleration

    # hardware functions
    def detect_acceleration(self):

        """
        Detect acceleration change.
        """

        ax = self.ax.read()
        ay = self.ay.read()
        az = self.az.read()

        if ax > 412 or ay > 412 or az > 412:
            return True
        else:
            return False

    def write_message(self, message, line=0):

        """
        Write message to LCD screen.
        """

        message = message.ljust(16)
        self.screen.setCursor(line, 0)
        self.screen.write(message)
        print(message)

    def change_background(self, color):

        """
        Change LCD screen background color.
        No effect on the dfrobot.
        """

        pass