Skip to content

라즈베리 파이 초음파 센서 | 라즈베리 파이 파이썬 프로그램을 이용한 센서 제어, 세번째. 초음파 센서, 조도 센서 등 상위 208개 베스트 답변

당신은 주제를 찾고 있습니까 “라즈베리 파이 초음파 센서 – 라즈베리 파이 파이썬 프로그램을 이용한 센서 제어, 세번째. 초음파 센서, 조도 센서 등“? 다음 카테고리의 웹사이트 https://dienbienfriendlytrip.com 에서 귀하의 모든 질문에 답변해 드립니다: https://dienbienfriendlytrip.com/finance/. 바로 아래에서 답을 찾을 수 있습니다. 작성자 보안프로젝트[boanproject] 이(가) 작성한 기사에는 조회수 3,485회 및 좋아요 36개 개의 좋아요가 있습니다.

라즈베리 파이 초음파 센서 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 라즈베리 파이 파이썬 프로그램을 이용한 센서 제어, 세번째. 초음파 센서, 조도 센서 등 – 라즈베리 파이 초음파 센서 주제에 대한 세부정보를 참조하세요

보안프로젝트( www.boanproject.com ) 에서 제공하는 IT 강의입니다. 이번에 신규로 제작되고 있는 #IoT 강의 시리즈 중 \” #라즈베리 파이(Raspberry Pi) 파이썬 프로그램을 이용한 센서 제어, 세번째. 초음파 센서, 조도 센서\” 입니다.
보안프로젝트 권승민 전임강사가 진행을 하게 됩니다. IoT 기본 강의 후에 실습과 함께 진행되는 심화 과정은 후에 유료 강의로 만날 수 있습니다.
온라인 강의
https://www.inflearn.com/users/@boanproject/courses
보안프로젝트 카페
http://cafe.naver.com/boanproject
보안프로젝트 블로그
https://blog.naver.com/chogar

라즈베리 파이 초음파 센서 주제에 대한 자세한 내용은 여기를 참조하세요.

【라즈베리Pi#22】 초음파 센서(HC-SR04) 사용하기! with …

【라즈베리Pi#22】 초음파 센서(HC-SR04) 사용하기! with (파이썬 코드) RaspberryPi Ultra-Sonic Sensor with Python ! 라즈베리파이에서 초음파 …

+ 여기에 자세히 보기

Source: rasino.tistory.com

Date Published: 1/8/2022

View: 9477

[가이드] 라즈베리파이 초음파 센서 ( HC-SR04 ) 제어 – e4ds make

라즈베리파이에서 초음파 센서의 초음파가 물체에 부딪쳐 반사되어 돌아오는데 까지 걸리는 시간을 측정하여 물체의 거리를 계산한다. Maker 구독 하기; 관심 Make 등록.

+ 여기를 클릭

Source: make.e4ds.com

Date Published: 9/24/2021

View: 5081

[라즈베리파이 강좌] 라즈베리파이로 초음파센서 사용하기

[라즈베리파이 강좌] 라즈베리파이로 초음파센서 사용하기 – python편 · 회로도 · 전원은 일반적인 5V와 GND에, · Trig핀은 파이 코블러의 13번핀(BCM기준)에 …

+ 더 읽기

Source: blog.naver.com

Date Published: 11/11/2021

View: 2913

라즈베리파이 4 초음파 센서 실습 코드 – 기린

라즈베리파이 4 초음파 센서 실습 코드 … 초음파 센서란? 사람의 귀에 들리지 않을 정도로 높은 주파수 (약 20 kHz 이상)의 음파인 초음파를 발생하여 …

+ 더 읽기

Source: fishpoint.tistory.com

Date Published: 4/23/2021

View: 1482

라즈베리파이에 GPIO 파이썬을 이용해 초음파 센서(HC-SR04 …

초음파 센서를 제어하기 위해선 우선 준비물이 필요합니다. 준비물. 라즈베리파이 OS가 설치된 라즈베리파이; ELEGOO Arduino용 HC-SR04 초음파 센서 1개 …

+ 더 읽기

Source: playneko.github.io

Date Published: 3/6/2021

View: 6773

라즈베리파이 PWM, 초음파센서, 후방감지센서 구현 – 취준생 일지

Echo 핀에서 초음파가 돌아오는 시점의 시간을 측정하여 거리를 재는 원리이다. 라즈베리파이를 통해 초음파 센서를 제어해보자. 출처 : https://steemkr.

+ 여기에 보기

Source: andjjip.tistory.com

Date Published: 9/20/2022

View: 4004

Raspberry Pi 초음파센서, PIR센서, 온습도 센서 – 코드를 분석해라

초음파센서 VCC – 5v Trig – 23번핀 Echo – 24번핀 GND – GND import RPi.GPIO as g import time TRIGER = 23 ECHO = 24 g.setmode(g.

+ 여기에 보기

Source: aossuper8.tistory.com

Date Published: 6/25/2021

View: 6923

Raspberry pi ultrasonic sensor(라즈베리파이 초음파 센서)

초음파 센서의 Vcc부분은 라즈베리파이의 5V부분에. GND부분은 GND에 결합했고. TRIG핀은 P24 ECHO핀은 P23에 결합했습니다. TRIG핀인 P24는 wiringPi에서 5번핀

+ 자세한 내용은 여기를 클릭하십시오

Source: funnyksoo.blogspot.com

Date Published: 11/3/2022

View: 937

초음파 센서 라즈베리파이에 연결하는 방법 (+추가 led, 부저 사용)

1. 초음파 센서로 거리 출력 초음파 센서를 연결해서 0.5마다 한 번씩 거리를 출력해서 알려줍니다. 자세한 설명은 코드 아래에 있습니다.

+ 여기를 클릭

Source: cyberry.tistory.com

Date Published: 11/30/2022

View: 8164

주제와 관련된 이미지 라즈베리 파이 초음파 센서

주제와 관련된 더 많은 사진을 참조하십시오 라즈베리 파이 파이썬 프로그램을 이용한 센서 제어, 세번째. 초음파 센서, 조도 센서 등. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

라즈베리 파이 파이썬 프로그램을 이용한 센서 제어, 세번째.  초음파 센서, 조도 센서 등
라즈베리 파이 파이썬 프로그램을 이용한 센서 제어, 세번째. 초음파 센서, 조도 센서 등

주제에 대한 기사 평가 라즈베리 파이 초음파 센서

  • Author: 보안프로젝트[boanproject]
  • Views: 조회수 3,485회
  • Likes: 좋아요 36개
  • Date Published: 2021. 2. 12.
  • Video Url link: https://www.youtube.com/watch?v=uwiFtSX5kYU

라즈이노 iOT :: 【라즈베리Pi#22】 초음파 센서(HC-SR04) 사용하기! with (파이썬 코드)

반응형

【 라즈베리 Pi #22 】 초음파 센서(HC-SR04) 사용하기 ! with (파이썬 코드)

RaspberryPi Ultra-Sonic Sensor with Python !

라즈베리파이에서 초음파 센서인 HC-SR04 모듈을 사용하는 방법에 대해 다루어 보겠습니다.

코드는 파이썬으로 하고, “거리 측정기”를 예시로 진행해 보겠습니다.

그리고, 내용 초반에 라즈베리파이에 직접 모니터와 키보드, 마우스 등을 연결하지 않고 자신의 주 PC인 윈도 PC에서 원격 접속으로 접속하여 동작시키는 방법으로 진행이 되는데요, (물론 직접 연결하여 진행해도 됩니다)

만약 원격 접속 제어 방법이 궁금하다면, 라즈이노 ioT(게시글) 블로그와 유튜브 영상을 참고해 주세요.

【라즈베리Pi#19】 윈도 PC에서 라즈베리 Pi 원격 제어하기

[ 윈도 PC에서 라즈베리 Pi 원격 제어하기 – 유튜브 영상으로 보기 ]

원격 접속을 하면, 모니터 및 키보드와 마우스를 추가로 연결할 필요 없고, 멀리 떨어진 임의의 장소에 설치되었더라도, 네트워크만 연결되어 있으면, 제어할 수 있어 활용도가 높은 장점이 있습니다.

【 실습 준비물 】

위 실습 준비물을 준비해주시는데요, GPIO 40핀 어댑터&케이블은 없어도 실습을 진행할 수 있으나,

있다면 핀 네임을 보며 연결할 수 있기에 좀 더 안정적으로 편하게 연결할 수 있습니다.

브레드보드 또한 크게 사이즈 상관이 없으며, 작은 사이즈를 타이트하게 사용하거나 두 개 이어 붙여 사용할 수 있습니다.

【 라즈베리Pi 초음파 센서 연결도 】

위 이미지는 라즈베리파이 초음파 거리측정 회로 연결 도면입니다. 연결 도면을 보고 부품들을 연결해 주세요.

※ 주의 사항!

아래 주의사항들을 반드시 숙지하고서 작업해 주세요~!

[ 라즈베리파이의 출력 ]

라즈베리파이의 GPIO 핀의 출력 허용 전류는 핀당 최대 8mA로(모든 핀 총합 50mA)로 제한되어 있기에 LED 이상의 모터 등과 같은 모듈을 직접 출력 제어하는 것은 라즈베리파이를 손상시킬 수 있습니다.

[ 라즈베리파이의 입력 ]

최대 3.3V까지 입력이 허용되며, 신호 레벨의 임계값은 1.8V입니다. 즉, 1.8V 보다 크면 논리 1(High), 작으면 논리 0(Low)으로 인식합니다.

입력 가능 전류는 핀당 최대 5mA를 넘지 않도록 해야 합니다.

라즈베리파이의 GPIO는 3.3V 레벨로 동작하기 때문에 반드시 3.3V 이상의 전원 또는 신호 레벨이 입력되지 않도록 주의하세요~!

아두이노와 달리 컴퓨터 시스템과 같은 라즈베리파이는 포트에 출력으로 할애할 수 있는 여유가 크지 않기 때문에 LED 이상의 부품들은 포트 출력으로 작동시키지 말고 VCC 전원을 싱크(Synk)하여 처리하거나, 별도의 전원을 공급하여 처리하는 것이 좋습니다.

또한, 라즈베리파이는 입력받을 수 있는 전압 또는 신호 레벨이 3.3V 이하여서, 초음파 센서의 Echo핀으로 받는 5V의 High 신호 레벨을 3.3V로 낮추기 위해 1 : 2 비율의 저항을 연결하여 아래 그림처럼 3.3V로 낮추어 입력받게 됩니다.

입출력 핀은 어떤 GPIO 핀을 사용해도 상관없으며, 코드에서 핀 번호와 일치시켜주면 됩니다.

그럼, 초음파 센서를 통하여 거리 측정하는 원리를 간단히 설명해 보겠습니다.

초음파 센서 모듈을 살펴보면, 송신 모듈과 수신 모듈이 한 세트로 되어 있는 것을 볼 수 있습니다.

아두이노에서 초음파 센서의 Trigger Pin으로 10us의 펄스 신호를 입력해 주면, 초음파 센서의 송신 모듈에서 25us짜리 8개의 음파를 발사하게 되고, 이 음파가 물체에 부딪혀 수신 모듈로 되돌아올 때, 에코 핀에서는 그 시간 동안만 High 신호를 출력하게 됩니다.

이 High 신호의 간격(시간)을 이용해 아두이노에서 음파의 속도를 적용하여 물체와의 거리 값을 계산하게 됩니다

〔 음파의 속도 : 343m/s (34,300cm/s) 〕

Echo Pin의 High 펄스 시간은 펄스가 발사되고 물체에 반사되어 되돌아오기(왕복)까지의 시간이기 때문에, 나누기 2를 해주면 물체와의 거리 값을 구할 수 있습니다.

distance = (check_time x 34300) / 2

다음은, 회로를 동작시킬 파이썬 코드입니다.

import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setwarnings(False) TRIG = 23 ECHO = 24 print(“초음파 거리 측정기”) GPIO.setup(TRIG, GPIO.OUT) GPIO.setup(ECHO, GPIO.IN) GPIO.output(TRIG, False) print(“초음파 출력 초기화”) time.sleep(2) try: while True: GPIO.output(TRIG,True) time.sleep(0.00001) # 10uS의 펄스 발생을 위한 딜레이 GPIO.output(TRIG, False) while GPIO.input(ECHO)==0: start = time.time() # Echo핀 상승 시간값 저장 while GPIO.input(ECHO)==1: stop = time.time() # Echo핀 하강 시간값 저장 check_time = stop – start distance = check_time * 34300 / 2 print(“Distance : %.1f cm” % distance) time.sleep(0.4) except KeyboardInterrupt: print(“거리 측정 완료 “) GPIO.cleanup()

[ 위 코드 다운로드 ]

UltraSonic.zip 0.00MB

아래는 초음파 거리측정 회로를 연결한 실제 모습입니다.

이렇게 연결 커넥터(어댑터)를 이용하면 부품을 연결할 때 쉽고 간결하게 작업할 수 있습니다.

또한 핀 레이블이 적혀있어, 잘못 연결되는 실수를 줄일 수 있습니다.

그럼, 실습을 위해 라즈베리파이를 부팅시키세요.

키보드와 마우스를 직접 연결하여 라즈베리파이에서 코드를 직접 실행시킬 수 있으며, 윈도 PC에서 “원격 데스크톱 연결” 기능을 사용하여 원격으로 실행할 수도 있습니다.

원격 데스크톱 기능을 사용하면 아래 사진처럼, 키보드나 마우스 연결이 필요 없어 Pi 주변이 깔끔해집니다.

물론 랜선 연결 대신, WiFi로 연결하면 더욱 깔끔해지겠죠.

그리고 이때, 네트워크 연결은 PC와 동일한 네트워크로 연결되어 있어야 합니다.

일반적으로 라즈베리파이가 랜선 연결일 경우 원격 접속하는 PC도 랜선으로 동일한 내부 네트워크로 접속해야 하고,

WiFi 연결할 경우 동일한 WiFi중계기에 접속된 PC나 노트북 등으로 원결 접속하면 됩니다.

그럼 윈도 PC에서 원격 데스크톱 접속(검색)을 실행시켜 주세요. (라즈베리파이에서 직접 실행시키는 분은 상관없습니다)

컴퓨터 항목에 라즈베리파이가 할당받은 IP주소를 입력하고 연결을 클릭하세요.

라즈베리파이가 할당 받은 IP주소는 사전에 한 번 라즈베리파이로 모니터를 연결하여 파악해 주세요.

ID와 패스워드를 화면처럼 소문자로 입력합니다.

일반적으로 User 이름과 패스워드를 특별히 다른 것으로 변경하지 않았다면, 아이디는 pi , 비번은 raspberry입니다.

부팅이 완료되면, Raspberry Pi Configuration (환경설정) 메뉴로 들어갑니다.

Interfaces 메뉴로 들어가서 (SSH)를 Enable로 체크해 주세요.

만약 설정이 바뀌었다면 재부팅을 하고 다시 원격으로 연결하세요.

그리고 원격에서 Pi 시작 메뉴의 종료(다시 시작) 메뉴가 작동하지 않는 경우: 원격에서 라즈베리파이를 종료시키는 명령어 (터미널 창 이용)를 사용해 보세요

$ sudo shutdown -h now

그럼 이제, 개발 메뉴에서 Thonny Python IDE를 실행합니다.

토니 파이썬에 코드를 입력하고 실행시켜 봅니다.

그럼, 초음파 센서의 정면으로 평평한 면적의 노트나 박스 같은 것을 준비해서 측정해 보세요.

아래는 실제 측정되는 모습입니다.

만약, 수치가 들쭉날쭉하다면, 초음파가 잘 반사될 수 있도록 센서의 각도와 반사판의 면적이 너무 작지 않은지? 등 확인해 보세요.

네, 이렇게 라즈베리파이에서 초음파 센서(sr-04)를 연결하고, 응용 예시로 거리측정까지 다루어 보았습니다.

본 게시글의 내용을 따라 하기 쉽도록 영상으로도 만들었으니, 아래 유튜브 영상을 참고해 보세요.

감사합니다.

반응형

e4ds make

1. 초음파센서 테스트 회로 구성

( HC-SR04 초음파 센서 1EA, , 1KΩ 저항 1EA Echo연결, 2KΩ 저항 1EA GND 연결 )

Trig: GPIO 17번 연결, Echo: GPIO 18번 연결

주의사항 : echo 핀에 High level 신호 발생시 5V를 전송 하게 된다. 그러나 라즈베리파이는 3.3V로

작동되므로 라즈베리파이 손상을 방지하기 위해 1KΩ, 2KΩ 저항으로 3.3V로 낮춰줘야 한다.

코드 작성 및 실행 방법은 ” 라즈베리파이 GPIO 포트 ( LED, 버튼 ) 제어 ” 가이드 참조

2. 초음파센서 테스트 Python 코드

초음파가 물체에 부딪쳐 반사되어 돌아오는데 까지 걸리는 시간을 측정하여 물체의 거리를 계산한다.

import RPi.GPIO as GPIO # RPi.GPIO에 정의된 기능을 GPIO라는 명칭으로 사용 import time # time 모듈 GPIO.setmode(GPIO.BCM) # GPIO 이름은 BCM 명칭 사용 GPIO.setup(17, GPIO.OUT) # Trig=17 초음파 신호 전송핀 번호 지정 및 출력지정 GPIO.setup(18, GPIO.IN) # Echo=18 초음파 수신하는 수신 핀 번호 지정 및 입력지정 print “Press SW or input Ctrl+C to quit” # 메세지 화면 출력 try: while True: GPIO.output(17, False) time.sleep(0.5) GPIO.output(17, True) # 10us 펄스를 내보낸다. time.sleep(0.00001) # Python에서 이 펄스는 실제 100us 근처가 될 것이다 GPIO.output(17, False) # 하지만 HC-SR04 센서는 이 오차를 받아준다 while GPIO.input(18) == 0: # 18번 핀이 OFF 되는 시점을 시작 시간으로 잡는다 start = time.time() while GPIO.input(18) == 1: # 18번 핀이 다시 ON 되는 시점을 반사파 수신시간으로 잡는다 stop = time.time() time_interval = stop – start # 초음파가 수신되는 시간으로 거리를 계산한다 distance = time_interval * 17000 distance = round(distance, 2) print “Distance => “, distance, “cm” except KeyboardInterrupt: # Ctrl-C 입력 시 GPIO.cleanup() # GPIO 관련설정 Clear Print “bye~”

3. 초음파센서 테스트 C코드

라즈베리파이 4 초음파 센서 실습 코드

반응형

초음파 센서란? 사람의 귀에 들리지 않을 정도로 높은 주파수 (약 20 kHz 이상)의 음파인 초음파를 발생하여 음파를 쏘아올리고 반사되어 오는 음파까지의 시간차를 거리로 계산하여 측정하는 방식으로 동작한다.

초음파 거리 센서는 발신부와 수신부로 구성된다. 발신부는 함수 발생기에서 (+)와 전압을 번갈아 압전소자에 가해주면 압전소자의 변형에 의해 진동이 발생하고 진동에 의해 초음파가 발생하는 역압전현상을 이용한다. 수신부는 발신부에서 발생한 초음파가 물체에 반사되어 돌아오는 파동에 의해 압전소자가 진동하고 진동에 의해 전압이 발생되는 정압전형상을 이용하여 반사되어 돌아오는 시간을 기초로 거리를 측정한다.

초음파 거리 센서 원리

초음파는 파장이 짧아 지향성과 직진성이 높으며 공기 중에서는 340m/s의 일정한 속도로 진행하는 특징을 가지므로 거리 측정을 위한 수단으로 많이 사용된다. 자동차의 후방 경보 시스템이 초음파를 이용한 대표적인 예에 해당한다.

초음파 센서

– 센서 파트 넘버: HC-SR04

센서 이미지

초음파 센서 HC-SR04

아래 간략한 초음파 센서를 설명한 자료를 참고합니다.

초음파 센서 기구 사이즈와 음파 범위

초음파 센서 원리와 실행

연결도

초음파 센서 HC-SR04 연결도

– 파일 이름: ultrasonic.c

– 소스코드: 할당된 gpio 번호는 예고없이 변경할 수 있습니다.

컴파일 명령

$gcc -o ultrasonic lutrasonic.c -l wiringPi

$실행 명령

$sudo ./ultrasonic

다른 초음파 센서 참고 포스팅

* 주의 사항

#include #include #define trigPin 1 //gpio 21 #define echoPin 29 //gpio 18 //old #define trigPin 21 //gpio 5 //old #define echoPin 4 //gpio J16-pin3 GPIO 23 int main(void) { int distance=0; int pulse = 0; long startTime; long travelTime; if(wiringPiSetup () == -1) { printf(“Unable GPIO Setup”); return 1; } pinMode (trigPin, OUTPUT); pinMode (echoPin, INPUT); for(;;) { digitalWrite (trigPin, LOW); usleep(2); digitalWrite (trigPin, HIGH); usleep(20); digitalWrite (trigPin, LOW); while(digitalRead(echoPin) == LOW); startTime = micros(); while(digitalRead(echoPin) == HIGH); travelTime = micros() – startTime; int distance = travelTime / 58; printf( “Distance: %dcm

“, distance); delay(200); } }

결과

Distance: 8cm Distance: 8cm Distance: 8cm Distance: 8cm Distance: 8cm Distance: 8cm Distance: 8cm Distance: 8cm Distance: 8cm Distance: 8cm Distance: 8cm Distance: 8cm Distance: 8cm

반응형

라즈베리파이에 GPIO 파이썬을 이용해 초음파 센서(HC-SR04) 제어하기

라즈베리파이에 GPIO 파이썬을 이용해 초음파 센서(HC-SR04) 제어하기

안녕하세요.

이번에 소개할 내용은 라즈베리파이에 GPIO, 파이썬을 이용해 초음파 센서(HC-SR04) 제어하기 입니다.

초음파 센서를 통해서 거리를 계산을 하거나 할경우 이용을 하실수가 있습니다.

초음파 센서를 제어하기 위해선 우선 준비물이 필요합니다.

준비물 라즈베리파이 OS가 설치된 라즈베리파이

ELEGOO Arduino용 HC-SR04 초음파 센서 1개

점퍼케이블 암,수 4줄

플레이트 보드 1개

1KΩ 저항 1개, 2KΩ저항 1개

준비물이 준비가 되셨으면 본격적으로 초음파 센서 제어를 해보도록 하겠습니다.

아래의 회로도를 참고하셔서 케이블과 센서를 연결을 해주시기 바랍니다.

1KΩ 저항은 Echo와 연결을 해주세요.

2KΩ 저항은 GND와 연결을 해주세요.

Trig는 GPIO 17번과 연결을 해주세요.

Echo는 GPIO 18번과 연결을 해주세요.

Echo의 경우 5V의 전압을 사용하기 때문에

저항을 이용해서 라즈베리파이에 부담을 주지않는 3.3V로 다시 낮춰 주셔야만 합니다.

Color Pi GPIO Pin Notes Red 2 5V Yellow 11 17 White 12 18(PWM0) Gray 39 GND

GPIO핀에 대한 자세한 내용을 원하시는 분은 아래의 링크를 들어가셔서 참고해 주세요.

라즈베리파이에서 GPIO를 사용하기전 알아두어야 할 사항

위와같이 라즈베리파이와 플레이트 보드의 구성을 모두 마치셨으면

이제 본격적인 코딩을 해야만 합니다.

Visual Studio Code(비주얼 스튜디오 코드)를 실행해 주시기 바랍니다

실행을 하셨으면 파일명을 gpio_HC-SR04.py로 추가를 해주시기 바랍니다.

간단한 예제로 파이썬을 이용해 초음파 센서(HC-SR04)를 제어할 소스를 작성 하겠습니다.

아래의 코드를 입력해 주세요.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

import RPi.GPIO as GPIO

import time

print( “AkibaTV HC-SR04 Start” )

GPIO.setmode(GPIO.BCM)

GPIO.setup( 17 , GPIO.OUT)

GPIO.setup( 18 , GPIO.IN)

try :

while True :

GPIO.output( 17 , False )

time.sleep( 0.5 )

GPIO.output( 17 , True )

time.sleep( 0.00001 )

GPIO.output( 17 , False )

while GPIO. input ( 18 ) == 0 :

start = time.time()

while GPIO. input ( 18 ) == 1 :

stop = time.time()

time_interval = stop – start

distance = time_interval * 17000

distance = round (distance, 2 )

print( “Distance => ” , distance, “cm” )

except KeyboardInterrupt:

GPIO.cleanup()

print( “AkibaTV HC-SR04 End” )

작성하신 소스를 라즈베리파이에 넣고 실행을 하기위해

소스파일을 라즈베리파이의 임의의 폴더에 올려주시기 바랍니다.

그리고 라즈베리파이를 VNC를 이용해 접속후 터미널을 실행해 주세요.

라즈베리파이의 리스트 목록을 보시면 gpio_HC-SR04.py 파일명으로 파일이 올라가 있는걸 확인할수 있습니다.

이제 명령어로 초음파 센서(HC-SR04)가 작동하는지 확인 해보도록 하겠습니다.

아래의 명령어를 입력해 주세요.

1

2

$ sudo python ./gpio_HC-SR04.py

1

2

$ sudo python3 ./gpio_HC-SR04.py

저의 경우는 파이썬을 3.x버전대를 사용하고 있기에 3.x의 명령어로 실행을 하도록 하겠습니다.

위와같이 초음파가 실행되면 거리에 대한 값이 터미널에 출력되는것을 확인 하실수 있습니다.

미묘한 오차는 발생할수는 있을수가 있겠습니다.

초음파 센서를 이용하시면 원거리의 값이나 가까이에 무엇인가 있을경우 측정을 하실때

유용하게 사용할수가 있겠습니다.

다음에는 좀더 다양한 방법으로 초음파 센서를 이용한 방법을 소개해 드리도록 하겠습니다.

취준생 일지 :: 라즈베리파이 PWM, 초음파센서, 후방감지센서 구현

반응형

PWM

PWM(Pulse Width Modulation => 펄스 폭 변조)는 디지털 출력으로 아날로그 회로를 제어하는 기술이다.

일정한 주기 내에서 Duty 비를 변화시켜서 평균 전압을 제어하는 기술이다.

이때 모터나 센서가 on되는 시간을 duty라고 한다.

duty가 50이다 -> 전체에서 50퍼만 쓴다라는 뜻으로 해석할 수 있다.

(모터의 속도조절은 PWM의 기술을 사용한것이라고 한다)

엘레베이터로 예시를 들어보자.

엘레베이터를 타고 제일 꼭대기층에 간다고하면,

고속으로 가다가 해당층에 도달하면 천천히 줄어들면서 멈춘다.( -> 목표에 도달하면서 모터의 힘을 서서히 바꾸는 것)

이 기술의 원리가 PWM 기술을통해 duty를 점점 줄이면서 작동하는 원리라고 볼 수 있다.

직류에서는 0, 1 밖에 존재하지 않는데 어떻게 5V에서 2.5V의 힘을 줄 수 있을까?(어떻게 duty를 조절할 수 있을까?)

0을 보내는 신호일때 0V, 1을 보내는 신호일때는 5V의 전압을 준다고 가정해보자.

만약 어떤 기기가 1초에 5V의 힘을 낸다고 가정하면,

1초 동안 2.5V의 힘을 얻고싶을때는 1초 동안 5V의 힘을 내는 받는 기기를 0.5초 동안의 힘만 내면 된다.

따라서 대략적인 그래프로 표현했을때 0.5초 동안 받는 5V와 1초 동안 받는 2.5V의 면적(duty)이 같다고 볼 수 있다.

두 그래프의 면적이 같다고 볼 수 있다

이제 PWM의 원리를 적용하여 LED의 밝기를 조절해보자.

하얀색 LED의 + 극에 21번핀,

– 에 GND를 연결해서 해당 코드를 실행해보자.

1. PWM의 원리를 이용하여 LED의 밝기를 변화시키는 회로와 코드 작성

#-*-coding: utf-8-*- # 파일이름 : ledPwm1.py import RPi.GPIO as GPIO import time ledPin = 21 GPIO.setmode(GPIO.BCM) GPIO.setup(ledPin, GPIO.OUT) p = GPIO.PWM(ledPin, 255) p.start(0) try: while True: for i in range(20): p.ChangeDutyCycle(5*i) time.sleep(0.1) for i in reversed(range(20)): p.ChangeDutyCycle(5*i) time.sleep(0.1) except KeyboardInterrupt: print() GPIO.cleanup()

하얀색 LED가 밝아졌다가 어두워지는 것을 확인할 수 있다

이러한 원리로 무드등 제어의 원리를 알 수 있다.

2. 밝기를 직접 입력하여 LED 밝기를 조절하는 코드 작성

#-*-coding: utf-8-*- # 파일이름 : ledPwm.py import RPi.GPIO as GPIO ledPin = 21 GPIO.setmode(GPIO.BCM) GPIO.setup(ledPin, GPIO.OUT) p = GPIO.PWM(ledPin, 255) p.start(0) while True: d = input(“Enter Brightness(0 to 100) : “) # LED 밝기 입력 duty = int(d) # 입력받은 값이 정수인지 확인 if(duty == 100): p.stop() GPIO.cleanup() break else: p.ChangeDutyCycle(duty)

입력한 숫자에따라 LED의 밝기가 달라진다.

초음파 센서 제어

초음파 센서는 주파수를 보냈을때의 시간과 주파수를 보낸후 반사되어 돌아오는 시간의 차이를 측정해서 대략적인 거리를 알 수 있게하는 센서이다.

출처 : http://www.3demp.com/community/boardDetails.php?cbID=124

Trig핀에 10u/s의 트리거 신호를 주면 초음파를 발생시켜서 물체에 쏘고,

Echo 핀에서 초음파가 돌아오는 시점의 시간을 측정하여 거리를 재는 원리이다.

라즈베리파이를 통해 초음파 센서를 제어해보자.

출처 : https://steemkr.com/arduino/@jhis21c/45kpa4

맨 왼쪽 VCC 자리에는 5V,

맨 오른쪽 GND 자리에는 그라운드,

왼쪽에서 두번째 Trig 자리에는 14번핀,

오른쪽에서 두번째 Echo 자리에는 4번 핀에 연결하고 밑의 코드를 실행해보자.

3. 초음파 센서 제어

#-*-coding: utf-8 -*- # 파일이름 : ultrasonic01.py import RPi.GPIO as GPIO import time triggerPin = 14 echoPin = 4 GPIO.setmode(GPIO.BCM) GPIO.setup(triggerPin, GPIO.OUT) # 트리거핀을 출력으로 사용 GPIO.setup(echoPin, GPIO.IN) # 에코핀을 입력으로 사용 try: while True: #구형파 발생 GPIO.output(triggerPin, GPIO.LOW) # 10m/s 동안 초음파를 쏴야함 time.sleep(0.00001) # 기초단위가 1초라서 10us는 10의 마이너스 5승으로 처리 GPIO.output(triggerPin, GPIO.HIGH) #시간측정 while GPIO.input(echoPin) == 0: # 펄스 발생(초음파 전송이 끝나는 시간을 start에 저장) start = time.time() while GPIO.input(echoPin) == 1: # 펄스 돌아옴(초음파 수신이 완료될때까지의 시간을 stop에 저장) stop = time.time() rtTotime = stop – start # 리턴 투 타임 = (end시간 – start시간) # 거리 = 시간 * 속력 # 이때 소리의 속력은 340m/s인데 cm로 단위를 바꿔줘야함=> 34000 cm/s # 그리고 340m/s 는 왕복속도라서 편도로 봐야하니 나누기 2를 해줘야함 distance = rtTotime * ( 34000 / 2 ) print(“distance : %.2f cm” %distance) # 거리를 출력 time.sleep(1) # 1초마다 받아옴 except KeyboardInterrupt: GPIO.cleanup()

초음파센서에 손이나 물건을 갖다대서 거리 수치 변화를 관찰해보자

4. 초음파센서와 부저센서를 이용한 후방감지센서 만들기

초음파센서를통해 물체와의 거리를 잴 수 있게 됬으니, 자동차의 후방센서를 구현해보자.

초음파센서에 물체와의 거리가 점점 좁혀지면 부저센서에서 더 빠르게 소리를 출력하는 원리를 구현해보자.

회로구성

#-*-coding: utf-8 -*- import RPi.GPIO as GPIO import time triggerPin = 14 echoPin = 4 pinPiezo = 21 GPIO.setmode(GPIO.BCM) GPIO.setup(triggerPin, GPIO.OUT) # 출력 GPIO.setup(echoPin, GPIO.IN) # 입력 GPIO.setup(pinPiezo, GPIO.OUT) Buzz = GPIO.PWM(pinPiezo, 440) # 부저센서 초기화 try: while True: #구형파 발생 GPIO.output(triggerPin, GPIO.LOW) time.sleep(0.00001) GPIO.output(triggerPin, GPIO.HIGH) #시간측정 while GPIO.input(echoPin) == 0: # 펄스 발생 start = time.time() while GPIO.input(echoPin) == 1: # 펄스 돌아옴 stop = time.time() rtTotime = stop – start # 리턴 투 타임 = (end시간 – start시간) distance = rtTotime * (34000 / 2 ) print(“distance : %.2f cm” %distance) # 거리 출력 time.sleep(0.2) if(distance <= 40 and distance > 25): # 26 ~ 40 cm 일때 Buzz.start(50) Buzz.ChangeFrequency(523) time.sleep(0.3) Buzz.stop() time.sleep(0.3) elif(distance <= 25 and distance > 10): # 25 ~ 11 cm 일때 Buzz.start(50) Buzz.ChangeFrequency(523) time.sleep(0.15) Buzz.stop() time.sleep(0.1) elif(distance <= 10): # 10cm 이하일때 Buzz.start(99) Buzz.ChangeFrequency(523) time.sleep(0.05) Buzz.stop() time.sleep(0.05) else: # 그 외(겁나 멀때) Buzz.stop() time.sleep(0.5) except KeyboardInterrupt: GPIO.cleanup() 영상을 확인해보면 거리에따라 부저센서가 울리는 빈도수 변화를 관찰할 수 있다. 반응형

Raspberry Pi 초음파센서, PIR센서, 온습도 센서

초음파센서

VCC – 5v

Trig – 23번핀

Echo – 24번핀

GND – GND

import RPi.GPIO as g import time TRIGER = 23 ECHO = 24 g.setmode(g.BCM) g.setup(TRIGER, g.OUT) g.setup(ECHO, g.IN) def getDistance(): g.output(TRIGER, False) time.sleep(1) g.output(TRIGER,True) time.sleep(0.00001) #10ms초 만큼 신호 발생 g.output(TRIGER, False) while g.input(ECHO) == 0 : pulse_start = time.time() #현재시간을 측정 – HIGH신호가 발생되는 시간을 측정 while g.input(ECHO) == 1: pulse_end = time.time() #ECHO핀이 LOW신호가 발생되는 시간을 측정 pulse_duration = pulse_end – pulse_start distance = pulse_duration * 340 * 100 / 2 distance = round(distance,2) #소수점 2자리까지 return distance if __name__ == “__main__” : try: while True: distance_value = getDistance() if 2 < distance_value < 400 : print("distance: %.2f cm" % distance_value) else: print("범위가 벗어남") except KeyboardInterrupt: pass finally: g.cleanup() PIR센서 <선 조절값> 인 상태로

맨 위 VCC – 3.3V

가운데 아웃풋 – 17번핀

맨 아래 GND – GND

import RPi.GPIO as g import time g.setmode(g.BCM) g.setup(17,g.IN) try: while True: if g.input(17) == 1: print(“motion detected…”) else: print(“no motion…”) time.sleep(1) except KeyboardInterrupt: pass finally: g.cleanup()

온습도 센서

Adafruit_DHT 라이브러리를 사용해야한다.

근데 기존에 사용하던 Adafruit-DHT 라이브러리가 오래된 라이브러리이고 더이상 업데이트가 되지 않음

라즈베리파이4에 추가된 내용이 반영되어 있지 않음

1. 통신패키지 설치

– 센서들과 통신 할 수 있는 통신패키지를 설치

– libgpiod2 패키지 설치

– sudo apt install libgpiod2 명령어 입력

2. 파이썬 통신 패키지 설치

– 라즈베리파이에서 GPIO와 통신할 수 있는 패키지 설치

– 파이썬 내부에서 센서와 통신할 수 있도록 구성

– 보드 컨트롤러 id파악

– 아날로그랑 디지털 입출력 핀 구성

– 데이터 전송을 위해서 필요한 파이썬 패키지 설치

– pip3 install adafruit-blinka 명령어 입력

3. 파이썬 온습도 모듈 설치

– 센서를 파이썬에서 사용하기 위해서 작업

– pip3 install adafruit-circuitpython-dht

– : GND

가운데 : 핀

+ : 5V

import time import board # 데이터 송신용 board모듈 import adafruit_dht mydht11 = adafruit_dht.DHT11(board.D20) while True: try: humidity_data = mydht11.humidity temperature_data = mydht11.temperature print(humidity_data, temperature_data) time.sleep(2) # 대기시간이 2초 필요 – 센서 내부에서 초기화작업시 필요한 시간 except RuntimeError as error: print(error.args[0]) finally: pass

초음파 센서 라즈베리파이에 연결하는 방법 (+추가 led, 부저 사용)

1. 초음파 센서로 거리 출력

초음파 센서를 연결해서 0.5마다 한 번씩 거리를 출력해서 알려줍니다.

자세한 설명은 코드 아래에 있습니다.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 import RPi.GPIO as GPIO import time trig = 20 echo = 21 print ( ‘start’ ) GPIO.setmode(GPIO.BCM) GPIO.setwarnings( False ) GPIO.setup(trig,GPIO.OUT) GPIO.setup(echo,GPIO.IN) try : while ( True ): GPIO.output(trig, False ) time.sleep( 0. 5 ) GPIO.output(trig, True ) time.sleep( 0. 00001 ) GPIO.output(trig, False ) while GPIO.input(echo) = = 0 : pulse_start = time.time() while GPIO.input(echo) = = 1 : pulse_end = time.time() pulse_duration = pulse_end – pulse_start distance = pulse_duration * 17000 distance = round(distance, 2 ) print ( ‘Distance : ‘ , distance, ‘cm’ ) except : GPIO.cleanup() cs

time 모듈을 사용하기 위해서 import

trigger 는 20번 핀에, echo는 21번 핀에 연결

거리를 계속 출력하기 위해서 while 문 사용

0.5초 동안 멈췄다가 0.00001 동안 초음파 발사!

while문으로 echo가 0일 때 시간을 변수 pulse_start에 저장하다가

1을 받기 직전에 그 시간이 pulse_start가 된다.

while문으로 echo가 1일 때 시간을 변수 pulse_end에 저장하다가

0을 받기 직전에 그 시간이 pulse_end가 된다.

그럼 초음파가 물체에 부딪히고 돌아오는 데 걸린 시간을 구할 수 있다.

그 식이 pulse_duration = pulse_end – pulse_start 이다.

거리는 걸린 시간에 340 / 2 를 곱하면 구할 수 있다.

소수점 둘째 자리까지 보기 위해서 round를 썼다.

위 코드를 실행하면 아래와 같이 나온다.

실행 결과

더보기 아래 코드가 초음파 센서의 의미를 더 잘 살린 코드이다. import time gpio.setmode(gpio.BOARD) trig = 15 echo = 16 gpio.setup(trig, gpio.OUT,initial=gpio.LOW) gpio.setup(echo, gpio.IN) try : while True : gpio.output(trig,False) time.sleep(0.5) gpio.output(trig, True) time.sleep(0.000001) gpio.output(trig, False) while True : if gpio.input(echo) == 0 : pass else : start_time = time.time() break while True : if gpio.input(echo) == 1 : pass else : end_time = time.time() break distance = (end_time – start_time) * 17000 print ‘ Dist = ‘, distance except : gpio.cleanup() print ‘ ‘ print ‘ == Good Bye == ‘

2. 초음파 센서로 일정 거리 이하일 때 led 깜빡임&부저 울리기

위에 회로에서 led와 부저를 추가 연결했습다.

아래와 같이 연결하면 됩니다.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 import RPi.GPIO as GPIO import time led = 17 buzzer = 18 trig = 20 echo = 21 print ( ‘start’ ) GPIO.setmode(GPIO.BCM) GPIO.setwarnings( False ) GPIO.setup(buzzer,GPIO.OUT) GPIO.setup(led,GPIO.OUT) GPIO.setup(trig,GPIO.OUT) GPIO.setup(echo,GPIO.IN) try : GPIO.output(buzzer, False ) GPIO.output(led, False ) while ( True ): GPIO.output(trig, False ) time.sleep( 0. 5 ) GPIO.output(trig, True ) time.sleep( 0. 00001 ) GPIO.output(trig, False ) while GPIO.input(echo) = = 0 : pulse_start = time.time() while GPIO.input(echo) = = 1 : pulse_end = time.time() pulse_duration = pulse_end – pulse_start distance = pulse_duration * 17000 distance = round(distance, 2 ) print ( ‘Distance : ‘ , distance, ‘cm’ ) if distance < = 10 : GPIO.output(led, True ) GPIO.output(buzzer, True ) time.sleep( 0. 5 ) GPIO.output(buzzer, False ) else : GPIO.output(buzzer, False ) time.sleep( 0. 3 ) GPIO.output(led, False ) except : GPIO.cleanup()

키워드에 대한 정보 라즈베리 파이 초음파 센서

다음은 Bing에서 라즈베리 파이 초음파 센서 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 라즈베리 파이 파이썬 프로그램을 이용한 센서 제어, 세번째. 초음파 센서, 조도 센서 등

  • 라즈베리파이
  • IoT
  • 파이썬IoT
  • IoT파이썬
  • 파이썬프로그램
  • 센서제어
  • 아두이노
  • 키즈코딩
  • 코딩교육
  • 보안프로젝트
  • 모두코딩

라즈베리 #파이 #파이썬 #프로그램을 #이용한 #센서 #제어, #세번째. # #초음파 #센서, #조도 #센서 #등


YouTube에서 라즈베리 파이 초음파 센서 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 라즈베리 파이 파이썬 프로그램을 이용한 센서 제어, 세번째. 초음파 센서, 조도 센서 등 | 라즈베리 파이 초음파 센서, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

Leave a Reply

Your email address will not be published. Required fields are marked *