1. VEML 7700 조도 센서
라즈베리 파이 피코 보드에서 사용할 센서들을 찾다가, 알리에서 디지털 방식의 VEML7700이라는 이름의 조도 센서를 하나 발견하였다.
과거에도 CdS 소자 방식의 아날로그형 빛 센서를 사용한 적은 있었으나, 디지털 형태로 수치화된 값으로 빛의 강도를 측정해 주는 조도센서는 처음 접하는 것이었다. 더욱이 통신 연결 방식이 전원 외 2선이면 충분한 I2C 방식이기까지 했다. 아날로그에서 디지털 센서로 전환하기에 좋을듯하여, 하나 구입하여 라즈베리 파이 피코 보드에 적용해 보았다.
이 제품의 알려진 스펙은 다음과 같았다.
이 제품은 해외 직구를 하는 경우, 배송에는 좀(2-3주) 시간이 걸렸지만 배송료까지 포함하여 약 4천 원 정도에 구입이 가능했다.
2. I2C 연결용 5핀 납땜
라즈베리 파이 피코 보드에서 사용할 센서들을 찾다가, 알리에서 디지털 방식의 VEML7700이라는 이름의 조도 센
막상 센서를 받고 사용하려고 하니, 연결용 핀을 납땜 해야 했다.
처음 납땜을 할 때 연결핀을 어느 방향으로 위치하도록 할까 고민하다가, 센서 보드의 윗편으로 핀 이 연결되도록 납땜을 하고, 다음과 같이 접속용 핀들을 연결했다.
그런데, 이 경우 동작은 잘 했지만, 이 접속용 핀들의 그림자로 인해 밝기 값 측정에 영향을 줄 수 있을듯하였고, 선들로 인해 센서 배치가 용이하지 않은 문제가 있었다.
결국 다음과 같이 접속 핀의 위치가 센서 뒤편으로 오도록 다음과 같이 다시 납땜하여야만 했다.
이렇게 접속용 핀을 배치하니, 센 거면에 가해지는 빛에 그림자가 지지 않아 오차를 줄일 수 있었고, 연결배선들을 센서 뒷면에서 깔끔하게 정리하기도 용이했다.
3. 사용 준비 – 회로 연결 및 라이브러리 준비
납땜이 된 센서의 핀들을 다음과 같이 피코 보드에 연결하여 회로를 구성했다. I2C의 SDA(파란색 선)를 GP0에, I2C의 SCL(녹색 선)을 GP1에 연결했고, 3.3V(주황색 선)와 GND 배선(노란색 선)을 연결했다.
참고로, 이 센서는 3.3V 및 5V 모두에서 동작하며, 전압이 달라지는 경우 센서 모듈에서 각 전압에 맞는 별도의 VCC 핀을 사용하여 연결하면 된다.
그리고, Github에서 “VEML7700″과, “python” 키워드로 검색하면 다음과 같이 4개 정도의 검색 결과를 얻게 되는데, 나는 이 중에서 다음과 같이 2번째 자료의 라이브러리를 사용하였다. 여러 개를 살펴보았으나, 내 판단에는 이게 가장 좋았다.
위의 항목을 선택해 들어가면 다음과 같이 라이브러리 파일이 있는데, 이를 다운로드 또는 내용을 복사해서 피코 보드에 동일한 이름으로 미리 저장해 주면 된다.
참고로, 이 라이브러리 파일을 첨부해 둔다.
4. 조도 측정 및 다른 측정 장치와의 비교
위에서 미리 라이브러리 파일을 veml7700.py로 피코 보드에 저장해 둔 이후, 다음과 같이 간단한 예제 코드를 이용하여 조도센서의 측정값을 읽어 화면에 표시해 보기로 했다.
from machine import Pin, I2C
import utime
import veml7700
i2c = I2C(0, scl=Pin(1), sda=Pin(0), freq=10000)
veml = veml7700.VEML7700(address=0x10, i2c=i2c, it=100, gain=1/8)
while True:
lux_val = veml.read_lux()
print (lux_val)
utime.sleep(0.3)
이 예제 코드는 i2c를 이용하되, 미리 저장해 둔 veml7700 라이브러리를 이용하여 값을 읽는 아주 간단한 코드인데, veml 함수 사용 시 사용하는 인수 값은 다음과 같다.
인수 값들 중 i2c 주솟값은 미리 0x10으로 지정된 변경 불가능한 값이며,
실질적으로 it와 gain만 변경이 가능한데, gain 값을 변경시키면 조도 측정값이 약간 변화하기도 한다. Calibration 과정에서 적절한 값으로 설정하면 된다.(Gain 값을 변화시켜도 변화가 없는 경우도 있고, 조금 변하는 경우도 있음)
위의 코드를 시험 동작한 결과 정상적으로 잘 동작하였는데, 정확도를 알기 위해 다른 조도 측정 결과와 비교할 필요가 있었다.
때문에, 동일 조건에서 위의 코드로 측정한 값과, 스마트폰으로 동시 측정한 값을 표시하여 비교해 보았다.
그 결과, 두 개의 값에 약간 차이가 있기는 했지만 대체로 비슷한 값을 나타내었고, 빛이 가까워지거나 멀어짐에 따라 조도가 달라지면, 스마트폰의 결과 및 센서 값 모두 비슷한 경행으로 변화하는 결과를 나타내 주어, 상당 시 쓸만한 센서라는 판단을 얻게 되었다.


