본문 바로가기

IoT 디바이스 활용81

MQTT - Arduino Arduino MQTT PubSubClient 라이브러리 Arduino MQTT 라이브러리 추가 PubSubClient https://pubsubclient.knolleary.net/ #include 주요 메서드 PubSubClient(Client) 생성자 Client 객체를 매개변수로 지정 WiFiEspClient espClient; PubSubClient client(espClient); setServer(서버주소, 포트번호) 서버 정보 설정 client.setServer(MQTT_SERVER, 1883); setCallback(callback) 구독자인 경우 메시지 수신 처리 콜백 등록 client.setCallback(callback); 주요 메서드 connect() / connect(Client.. 2020. 10. 16.
MQTT - MQTT 소개, Mosquitto MQTT MQTT MQTT(Message Queue Telemetry Transport) https://www.joinc.co.kr/w/man/12/MQTT/Tutorial 경량의 Publish/Subscribe(Pub/Sub) 메시징 프로토콜 M2M(machine-to-machine)와 IoT(Internet of things) 분야 적용 특징 저전력 신뢰할 수 없는 네트워크에서 운용 가능 No TCP/IP 기반 운영 가능 → 소형기기의 제어와 센서정보 수집에 유리 구성 No TCP/IP : 발행자(pub) TCP/IP : 구독자(sub) 발행자(Arduino) → MQTT Broker(server) ← 구독자 활용 센서(Sensor) 정보 수집 제어 센서로 부터 받은 데이터를 토대로 기기 제어 각 기.. 2020. 10. 16.
Arduino - WIFI - ESP8266 - 라이브러리 (WifiUtil.h) ESP8266 라이브러리(WiFiEsp) ESP8266 라이브러리 라이브러리 설치 WiFiEsp 라이브러리 설치(라이브러리 관리자 이용) 검색: WiFiEsp by bportaluri 선택 https://github.com/bportaluri/WiFiEsp API 문서 https://www.arduino.cc/en/Reference/WiFi WiFi 객체 주요 메서드 WiFi AP(공유기)에 접속하고 IP를 받는 역할 WiFi.init(&softSerial) SoftwareSerial을 통해 초기화 WiFi.status() AP 연결 상태 리턴 WiFi.begin(ssid, password) AP 접속 접속 성공시 IP 할당 받음 WiFi.SSID() AP의 SSID 리턴 WiFi.localIP() 할당.. 2020. 10. 16.
Arduino - WIFI - ESP8266 - AT 명령 WIFI ESP8266 AT 명령 ESP8266 SoftSerial 아두이노 Uno는 RX(0번)/RX(1번) 핀 1벌만 지원(PC 연결에 사용) 일반 디지털 핀을 소프트웨적으로 RX/TX 처리 이용 필요 SoftSerial 2번 핀/3번 디지털 핀을 RX/TX로 연결 9600 속도에서 안정적으로 동작 더 빨라지면 오류 발생 ESP8266의 속도를 9600으로 설정 필요 ESP8266는 3.3V로 동작 RX/TX 핀도 3.3V로 동작 아두이노의 디지털 출력은 5V 전압 강하 필요 1:2 비율로 전압 강하로 ESP8266의 RX로 연결 아두이노는 1.7V 이상을 HIGH로 미만을 LOW로 인식하므로 TX는 바로 연결 실제로는 전압 강하 없이 실행 가능 펌웨어 업그레이드 wifi_at.ino #include.. 2020. 10. 16.
Arduino - 미세먼지 센서 미세먼지 센서 미세먼지 센서 SW-PWM-03A-02 수직으로 세워서 측정 특성상 눕여 놓으면 먼지가 쌓임 국제 미세먼지농도에 따른 경계단계 기준분류 30ug/m³ 이하 : 좋음 30~80ug/m³ : 보통 80~150ug/m³ : 나쁨 150ug/m³ 초과 : 매우 나쁨 dust_ex01/app.ino #include #include "Ultra.h" MiniCom com; Ultra ultra(2, 3); void checkDistance() { int distance = ultra.read(); com.print(0, "distance", distance); } void setup() { com.init(); com.setInterval(1000, checkDistance); } void loop(.. 2020. 10. 15.
Arduino - 초음파 센서 (Ultra.h, Pulse.h) 초음파 센서 초음파 센서 초음파 센서 초음파를 이용하여 벽이나 사물의 거리를 측정하는 센서 HC-SR04 모듈 Vcc: 전원 Trig : 트리거 (초음파 송출 제어) Echo : 에코(초음파 수신) GND: 접지 초음파센서 사용하기 초음파 센서 동작 원리 Trig에 HIGH 전압 인가시 초음파 발사 Echo에서 초음파 수신(처음에는 LOW) 시간차이를 측정하여 거리 계산 거리 계산 음속 : 340 m/s 비례식 1,000,000 us : 34,000 cm = x us : y cm y = 34,000*x/1,000,000 = 0.034*x cm 왕복 반영 y = 0.034*x/2 = 0.017 *x cm = x/58 cm delayMicroseconds() 아두이노 보드를 일정 시간 멈추는 함수입니다. d.. 2020. 10. 15.
Arduino - DHT11 (MiniCom.h) DHT11 DHT11 DHT11 온/습도 센서 내부에 써미스터와 정전식 습도 센서가 내장되어있는 온습도 센서 내부 써미스터는 온도에 따라 저항 값이 변하는 소자 정전식 습도 센서는 습도에 따라 저항 값이 변하는 소자 총 3개의 핀으로 구성되어 있으며 각각 VCC, DATA, GND로 구성 온도 측정시 써미스터 특성상 약 1분정도의 시간이 소요 DHT11 라이브러리 DHT sensor library by Adafruit 설치 \Arduino\libraries\DHT_sensor_library Adafruit Unified Sensor Driver https://github.com/adafruit/Adafruit_Sensor \Arduino\libraries\Adafruit_Sensor 온도, 습도 센서 실.. 2020. 10. 15.
Arduino - 조도 센서 조도 센서 빛 저항으로 빛 세기 감지하기 빛 저항 빛에 노출되면 저항이 줄어드는 저항 - 광전자 효과 회로 구성 빛 저항 연결 한쪽은 VCC에 연결 다른 한쪽은 A0에 연결 10K 옴 저항 연결 조도(밝기) 센서로 LED 켜고 끄기 int pSensor = A0; int ledPin = 3; void setup() { Serial.begin(9600); pinMode(ledPin, OUTPUT); } void loop() { int readVal = analogRead(pSensor); Serial.print("Read Value = "); Serial.println(readVal); if (readVal < 200) { // 어두워지면 LED 켜기 digitalWrite(ledPin, HIGH); } .. 2020. 10. 15.
Arduino - 조이스틱 (Button.h 변경, joystick.h) 조이스틱 아두이노 조이스틱 조이스틱 VRx : x축 가변 저항(아날로그 입력 연결) VRy : y축 가변 저항(아날로그 입력 연결) SW : 스위치(디지털 입력 연결) 조이스틱 제어/LED #include #include #include #include AnalogSensor jX(A0, 0, 1023); AnalogSensor jY(A1, 0, 1023); Button btn(2); LiquidCrystal_I2C lcd(0x27, 16, 2); SimpleTimer timer; void readJoystick() { char buf[17]; int x = jX.read(); int y = jY.read(); int z = btn.read(); sprintf(buf, "x: %4d, y: %4d", x.. 2020. 10. 15.
Arduino - 서보모터 서보모터 제어 서보 모터 제어하기 서보 모터 미리 정해진 범위 내에서 모터의 축을 세부 조정하도록 제한된 모터 취미용 서보 축의 움직임 범위 180도 50Hz의 주파수 내에서 주파수를 이용해 동작 → 20ms의 신호주기 제어를 위한 특별한 회로 없음 → 바로 연결 가능 마이크로 서보모터(SG-90) 0~180도 회전 선구분 주항 : 디지털 핀 빨강 : 전원 Vcc 갈색 : Gnd 서보 모터 제어 신호가 HIGH로 설정된 시간 양 → 서보의 각도 가장 왼쪽에 배치 1ms 동안 HIGH 유지, 남은 시간은 LOW 유지 가장 오른쪽에 배치 2ms 동안 HIGH 유지, 남은 시간은 LOW 유지 3개의 핀 빨간 선 : Vin / +5V에 연결 검은 선 : GND 연결 기타(오렌지 또는 흰색) : 디지털 출력 핀으.. 2020. 10. 15.
Arduino - 가변 저항 (PWMLed.h, AnalogSensor.h) 가변 저항 가변저항 가변저항 특성 값이 변하는 저항 세 개의 선으로 회로에 연결 연결 방법에 따라 두가지 기능 제공 바깥 단자와 중간 단자만 연결하는 경우 세번째 단자도 회로에 연결하는 경우 전형적인 전압 분압기 가변저항의 모양 trimmer 타입 스크류 드라이버를 이용하여 저항을 조절 rotary 타입 손잡이로 저항을 조정 보드 설정하기 아날로그 입력 A0~A5 칩 내부에서 ADC(Analog to Digital Converter) 모듈로 연결 LCD I2C 사용한다면 A0~A3 이용가능 아날로그 → 디지털 아날로그 값의 범위 05V → 01023 사이의 디지털 값으로 변환 대부분의 센서들은 아날로그 입력 핀으로 연결 가변 저항 ADC로 연결되는 부품 센서의 입력 원리와 같다 센서는 환경에 따라 변하고.. 2020. 10. 15.
Arduino - 버튼 (Led.h, Button.h) 버튼 버튼 택트(Tact) 스위치 풀업 방식 스위치 on, off 상태 풀업 저항 전압 소스와 회로 내에 있는 입력 핀 사이에 배치 - 디폴트 HIGH 버튼/스위치는 입력 핀과 접지(GND) 사이에 배치 - 스위치를 누르면 LOW 풀다운 방식 스위치 on, off 상태 풀다운 저항 접지와 회로 내에 있는 입력 핀 사이에 배치 - 디폴트 LOW 버튼/스위치는 전원 소스와 핀 사이에 배치 - 스위치를 누르면 HIGH 디지털 입력 읽기 digitalRead(핀번호) 해당 핀 번호의 값 읽기 HIGH/LOW 리턴 풀다운 버튼 버튼 연결 저항 : 10K옴 디폴트 : LOW 누른 경우: HIGH 버튼으로 LED 켜고 끄기(풀다운) int LED = 4; int BUTTON = 11; void setup() { pi.. 2020. 10. 15.