④ Raspberry Pi3와 토양 습도 센서로 토양 습도 취득 (YL69 + MCP3208)

6066 단어 Raspberrypi3

준비하는 것(주변기기)



1. Raspberry Pi 3
2.YL-69(토양 습도 센서)
3.MCP3208(A/D 컨버터)
4. 남성 점퍼, 여성 점퍼 (Raspberry Pi 초보자 키트 사용)

yl69+MCP3208+브레드보드+Raspberry Pi 연결





스크립팅



yl69.py
# -*- coding: utf-8 -*-
import RPi.GPIO as GPIO
from time import sleep
import spidev

#GPIOのピン番号
pin = 22

# initialize GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.cleanup()

#GPIOの指定したピン番号を出力端子に設定
GPIO.setup(pin, GPIO.OUT)

#出力用関数
def output_fromGPIO(pin, output):
    GPIO.output(pin, output)
    sleep(0.1)

#MCP3002動作用関数
def readadc_spidev(adcnum):
    if ((adcnum > 1) or (adcnum < 0)):
        return -1
    #0x68は1chを使う場合です。2chは0x78を使います。
    ret = spi.xfer2([0x68,0x00])    
    #データは8ビットずつに分かれているので、最初の8ビットを上位データとして8ビットシフトし、下位データと結合する
    #MCP3002は10ビット目までがデータなので、10ビット目までを残して他のデータを消す
    adcout = ((ret[0]<<8) + ret[1])&0x3ff
    return adcout

#SPI通信開始
spi=spidev.SpiDev()
spi.open(0, 0) # bus0, CE0

#データ取得前にYL-69に電圧を印可
output_fromGPIO(pin,True)

try:
    while True:
        #先ほど定義したMCP3002の関数を呼び出す
        getValue = readadc_spidev(0)
        #値がちゃんと取れたらデータを出力。取れるまでトライ
        if getValue != -1:
            print(getValue)
            break;
        sleep(1)

except KeyboardInterrupt:
    pass

#YL-69の印加電圧をとめる
output_fromGPIO(pin,False)
#SPI通信終了
spi.close()

스크립트 실행


sudo python yl69.py
>>0
>>0
>>0

모두 0으로 토양 습도를 취할 수 없는,,
Raspberry Pi3와 yl69와 MCP3208의 조합이 나쁜지
원인은 수수께끼입니다.

좋은 웹페이지 즐겨찾기