- 프로젝트 흐름 :
- 프로젝트 요구 사항
- 회로도 :
- Raspberry Pi 오실로스코프에 대한 종속성 설치 :
- Raspberry Pi 오실로스코프 용 Python 코드 :
- 작동중인 Raspberry Pi 오실로스코프 :
안녕하세요 여러분, 오늘의 게시물에 오신 것을 환영합니다. 제작자가되는 것의 가장 매력적인 점 중 하나는 임시 도구를 개발하는 방법을 아는 것입니다. 그런 다재다능 함이 있으면 어떤 프로젝트에서도 작업에 매달리지 않을 것입니다. 그래서 오늘 저는 전기 / 전자 공학에서 가장 중요한 도구 중 하나의 라즈베리 파이 기반 임시 버전 을 만드는 방법을 공유 할 것입니다. 오실로스코프.
오실로스코프는 일반적으로 시간에 대해 플롯 된 하나 이상의 신호가있는 2 차원 플롯으로 다양한 신호 전압을 시각화하고 관찰 할 수있는 전자 테스트 장비입니다. 오늘의 프로젝트는 Raspberry Pi 및 아날로그-디지털 변환기 모듈을 사용하여 오실로스코프의 신호 시각화 기능을 복제하려고합니다.
프로젝트 흐름:
Raspberry Pi를 사용하여 오실로스코프의 신호 시각화를 복제하려면 다음 단계가 필요합니다.
1. 입력 신호의 디지털-아날로그 변환 수행
2. 표현을위한 결과 데이터 준비
3. 실시간 그래프에 데이터 플로팅
이 프로젝트의 단순화 된 블록 다이어그램은 아래 다이어그램과 같습니다.
프로젝트 요구 사항
이 프로젝트의 요구 사항은 두 가지로 분류 할 수 있습니다.
- 하드웨어 요구 사항
- 소프트웨어 요구 사항
하드웨어 요구 사항
이 프로젝트를 빌드하려면 다음 구성 요소 / 부품이 필요합니다.
- Raspberry pi 2 (또는 기타 모델)
- 8GB 또는 16GB SD 카드
- LAN / 이더넷 케이블
- 전원 공급 장치 또는 USB 케이블
- ADS1115 ADC
- LDR (테스트 용으로 선택 사항)
- 10k 또는 1k 저항
- 점퍼 와이어
- 브레드 보드
- 파이의 데스크탑을 보는 모니터 또는 기타 방법 (VNC 포함)
소프트웨어 요구 사항
이 프로젝트의 소프트웨어 요구 사항은 기본적으로 데이터 시각화에 사용될 python 모듈 ( matplotlib 및 drawnow )과 ADS1115 ADC 칩과의 인터페이스를위한 Adafruit 모듈입니다. 계속 진행하면서 Raspberry Pi에 이러한 모듈을 설치하는 방법을 보여 드리겠습니다.
이 튜토리얼은 사용 된 라즈베리 파이 OS에 관계없이 작동하지만, 저는 라즈베리 파이 스트레치 OS를 사용할 것이며, 여러분이 라즈베리 파이를 Raspbian 스트레치 OS로 설정하는 데 익숙하고 라즈베리에 SSH하는 방법을 알고 있다고 가정합니다. 퍼티와 같은 터미널 소프트웨어를 사용하는 파이. 이와 관련하여 문제가있는 경우이 웹 사이트에 도움이 될 수있는 수많은 Raspberry Pi 자습서가 있습니다.
모든 하드웨어 구성 요소가 제자리에 있으면 회로도를 만들고 구성 요소를 함께 연결해 보겠습니다.
회로도:
아날로그 입력 신호를 Raspberry Pi로 시각화 할 수있는 디지털 신호로 변환하기 위해 ADS1115 ADC 칩을 사용합니다. Arduino 및 대부분의 마이크로 컨트롤러와 달리 Raspberry Pi에는 온보드 아날로그-디지털 변환기 (ADC)가 없기 때문에이 칩이 중요합니다. 라즈베리 파이 호환 ADC 칩을 사용할 수 있었지만 고해상도 (16 비트)와 잘 문서화 된 데이터 시트 및 Adafruit의 사용 지침 때문에이 칩을 선호합니다. Raspberry Pi ADC 튜토리얼을 확인하여 이에 대해 자세히 알아볼 수도 있습니다.
ADC는 I2C 기반 장치이며 아래 회로도에 표시된대로 Raspberry Pi에 연결해야합니다.
명확성을 위해 두 구성 요소 간의 핀 연결도 아래에 설명되어 있습니다.
ADS1115 및 Raspberry Pi 연결:
VDD – 3.3v
GND – GND
SDA – SDA
SCL – SCL
연결이 모두 완료되면 파이의 전원을 켜고 아래에 언급 된 종속성 설치를 진행하십시오.
Raspberry Pi 오실로스코프에 대한 종속성 설치:
ADC에서 데이터를 가져 와서 라이브 그래프에 그리는 파이썬 스크립트 작성을 시작하기 전에 라즈베리 파이 의 I2C 통신 인터페이스 를 활성화하고 앞서 언급 한 소프트웨어 요구 사항을 설치해야합니다. 다음 단계에서 수행되므로 쉽게 수행 할 수 있습니다.
1 단계: Raspberry Pi I2C 인터페이스 활성화
I2C를 활성화하려면 터미널에서 다음을 실행하십시오.
sudo raspi-config
구성 패널이 열리면 인터페이스 옵션을 선택하고 I2C를 선택한 다음 활성화를 클릭합니다.
2 단계: Raspberry pi 업데이트
프로젝트를 시작하기 전에 가장 먼저해야 할 일은 Pi를 업데이트하는 것입니다. 이를 통해 OS의 모든 것이 최신 상태이며 Pi에 설치하기로 선택한 최신 소프트웨어와의 호환성 문제가 발생하지 않을 것이라고 확신합니다. 이렇게하려면 다음 두 명령을 실행하십시오.
sudo apt-get 업데이트 sudo apt-get 업그레이드
3 단계: ADC 용 Adafruit ADS1115 라이브러리 설치
업데이트가 완료되었으므로 이제 ADS115 칩용 Adafruit python 모듈부터 종속성을 설치할 준비가되었습니다. 실행하여 Raspberry Pi 홈 디렉토리에 있는지 확인하십시오.
cd ~
그런 다음 실행하여 빌드 필수 사항을 설치하십시오.
sudo apt-get install build-essential python-dev python-smbus git
다음으로 실행하여 라이브러리에 대한 Adafruit git 폴더를 복제합니다.
git clone https://github.com/adafruit/Adafruit_Python_ADS1x15.git
복제 된 파일의 디렉토리로 변경하고 설치 파일을 실행하십시오.
cd Adafruit_Python_ADS1x1z sudo python setup.py 설치
설치 후 화면은 아래 이미지와 같습니다.
4 단계: 라이브러리 및 12C 통신을 테스트합니다.
나머지 프로젝트를 진행하기 전에 라이브러리를 테스트하고 ADC가 I2C를 통해 라즈베리 파이와 통신 할 수 있는지 확인하는 것이 중요합니다. 이를 위해 라이브러리와 함께 제공되는 예제 스크립트를 사용합니다.
Adafruit_Python_ADS1x15 폴더에있는 동안 다음을 실행하여 디렉토리를 examples 디렉토리로 변경하십시오.
cd 예
다음으로 ADC의 4 개 채널 값을 표 형식으로 표시하는 sampletest.py 예제를 실행합니다.
다음을 사용하여 예제를 실행하십시오.
파이썬 simpletest.py
I2C 모듈이 활성화되고 연결 상태가 양호하면 아래 이미지와 같이 데이터가 표시되어야합니다.
오류가 발생하면 ADC가 PI에 잘 연결되어 있고 Pi에서 I2C 통신이 활성화되어 있는지 확인하십시오.
5 단계: Matplotlib 설치
데이터를 시각화하려면 파이썬에서 모든 종류의 그래프를 그리는 데 사용되는 matplotlib 모듈 을 설치해야합니다. 실행하면됩니다.
sudo apt-get install python-matplotlib
아래 이미지와 같은 결과가 표시되어야합니다.
6 단계: Drawnow 파이썬 모듈 설치
마지막으로 drawnow python 모듈 을 설치해야 합니다. 이 모듈은 데이터 플롯에 대한 실시간 업데이트를 제공하는 데 도움이됩니다.
우리는 설치됩니다 drawnow 파이썬 패키지 설치를 통해; pip 이므로 설치되었는지 확인해야합니다. 실행하면됩니다.
sudo apt-get install python-pip
그런 다음 pip를 사용하여 다음 을 실행 하여 drawnow 패키지 를 설치할 수 있습니다.
sudo pip install drawnow
실행 후 아래 이미지와 같은 결과를 얻을 수 있습니다.
모든 종속성이 설치되었으므로 이제 코드를 작성할 준비가되었습니다.
Raspberry Pi 오실로스코프 용 Python 코드:
이 Pi 오실로스코프 의 Python 코드 는 특히 python matplotlib 모듈에 익숙한 경우 매우 간단 합니다. 전체 코드를 보여주기 전에 코드를 부분적으로 나누고 코드의 각 부분이 수행하는 작업을 설명하여 코드를 확장하여 더 많은 작업을 수행 할 수 있도록합니다.
이 단계에서 모니터로 전환하거나 VNC 뷰어를 사용하는 것이 중요합니다. 그래프가 터미널에 표시되지 않으므로 Raspberry Pi의 바탕 화면을 볼 수있는 모든 것이 있습니다.
모니터를 인터페이스로 사용하여 새 python 파일을 엽니 다. 원하는 이름으로 부를 수 있지만 scope.py라고 부를 것입니다.
sudo nano scope.py
파일이 생성 된 상태에서 가장 먼저 할 일은 사용할 모듈을 가져 오는 것입니다.
import 시간 import matplotlib.pyplot as plt from drawnow import * import Adafruit_ADS1x15
다음으로 ADS1115 ADC를 지정하는 ADS1x15 라이브러리의 인스턴스를 만듭니다.
adc = Adafruit_ADS1x15.ADS1115 ()
다음으로 ADC의 이득을 설정합니다. 다양한 이득 범위가 있으며 ADC 입력에서 기대하는 전압을 기준으로 선택해야합니다. 이 튜토리얼에서는 0 – 4.09v를 추정하므로 이득 1을 사용합니다. 이득에 대한 자세한 정보는 ADS1015 / ADS1115 데이터 시트를 참조하십시오.
이득 = 1
다음으로, 플로팅 할 데이터를 저장하는 데 사용할 배열 변수와 카운트로 사용할 다른 변수를 만들어야합니다.
발 = cnt = 0
다음으로, 우리 는 데이터를 실시간으로 플롯 할 수 있도록 플롯을 대화 형으로 만들려는 의도를 알고 있습니다.
plt.ion ()
다음으로 ADC 채널 ( 이 경우 채널 0)을 지정하는 연속 ADC 변환을 시작 하고 게인도 지정합니다.
ADS1115에있는 4 개의 ADC 채널을 모두 동시에 읽을 수 있지만이 데모에는 1 개의 채널이면 충분합니다.
adc.start_adc (0, gain = GAIN)
다음으로 우리 는 라이브 플롯을 유지할 그래프의 속성 을 생성하고 설정 하기 위해 def makeFig 함수 를 생성 합니다. 먼저 ylim을 사용하여 y 축의 한계를 설정 한 다음 플롯의 제목과 plt.plot ()을 사용하여 플롯 할 데이터와 플롯 스타일 및 색상을 지정하기 전에 레이블 이름을 입력합니다. . 또한 ADC의 4 개 채널이 사용될 때 각 신호를 식별 할 수 있도록 채널 (채널 0이 명시 됨)을 지정할 수 있습니다. plt.legend 는 해당 신호 (예: 채널 0)에 대한 정보를 그림에 표시 할 위치를 지정하는 데 사용됩니다.
plt.ylim (-5000,5000) plt.title ('Osciloscope') plt.grid (True) plt.ylabel ('ADC 출력') plt.plot (val, 'ro-', label = 'lux') plt.legend (loc = '오른쪽 아래')
다음으로 ADC에서 지속적으로 데이터를 읽고 그에 따라 플롯을 업데이트하는 while 루프를 작성합니다.
가장 먼저 할 일은 ADC 변환 값을 읽는 것입니다.
값 = adc.get_last_result ()
다음으로 플로팅 된 데이터를 확인하는 다른 방법을 제공하기 위해 터미널에 값을 인쇄합니다. 인쇄 후 몇 초간 기다린 다음 해당 채널의 데이터를 저장하기 위해 생성 된 목록 (val)에 데이터를 추가합니다.
print ('채널 0: {0}'. format (value)) time.sleep (0.5) val.append (int (value))
그런 다음 drawnow 를 호출 하여 플롯을 업데이트합니다.
drawnow (makeFig)
최신 데이터가 플롯에서 사용 가능한지 확인하기 위해 50 개의 데이터가 카운트 될 때마다 인덱스 0의 데이터를 삭제합니다.
cnt = cnt + 1 if (cnt> 50): val.pop (0)
그게 다야!
전체 파이썬 코드는 이 튜토리얼의 끝에 제공됩니다.
작동중인 Raspberry Pi 오실로스코프:
완전한 파이썬 코드를 복사하고 앞서 만든 파이썬 파일에 붙여 넣으십시오. 플롯을 보려면 모니터가 필요하므로이 모든 작업은 VNC 또는 연결된 모니터 또는 화면에서 수행해야합니다.
코드를 저장하고 다음을 사용하여 실행하십시오.
sudo 파이썬 scope.py
scope.py가 아닌 다른 이름을 사용한 경우 일치하도록 변경하는 것을 잊지 마십시오.
몇 분 후에 터미널에 인쇄되는 ADC 데이터를 볼 수 있습니다. 때때로 억제해야하는 matplotlib (아래 이미지 참조)에서 경고가 표시 될 수 있지만 표시되는 데이터 나 플롯에는 영향을주지 않습니다. 그러나 경고를 표시하지 않으려면 코드에서 가져 오기 행 뒤에 다음 코드 행을 추가 할 수 있습니다.
경고 가져 오기 import matplotlib.cbook warnings.filterwarnings ("ignore", category = matplotlib.cbook.mplDeprecation)
이 튜토리얼에서는 오실로스코프를 완전히 테스트하기 위해 전위차계와 같은 아날로그 장치를 ADC의 채널에 연결할 수 있으며 전위차계를 돌릴 때마다 데이터가 변경되는 것을 확인해야합니다. 또는 출력을 테스트하기 위해 사인파 또는 구형파를 입력 할 수 있습니다.
읽어 주셔서 감사합니다. 질문이 있거나 추가하고 싶은 것이 있으면 댓글을 남겨주세요.
다음 시간까지 계속 만드세요!