Raspberry Pi로 심박 센서 값 읽기

이것은 처음으로 투고한 것이다.오늘부터 스마브라 sp가 시작되기 때문에 마지막 투고입니다.
라즈파로 심장 박동 센서의 정보를 읽다.

준비물

  • Rapberry Pi 3 Model B
  • 심박 센서

  • MCP3008(AD 변환기)
  • 손바닥
    점퍼
  • 경로설정


    직접 사용이 사이트.

    가장 중요한 심장 박동 센서를 못 봐서 미안해요...

    SPI


    이 사이트와 같이 py-spidev를 설치합니다(라즈파에서 SPI driver를 유효하게 해야 합니다).
    $ git clone git://github.com/doceme/py-spidev
    $ cd py-spidev
    $ sudo python setup.py install
    

    예제 프로그램


    다음 Python 파일을 만듭니다.
    pulse.py
    #!/usr/bin/python
    #coding: utf-8
    import spidev
    import time
    import sys
    
    Vref = 3.3
    Criteria = 530 
    
    #spiパスへのアクセスを開く
    spi = spidev.SpiDev()
    spi.open(0,0)
    spi.max_speed_hz =  1350000
    
    adc_channel = 0
    delay = 0.01
    
    f = open('pulse.dat', 'w')
    pulse = 0
    digital = 0.0
    index = 0
    
    #ADコンバータからSPIデータの読み込み
    def ReadChannel(channel):
        adc = spi.xfer2([1, (8+channel)<<4, 0])
        data = ((adc[1]&3)<<8) + adc[2]
        return data
    
    try:
        while True:
            #心拍センサの値読み取り
            analog_level = ReadChannel(adc_channel)
    
            #値がいったん基準を超え、次に基準を下回った瞬間に"pulse"を出力
            if(analog_level == 0):
                time.sleep(delay)
                continue
    
            if((analog_level < Criteria) and (pulse == 1)):
                print("Pulse")
    
            if (analog_level < Criteria):
                pulse = 0
            else:
                pulse = 1
    
            #値を電圧[V]に変換
            digital = analog_level * Vref / float(1023)
    
            data = "{} {} {} \n".format(index, analog_level, digital)
            f.write(data)
            time.sleep(delay)
            index += 1
    
    except KeyboardInterrupt:
        print("Exit")
        f.close()
    
    명령 프롬프트에서 실행합니다."Pulse"를 박자에 맞추어 출력하면 성공합니다.
    dat 파일을 썼지만 이번에는 사용하지 않았습니다.
    $ python pulse.py
    

    딱 초록색 동그라미 때 "Pulse"출력하는 느낌이에요.
    ※ 이 사진은 인상입니다. 이번에 치즈파이로 만든 그래프가 아닙니다(다른 시기에 아르두노가 찍은 데이터로 만든 그래프입니다)

    지원


    아까 펄스.py로 쓴 다음 문장
    spi.max_speed_hz =  1350000
    
    처음에 이것을 쓰지 않고 실행하면 MCP3008에서 값을 읽을 수 없습니다.웹 사이트 축소 이미지 위의 문장을 더하면 값을 잘 읽을 수 있으나 읽을 수 없는 원인은 불분명하다.
    data = ((adc[1]&3)<<8) + adc[2]
    
    이 수수께끼 같은 문장의 뜻웹 사이트 축소 이미지에 상세한 기록이 있다.AD 변환기를 사용할 때 자주 나타나는 코드이기 때문에 많은 것을 배웠습니다.

    좋은 웹페이지 즐겨찾기