Raspberry Pi 자습서 시리즈에서는 대부분 Raspberry Pi와 인터페이스하는 모든 기본 구성 요소를 다루었습니다. 우리는 모든 튜토리얼을 간단하고 자세하게 다루었으므로 그가 Raspberry Pi로 작업했는지 여부에 관계없이 누구나이 시리즈에서 쉽게 배울 수 있습니다. 그리고 모든 튜토리얼을 마치면 Raspberry Pi를 사용하여 몇 가지 고급 프로젝트를 빌드 할 수 있습니다.
그래서 여기서 우리는 이전 튜토리얼을 기반으로 첫 번째 애플리케이션을 디자인하고 있습니다. 첫 번째 기본 애플리케이션은 Raspberry Pi 의 독서실 온도 입니다. 그리고 컴퓨터에서 판독 값을 모니터링 할 수 있습니다.
이전 자습서에서 설명했듯이 Raspberry Pi에는 내부적으로 제공되는 ADC 채널이 없습니다. 따라서 아날로그 센서를 인터페이스하려면 ADC 변환 장치가 필요합니다. 그리고 튜토리얼 중 하나에서 아날로그 값을 읽기 위해 ADC0804 칩을 Raspberry Pi에 인터페이스했습니다. 따라서이 상온 온도계를 만들기 전에 그것을 살펴보십시오.
ADC0804 및 Raspberry Pi:
ADC0804는 아날로그 신호를 8 비트 디지털 데이터로 변환하도록 설계된 칩입니다. 이 칩은 인기있는 ADC 시리즈 중 하나입니다. 8 비트 변환 단위이므로 값 또는 0 ~ 255 값이 있습니다. 이 칩의 해상도는 우리가 선택한 기준 전압에 따라 달라 지므로 나중에 자세히 설명하겠습니다. 아래는 ADC0804 의 핀아웃입니다.
여기서 또 다른 중요한 점은 ADC0804가 5V에서 작동 하므로 5V 논리 신호로 출력을 제공한다는 것입니다. 8 핀 출력 (8 비트를 나타냄)에서 모든 핀은 로직 '1'을 나타내는 + 5V 출력을 제공합니다. 따라서 문제는 PI 로직이 + 3.3v이므로 PI의 + 3.3V GPIO 핀에 + 5V 로직을 제공 할 수 없다는 것입니다. PI의 GPIO 핀에 + 5V를 주면 보드가 손상됩니다.
따라서 + 5V에서 로직 레벨을 강압하려면 전압 분배기 회로를 사용합니다. 우리는 전압 분배기 회로에 대해 이전에 더 자세한 설명을 위해 살펴 보았습니다. 우리가 할 일은 두 개의 저항을 사용하여 + 5V 로직을 2 * 2.5V 로직으로 나누는 것입니다. 그래서 나눗셈 후에 우리는 PI에 + 2.5v 로직을 줄 것입니다. 따라서 ADC0804에 의해 로직 '1'이 표시 될 때마다 PI GPIO 핀에서 + 5V 대신 + 2.5V가 표시됩니다.
LM35 온도 센서:
이제 방의 온도 를 읽으려면 센서가 필요합니다. 여기서는 LM35 온도 센서 를 사용 합니다. 온도는 일반적으로 "섭씨"또는 "화씨"로 측정됩니다. “LM35”센서는 섭씨 출력을 제공합니다.
그림에서 볼 수 있듯이 LM35는 3 핀 트랜지스터 같은 장치입니다. 핀은 다음과 같이 번호가 매겨집니다.
PIN1 = Vcc-전원 (+ 5V에 연결됨)
PIN2 = 신호 또는 출력 (ADC 칩에 연결됨)
PIN3 = 접지 (접지에 연결됨)
이 센서는 온도에 따라 출력에서 가변 전압을 제공합니다. 온도가 +1 섭씨 상승 할 때마다 출력 핀에서 + 10mV 더 높은 전압이 발생합니다. 따라서 온도가 섭씨 0도이면 센서 출력은 0V가되고, 온도가 섭씨 10도이면 센서 출력은 + 100mV가되고, 온도가 섭씨 25도이면 센서 출력은 + 250mV가됩니다.
필요한 구성 요소:
여기 에서는 Raspbian Jessie OS와 함께 Raspberry Pi 2 Model B를 사용 하고 있습니다. 모든 기본 하드웨어 및 소프트웨어 요구 사항은 이전에 논의되었으며 필요한 것 외에 Raspberry Pi 소개에서 찾아 볼 수 있습니다.
- 연결 핀
- 1KΩ 저항기 (17 개)
- 10K 냄비
- 0.1µF 커패시터
- 100µF 커패시터
- 1000µF 커패시터
- ADC0804 IC
- LM35 온도 센서
- 브레드 보드
회로 및 작동 설명:
Raspberry를 ADC0804 및 LM35 에 연결하기 위해 수행되는 연결 은 아래 회로도에 나와 있습니다.
LM35 출력에는 많은 전압 변동이 있습니다. 따라서 그림과 같이 출력을 평활화하기 위해 100uF 커패시터 가 사용됩니다.
ADC에는 항상 많은 노이즈가 있으며이 노이즈는 성능에 큰 영향을 미칠 수 있으므로 노이즈 필터링에 0.1uF 커패시터를 사용 합니다. 이것이 없으면 출력에 많은 변동이있을 것입니다.
이 칩은 RC (Resistor-Capacitor) 발진기 클록에서 작동합니다. 회로도에서 볼 수 있듯이 C2와 R20은 클럭을 형성합니다. 여기서 기억해야 할 중요한 점은 커패시터 C2를 더 높은 ADC 변환 속도를 위해 더 낮은 값으로 변경할 수 있다는 것입니다. 그러나 속도가 빠를수록 정확도가 떨어집니다. 따라서 애플리케이션에 더 높은 정확도가 필요한 경우 더 높은 값의 커패시터를 선택하고 더 높은 속도의 경우 더 낮은 값의 커패시터를 선택하십시오.
앞서 말했듯이 LM35는 섭씨 1 도마 다 + 10mV를 제공합니다. LM35로 측정 할 수있는 최대 온도는 섭씨 150º입니다. 따라서 LM35 출력 단자에서 최대 1.5V를 갖게됩니다. 그러나 ADC0804의 기본 기준 전압은 + 5V입니다. 따라서이 기준 값을 사용하면 디지털 출력 범위의 최대 (5 / 1.5) 34 %를 사용하게되므로 출력 해상도가 낮아집니다.
다행히도 ADC0804에는 위의 핀 다이어그램과 같이 조정 가능한 Vref 핀 (PIN9)이 있습니다. 따라서 칩의 Vref를 + 2V로 설정 합니다. Vref + 2V를 설정하려면 PIN9에서 + 1V (VREF / 2)의 전압을 제공해야합니다. 여기에서는 10K 포트를 사용하여 PIN9에서 + 1V로 전압을 조정합니다. 전압계를 사용하여 정확한 전압을 얻으십시오.
우리는 이전에 LM35 온도 센서를 사용하여 Arduino 및 AVR 마이크로 컨트롤러로 실내 온도를 읽었습니다. Arduino를 사용하여 습도 및 온도 측정도 확인하십시오.
프로그래밍 설명:
회로도에 따라 모든 것이 연결되면 PI를 켜서 PYHTON에 프로그램을 작성할 수 있습니다.
PYHTON 프로그램에서 사용할 몇 가지 명령에 대해 이야기하겠습니다.
라이브러리에서 GPIO 파일을 가져올 것입니다. 아래 기능을 사용하면 PI의 GPIO 핀을 프로그래밍 할 수 있습니다. 또한 "GPIO"의 이름을 "IO"로 변경하고 있으므로 프로그램에서 GPIO 핀을 참조 할 때마다 'IO'라는 단어를 사용합니다.
RPi.GPIO를 IO로 가져 오기
때때로 우리가 사용하려는 GPIO 핀이 다른 기능을 수행 할 때도 있습니다. 이 경우 프로그램을 실행하는 동안 경고를 받게됩니다. 아래 명령은 PI가 경고를 무시하고 프로그램을 진행하도록 지시합니다.
IO.setwarnings (False)
PI의 GPIO 핀을 보드의 핀 번호 또는 기능 번호로 참조 할 수 있습니다. 보드의 'PIN 29'와 마찬가지로 'GPIO5'입니다. 그래서 우리는 여기서 핀을 '29'또는 '5'로 나타낼 것이라고 말합니다.
IO.setmode (IO.BCM)
8 개의 핀을 입력 핀으로 설정하고 있습니다. 이 핀으로 8 비트 ADC 데이터를 감지합니다.
IO.setup (4, IO.IN) IO.setup (17, IO.IN) IO.setup (27, IO.IN) IO.setup (22, IO.IN) IO.setup (5, IO.IN) IO.setup (6, IO.IN) IO.setup (13, IO.IN) IO.setup (19, IO.IN)
중괄호 안의 조건이 참이면 루프 내부의 문이 한 번 실행됩니다. 따라서 GPIO 핀 19가 하이가되면 IF 루프 내부의 명령문이 한 번 실행됩니다. GPIO 핀 19가 하이가되지 않으면 IF 루프 내부의 명령문이 실행되지 않습니다.
if (IO.input (19) == True):
아래 명령은 forever 루프로 사용되며이 명령을 사용하면이 루프 내부의 명령문이 계속 실행됩니다.
동안 1:
코드에 대한 자세한 설명은 아래 코드 섹션에 나와 있습니다.
프로그램을 작성한 후 실행할 시간입니다. 프로그램을 실행하기 전에 회로에서 무슨 일이 일어나고 있는지 요약 으로 이야기 합시다. 최초의 LM35 센서는 실내 온도를 감지하고 출력에서 아날로그 전압을 제공합니다. 이 가변 전압은 ºC 당 + 10mV로 온도를 선형 적으로 나타냅니다. 이 신호는 ADC0804 칩에 공급되며,이 칩은 아날로그 값을 10mv 당 255 / 200 = 1.275 카운트 또는 1 도의 경우 1.275 카운트로 디지털 값으로 변환합니다. 이 개수는 PI GPIO에서 가져옵니다. 프로그램은 카운트를 온도 값으로 변환하여 화면에 표시합니다. PI가 읽는 일반적인 온도는 다음과 같습니다.
따라서 우리는이 Raspberry Pi 온도 모니터 입니다.