반응형

라즈베리파이#16 State Diagram 구현 실습

▶ 회로 구성 : 


▶ 개요 


희망하는 GPIO의 출력을 State Diagram으로 도식화 해서 이를 다시 프로그래밍을 통해  하드웨어적으로 구현 해보도록 하자. 

( 이전글 참조  :  #15 LED SOS 신호와 동기신호 실습 )





▶ 실습절차 

저항과 LED, 준비하고 위 도면과 같이 연결한다.  

(LED1 → GPIO 18번 핀 연결  / LED2 → GPIO 23번 핀 연결)

(LED 극성에 주의 : 리드선이 긴 쪽이 '+'  ,  짧은 쪽이 '-' 이다)

1. 부품 : 220Ω x 2 ,  LED x 2



▶ 파이썬 코드 

명령창에 한 줄씩 바로 입력 하지말고 저장파일을 만들어 아래와 같이 작성후 실행 시킨다.




▶ 코드설명 

【 GPIO 신호를 타이밍 차트로 분석하여 구현하기 


 - 위 신호를 분석 해보면 아래와 같은 4개의 패턴이 순서대로 반복 되는 것을 확인 할 수 있다.



-위 타이밍 차트를 분석해보면 패턴 S1 S2 S3 S4 의 패턴이 순서 대로 이어지고 있고, 3개 패턴의 delay가 나온 후 전체 반복되는 것을 확인 할 수 있다.

-S1패턴 →  ‘True’ , ’ False
-S2패턴 →  True, ’ True
-S3패턴 →  False, ’ True
-S4패턴 →  False, ’ False
-delay패턴 → S4뒤에S4패턴과 같은 패턴 3번 반복(delay)

-위 타이밍 차트에서 한 눈금당 0.2초 씩 계산함.
- 각 상태(State) 별로 def (definition:정의 함수) 형태로 만들어 사용한다



▶ 실행 결과 


아래 영상은 위 프로그램을 두 번 연속 실행 시킨 영상이다. 




ED On Off 실습 with Python

반응형
반응형

【 라즈베리파이 】 #15 LED SOS 신호와 동기신호 실습


▶ 회로 구성 : 


▶ 개요 


LED1으로 SOS 신호를 나타 내고 LED2로 동기신호(일정한 크기와 간격의 기준 신호)를 출력해 보는 실습이다. 

( 이전글 참조  :  #14 타이밍 차트 활용한 LED 실습 )


▶ 실습절차 

저항과 LED, 준비하고 위 도면과 같이 연결한다.  

(LED1 → GPIO 18번 핀 연결  / LED2 → GPIO 23번 핀 연결)

(LED 극성에 주의 : 리드선이 긴 쪽이 '+'  ,  짧은 쪽이 '-' 이다)

1. 부품 : 220Ω x 2 ,  LED x 2



▶ 파이썬 코드 

명령창에 한 줄씩 바로 입력 하지말고 저장파일을 만들어 아래와 같이 작성후 실행 시킨다.




▶ 코드설명 

【 SOS 신호 타이밍 차트

-위 타이밍 차트에서 한 눈금당 0.2초 씩 계산함.


-S’ 신호 : 0.4On 0.4Off 0.4On 0.4Off0.4On (1.2Off :다음신호 사이의 공백 값)
-O’ 신호 1.2On 0.4Off 1.2On 0.4Off1.2On (1.2Off :다음신호 사이의 공백 값)

-LedOnLedOff 함수 , S, O, 모르스 신호 함수를 선언(def한다

-Led1(SOS 신호용)은 18번 포트를 사용하고, Led2(동기신호)는 23번 포트를 사용한다.
-반복패턴 a, b, c 세가지를 함수로 만들어 정의 한다.
-Led1, Led2 는 패턴에 따라 On(True), Off(False) 의 포트 출력을 설정한다(IoPort.output…)
-Port1 Led1(18번 포트)
-Port2 Led2(Clk, 23번 포트)
-S, O, 신호를 각각 함수로 정의 하되 이미 정의한 패턴 a,b,c 함수를 사용하여 간결화 시킨다
-타이밍 차트와 동일한 출력이 되도록 중간 중간에 패턴 a가 포함되어있음에 유의

【 SOS 신호와 동기신호 타이밍 차트


- 두 개의 신호상에서 반복되는 패턴을 살펴보면 아래와 같은 (a), (b), (c) 세 가지 패턴이 계속 반복되는 것을 발견 할 수 있다.  패턴상에서 위에 부분은 High,  아래에 위치하는 부분은 Low 신호라고 하며, High 신호일 때 LED를 켜고(On), Low 신호일 때 LED를 끄면(Off) 된다.

- 따라서 ‘S 신호는 패턴 (c)가 세 반복: ccc , ‘O 신호는 패턴(b)(c) 가 세 번 반복 : bcbcbc, 되며, 아래와 같은 차트를 만들려면 SOS 신호 사이사이 (a)패턴을 삽입 하면 동일한 신호를 만들 수 있다. 





▶ 실행 결과 


아래 영상은 위 프로그램을 두 번 연속 실행 시킨 영상이다. 

 S.O.S + 동기 신호 






LED On Off 실습 with Python

반응형
반응형

【 라즈베리파이 】 #14 타이밍 차트 활용한 LED 실습

▶ 회로 구성 : 


▶ 개요 


LED의 On Off 제어를 타이밍 차트 (timing chart) 라고 하는 시간에 따른 High- Low 신호에 맞추어 제어 해보는 실습이다. 

모르스 부호 중에 SOS 위급신호를 응용하여 실험해 보도록 한다.


▶ 실습절차 

저항과 LED, 준비하고 위 도면과 같이 연결한다.  (GPIO 18번핀 LED 연결)

1. 부품 : 220Ω x 1 ,  LED x 1



▶ 파이썬 코드 

명령창에 한 줄씩 바로 입력 하지말고 저장파일을 만들어 아래와 같이 작성후 실행 시킨다.




▶ 코드설명 

【 SOS 모르스 신호 타이밍 차트


-모르스 부호의 SOS 신호를 LED를 통해서 나타내는 실험


-위 타이밍 차트에서 한 눈금당 0.2초 씩 계산함.

-S신호 : 0.4On 0.4Off 0.4On 0.4Off0.4On (1.2Off :다음신호 사이의 공백 값)
-O신호 : 1.2On 0.4Off 1.2On 0.4Off1.2On (1.2Off :다음신호 사이의 공백 값)

-LedOn, LedOff 함수 , S, O, 모르스 신호 함수를 선언(def) 한다

-Led 포트는 18번 포트를 사용


▶ 실행 결과 

아래 영상은 위 코드를 두 번 연속 실행 시킨 영상이다. 

 S.O.S , S.O.S





LED On Off 실습 with Python

반응형
반응형

【 라즈베리파이 】 #11 RaspberryPi GPIO



※ GPIO 포트 란 

 GPIO( General Purpose Input Output) Port 라는 용어로서 ,  Port는 어떤 신호가 드나드는 지점을 말한다통신을 하기 위한 신호가 드나들면 통신포트, 신호가 입력되면 입력포트, 신호가 출력되면 출력 포트라고 한다. GPIO 포트는 신호의 입력과 출력 또는 다른 부가 기능으로 사용될 수 있는 다목적 포트이다. 이를 프로그래밍으로 제어하는 것이다





※ GPIO 포트 셋 2가지 ( BCM & wPi )  

 라즈베리파이의 GPIO 포트에 주요 2가지 포트 명칭 셋이 사용되는데

wPi (WiringPi) BCM 이다

 BCM라즈베리파이의 메인 칩인 BCM283x 칩의 물리적인 핀 번호를 적용한 핀 명칭으로서 기본 제공되는 파이썬 라이브러리가 이 명칭 셋을 사용한다.   wPi 명칭 셋은 GPIO핀을 우선 기준으로 순서대로 동일하게 매칭이 되도록 배치를 한 것인데, 예를 들어 GPIO.5 번핀의 wPi 명칭도 5 번이며,  GPIO.21 번핀의 wPi 명칭도 21 번으로 되어 있어 프로그램 작성시 포트 기준으로 작성이 용이하도록 한 의도를 가지고 있다.   따라서 특정 제작자에 의해 만들어진 라이브러리를 사용할 경우, 정확한 제어를 위해 어떤 명칭셋에 따라 작성된 라이브러리 인지 확인 할 필요가 있다.

 

아래 이미지들은 두가지 포트를 보기 편하게 만든 것이고 자신이 보기에 편한 이미지를 사용하면 된다. 





반응형
반응형

【 라즈베리파이 】 #10 RaspberryPi 실습

② LED On Off 실습 with Python



▶ 회로 구성 : 


▶ 개요 

 앞전 실험에서와 같은 회로를 구성하고, LED On Off를 조금더 다양하게 변화 시켜 보도록 하자.


▶ 실습절차 


저항과 LED 를 준비하고 위 도면과 같이 GPIO18번 핀에 연결되도록 한다.



▶ 파이썬 코드 

명령창에 한 줄씩 바로 입력 하지말고 저장파일을 만들어 아래와 같이 작성후 실행 시킨다.




▶ 코드설명 


- def LedOn(Portno, Delay) : ...  :  definition(정의) 문을 이용해서 자주 사용 되는 명령을 간결하게 할 수 있다. 

위 정의문을 통해 IoPort.output (led, True) ,  time.sleep(2) 를 LedOn(led, 2) 로 사용 할 수 있음으로 코딩이 간결해진다. 


- import RPi.GPIO as IoPort  :  기억하기 쉽고 쓰기 간단한 'IoPort' 라는 이름으로 포트를 지정 하는 것이다.


- import time   :  delay 타이밍을 위해 시간 함수를 사용하기 위해서는 time 함수를 넣어야 한다. 


- IoPort.setup(led,IoPort.OUT)    // led 포트인 18번 포트를 출력포트로 설정

- led = 18

- LedOn(led,5)  // 18번 포트(led 연결) 로 5초간 High 신호를 출력 (LED On)



▶ 실행 결과 


2초간 LED On

1초간 LED Off

1초간 LED On

1초간 LED Off

5초간 LED On

1초간 LED Off


반응형
반응형

【 라즈베리파이 】 #09 RaspberryPi 실습
① LED On Off 실습 with Python


▶ 회로 구성 : 


▶ 개요 

 라즈베리파이의 GPIO 커넥터를 이용하여 LED를 On Off 하는 실습을 해 볼 수 있다.  구동 프로그램으로는 라즈비안 OS에 포함되어 있는 파이썬(Python 3) 프로그램을 이용하여 작성한다.  파이썬 프로그램의 특징은 매우 간결하고 직관적인데, 마치 과거 도스(MS-DOS) 시절 쉬운프로그램인 BASIC 만큼이나 쉽다.  그러니 부담 갖지 말고 접근하길 바란다.   


파이썬에 실행에 대한 내용은 파이썬 카테고리를 참조하길 바란다. 



▶ 실습절차 


저항과 LED 를 준비하고 위 도면과 같이 GPIO18번 핀에 연결되도록 한다.



▶ 파이썬 코드 

명령창에 한 줄씩 바로 입력 하지말고 저장파일을 만들어 아래와 같이 작성후 실행 시킨다.



▶ 코드설명 

- import RPi.GPIO as IoPort  :  기억하기 쉽고 쓰기 간단한 'IoPort' 라는 이름으로 포트를 지정 하는 것이다.


- import time   :  delay 타이밍을 위해 시간 함수를 사용하기 위해서는 time 함수를 넣어야 한다. 


※ GPIO 포트 란?  

 GPIO( General Purpose Input Output) Port 라는 용어로서 ,  Port는 어떤 신호가 드나드는 지점을 말한다.  통신을 하기 위한 신호가 드나들면 통신포트, 신호가 입력되면 입력포트, 신호가 출력되면 출력 포트라고 한다. GPIO 포트는 신호의 입력과 출력 또는 다른 부가 기능으로 사용될 수 있는 다목적 포트이다. 이를 프로그래밍으로 제어하는 것이다. 


-IoPort.setmode(IoPort.BCM) : 입출력 포트를 BCM 타입으로 설정한다는 의미 이다.    라즈베리파이의 GPIO 포트에 주요 2가지 포트 명칭 셋이 사용되는데,  wPi (WiringPi) 와 BCM 이다. 

 BCM은 라즈베리파이의 메인 칩인 BCM283x 칩의 물리적인 핀 번호를 그대로 적용한 핀 명칭으로서 기본제공되는 파이썬 라이브러리가 이 명칭 셋을 사용한다.   wPi 명칭 셋은 GPIO핀을 우선 기준으로 순서대로 동일하게 매칭이 되도록 배치를 한 것인데, 예를 들어 GPIO.5 번핀의 wPi 명칭도 5 번이며,  GPIO.21 번핀의 wPi 명칭도 21 번으로 되어 있어 프로그램 작성시 포트 기준으로 작성이 용이하도록 한 의도를 가지고 있다.   따라서 특정 제작자에 의해 만들어진 라이브러리를 사용할 경우 정확한 제어를 위해 어떤 명칭셋에 따라 작성된 라이브러리 인지 확인 할 필요가 있다.    @ 다음글에서 GPIO 포트에 대해 좀더 자세히 다루어 보도록 하겠다. 


- led = 18

- IoPort.setup(led,IoPort.OUT)    // led 포트인 18번 포트를 출력포트로 설정

- IoPort.output (led, True)         // led를 On   ,    False 는 Off

- time.sleep(2)                        //  2초간 기다린다.  delay 타임 



▶ 실행 결과 

2초간 LED On

2초간 LED Off

2초간 LED On

LED Off


LED On Off 실습 with Python

반응형