[{"data":1,"prerenderedAt":6},["ShallowReactive",2],{"\u002F2015\u002F10\u002Fusing-raspberry-pi-b-for-automated-distance-measurement-and-alert-with-led":3},{"html":4,"toc":5},"\u003Cp>The idea is to alert a driver when something comes too near to his vehicle. In order to prototype this the alert is chosen as an LED and Raspberry Pi B+ with a HC-SR04 to measure the distance. I have followed the tutorial \u003Ca href=\"http:\u002F\u002Fwww.modmypi.com\u002Fblog\u002Fhc-sr04-ultrasonic-range-sensor-on-the-raspberry-pi\">here.\u003C\u002Fa> I ended up with the following values for the resistors to by pass additional voltage from the echo of HC-SR04 circuit.\u003C\u002Fp>\n\u003Cp>R1 = 470 Ohm and R2 = 1K Ohm.\u003C\u002Fp>\n\u003Cp>I haven't used any resistor for the LED because it just runs for a few seconds or at maximum a few minutes during testing but I highly recommend you to use a resistor with LED.\u003C\u002Fp>\n\u003Cp>Following is the schematic I've followed. Obviously looking bad because I'm new to drawing schematics using Paint.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"\u002Fwp-content\u002Fuploads\u002F2015\u002F10\u002Fschematic.png\">\u003Cimg src=\"\u002Fwp-content\u002Fuploads\u002F2015\u002F10\u002Fschematic.png\" alt=\"Schematic for Pi B+ with HC-SR04\" loading=\"lazy\" decoding=\"async\" \u002F>\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>The Python Code is almost identical to the tutorial I've followed but I've made a few modifications.\u003C\u002Fp>\n\u003Col>\n\u003Cli>Added the LED to hold GPIO 22\u003C\u002Fli>\n\u003Cli>Infinite loop to keep the calculations running all the time and a try catch block to clean GPIO if the program is run manually and halted with Ctrl+C from SSH Console.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cpre class=\"shiki github-light\" style=\"background-color:#fff;color:#24292e\" tabindex=\"0\">\u003Ccode>\u003Cspan class=\"line\">\u003Cspan>import RPi.GPIO as GPIO\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>import time\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>GPIO.setmode(GPIO.BCM)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>LED = 22\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>TRIG = 23\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>ECHO = 24\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>print \"Distance Measurement In Progress\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>GPIO.setup(LED,GPIO.OUT)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>GPIO.setup(TRIG,GPIO.OUT)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>GPIO.setup(ECHO,GPIO.IN)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>try:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>        while(1):\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                GPIO.output(TRIG, False)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                #print \"Waiting For Sensor To Settle\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                time.sleep(0.1)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                GPIO.output(TRIG, True)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                time.sleep(0.00001)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                GPIO.output(TRIG, False)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                while GPIO.input(ECHO)==0:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                        pulse_start = time.time()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                while GPIO.input(ECHO)==1:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                  pulse_end = time.time()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                pulse_duration = pulse_end - pulse_start\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                distance = pulse_duration * 17150\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                distance = round(distance, 2)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                if distance&lt;10:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                  GPIO.output(LED,True)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                else:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                  GPIO.output(LED,False)\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>                print \"Distance:\",distance,\"cm\"\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>except KeyboardInterrupt:\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan> GPIO.cleanup()\u003C\u002Fspan>\u003C\u002Fspan>\n\u003Cspan class=\"line\">\u003Cspan>\u003C\u002Fspan>\u003C\u002Fspan>\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>I don't want to manually start the program each time raspberry pi boots so I've added this script to run at startup by adding the command to \u002Fetc\u002Frc.local using the tutorial \u003Ca href=\"https:\u002F\u002Fwww.raspberrypi.org\u002Fdocumentation\u002Flinux\u002Fusage\u002Frc-local.md\">here\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>Here are the results\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"\u002Fwp-content\u002Fuploads\u002F2015\u002F10\u002FDSC_0008-Small.jpg\">\u003Cimg src=\"\u002Fwp-content\u002Fuploads\u002F2015\u002F10\u002FDSC_0008-Small.jpg\" alt=\"No Obstacle in 10CM range\" loading=\"lazy\" decoding=\"async\" \u002F>\u003C\u002Fa> \u003Ca href=\"\u002Fwp-content\u002Fuploads\u002F2015\u002F10\u002FDSC_0009-Small.jpg\">\u003Cimg src=\"\u002Fwp-content\u002Fuploads\u002F2015\u002F10\u002FDSC_0009-Small.jpg\" alt=\"Obstacle in 10 CM range\" loading=\"lazy\" decoding=\"async\" \u002F>\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>If you weren't too clear of how to do this on your own head to the tutorials. I've mention only the changes and didn't write the actual tutorial. Hope that helped.\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"http:\u002F\u002Fwww.modmypi.com\u002Fblog\u002Fhc-sr04-ultrasonic-range-sensor-on-the-raspberry-pi\">http:\u002F\u002Fwww.modmypi.com\u002Fblog\u002Fhc-sr04-ultrasonic-range-sensor-on-the-raspberry-pi\u003C\u002Fa>\u003C\u002Fp>\n\u003Cp>\u003Ca href=\"https:\u002F\u002Fwww.raspberrypi.org\u002Fdocumentation\u002Flinux\u002Fusage\u002Frc-local.md\">https:\u002F\u002Fwww.raspberrypi.org\u002Fdocumentation\u002Flinux\u002Fusage\u002Frc-local.md\u003C\u002Fa>\u003C\u002Fp>\n",[],1791316328152]