[아두이노 프로젝트] 노래방 기기 만들기 - 2
·
아두이노/프로젝트
이번엔 전 시간에 이어 부가 기능인 PC UI 및 리모컨을 만들어 보았다.    마이크 & 멜로디 모듈, 리모컨 모듈과 PC는 MQTT 통신을 이용해 통신하였다.  MQTT란? 작은 코드 공간이 필요하거나 네트워크 대역폭이 제한되는 원격 통신을 위해, 즉 IoT와 같은 제한된, 혹은 대규모 트래픽 전송을 위해 만들어진 프로토콜이다. 그렇기에 TCP/IP 프로토콜 위에서 동작하지만 동시에 굉장히 가벼우며, 많은 통신 제약들을 해결해준다.MQTT의 가장 큰 특징은 Broker라고 보면될거 같다.  Pub/Sub 모델: 메시지를 발행하는 클라이언트와 구독하는 클라이언트가 분리되어 있어 클라이언트 간의 직접적인 연결 없이 통신이 가능합니다.브로커: 메시지 브로커가 중간에서 메시지를 중재하고, 이를 통해 발행된 ..
[아두이노 프로젝트] 노래방 기기 만들기 - 1
·
아두이노/프로젝트
최종 목표는 위와 같은 시스템이다. 시나리오:사용자는 ESP32 보드에서 출력되는 멜로디를 따라 마이크 센서에 노래를 부른다.노래가 끝난후, ESP32보드의 LED Matrix에 점수가 출력된다.  추가적으로, PC에서 NODE-RED의 UI를 통해 노래시작, 템포, 음정 조정을 할 수 있다.리모컨은 또 다른 하나의 ESP보드로 멜로디의 정지/ 시작을 버튼으로 조정할 수 있다. 사실 리모컨에 더 많은 기능을 넣고자 하였지만 사정상 못하게 되었다.  1. 멜로디 구성멜로디는 ESP32보드의 BUZZER를 이용해 멜로디를 출력하였다. 특정 음정을 출력하는 방법은 주파수(음정) + 길이를 통해 만들 수 있다. 멜로디는 5개를 넣었고, 악보를 직접보고 박자 및 음정을 입력해서 넣었다.박자 array의 경우, 보..
[아두이노] BLE 통신
·
아두이노
BLE란?Blue tooth Low Energy의 약자로, 우리가 주로 사용하는 스마트폰, 웨어러블 기기 등과 같은 저전력의 디바이스간의 통신을 위해 디자인된 무선통신 방법이라고 할 수 있다. 블루투스와 동일한 2.4Ghz대의 주파수 대역을 사용하지만, 전력소비를 최소화해 배터리 수명을 지원한다. 핵심적인 동작원리는 Advertising과 Connection이다. Advertising 디바이스는 주변에 자신의 존재를 알리고, Connection에서는 실제 데이터 교환을 수행한다. 위와 같은 계층구조를 가지며, 위의 Stack을 거치며 Packet 전송, 분석하게 된다. 특히 GAP 프로토콜은 서로 다른 제조사가 만든 BLE끼리 호환할 수 있도록 하는 호환성을 제공하는 역할을 한다.  BLE에서도 Cent..
[아두이노] WiFi 통신
·
아두이노
아두이노의 WiFi 통신과 같은 경우 아래와 같은 API를 재공하기에 관련헤더 파일을 선언후, 사용할 수 있다.  실습과정은 서버생성, 클라이언트 접속, 통신의 과정을 거쳤다. 아래와 같은 과정으로 두개의 아두이노 기기에서 하나의 서버에 Client가 접속해 LED를 제어하도록 설정하였다.  #include #include #include #include //esp32의 wifi 관련 헤더 선언WiFiUDP Udp;void setup() { Serial.begin(115200); Serial.print("Connecting to WiFi"); WiFi.mode(WIFI_STA); WiFi.begin(" ", ""); while (WiFi.status() != WL_CO..
[아두이노]SPI 통신
·
아두이노
이건 실습은 하지 않았지만...I2C, UART와 함께 보드의 대표적인 통신방법이므로 정리만 하려고 한다.I2C와의 통신처럼 SCK로 공통 CLOCK시그널을 만들어 주어 동기화를 시키게된다.MOSI는 Master Output, Slave Input으로 마스터 -> 슬레이브 전송데이터이다. MISO는 반대로 Master Input, Slave Output으로 슬레이브 -> 마스터 전송데이터이다. SS(= CS)는 Slave Select로 어떤 슬레이브를 선택할지 판단하는데 사용된다.  양쪽이 모두 각각에게 보내는 통신선이 존재하므로 Full - Duplex 통신이라고 할 수 있다. I2C 통신과의 가장 큰 차이로 볼 수 있을 것이다. I2C통신은 데이터 통신선이 하나로만 존재하였기 때문에 반 이중통신으로 ..
[아두이노] I2C 통신
·
아두이노
I2C 통신?뭔가 아이투시 같지만 아이 스퀘어 시라고 읽는게 맞다고 한다. 위의 그림처럼, 하나의 마스터가, 여러개의 슬레이브간의 통신을 가능하게 하는 프로토콜이다.마스터는 기준클럭을 생성: SCL슬레이브와 마스터간 데이터 전송: SDA UART 보다 좋은점 :UART와 같은 시리얼 통신은 비동기식 방식이다. 비동기식 방식이란 SCL처럼 동기화된 클럭신호가 없어서 사전에 전송속도를 합의해야 어떤 타이밍에 데이터가 전송하는지 확인이 가능하다. 비동기식 방식은 더많은 하드웨어 장치가 필요하고, 매 데이터 전송단위마다 시작/종료 비트를 포함해야한다. 그리고 특히 1대1 통신이므로 다수의 장치와의 통신엔 제한이 발생한다.  SCL의 HIGH를 기준으로 정해진 프레임(8bit)단위로 데이터를 전송한다. 그리고 여..
[아두이노] UART 통신
·
아두이노
기초적인것을 하나 하나 정리중...  UART 통신이란?많이 들어본 통신일 수도 있다.  풀네임은 UART(Universal Asynchronus Receiver Transmitter) : 범용 비동기화 송수신(전이중)으로 한국말로 하면 어렵다. 하지만 별로 어렵지않다. 그냥 순서가 존재하는 병렬 데이터를 직렬로 순차적으로 전송하는 송수신 장치라고 보면된다. 특징은 아래와 같다. - UART는 비동기 모드로 클락신호 없이 데이터만 전송하여 속도가 빠르단 장점이 있지만 시작과 끝을 구분하는 Start bit와 stop bit가 필요하다. - UART에서 데이터 송신 측 핀은 TX라고 하고, 수신측은 RX라고 표시하는데, 두 개의 장치가 연결하기 위해서는 양쪽의 TX와 RX가 서로 교차되도록 연결해주어야 한..
[아두이노] PWM으로 LED 밝기 제어
·
아두이노
했던 실습들... 을 정리겸 기초적인 것부터 다시 채워가보려고 한다.  PWM(Pulse Width Modulation)이란?  디지털 신호는 0과 1로 이루어져 아날로그 신호처럼 다양한 값을 가질 수 없다. 이런 한계를 해결하기 위해 디지털 신호의 펄스폭을 조절하여 마치 아날로그 신호처럼 보이게하는 것이 PWM이다 아날로그 출력을 내기 위해서는 DAC(Digital Analog Converter)가 필요한데, 사용한 보드처럼 대부분의 아두이노보드는 지원하지 않는다.디지털 신호를 마치 아날로그 신호처럼 보내기 위해 PWM을 사용한다고 생각하면 된다. 앞선 STM32에서도 PWM으로 모터 제어를 했듯이, 다양한 분야에 많이 쓰인다.    펄스폭을 조절한다는것은 0과 1의 주기 신호에서 1의 길이를 조절한다..
다락공방
'아두이노' 카테고리의 글 목록