コード例 #1
0
ファイル: hydroponic.py プロジェクト: StarmanW/IoTHydroponic
    def __init__(self, config, firebase):
        self.config = config
        self.firebase = firebase
        self.data = {}

        self.led = 3
        pinMode(self.led, "OUTPUT")

        # Set solutions and food amount
        self.acidAmount = self.config["acidAmount"]
        self.alkaliAmount = self.config["alkaliAmount"]
        self.foodAmount = self.config["foodAmount"]

        # Set rate for solutions and food
        self.acidRate = self.config["acidRate"]
        self.alkaliRate = self.config["alkaliRate"]
        self.foodRate = self.config["foodRate"]

        # Setup servos
        self.pHServo = Servo(self.config["pHServoPin"])
        self.feederServo = Servo(self.config["feederServoPin"])
        self.feederInterval = self.config["feederInterval"]

        # Setup board
        self.ser = serial.Serial(self.config["acmNumber"],
                                 self.config['baudrate'])
        self.ser.baudrate = self.config['baudrate']
コード例 #2
0
ファイル: eggsort.py プロジェクト: fish-bones22/Egg-Sorter
def init():

    global pushServoPin, laneServoLeftPin, laneServoRightPin

    global servoPush, servoLaneLeft, servoLaneRight
    global camera, parser
    global button

    # Prepare GPIO
    GPIO.setmode(GPIO.BCM)
    GPIO.setwarnings(False)
    # Initialize variables
    pushServoPin = config.pushServoPin
    laneServoLeftPin = config.laneServoLeftPin
    laneServoRightPin = config.laneServoRightPin
    # Instantiate Servo motors
    servoPush = Servo(pushServoPin, 0)
    servoLaneLeft = Servo(laneServoLeftPin, config.returnAngle)
    servoLaneRight = Servo(laneServoRightPin, config.returnAngle)
    # Instantiate image capturer
    camera = ImageCapturer()
    camera.setZoom(config.cropArea)
    # Instantiate image parser
    parser = ImageParser()
    # Instantiate button
    button = Button(config.buttonPin, bounce_time=0.5)
    button.when_pressed = buttonPressed
コード例 #3
0
	def __init__(self, pi, servoX_pin, servoY_pin):
		self.pi = pi
		self.servo_X = Servo(pi, servoX_pin) 
		self.servo_Y = Servo(pi, servoY_pin)

		self.pwm = PWM(pi)
		self.pwm.set_frequency(50)	# for servo
コード例 #4
0
ファイル: pantilt.py プロジェクト: jhonnyv/RasPiBot202
 def __init__(self, panPin, tiltPin):
     self.panPin = panPin
     self.tiltPin = tiltPin
     self.pan = Servo(self.panPin, pwMin=.0010,
                      pwCtr=.00150, pwMax=.0020, dir=1)
     self.tilt = Servo(self.tiltPin, pwMin=.0008,
                       pwCtr=.00143, pwMax=.00207, dir=-1)
コード例 #5
0
 def test_that_position_is_set_for_multiple_servos(self):
     from executor import Executor
     exe = Executor()
     servos = [Servo(1, 100), Servo(2, 80)]
     states = [State(servos)]
     movement = Move(states)
     exe.run(movement)
     self._pwm.set_pwm.assert_has_calls(
         [call(1, 0, 600), call(2, 0, 575)], any_order=False)
コード例 #6
0
ファイル: puppet.py プロジェクト: jamoore5/pi-puppet
 def __init__(self, inital_angle=0):
     self.__left_leg = Servo(17, inital_angle)
     self.__left_arm = Servo(18, inital_angle, reverse=True)
     self.__right_arm = Servo(27, inital_angle)
     self.__right_leg = Servo(22, inital_angle, reverse=True)
     sleep(0.5)
     self.__left_leg.angle = None
     self.__left_arm.angle = None
     self.__right_arm.angle = None
     self.__right_leg.angle = None
コード例 #7
0
ファイル: OpenCat.py プロジェクト: kevinmcaleer/PicoCat
 def __init__(self, i2c, pca9685, shoulder_pin, foot_pin, name=None):
     self.shoulder = Servo(i2c=i2c,
                           pca9685=pca9685,
                           name='shoulder',
                           channel=shoulder_pin)
     self.foot = Servo(i2c=i2c,
                       pca9685=pca9685,
                       name="foot",
                       channel=foot_pin)
     if name is not None:
         self.__name = name
コード例 #8
0
    def __init__(self, baseId, name, origin, angle):

        self.name = name
        self.origin = origin
        self.angle = angle

        #joints in each leg
        numJoints = 4
        self.coxa = Servo(baseId * numJoints + 1)
        self.femur = Servo(baseId * numJoints + 2)
        self.tibia = Servo(baseId * numJoints + 3)
        self.tarsus = Servo(baseId * numJoints + 4)
コード例 #9
0
 def randomMove(self, statesCount):
     states = []
     for n in range(0, statesCount):
         state = State([])
         for i in range(1, 7):
             if n != 0:
                 servo = Servo(i, random.randint(-90, 90))
             else:
                 servo = Servo(i, 0)
             state.addServo(servo)
         states.append(state)
     return Move(states)
コード例 #10
0
ファイル: __main__.py プロジェクト: konikoni428/smartlock
def main():
    pi = pigpio.pi()
    srv = Servo(pi)
    swi = Switch(pi, srv)
    door = Door(pi)

    try:
        while True:
            logger.debug("waiting id card")
            # ここでカード読み込み
            if database.confirm("ここに番号"), "ここにIDm"):
                srv.open_lock()
                slack.send_slack("ここになまえ")
                time.sleep(10)
                while door.door_status() == door.OPEN:
                    time.sleep(0.5)
                srv.close_lock()
            else:
                led.red_led_on()
                print("Can't confirm.")
                time.sleep(3)
                led.red_led_off()
    except:
        pi.stop()
        r.close()
        main()
コード例 #11
0
def main():
    broker = redis.StrictRedis()
    sub = broker.pubsub()
    sub.subscribe(SC_CH)

    try:
        '''
        UP/DOWN servo => pin 13
        LEFT/RIGHT servo => pin 19
        '''
        sc = Servo()
        while True:
            message = sub.get_message()
            if message and not isinstance(
                    message['data'], int) and message['type'] == 'message':
                log.debug(type(message['data']))
                data = json.loads(message['data'].decode('utf-8'))
                log.debug("SC: received data:")
                log.debug(data)
                action = data['action']
                angle = int(data['angle'])
                if not (sc is None):
                    execute_action(sc, action, angle)
                else:
                    log.error(
                        "servos were not initialized not performing action!")
            sleep(0.2)

    except Exception as ex:
        log.error("exception in ServosController")
        log.error(ex, exc_info=True)
        sc.clean_up()
コード例 #12
0
    def __init__(self):
        self.is_initialized = False
        rospy.init_node('servo_interface', anonymous=False)
        self.sub = rospy.Subscriber('camera_position', std_msgs.msg.Float64,
                                    self.callback)

        rospy.on_shutdown(self.shutdown)

        try:
            self.tilt_servo = Servo(SERVO_PWM_PIN, PWM_FREQUENCY,
                                    DUTY_CYCLE_MIN, DUTY_CYCLE_MAX,
                                    SCALE_RANGE, COMPUTER)
            self.tilt_position = 0
        except NameError:
            rospy.logfatal(
                'Could not initialize servo.py. Is /computer parameter set correctly? '
                'Shutting down node...')
            rospy.signal_shutdown('')
        except:
            rospy.logfatal("Unexpected error:", sys.exc_info()[0])
            raise

        self.tilt_servo.set_position(self.tilt_position)
        rospy.loginfo('Initialized camera tilt servo in neutral position.')
        self.is_initialized = True
        self.spin()
コード例 #13
0
ファイル: server.py プロジェクト: johnnewman/PiServoServer
 def run(self):
     """
     Infinitely loops, waiting for socket connections and commands.
     """
     try:
         server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
         server_socket.bind(('127.0.0.1', self.__port))
         servo_queue = ServoQueue()
         servo_queue.start()
         while True:
             try:
                 server_socket.listen(2)
                 client_socket, _ = server_socket.accept()
                 message = client_socket.recv(2048).decode("utf-8")
                 re_result = re.match(
                     '^(?P<pin>[0-9]+) (?P<angle>[0-9]{1,3})$', message)
                 if re_result:
                     pin = int(re_result.group('pin'))
                     angle = int(re_result.group('angle'))
                     servo_queue.add_servo(Servo(pin, angle))
                 client_socket.shutdown(socket.SHUT_RDWR)
                 client_socket.close()
             except Exception as e:
                 print('Socket exception %s' % e)
                 time.sleep(ERROR_TIMEOUT)
     except Exception as e:
         print('Server exception %s' % e)
         return
コード例 #14
0
def get_graph():
    sensor = HC_SR04()
    servo = Servo()

    mapa = []

    while servo.angle <= 180:
        ang = servo.move2()
        sleep(0.05)
        dst1 = sensor.get_distance()
        dst2 = sensor.get_distance()
        dst = (dst1 + dst2) / 2
        medida = {'angle': ang * np.pi / 180, 'distance': dst}
        mapa.append(medida)

    theta = list(map(itemgetter('angle'), mapa))
    #theta = [x-np.pi/2 for x in theta]
    distance = list(map(itemgetter('distance'), mapa))

    graph = plt.subplot(111, projection='polar')
    graph.plot(theta, distance)
    graph.set_rmax(50)
    graph.set_rmin(0)
    graph.set_rticks([10, 20, 30, 40])
    graph.set_rlabel_position(0)
    graph.grid(True)
    graph.set_thetamin(0)
    graph.set_thetamax(180)

    GPIO.cleanup()

    plt.savefig('static/images/grafico.png')
    graph.clear()
コード例 #15
0
    def __init__(self,gps=False,servo_port=SERVO_PORT):
        # devices
        self.compass = Compass(I2C(COMPASS_I2C_ADDRESS),I2C(ACCELEROMETER_I2C_ADDRESS))
        self.rudder_servo = Servo(serial.Serial(servo_port),RUDDER_SERVO_CHANNEL,RUDDER_MIN_PULSE,RUDDER_MIN_ANGLE,RUDDER_MAX_PULSE,RUDDER_MAX_ANGLE)

	try:
           while True:
              current_bearing = self.compass.bearing
              difference = angle_between(TARGET_BEARING, current_bearing)

              # for definite rudder deflection at low angles for difference:
              # scaled_diff = max(5, abs(difference/3))
              # rudder_angle = copysign(scaled_diff,difference)

              # for tolerance of small differences
              rudder_angle = difference/3 if abs(difference) > 5 else 0

              self.rudder_servo.set_position(rudder_angle)
              print('Current bearing {:+.1f}, target {:+.1f}, rudder {:+.1f}'.format(current_bearing, TARGET_BEARING, rudder_angle))

              # smooth response with a sleep time of less than 100ms ?
              time.sleep(0.1)
   
        except (KeyboardInterrupt, SystemExit):
           quit()
コード例 #16
0
ファイル: walker.py プロジェクト: ObjectionTheory/Walkers
    def __init__(self, identity):
        self.id = identity

        #make sum servos
        self.joints = [Servo(i*4+self.id) for i in range(3)]
        self.joints[0].angle = 90
        self.joints[1].angle = 90
        self.joints[2].angle = 90

        

        #set servos to base position
        for servo in self.joints:
            servo.update(servo.angle)

        #loving those constants                             
        self.L1 = 88    #upper leg                            
        self.L2 = 91    #lower leg
        self.L3 = 47    #leg joint controller
        self.L4 = 90    #lower leg straight
        self.A = 28     #arm
        self.B = 103    #beam
        self.D = 25     #distance between servos
        self.Dang = 23.6#angle between servos
    
        #points in space for dem pivots
        self.p1 = np.array([0,0])           #SHOULD ALWAYS BE CONSTANT
        self.p2 = np.array([0,0])
        self.p3 = np.array([-10, 23.5])
        self.p4 = np.array([0,0])
        self.p5 = np.array([0,0])
        self.p6 = np.array([0,0])
コード例 #17
0
 def __init__(self, net, transformer, mean_file, labels, withoutservo,
              config, bkb, Mem):
     self.mean_file = mean_file
     self.labels = labels
     self.net = net
     self.transformer = transformer
     self.withoutservo = withoutservo
     self.config = config
     self.bkb = bkb
     self.Mem = Mem
     self.kernel_perto = np.ones(
         (self.config.kernel_perto, self.config.kernel_perto), np.uint8)
     self.kernel_perto2 = np.ones(
         (self.config.kernel_perto2, self.config.kernel_perto2), np.uint8)
     self.kernel_medio = np.ones(
         (self.config.kernel_medio, self.config.kernel_medio), np.uint8)
     self.kernel_medio2 = np.ones(
         (self.config.kernel_medio2, self.config.kernel_medio2), np.uint8)
     self.kernel_longe = np.ones(
         (self.config.kernel_longe, self.config.kernel_longe), np.uint8)
     self.kernel_longe2 = np.ones(
         (self.config.kernel_longe2, self.config.kernel_longe2), np.uint8)
     self.kernel_muito_longe = np.ones(
         (self.config.kernel_muito_longe, self.config.kernel_muito_longe),
         np.uint8)
     self.kernel_muito_longe2 = np.ones(
         (self.config.kernel_muito_longe2, self.config.kernel_muito_longe2),
         np.uint8)
     if self.withoutservo == False:
         self.servo = Servo(self.config.CENTER_SERVO_PAN,
                            self.config.POSITION_SERVO_TILT)
コード例 #18
0
    def __init__(self, scl=_SCL_PIN, sda=_SDA_PIN):
        """
        Initialize the turtleplotbot, optionally passing an i2c object to use.
        """
        self._current_step = [0, 0]  # current step indexes
        self._step_delay = 1000  # us delay between steps
        self._pen_delay = 250  # ms delay for pen raise or lower

        self.mcp23017 = mcp23017.MCP23017(
            machine.I2C(scl=machine.Pin(scl),
                        sda=machine.Pin(sda),
                        freq=100000), 0x20)

        # pylint: disable=no-member

        self.mcp23017.porta.mode = 0x00  # porta output
        self.mcp23017.porta.gpio = 0x00  # all pins low

        self._pen_servo = Servo(machine.Pin(_SERVO_PIN, machine.Pin.OUT),
                                freq=50,
                                min_us=600,
                                max_us=2400,
                                angle=180)

        time.sleep_ms(100)
        self._pen_servo.write_angle(degrees=_PEN_UP_ANGLE)

        self.rst = machine.Pin(16,
                               machine.Pin.OUT)  # power pin for LCD display
        self.rst.value(1)  # power on

        super().__init__()
コード例 #19
0
 def test_that_position_stays_to_servo_max_when_limit_passed(self):
     from executor import Executor
     exe = Executor()
     servos = [Servo(1, 100)]
     states = [State(servos)]
     movement = Move(states)
     exe.run(movement)
     self._pwm.set_pwm.assert_called_once_with(1, 0, 600)
コード例 #20
0
 def test_set_pwm_is_called_with_the_value_of_the_servo(self):
     from executor import Executor
     exe = Executor()
     servos = [Servo(1, 80)]
     states = [State(servos)]
     movement = Move(states)
     exe.run(movement)
     self._pwm.set_pwm.assert_called_once_with(1, 0, 575)
コード例 #21
0
ファイル: main.py プロジェクト: Noardewyn/spider-robot
def build_joint(joint_id: id, reverse_direction: int):
    servo = Servo(joint_id, False)
    joint = Joint(servo,
                  min_angle=0,
                  max_angle=180,
                  reverse_direction=reverse_direction,
                  instant_move=False)
    return joint
コード例 #22
0
    def __init__(self, servoCount):
        pca = ServoKit(channels=servoCount)
        self.servos = []

        for i in range(servoCount):
            pca.servo[i].set_pulse_width_range(500, 2500)

            self.servos.append(Servo(pca.servo[i], i))
            self.servos[i].setAngle(5)

        print("Initialized")
コード例 #23
0
 def __init__(self, port=None, baud=None, channels=32, auto=1000):
     self.board = serial.Serial()
     self.board.baudrate = baud
     self.board.port = port
     self.board.timeout = 1
     self.auto = auto
     self.myversion = ""
     self._servos = [
         Servo(self._servo_on_changed, i, "servo" + str(i))
         for i in range(channels)
     ]
コード例 #24
0
    def __init__(self, withoutservo, config, bkb, Mem):

        self.withoutservo = withoutservo
        self.config = config
        self.bkb = bkb
        self.Mem = Mem

        if self.withoutservo==False:
            self.servo = Servo(self.config.CENTER_SERVO_PAN, self.config.POSITION_SERVO_TILT)

        
        # Path to frozen detection graph. This is the actual model that is used for the object detection.
        PATH_TO_CKPT = './nets/'+self.config.DNN_folder+'/frozen_inference_graph.pb'

        # List of the strings that is used to add correct label for each box.
        PATH_TO_LABELS = os.path.join('./nets/'+self.config.DNN_folder+'/object-detection.pbtxt')

        if (not os.path.exists(PATH_TO_CKPT) or not os.path.exists(PATH_TO_LABELS)):
            print("\x1b[1;31mNão encontrou a pasta da rede DNN descrita no \x1b[1;36mconfig.ini \x1b[1;31mda visão\x1b[0m")
            print("\x1b[1;31mOu não encontrou o arquivo frozen ou pbtxt da DNN\x1b[0m")
            quit()


        NUM_CLASSES = 1

        # Reading network file.
        self.__detection_graph = tf.Graph()
        with self.__detection_graph.as_default():
            od_graph_def = tf.GraphDef()
            with tf.gfile.GFile(PATH_TO_CKPT, 'rb') as fid:
                serialized_graph = fid.read()
                od_graph_def.ParseFromString(serialized_graph)
                tf.import_graph_def(od_graph_def, name='')


        label_map = label_map_util.load_labelmap(PATH_TO_LABELS)
        categories = label_map_util.convert_label_map_to_categories(label_map, max_num_classes=NUM_CLASSES, use_display_name=True)
        self.category_index = label_map_util.create_category_index(categories)

        # Creating a section to run the detection.
        with self.__detection_graph.as_default():
            self.__sess = tf.Session(
                graph=self.__detection_graph,
                config=tf.ConfigProto(
                    intra_op_parallelism_threads=1,
                    inter_op_parallelism_threads=1
                )
            )

            self.__imagetensor = self.__detection_graph.get_tensor_by_name('image_tensor:0')
            self.__detectionboxes = self.__detection_graph.get_tensor_by_name('detection_boxes:0')
            self.__detectionscores = self.__detection_graph.get_tensor_by_name('detection_scores:0')
            self.__detectionclasses = self.__detection_graph.get_tensor_by_name('detection_classes:0')
            self.__numdetections = self.__detection_graph.get_tensor_by_name('num_detections:0')
コード例 #25
0
def feed(config):
    print("%s: feeding" % datetime.now(), file=sys.stderr)
    servo = Servo(18)
    servo.start()

    base_duty = 7.5
    base_delta_duty = 5
    servo.do_cycle(base_duty - base_delta_duty)
    servo.do_cycle(base_duty + base_delta_duty)
    servo.do_cycle(base_duty - base_delta_duty)

    servo.clean()
コード例 #26
0
    def __init__(self):

        self._video = cv2.VideoCapture(
            0)  # capture video from source '0' - raspi camera
        # load face detection instructions - Created by Rainer Lienhart.
        self._cascade = cv2.CascadeClassifier(
            'cascades/haarcascade_frontalface_default.xml')
        self._face_detector = cv2.face.LBPHFaceRecognizer_create(
        )  # creates face recognizer
        if self.trainer_exists():  # checks if trainer.yml exists
            self.load_trainer()
        self._servo = Servo()
        self._fb = Firebase()
コード例 #27
0
def test_servo():
    print("Testing servo")
    s = Servo()
    s.angle(0, 90)
    time.sleep(2)
    s.angle(0, 0)
    time.sleep(2)
    s.angle(0, 180)
    time.sleep(2)
    s.angle(0, 90)
    time.sleep(2)
    s.angle(0, 180)
    time.sleep(2)
コード例 #28
0
def main():
    servo = Servo()
    #servo.test()
    ctrl = Controller(servo)
    cmd = [\
                Rotate(horizontal=-90, deg=True),\
                Rotate(horizontal=90, deg=True),\
                Default(),\
                Rotate(vertical=-90, deg=True),\
                Rotate(vertical=90, deg=True),\
                Default()\
            ]
    ctrl.execute_commands(cmd)
コード例 #29
0
def Unlock_door():

    #	statusLED = gpio(STATUS_LED_PIN)
    #	statusLED.blink()

    msg = "OK"
    try:
        s = Servo(2)
        s.setAngle(90)
        del s
    except Exception as e:
        msg = str(e)

    return msg
コード例 #30
0
    def __init__(self, gps=False, servo_port=SERVO_PORT):
        # devices
        self._gps = gps
        self.windsensor = WindSensor(I2C(WINDSENSOR_I2C_ADDRESS))
        self.compass = Compass(I2C(COMPASS_I2C_ADDRESS),
                               I2C(ACCELEROMETER_I2C_ADDRESS))
        self.red_led = GpioWriter(17, os)
        self.green_led = GpioWriter(18, os)

        # Navigation
        self.globe = Globe()
        self.timer = Timer()
        self.application_logger = self._rotating_logger(APPLICATION_NAME)
        self.position_logger = self._rotating_logger("position")
        self.exchange = Exchange(self.application_logger)
        self.timeshift = TimeShift(self.exchange, self.timer.time)
        self.event_source = EventSource(self.exchange, self.timer,
                                        self.application_logger,
                                        CONFIG['event source'])

        self.sensors = Sensors(self.gps, self.windsensor, self.compass,
                               self.timer.time, self.exchange,
                               self.position_logger, CONFIG['sensors'])
        self.gps_console_writer = GpsConsoleWriter(self.gps)
        self.rudder_servo = Servo(serial.Serial(servo_port),
                                  RUDDER_SERVO_CHANNEL, RUDDER_MIN_PULSE,
                                  RUDDER_MIN_ANGLE, RUDDER_MAX_PULSE,
                                  RUDDER_MAX_ANGLE)
        self.steerer = Steerer(self.rudder_servo, self.application_logger,
                               CONFIG['steerer'])
        self.helm = Helm(self.exchange, self.sensors, self.steerer,
                         self.application_logger, CONFIG['helm'])
        self.course_steerer = CourseSteerer(self.sensors, self.helm,
                                            self.timer,
                                            CONFIG['course steerer'])
        self.navigator = Navigator(self.sensors, self.globe, self.exchange,
                                   self.application_logger,
                                   CONFIG['navigator'])
        self.self_test = SelfTest(self.red_led, self.green_led, self.timer,
                                  self.rudder_servo, RUDDER_MIN_ANGLE,
                                  RUDDER_MAX_ANGLE)

        # Tracking
        self.tracking_logger = self._rotating_logger("track")
        self.tracking_sensors = Sensors(self.gps, self.windsensor,
                                        self.compass, self.timer.time,
                                        self.exchange, self.tracking_logger,
                                        CONFIG['sensors'])
        self.tracker = Tracker(self.tracking_logger, self.tracking_sensors,
                               self.timer)