Spielen Sie mit Raspberry Pi (13) - Regentropfen-Erkennungssensor

Spielen Sie mit Raspberry Pi (13) - Regentropfen-Erkennungssensor

    In früheren Blogbeiträgen dieser Serie haben wir mit Temperatursensoren und Lichtintensitätssensoren experimentiert. Durch diese Sensoren, gekoppelt mit einfachen Programmiertechniken, können wir diese Umweltdaten leicht erhalten. Durch eine Vielzahl reichhaltiger Sensoren ist es sehr einfach, mit dem Raspberry Pi eine „einfache Wetterstation“ zu bauen. Für eine kleine Wetterstation sind neben der Erfassung von Temperatur- und Lichtintensitätsdaten auch aktuelle Wetterbedingungen unerlässlich. In diesem Blog verwenden wir das Regentropfenerkennungssensor-Experiment, um Regeninformationen zu erhalten.

1. Regentropfenerkennungssensor

    Das in diesem Experiment verwendete Sensormodul zur Regentropfenerkennung ist in der folgenden Abbildung dargestellt:

Es ist ersichtlich, dass diese Komponentengruppe aus einer Detektionsplatine und einem Steuermodul besteht, und die beiden Teile separat verbunden sind, was bequem ist, um die Detektionsplatine in einer geeigneten Detektionsposition zu platzieren, und die Detektionsplatine eine große Fläche hat und ist einfach durchzuführende Regentropfenerkennung.

Das Arbeitsschaltbild dieses Sensormoduls sieht wie folgt aus:

Verbinden Sie bei der Verwendung zuerst die beiden Pins der Erkennungsplatine mit den Pins an der Seite des Moduls mit nur zwei Pins (die Erkennungsplatine kann als zwei Drähte verstanden werden, die sich nicht kreuzen möchten, und die Drähte werden bei Regen verbunden fällt).

    Wenn Sie das Steuermodul betrachten, können Sie sehen, dass zwei LEDs darauf eingekapselt sind. Eine der LEDs ist die Betriebsanzeige, die aufleuchtet, wenn der Strom eingeschaltet wird, und die andere LED ist die Signalleuchte. Wenn es keine gibt Regen, die Signalleuchte leuchtet nicht und es regnet auf der Erkennungsplatine. Wenn die Signalleuchte eingeschaltet ist. Wenn erkannt wird, ob es regnet, kann die Erkennungsplatine schräg platziert werden, und die Ausgabe des Füllstandsignals kann geändert werden, wenn das Regenwasser fließt. Das Steuermodul verfügt außerdem über einen Einstellwiderstand, mit dem die Empfindlichkeit des Sensors eingestellt werden kann. Die andere Seite des Steuermoduls hat 4 Pins, die AO, DO, GND und VCC sind. Unter ihnen ist AO ein analoger Signalausgang, und die Niederschlagsmenge kann anhand des von diesem Pin ausgegebenen Signals beurteilt werden. Der DO-Pin ist ein digitaler Signalausgang. Der Signalausgang dieses Pins kann verwendet werden, um festzustellen, ob es Regen auf der Erkennungsplatine gibt. Wenn kein Wassertropfen vorhanden ist, gibt dieser Pin einen hohen Pegel aus, und wenn Wassertropfen vorhanden sind, Dieser Pin gibt einen niedrigen Pegel aus.

2. Experimentelle Verbindung und Codierung

    In diesem Experiment werden wir die GPIO-Pins verwenden, um das digitale Signal des Regentropfen-Erkennungsmoduls direkt zu erhalten, und das analoge Signal des Regentropfen-Erkennungsmoduls über PCF8591 lesen. Zunächst ist die Verkabelung wie folgt:

PCF8591 mit Raspberry Pi verbinden:

PCF8591 Himbeerkuchen
SDA SDA
SCL SCL
VCC 5V Stromversorgung
Masse Masse

Regentropfenerkennungsmodul:

Regentropfenerkennungsmodul Himbeerkuchen PCF8591
VCC 5V  
Masse Masse  
ZUM   AIN0
TUN GPIO17 (BCM-Code)  

Nach Abschluss der Grundverdrahtung können wir mit dem Codieren beginnen. In Bezug auf die Verwendung von PCF8591 enthält unser vorheriger Blog eine detaillierte Einführung, aber wenn wir jedes Mal die Digital-Analog-Konvertierung verwenden, wird es sehr mühsam, den Steuercode von PCF8591 zu schreiben, und dies ist nicht der gewünschte Funktionspunkt Für dieses Experiment müssen wir uns mehr darauf konzentrieren, wie die Daten des Regentropfenerkennungsmoduls verarbeitet werden, als auf die DA-Umwandlungslogik, damit wir einen Satz allgemeinen PCF8591-Treibercodes schreiben und dann die Komponenten damit verwenden können analoge Signalausgabe. , können Sie diesen Treiber direkt verwenden.

    Zu beachten ist, dass zur Verwendung von PCF8591 nicht vergessen wird, die I2C-Schnittstelle des Raspberry Pi zu öffnen.Nachdem die Verkabelung abgeschlossen ist, verwenden Sie den folgenden Befehl, um die Geräteadresse anzuzeigen:

sudo i2cdetect -y 1

Der vollständige Code lautet wie folgt:

#coding:utf-8
import smbus   #在程序中导入“smbus”模块
# /dev/i2c-1
bus = smbus.SMBus(1)  #创建一个smbus实例

# 初始化驱动模块 定义PCF元件地址
def init(addr):
	global address
	address = addr

# 读取某个通道的数据
def read(chn):
	global address
	if chn == 0:
		#发送一个控制字节到设备 表示要读取AIN0通道的数据
		bus.write_byte(address,0x40)   
	if chn == 1:
		#发送一个控制字节到设备 表示要读取AIN1通道的数据
		bus.write_byte(address,0x41)
	if chn == 2:
		#发送一个控制字节到设备 表示要读取AIN2通道的数据
		bus.write_byte(address,0x42)
	if chn == 3:
		#发送一个控制字节到设备 表示要读取AIN3通道的数据
		bus.write_byte(address,0x43)
	bus.read_byte(address)         # 空读一次,消费掉无效数据
	return bus.read_byte(address)  # 返回某通道输入的模拟值A/D转换后的数字值

def write(val):
	global address
	temp = val
	temp = int(temp) 
	# 进行写数据操作
	bus.write_byte_data(address, 0x40, temp) 

Der Code zum Implementieren der Wassertropfenerkennung lautet wie folgt:

#coding:utf-8
import pcf8591 as PCF
import RPi.GPIO as GPIO
import time

DO = 11
# 设置使用的引脚编码模式
GPIO.setmode(GPIO.BOARD)
GPIO.setup(DO, GPIO.IN)
PCF.init(0x48)
while True:
	print('------------分割线-------------')
	rainDO = GPIO.input(DO)
	print('是否检测到水滴:%s'%('否' if rainDO else '是'))
	# 读取AIN0的模拟数据
	rainAO = PCF.read(0) 
	print('雨水程度%d'%(255 - rainAO))
	time.sleep(2)

Führen Sie das obige Programm auf dem Raspberry Pi aus, um Wassertropfen zu erkennen.

Konzentrieren Sie sich auf Technologie, verstehen Sie Liebe, seien Sie bereit zu teilen, seien Sie ein Freund

QQ:316045346

{{o.name}}
{{m.name}}

Ich denke du magst

Origin my.oschina.net/u/2340880/blog/5251077
Empfohlen
Rangfolge