기본 콘텐츠로 건너뛰기

7월, 2019의 게시물 표시

가변저항과 아두이노 연결하기

가변저항(potentionmeter)는 임의 값으로 저항값의 조절이 가능한 부품이다. 이번에는 가변저항과 발광다이오드를 회로로 구성하여 동작을 테스트해보고, 이를 아두이노 UNO 보드의 아날로그 핀과 PWM 핀을 이용하여 동일한 회로구성을 해보겠다. 아두이노는 0 ~ 1023 범위의 값을 읽을 수 있는 6개의 아날로그 핀과 0 ~ 255 범위의 아날로그 값을 출력할 수 있는 6개의 PWM 핀을 가지고 있다. 여기서는 가변저항을 아날로그 핀에 연결하고 발광다이오드를 PWM 핀에 연결하여 가변저항의 동작 특성과 아두이노의 아날로그 값 처리 방법을 살펴볼 것이다. 준비물: 아두이노 UNO, 가변저항(10K) 1개, 발광다이오드(LED) 1개, 저항(220Ω) 1개, 브레스보드, 브레스보드 전원공급기, 점퍼와이어 왼쪽부터 시계방향으로 가변저항용 노브, 가변저항, 브레스보드와 브레스보드 전원공급기, 고정저항, 발광다이오드 아두이노 UNO 실습 영상에서는 첫 번째로 가변저항과 발광다이오드만을 연결한 회로와 두 번째로 아두이노를 이용한 회로를 동작시키기고 이때 입력값을 시리얼모니터로 표시한다. 아두이노 소스: // PWM 9번 핀 등록 int ledPin = 9; void setup() { // 시리얼모니터 9600baud 설정 Serial.begin(9600); // 9번 핀 출력 지정 pinMode(ledPin, OUTPUT); } void loop() { // A1 핀으로부터 아날로그 값을 읽어들임 int sensorValue = analogRead(A1); // 시리얼모니터에 아날로그 값 출력 (0 ~ 1023) Serial.println(sensorValue); // PWM 값 출력 (0 ~ 255) analogWrite(ledPin, sensorValue / 4); delay(1); }

PM2008 미세먼지 정보 LED로 표시하기

PM2008 센서 값을 표시하는 가장 기본적인 예제이다. 디바이스마트 51호 기사의 4 LED 예제를 3 LED로 수정했다. PM2008 센서는 PM1.0과 PM2.5, 그리고 PM10 미세먼지 측정값을 출력한다. 환경부 기준은 PM2.5(초미세먼지 크기 2.5㎛이하인 먼지) 년간 평균치 15㎍/㎥이하, 24시간 평균치 35㎍/㎥이하이고 PM10(미세먼지 크기 10㎛이하인 먼지)은 년간 평균치 50㎍/㎥이하, 24시간 평균치 100㎍/㎥이하로 정하고 있다. 여기서는 PM1.0과 PM2.5는 15이하이면 좋음(초록), 15초과 ~ 35이하이면 보통(노랑), 35초과이면 나쁨(빨강)으로, PM10은 50이하이면 좋음(초록), 50초과 100이하이면 보통(노랑), 100초과이면 나쁨(빨강)으로 표시하게 했다. 실제로 유의미한 값을 표시하기 위해서는 최소한 24시간 평균값을 표시하도록 해야 할 것 같다. #include <pm2008_i2c.h> PM2008_I2C pm2008_i2c; void setup() { pm2008_i2c.begin(); Serial.begin(9600); pm2008_i2c.command(); delay(1000); pinMode(3, OUTPUT); pinMode(4, OUTPUT); pinMode(5, OUTPUT); } void loop() { uint8_t ret = pm2008_i2c.read(); uint8_t pm1p0_grade = 0; uint8_t pm2p5_grade = 0; uint8_t pm10_grade = 0; uint8_t total_grade = 0; if (ret == 0) { // PM 1.0 if (pm2008_i2c.pm1p0_grimm < 16) { pm1p0_grade = 1; } else if (pm2008_i2c.pm1p0_grimm < 35) { ...

아두이노 미세먼지 센서 PM2008

온습도계를 달아봤으니 이참에 미세먼지까지 한꺼번에 표시되도록 기능을 추가해보기로 했다. 마침 아두이노 전용 쉴드까지 제공하는 미세먼지 센서가 눈에 띄길래 일단 구매를 해봤다. 배송받은 센서는 거의 완제품에 가깝게 제작되었다. 다만 아쉬운 점은 아두이노 전용 쉴드의 마감이 좀 지분하다는 느낌을 받았는데, 후처리에 신경을 더 써주는 센스가 부족한 듯. PC2008 미세먼지 센서 아두이노 우노 전용 PM2008 쉴드  부착한 상태는 핀 위치도 잘 맞고 비교적 깔끔한 느낌이다. 쉴드 덕분에 지저분한 배선이 줄어들어 다른 센서들을 붙이기에도 좋을 것 같다. 쉴드와 일체형으로 제작하지 않은 건 라즈베리 파이와 같은 다른 마이크로칩 보드용의 쉴드 제작을 염두에 둔 듯하다. Arduino UNO에 장착한 모습 센서의 작동 테스트를 위해 PM2008 I2C 라이브러리를 추가하여 샘플코드를 실행시켜봤다. 성공적을 테스트를 완료. 이제 공부가 남았을 뿐. Arduino library PM2008 I2C 설치

자작 :: 아두이노 온습도계

사용부품: Arduino UNO 호환보드, DH-22 온습도 센서, 캐릭터 LCD(16x2글자), Potentionmeter 아두이노 온습도계 AM2302 DH-22 온습도센서는 다음과 같이 3개의 핀을 사용한다. Pin 1. Vcc (전원 3.3~ 5.5V) Pin 2. GND (접지) Pin 3. DOUT (데이터 송신, SDA핀 연결) 온습도 센서의 데이터 수신을 위해 DOUT 핀은 아두이노의 D2 핀에 연결했고, 전원과 DOUT을 10㏀ 풀업 저항을 달아 연결했다. 부품 구성도 LCD는 웹사이트의 카달로그로 보기에는 백색 LED 백라이트가 멋있게 보여 구매를 했는데, 가독성면에서는 옐로우-그린 LED가 더 나을 것 같기도 하다. 아두이도는 기본적으로 LCD의 D4 ~ D7까지의 핀으로 4bit 통신을 한다. D2 핀은 밝기 조절을 위해 가변저항의 가운데 핀과 연결했다. 백라이트 전원은 220Ω 저항을 달았다. 온습도 정보를 수집하여 LCD에 출력하기 위한 아두이노 소스는 다음과 같다. 소스코드:  https://github.com/Jeongsam/arduino-DH22-LCD1602 #include <adafruit_sensor.h=""> #include <liquidcrystal.h=""> #include <dht.h=""> #include <dht_u.h=""> /** * 현재 온습도를 디스플레이하기 * DHT22(AMS2302)로부터 데이터를 받아 LCD16x2 디스플레이에 표시 */ // 온습도 센서 설정 #define DHTPIN 2 // 온습도 데이터 연결 핀 번호 #define DHTTYPE DHT22 // AMS2302 DHT_Unified dht(DHTPIN, DHTTYPE); uint32_t d...

모니터링 :: Grafana와 Prometheus 설치하기

Raspberry Pi 3 B+에서 Grafana와 Prometheus 설치하기 Grafana는 오픈소스 기반의 강력한 대시보드 플랫폼이다. 서버나 임베디드 장비의 운영상태 등을 Prometheus, ElasticSearch와 같은 data source를 플러그인 방식으로 연결해서 다양한 그래픽 요소로 나타낸다. 여기서는 대표적인 오픈소스 모니터링 솔루션인 Prometheus를 이용하여 요즘 메이커들 사이에 사물인터넷의 주요 디바이스로 자리매김하고 있는 라즈베리 파이의 운영상태를 모니터링 해보기로 하겠다. [그림.1] 라즈베리 파이 3 B+ [그림.2] 운영 중인 라즈베리 파이 3 B+ 라즈베리 파이는 영국의 라즈베리 파이 재단에서 학교와 개발도상국에서의 기초 컴퓨터 과학 교육 증진을 목표로 제작한 초소형 PC이다. 메인보드에 내장된 GPIO핀을 이용하여 다양한 센서모듈을 조합하여 메이커들에게는 사물인터넷의 핵심 기기로 각광받고 있다. 서버나 사물인터넷 허브와 같이 중단없이 장시간 운영되는 장비의 경우 안정적인 운영을 위해 실시간 서비스 모니터링이 필수적인데, Prometheus를 이용하면 다양한 정보를 수집하여 로그를 저장하고 이를 Grafana와 연동하여 세련된 그래픽 환경으로 운영이 가능하다. 게다가 오픈소스로 제공되기 때문에 설치와 운영 등 기술 비용(!)을 제외하면 소프트웨어 라이선스 비용은 무료이다. (제발, 소프트웨어 라이선스가 무료라고 모든게 공짜라는 생각은 버리자!) [그림.3] Prometheus Architecture Prometheus는 그림과 같이 Prometheus 서버가 외부의 export node들로부터 metric을 pulling 방식으로 수집하고, 이를 Grafaana 등을 이용해 시각화한다. 구조는 좀 복잡해 보이지만 이 글에서 구현해 볼 모니터링 툴을 간단히 설명하면, 1. node exporter - 모니터링할 기기의 메트릭(정보)을 제공 2. prometheus - 노드들로부...