제어기 활용 -GPIO Ch.05 RaspberryPi Sejin Oh. Raspberry Pi 제어기 활용 -GPIO  GPIO (General Purpose Input Output)  마이크로프로세서가 주변장치와 통신하기 위해 범용으로 사용되는 입출력 포트 

Slides:



Advertisements
Similar presentations
Python Ch.06 RaspberryPi Sejin Oh. Raspberry Pi Python  IDLE(Integrated Development Environment)  라즈베리 파이 배포본들은 일반적으로 파이썬과 파이썬 3 의 IDLE 파 이썬 개발 도구를.
Advertisements

Hamster Manual 정보통신과 이우형. 목차 세팅 햄스터 하드웨어 - Model - I/O -Sensor 센서별 예제.
Embedded System Engineering dept. University of Incheon.
을지대학교 무선 네트워크 사용 방법 2010 년 06 월 01 일. 을지대학교 무선 네트워크 사용 방법 1. PC 무선랜 카드 활성화 및 체크 1 단계 : 시작 -> 설정 -> 네트워크 설정 2 단계 : 무선 네트워크 설정 선택 -> 마우스 버튼 오른쪽 클릭 -> 사용.
Progress Report YoonMo Yeon
난이도 : 초급 제1장 앱 인벤터 소개 및 준비.
Vision System Lab, Sang-Hun Han
IoT(사물인터넷) 보안 2016년 2학기 3. 라즈베리파이 gpio.
IoT(사물인터넷) 보안 2016년 2학기 4. 라즈베리파이 카메라.
AVR 실습.
Snort & Snorby.
IoT(사물인터넷) 보안 2016년 2학기 2. 라즈베리파이 준비.
자바실험실 이동준 우리 곁으로 다가온 사물 컴퓨팅 자바실험실 이동준.
Image & Video processing
2015년 2학기 PULSE 4 전자물리실험 11주차 – 초음파 거리 측정 실험 - DSU 메카트로닉스 융합공학부 -
IoT(사물인터넷) 보안 2016년 2학기 2. 라즈베리파이 준비.
Smart IoT 설계 시스템 Lecture 07. 센서와 액츄에이터 실습.
Cross Compiler를이용한 커널 컴파일 및 포팅
아날로그 입력과 출력.
아두이노 기반 펌웨어 개발 FUTURE INNOVATOR 강사: 김 영 준 ㈜헬로앱스
뇌를 자극하는 Windows Server 2012 R2
임베디드 프로그래밍 Lecture #
GPIO RaspberryPi Sejin Oh.
GPIO RaspberryPi Sejin Oh.
임베디드 프로그래밍 Lecture #
나민영 서경대학교 컴퓨터공학과 CGVR Lab 같이만들어보자 5주차 OpenCV 설정 및 기초.
12. 아두이노와 센서를 이용한 제어 - 스마트 폰으로 제어하는 아두이노 -.
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
독립형 모션제어기 사양 - Catalog (optional) XMC-PO04-MOD
AP 모드 활용하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
8장 함수 함수의 필요성 라이브러리 함수와 사용자 정의 함수 함수의 정의, 원형, 호출 배열을 함수 인자로 전달 재귀호출.
SqlParameter 클래스 선문 비트 18기 발표자 : 박성한.
제 2 장 WML 시뮬레이터 및 무선인터넷 서버 설치
임베디드 실습 # LED, 7’Segment 제어
메시지 큐[5] – test1.c 메시지 제어: msgctl(2) #include <sys/msg.h>
WinCE Device Driver 실습 #3
WinCE Device Driver 실습 #2
DK-128 실습 EEPROM 제어 아이티즌 기술연구소
학습목표 학습목차 다른 홈페이지의 HTML 파일 코드를 보는 방법에 대해 알아봅니다.
DK-128 개발환경 설정 아이티즌 기술연구소 김태성 연구원
Microprocessor I/O Port & CLCD Noh Jin-Seok.
10강. JSP 본격적으로 살펴보기-II 스크립트릿, 선언, 표현식 지시자 주석 Lecturer Kim Myoung-Ho
UNIT 07 Memory Map 로봇 SW 교육원 조용수.
2장. JSP 프로그래밍을 위한 환경구성 제2장.
RPi2 SPI 8x8 Dot Matrix LED
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
SSH, VNC Mobile Engineering, Kyungwoon Univ. Embedded System Design.
5. 아두이노로 LED와 스위치 제어하기 - 스마트 폰으로 제어하는 아두이노 -.
JPA-1360B/1480B ATT 5-ZONE AMPLIFIER JPA-1360B JPA-1480B 입력 감도 / 임피던스
임베디드 프로그래밍 Lecture #
Adobe 제품 다운로드 및 설치 방법 안내 Adobe Creative Cloud Adobe License 권한을 받으신 분
Raspberry Pi GPIO PWM Servo Motor
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
운영체제 RaspberryPi Sejin Oh.
02강 아두이노 LED 기본 개념 LED Example1 LED Example2 LED Example3
클라우드 서버로 사용자 데이터 전송하기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
클라우드 서버로 부터 값 읽어오기 WiFi 시리얼 보드 활용가이드 김영준 헬로앱스 (
7. 실제 세계와의 통로 센서 정보영재 석사 김석전.
웹서버 기능으로 데이터 읽기 및 제어하기 WiFi 시리얼 보드 활용가이드 김영준
ATmega128의 특징 아이티즌 기술연구소
컴퓨터 계측 및 실습 디지털 출력 영남대학교 기계공학부.
DK-128 개발환경 설정 아이티즌 기술연구소 김태성 연구원
DK-128 개발환경 설정 아이티즌 기술연구소
DK-128 직렬통신 실습 아이티즌 기술연구소
Ⅰ 전자기초 Ⅱ 디지털 논리회로 Ⅲ C언어 기초 Ⅳ AVR 마이크로 컨트롤러 Ⅴ 마이크로 컨트롤러 개발환경
AdcRead API 함수 분석 마이크로프로세서.
IPC 펌웨어 업그레이드 방법 안내 ** 반드시 IPC를 NVR POE 포트 연결 전에 작업 하시기 바랍니다. IPC를 NVR POE 포트에 연결 하실 경우 IP 대역폭을 마추셔야 하는 작업이 필요합니다. **
아두이노 프로그래밍 2일차 – Part4 아날로그 키패드 활용하기 강사: 김영준 목원대학교 겸임교수
인천SW교육지원센터 체험프로그램 라즈베리파이 이용 포토부스 만들기.
펌웨어(S/W) Upgrade 방법 Samsung Kies3
Presentation transcript:

제어기 활용 -GPIO Ch.05 RaspberryPi Sejin Oh

Raspberry Pi 제어기 활용 -GPIO  GPIO (General Purpose Input Output)  마이크로프로세서가 주변장치와 통신하기 위해 범용으로 사용되는 입출력 포트  입력과 출력을 마음대로 선택할 수 있고, 0 과 1 의 출력 신호를 임의로 만들어줄 수 있는 구조를 가진다.  GPIO 라이브러리  라즈베리 파이의 GPIO 를 제어할 수 있는 언어 C, C++, C#, Python Perl, Ruby, Java 등 매우 다양함  각 언어에 따라 사용자들이 GPIO 라이브러리를 제작하여 공유하고 있다.  wiringPi : 공개된 라이브러리 중 GPIO 제어 속도가 빠름 2 GPIO

Raspberry Pi 제어기 활용 -GPIO  Raspberry Pi b+ GPIO 핀 배치 3 GPIO

Raspberry Pi 제어기 활용 -GPIO 1. 라즈베리 파이의 업데이트 및 업그레이드 실시 2. 소스 관리 툴인 git 을 다운로드 3.Git 을 이용하여 “Wiring Pi” 라이브러리를 다운로드 4 GPIO Library 설치 $ sudo apt-get update $ sudo apt-get upgrade $ sudo apt-get install git-core $ git clone git://git.drogon.net/wiringPi

Raspberry Pi 제어기 활용 -GPIO 4. 빌드 및 설치 진행 5. 설치 확인 5 GPIO Library 설치 $ cd wiringPi $./build $ gpio -v 설치 확인 ( 예시 ) Gpio version: 2.08 Copyright © Gordon Henderson This is free software with ABSOLUTELY NO WARRANTY For details type: gpio –warranty This Raspberry Pi is a reversion 2 board

Raspberry Pi 제어기 활용 -GPIO  GPIO 의 출력을 이용하여 LED on/off 제어 테스트  LED 회로를 구성하여 GPIO 에 High 값을 출력해주면 LED 는 켜짐  GPIO 에 Low 값을 출력하게 되면 LED 는 꺼짐  LED 2 개, 저항 220Ω 2 개, GPIO 23 번 핀, 24 번 핀 이용 6 GPIO 출력 테스트

Raspberry Pi 제어기 활용 -GPIO 1. 작업 폴더 생성 및 이동 2. 프로그램 작성 7 GPIO 출력 테스트 $ mkdir gpio $ cd gpio $ sudo nano output.c

Raspberry Pi 제어기 활용 -GPIO 8 GPIO 출력 테스트 #include #define LED1 23 #define LED2 24 int main(void) { if(wiringPiSetupGpio()==-1) return 1; pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); while(1) { digitalWrite(LED1, 1); digitalWrite(LED2, 1); delay(500); // ms digitalWrite(LED1, 0); digitalWrite(LED2, 0); delay(500); } return 0; }

Raspberry Pi 제어기 활용 -GPIO 3. 프로그램 빌드 4. 프로그램 실행 9 GPIO 출력 테스트 $ gcc –o output output.c -lwiringPi $ sudo./output

Raspberry Pi 제어기 활용 -GPIO  python 을 이용한 LED on/off 테스트  $ sudo python 10 GPIO 출력 테스트 import RPi.GPIO as GPIO import time GPIO.setmode(GPIO.BCM) GPIO.setup(23, GPIO.OUT) GPIO.setup(24, GPIO.OUT) while (True): GPIO.output(23, True) GPIO.output(24, True) time.sleep(0.5) GPIO.output(23, False) GPIO.output(24, False) time.sleep(0.5)

Raspberry Pi 제어기 활용 -GPIO  스위치 회로  스위치의 on/off 신호에 따라 LED 가 켜지고 꺼지는 실습  GPIO 입력 테스트에 사용될 GPIO 는 25 번  스위치에 10KΩ 연결 11 GPIO 입력 테스트

Raspberry Pi 제어기 활용 -GPIO  프로그램 작성 1. 작업 폴더로 이동 $ sudo cd ~/gpio 2. 프로그램 작성 $ sudo nano input.c 12 GPIO 입력 테스트 #include #define LED 23 //gpio 23 #define LED 24 //gpio 24 #define SW 25 //gpio 25 int main(void) { if(wiringPiSetupGpio() == -1) return 1; pinMode(LED1, OUTPUT); pinMode(LED2, OUTPUT); pinMode(SW, INPUT); while(1) { digitalWrite(LED1, 0); digitalWrite(LED2, 0); if(digitalRead(SW) == 1) { digitalWrite(LED1, 1); digitalWrite(LED2, 1); delay(1000); } return 0; }

Raspberry Pi 제어기 활용 -GPIO  프로그램 작성 3. 프로그램 빌드 $ sudo –o input input.c -lwiringPi 4. 프로그램 실행 $ sudo./input 13 GPIO 입력 테스트

Raspberry Pi 제어기 활용 -GPIO  초음파 센서  우선 trigger 핀에서 10us 정도의 High 신호를 주면 초음파 센서는 40Khz 펄스를 자동으로 8 번 발생시킴  펄스 발생 후 echo 핀은 High 로 되고 반사된 초음파가 감지될때 Low 가 됨  거리 측정 echo 핀이 High 에서 Low 로 걸리는 시간을 측정 측정된 시간을 초음파의 속도 ( 즉, 58) 로 나누면 거리가 측정됨 14 Ultra Sonic Sensor

Raspberry Pi 제어기 활용 -GPIO 15 Ultra Sonic Sensor VCC 5V 연결 GND GND 연결 Echo GPIO 23 연결 Trigger GPIO 24 연결

Raspberry Pi 제어기 활용 -GPIO 16 Ultra Sonic Sensor – ultrasonic.c #include #define TRIG 24 #define ECHO 23 int main(void) { int distance = 0; int pulse = 0; if(wiringPiSetupGpio() == -1) return 1; pinMode(TRIG,OUTPUT); pinMode(ECHO,INPUT); for(;;){ digitalWrite(TRIG,LOW); usleep(2); digitalWrite(TRIG,HIGH); usleep(20); digitalWrite(TRIG,LOW); while(digitalRead(ECHO) == LOW); long startTime = micros(); while(digitalRead(ECHO) == HIGH); long travelTime = micros() - startTime; int distance = travelTime / 58; printf("Distance: %d cm\n", distance); delay(100); }

Raspberry Pi 제어기 활용 -GPIO 17 Ultra Sonic Sensor

Raspberry Pi 제어기 활용 -GPIO  온습도 센서 (DHT11 Sensor) 18 온습도 센서 VCC 3V 연결 GND GND 연결 Data GPIO 4 연결 Resistance10K

Raspberry Pi 제어기 활용 -GPIO  Raspberry Pi b+ GPIO 핀 배치 19 온습도 센서

Raspberry Pi void read_dht11_dat() { uint8_t laststate = HIGH ; uint8_t counter = 0 ; uint8_t j = 0, i ; uint8_t flag = HIGH ; uint8_t state = 0 ; float f ; 제어기 활용 -GPIO 20 온습도 센서 – C file #include #define MAXTIMINGS 83 #define DHTPIN 7 int dht11_dat[5] = {0, } ; uint8_t 는 unsigned 8 bit 타입 변수 char, int 가 word 의 크기에 따라 달라지는 것을 방지하기 위함

Raspberry Pi 제어기 활용 -GPIO 21 온습도 센서 – C File dht11_dat[0] = dht11_dat[1] = dht11_dat[2] = dht11_dat[3] = dht11_dat[4] = 0 ; pinMode(DHTPIN, OUTPUT) ; digitalWrite(DHTPIN, LOW) ; delay(18) ; digitalWrite(DHTPIN, HIGH) ; delayMicroseconds(30) ; pinMode(DHTPIN, INPUT) ; for (i = 0; i < MAXTIMINGS; i++) { counter = 0 ; while ( digitalRead(DHTPIN) == laststate) { counter++ ; delayMicroseconds(1) ; if (counter == 200) break ; } 처음 신호선으로 LOW 를 18ms 동안, 20~40us 동안 HIGH 신호를 보내주면 Start 신호 본소스에서는 중간값 30 사용 라즈베리 파이가 신호를 받아야하므로 INPUT MAXTIMINGS 개 데이터 비트 * 2(Low, High) + 3 개 처음비트 high->low/low->high 반대안되면 카 운트 증가 시키며 200us 대기 200us 동안 변화 없을시 break

Raspberry Pi 제어기 활용 -GPIO 22 온습도 센서 – C File laststate = digitalRead(DHTPIN) ; if (counter == 200) break ; //0~3 비트 버리고 짝수 번째 비트인지 확인 if ((i >= 4) && (i % 2 == 0)) { dht11_dat[j / 8] <<= 1 ; if (counter > 20) dht11_dat[j / 8] |= 1 ; j++ ; } // 0,1,2,3 더해서 패리티 비트 4 와 비교 if ((j >= 40) && (dht11_dat[4] == ((dht11_dat[0] + dht11_dat[1] + dht11_dat[2] + dht11_dat[3]) & 0xff))) { printf("humidity = %d.%d % Temperature = %d.%d *C \n", dht11_dat[0], dht11_dat[1], dht11_dat[2], dht11_dat[3]) ; } else printf("Data get failed\n") ; } 온습도 센서는 신호의 길이로 데이 터를 쓰기 때문에 counter 가 20 넘어 가면 1 을 씀 (or 연산 사용 ) 체크썸 0xff

Raspberry Pi 제어기 활용 -GPIO 23 온습도 센서 – C File int main(void) { printf("dht11 Raspberry pi\n") ; if (wiringPiSetup() == -1) exit(1) ; while (1) { read_dht11_dat() ; delay(1000) ; } return 0 ; }

Raspberry Pi 제어기 활용 -GPIO 24 온습도 센서 – 결과

Raspberry Pi 제어기 활용 -GPIO  안전 종료를 위한 매크로 버튼  page 165  버튼과 스피커를 이용한 전자 피아노 건반  page 170  초음파 센서를 이용한 후방감지 시스템  온 / 습도 센서를 이용한 디지털 온도계 25 실습

Raspberry Pi 제어기 활용 -GPIO  WebIOPi  WebIOPi 는 라즈베리 파이의 GPIO 를 웹 브라우저에서 제어하기 위 해 만들어진 라즈베리 파이의 GPIO 제어 프레임워크.  라즈베리 파이를 파이썬으로 GPIO 를 제어하면서 동시에 서버로써 구동하여 원격 제어도 가능  웹 브라우저에서는 HTTP REST API 를 이용하여 서버에 원격 접속 및 GPIO 를 제어할 수 있다. 26 WebIOPi

Raspberry Pi 제어기 활용 -GPIO  webiopi 다운로드 및 설치  $ wget  $ tar xvzf WebIOPi tar.gz  $ cd WebIOPi  $ sudo./setup.sh 27 WebIOPi 설치

Raspberry Pi 제어기 활용 -GPIO  webiopi Patch  $ wget tar.gz  $ tar xvzf WebIOPi tar.gz  $ cd WebIOPi  $ wget pi2bplus.patch  $ patch -p1 -i webiopi-pi2bplus.patch  $ sudo./setup.sh 28 WebIOPi 설치

Raspberry Pi 제어기 활용 -GPIO  webiopi 시작  $ sudo service webiopi start  webiopi 종료  $ sudo service webiopi stop 29 WebIOPi 설치

Raspberry Pi 제어기 활용 -GPIO  webiopi 를 이용한 gpio 제어  데스크톱에서 자신의 ip 주소로 접속하면 webiopi 메인화면 출력  브라우저 주소 :8000http://IP 주소 :8000  인증 id: webiopi pass: raspberry 30 WebIOPi 설치

Raspberry Pi 제어기 활용 -GPIO  LED 제어 예제 프로그램 다운로드  $ git clone  $ cd traffic_light  $ sh setup.sh  접속 후 예제 프로그램 확인  브라우저에서 주소 :8000 접속 확인 31 WebIOPi 를 이용한 LED 제어

Raspberry Pi 제어기 활용 -GPIO  회로 구성  LED 8 개, 220Ω 8 개 연결  GPIO Pin 번호 10, 9, 11, 25, 7, 24, 8, 18 번 핀에 LED 연결 32 WebIOPi 를 이용한 LED 제어

Raspberry Pi 제어기 활용 -GPIO  결과확인  브라우저 및 휴대폰을 이용한 결과확인 33 WebIOPi 를 이용한 LED 제어 – 결과 확인

Raspberry Pi Thank you 34