라즈파이를 사용하여 [어떤 작업]을 자동화 해 보았습니다.

소개



여러분의 회사에서는, 시업·종업은 어떤 느낌입니까?
사내 방송으로 알리는 시간이 되면 각자 마음대로 일을 시작한다(끝), 시간이 되면 아침회(종례)를 시작하는 등등 있을까 생각합니다.

자신이 이전에 근무했던 회사에서는
1. ipod에서 시동 시간에 알람(소음)이 울린다
2. 그 알람을 담당 사람이 멈춘다
3. 다음과 같은 차임(?)을 수동으로 울려 사내 사람에게 전달

↑ 이것을 막대기로 두드려서 울린다.

라는 흐름으로 하고 있었습니다.

솔직히 매일 알람을 멈추고 차임을 두드리는 것은 비효율일까. 심플하게 알람을 정각으로 울리면 좋을까.

그러나 그것이라면 재미가 없기 때문에 어차피라면 이 차임을 두드리는 동작을 자동화해 버리자! 그래서 라즈파이 (와 Python)를 사용하여 자동화했습니다 (공부가 테라).
그냥 동기화가 라즈파이를 가지고 있었기 때문에 동기와 둘이서 재료 반으로 만드는 것을 결정했습니다.

준비



자동화에 있어서 무엇이 필요한지를 먼저 조사했습니다. 그렇다고 해도 다행히 라즈파이는 동기화가 가지고 있었기 때문에 추가로 준비하는 물건은 그다지 없었습니다. 구매는 다음과 같습니다.
  • 서보 모터
  • 점퍼 와이어

  • 둘 다 아마존에서 구입! 서보 모터는 디지털 마이크로 서보 SG90(770엔)을 샀다.

    자동화의 구조로서는 심플하고, 모터의 각도를 프로그램으로 제어해 차임을 두드릴 뿐. 자동화라고 하면 멋지지만 하고 있는 일은 별로 없습니다(웃음)

    개발



    이번에 쓴 코드는 이런 느낌입니다.
    # -*- coding: utf-8 -*-             #エンコードの指定
    import RPi.GPIO as GPIO             #GPIO用のモジュールをインポート
    import time                         #時間制御用のモジュールをインポート
    import sys                          #sysモジュールをインポート
    
    #ポート番号の定義
    Servo_pin = 18                      #変数"Servo_pin"に18を格納
    
    #GPIOの設定
    GPIO.setmode(GPIO.BCM)              #GPIOのモードを"GPIO.BCM"に設定 GPIOをポート番号で扱う方法に設定
    GPIO.setup(Servo_pin, GPIO.OUT)     #GPIO18を出力モードに設定
    
    #PWMの設定
    #サーボモータSG90の周波数は50[Hz]
    Servo = GPIO.PWM(Servo_pin, 50)     #GPIO.PWM(ポート番号, 周波数[Hz])
    
    Servo.start(0)                      #Servo.start(デューティ比[0-100%])
    
    #角度からデューティ比を求める関数
    def servo_angle(angle):
        duty = 2.5 + (12.0 - 2.5) * (angle + 90) / 180   #角度からデューティ比を求める
        Servo.ChangeDutyCycle(duty)                      #デューティ比を変更
        time.sleep(0.2)                                  #0.2秒間待つ
    
    #サーボモータの角度をデューティ比で制御
    #Servo.ChangeDutyCycle(デューティ比[0-100%])
    servo_angle(0)                 #サーボモータを初期位置に移動
    servo_angle(90)                #サーボモータ 90°
    servo_angle(0)                 #サーボモータを初期位置に戻す
    Servo.stop()                   #サーボモータをストップ
    GPIO.cleanup()                 #GPIOをクリーンアップ
    sys.exit()                     #プログラムを終了
    

    코드 자체는 단지 서보 모터의 각도를 제어할 뿐이므로 어렵지 않고 인터넷에도 많은 정보가 있었기 때문에 원활하게 할 수있었습니다.

    자신은 기계 과졸이지만 전자 공작적인 것은 별로 경험이 없었다 (대학에서는 선반, 용접, 제도 등을 주로 배우고 있었다) 일도 있어 점퍼 와이어를 연결할 때조차 비빌리면서도 조사하면서 하고 네.

    자동화하는 것으로, 시업·종업 시간에 프로그램이 작동하도록 쿨롱으로 설정했습니다.
    자신은 쿨롱의 존재를 모르고, 동기로부터 가르쳐 주었습니다 (공부가 되었다)

    cron이란, 많은 UNIX계 OS에서 표준적으로 이용되는 상주 프로그램(데몬)의 일종으로, 이용자가 설정한 스케줄에 따라 지정된 프로그램을 정기적으로 기동해 주는 것.
    참조 소스 : IT 용어 사전 e-Words

    완성된 것



    카나리 심플합니다!





    여기가 데모 동영상입니다. (소리는 상상으로!)


    어때? 꽤 초현실적인 마무리가되었습니다 (웃음)
    실제로 사용할 때는 한 번 밖에 두드리지 않도록하고 있습니다.
    이것으로 이제 일부러 수동으로 두드릴 필요도 없고, 또한 차임의 맛(?)만 남길 수 있었습니다.

    요약



    이번에는, 시업·종업의 차임을 라즈파이로 자동화해 보았습니다.

    이렇게, 생활하고 있어 느끼들 조금 불편한 일·비효율적인 것을 해결할 수 있는 것이 프로그래밍의 재미일까라고 생각합니다.
    실제로 해보면 재미있었고, 몰랐던 것도 배워서 아주 좋은 경험이 되었습니다.

    여러분도 이런 느낌으로 간단한 물건으로 좋기 때문에 만들어 보는 것은 어떻습니까?

    좋은 웹페이지 즐겨찾기