안녕하세요~ 매드 입니다.
이번시간에는 CircuitPython을 이용해서 I2C 통신을 해보도록 할께요.
센서들과 통신하는 가장 보편적인 방법이 I2C, SPI 통신이니까 이 두가지만 잘
학습해두시면 여러가지 센서들을 다루시는데 문제 없으실 거에요.
기존 아두이노 센서들의 경우 I2C 통신 전압이 5V로 출력되는 경우가 있으니
라즈베리파이와 연결하시기 전에 3.3V가 출력되는지 반드시 확인해주세여~
그렇지 않으면 소중한 라즈베리파이가 망가질 수 있습니다. ㅠ
<출처 : https://learn.adafruit.com/circuitpython-on-raspberrypi-linux/i2c-sensors-and-devices> |
- 센서보드 Vcc(Vin)에 라즈베리파이 3.3V 전원을 연결
- 센서보드 GND에 라즈베리파이 GND를 연결
- 센서보드 SDI 핀에 라즈베리파이 SDA를 연결
- 센서보드 SCK 핀에 라즈베리파이 SCL을 연결
위와 같이 연결한 후 센서보드와 라즈베리파이 통신이 잘되는지를 확인하기 위해
라즈베리파이에서 아래와 같이 명령을 줍니다.
sudo i2cdetect -y 1
화면에 나타난 77(센서마다 다름) 이라는 숫자가 센서보드의 I2C 주소값이에요!
여기까지 되었다면 우선 통신은 잘 되는거네요.
이제 센서보드에 맞는 라이브러리를 설치해야되요.
pip3 install adafruit-circuitpython-센서보드이름
보통 위와 같이 적으면 센서보드의 Circuitpython 라이브러리를 설치하실 수
있어요.
위와 같이 했는데도 그런게 없다고 나온다면 아쉽게도 센서 전용 라이브러리가
없다고 보시면 될 것 같네요 .ㅠ
공식 홈페이지에서는 bme280이라는 센서를 사용하였으니 우선 거기에 맞는 순서로
진행해볼께요.
pip3 install adafruit-circuitpython-bme280
설치가 완료된 후에 text 에디터를 사용하여 코드를 작성해 줍니다.
- import time
- import board
- import busio
- import adafruit_bme280
- # Create library object using our Bus I2C port
- i2c = busio.I2C(board.SCL, board.SDA)
- bme280 = adafruit_bme280.Adafruit_BME280_I2C(i2c)
- # OR create library object using our Bus SPI port
- # spi = busio.SPI(board.SCK, board.MOSI, board.MISO)
- # bme_cs = digitalio.DigitalInOut(board.D10)
- # bme280 = adafruit_bme280.Adafruit_BME280_SPI(spi, bme_cs)
- # change this to match the location's pressure (hPa) at sea level
- bme280.sea_level_pressure = 1013.25
- while True:
- print("\nTemperature: %0.1f C" % bme280.temperature)
- print("Humidity: %0.1f %%" % bme280.humidity)
- print("Pressure: %0.1f hPa" % bme280.pressure)
- print("Altitude = %0.2f meters" % bme280.altitude)
- time.sleep(2)
핵심코드는 아래 두줄이에요.
- i2c = busio.I2C(board.SCL, board.SDA)
- bme280 = adafruit_bme280.Adafruit_BME280_I2C(i2c)
I2C 센서를 사용하고 라이브러리를 사용한다면 이 두가지 구문만 센서에 맞게
작성해서 사용하면 됩니다.
코드는 센서로부터 온도 습도 기압 고도를 표시하는 코드네요.
bme280_simpletest.py 라는 이름으로 저장하고 콘솔에서 다음과 같이 실행시켜
봅니다.
python3 bme280_simpletest.py
여기까지 잘되셨으면 다행이고 잘 안되시면 아래 유튭을 참조하세여~ :)
0 댓글