====== Capteur de distance ultra son HC-SR04 ======
pistes:
* http://www.manuel-esteban.com/lire-un-capteur-ultrason-hc-sr04-avec-un-raspberry-pi/
* https://www.framboise314.fr/mesure-de-distance-par-ultrasons-avec-le-raspberry-pi/
{{:python:mesure_ultrasons_03.jpg?200|}}
avec R1=1K et R2=2K ou R1=330,R2=470, donnant par pont diviseur 3,3V a partir de 5V pour l'alimentation du module
Pour une carte arm , orange Pi Nanopi M1 etc,
récupérez les librairies sur https://github.com/duxingkei33/orangepi_PC_gpio_pyH3
git clone https://github.com/duxingkei33/orangepi_PC_gpio_pyH3
apt-get install python-liblo
apt-get remove libi2c-dev # car surcharge de definitions
cd orangepi_PC_gpio_pyH3
python setup.py install
=====Lecture simple=====
#!/usr/bin/python
# sonar.py
# HC-SR04 mesure de distance ultra son
#
# Author : Gepeto
# Date : 13/01/2017
# test nanopiM1, Orange Pi, gpio style RSP
# Trigger sur PG8 (pin16)
# Echo sur PG9 (pin18)
# librairie necessaire : https://github.com/duxingkei33/orangepi_PC_gpio_pyH3
# python-liblo
import time
from pyA20.gpio import gpio
from pyA20.gpio import port
gpio.init()
gpio.setcfg(port.PG8,gpio.OUTPUT) # trigger
gpio.setcfg(port.PG9,gpio.INPUT) # echo
print "mesure de distance HC-SR04"
gpio.output(port.PG8,0)
time.sleep(0.5)
# Send 10us pulse to trigger
gpio.output(port.PG8,1)
time.sleep(0.00001)
gpio.output(port.PG8,0)
pulsation = time.time()
while gpio.input(port.PG9)==0:
pulsation = time.time()
while gpio.input(port.PG9)==1:
stop = time.time()
# Calcul temps de propagation
difference = stop-pulsation
# distance parcourue dans le temps difference
# vitesse du son (cm/s)
distance = difference * 34000
# distance est un aller-retour
distance = distance / 2
print "Distance : %.1f" % distance
# Reset GPIO settings
gpio.init()
===== sonar vers OSC =====
#!/usr/bin/python
# sonar2OSC.py
# HC-SR04 mesure de distance ultra son vers OSC
#
# Author : Gepeto
# Date : 13/01/2017
# test nanopiM1, Orange Pi, gpio style RSP
# Trigger sur PG8 (pin16)
# Echo sur PG9 (pin18)
# librairie necessaire : https://github.com/duxingkei33/orangepi_PC_gpio_pyH3
import time
import liblo,sys
from pyA20.gpio import gpio
from pyA20.gpio import port
PORTOSC=9001
IPOSC="localhost"
TEMPDELECTURE=1
gpio.init()
gpio.setcfg(port.PG8,gpio.OUTPUT) # trigger
gpio.setcfg(port.PG9,gpio.INPUT) # echo
# ouvre le port OSC
try:
targetOSC = liblo.Address(IPOSC,PORTOSC)
except liblo.AddressError, err:
print str(err)
sys.exit()
while True:
try:
#print "mesure de distance HC-SR04"
gpio.output(port.PG8,0)
time.sleep(0.5)
# Send 10us pulse to trigger
gpio.output(port.PG8,1)
time.sleep(0.00001)
gpio.output(port.PG8,0)
pulsation = time.time()
while gpio.input(port.PG9)==0:
pulsation = time.time()
while gpio.input(port.PG9)==1:
stop = time.time()
# Calcul temps de propagation
difference = stop-pulsation
# distance parcourue dans le temps difference
# vitesse du son (cm/s)
distance = difference * 34000
# distance est un aller-retour
distance = distance / 2
if distance<150:
print "%.1f" % distance
#print "Distance : %.1f" % distance
# envoi des donnees
liblo.send(targetOSC,"/SONARDIST", distance)
time.sleep(1)
# gpio.init()
except KeyError:
pass
except KeyboardInterrupt:
quit()