2016-04-12 12 views
0

Aslında bu su geçirmez ultrasonik sensör DYP-ME007Y-PWM'yi (http://hanjindata.lgnas.com:10000/myweb/P0400/P0400.pdf) ahududu PI Compute Modülümde klasik bir Raspbian işletim sistemi üzerinde kullanmak istiyorum. 4 tane pençesi vardır (gnd, Trig, Echo ve 5V). Ben sensörler çalışır ve mannage İşte (http://www.micropik.com/PDF/HCSR04.pdf)DYP-ME007Y-PWM Ultrasonik sensörünü kullanma

Exemple için bunun gibi bir ultrasonik sensörler diğer tür iyi sonuçlar nasıl ultrasonik açıklayan bazı dersler buldum

Raspberry Pi | Sensor 
GND   | GND 
5V   | 5V 
22   | Trig 
23   | Echo 

: İşte benim şematik olduğunu benim kodudur:

# Import required Python libraries 
import time 
import RPi.GPIO as GPIO 

# Use BCM GPIO references 
# instead of physical pin numbers 
GPIO.setmode(GPIO.BCM) 

# Define GPIO to use on Pi 
GPIO_TRIGGER = 22 
GPIO_ECHO = 23 

print "Ultrasonic Measurement" 

# Set pins as output and input 
GPIO.setup(GPIO_TRIGGER,GPIO.OUT) # Trigger 
GPIO.setup(GPIO_ECHO,GPIO.IN)  # Echo 

# Set trigger to False (Low) 
GPIO.output(GPIO_TRIGGER, False) 

# Allow module to settle 
time.sleep(0.5) 

# Send 10us pulse to trigger 
while True: 
    GPIO.output(GPIO_TRIGGER, True) 
    time.sleep(0.00001) 
    GPIO.output(GPIO_TRIGGER, False) 

    start = time.time() 
    while GPIO.input(GPIO_ECHO)==0: 
     start = time.time() 

    while GPIO.input(GPIO_ECHO)==1: 
     stop = time.time() 

    # Calculate pulse length 
    elapsed = stop-start 
    # Distance pulse travelled in that time is time 
    # multiplied by the speed of sound (cm/s) 
    # That was the distance there and back so halve the value 
    distance = (elapsed * 34000)/2 

    print "Distance : %.1f" % distance 
    time.sleep(0.05) 
# Reset GPIO settings 
GPIO.cleanup() 
Ben çalışmıyor

, ben her zaman benim sensörlü ne yaparsak aynı çıktıyı elde kimse bu sensör ile alreeady oyunu var mı? Gördüğünüz gibi, veri sayfası güzel bir ligandı, belki de zayıf elektronik becerilerimin kaçırdığı bir şey göreceksiniz

Selamlar!

cevap

0

Baştan itibaren GPIO_ECHO olmasını bekliyorsunuz. Belgelere göre, ilk önce , daha sonra ve daha sonra .

Belki

while GPIO.input(GPIO_ECHO)==0: 
    # some short sleep might be better 
    pass 

start = time.time() 

while GPIO.input(GPIO_ECHO)==1: 
    pass 

while GPIO.input(GPIO_ECHO)==0: 
    pass 

stop = time.time() 

kenarı yükselen kenarı tespit ve düşen için uygun yöntemler, örneğin raspi.tv arcticle bakınız vardır. Bu yöntemleri kullanmak daha iyi olabilir. göre

0

: - senin 5V çok fazla düşmemesine edin

https://forum.arduino.cc/index.php?topic=153700.30

sensör yetecek güç oldukça duyarlıdır.

Ayrıca Raspberry Pi GPIO pimleri 3V3 - Sensörden gelen çıkışı beğenmeyebilir (muhtemelen 5V) ve sensör Raspberry pi'nin 3V3 çıkışında tetiklenmeyebilir.