본 절은 ESP32와 아두이노의 I2C 통신을 사용하기 위해 알아야 할 내용과 실습 방법에 대해 설명한다. 아두이노와 ESP32를 연결하고, 간단한 코딩으로 쉽게 실습할 수 있다.
목차
[ESP32] I2C로 아두이노와 통신하기
ESP32와 아두이노 I2C 연결하기
다음과 같이 ESP32와 아두이노의 I2C (SCL, SDA, GND)를 연결한다. +(VCC) 전원은 연결하면 안된다.
아두이노 소프트웨어 코딩
하드웨어 연결이 완료되면, 아두이노 IDE를 이용해 아두이노 소스코드를 코딩할 수 있다.
코드는 다음과 같다.
#include <Wire.h>
void setup()
{
Serial.begin(9600);
Serial.println("I2C Test");
Wire.begin(0x13);
Wire.onReceive(receiveEvent);
}
void loop()
{
delay(500);
}
String rxESP32Data = "";
boolean bST = false;
void receiveEvent(int howMany)
{
while (Wire.available())
{
char buf = Wire.read();
if (bST) {
if (buf == '*') {
Serial.println(rxESP32Data);
// setCommand(rxData);
bST = false;
rxESP32Data = "";
break;
} else {
rxESP32Data += buf;
}
} else {
if (buf == '#') bST = true;
}
}
}
------------------------------------------------------
개발환경 : WINDOWS 10
아두이노 IDE : 1.8.13
------------------------------------------------------
01 연결
- 아두이노와 PC 연결
- 아두이노 IDE 실행
- 메뉴 → 툴 → 보드: 확인
- 메뉴 → 스케치 → 확인/컴파일
02 컴파일 확인
스케치>확인/컴파일(CTRL+R) 를 선택해서 컴파일을 진행한다.
03 업로드
컴파일이 이상없이 완료되면 스케치>업로드(CTRL+U) 를 선택해서 컴파일 파일을 업로드 한다.
ESP32 소프트웨어 코딩
하드웨어 연결이 완료되면, 아두이노 IDE를 이용해 아두이노 소스코드를 코딩할 수 있다.
코드는 다음과 같다.
#include <Wire.h>
#include "BluetoothSerial.h"
#if !defined(CONFIG_BT_ENABLED) || !defined(CONFIG_BLUEDROID_ENABLED)
#error Bluetooth is not enabled! Please run `make menuconfig` to and enable it
#endif
#define DEBUG 1
BluetoothSerial SerialBT;
void setup() {
Serial.begin(115200);
SerialBT.begin("ESP32Test"); //Bluetooth device name
Serial.println("The device started, now you can pair it with bluetooth!");
}
void loop() {
getPacketFromBluetooth();
delay(20);
}
String rxData = "";
boolean bStart = false;
void getPacketFromBluetooth() {
// SerialBT.listen();
if (SerialBT.available() > 0)
{
char tData = SerialBT.read();
// Serial.println(data);
// if(DEBUG) Serial.write(tData);
if (bStart) {
if (tData == '*') {
Serial.println(rxData);
//setCommand(rxData);
sendI2CtoArduino(rxData);
bStart = false;
rxData = "";
} else {
rxData += tData;
}
} else {
if (tData == '#') bStart = true;
}
}
}
void setupI2CtoArduino() {
Wire.begin();
}
void loopI2CtoArduino() {}
void sendI2CtoArduino(String rxData) {
String toSendFormat;
toSendFormat = "#" + rxData + "*";
char toSend[32];
toSendFormat.toCharArray(toSend, 32);
if (DEBUG) {
Serial.print("toSend:");
Serial.println(toSend);
}
Wire.beginTransmission(0x13);
Wire.write(toSend);
Wire.endTransmission();
}
------------------------------------------------------
개발환경 : WINDOWS 10
아두이노 IDE : 1.8.13
------------------------------------------------------
01 연결
- 아두이노와 PC 연결
- 아두이노 IDE 실행
- 메뉴 → 툴 → 보드: 확인
- 메뉴 → 스케치 → 확인/컴파일
02 컴파일 확인
스케치>확인/컴파일(CTRL+R) 를 선택해서 컴파일을 진행한다.
03 업로드
컴파일이 이상없이 완료되면 스케치>업로드(CTRL+U) 를 선택해서 컴파일 파일을 업로드 한다.
ESP32 -> 아두이노 동작 확인
ESP32 <-> 아두이노가 I2C 로 연결된 상태에서 동작을 확인할 수 있다.
1. ESP32와 스마트폰에의 터미널 프로그램을 연결한다.
2. 스마트폰에서 명령어 (예: #LED,99*)를 입력하고 전송 버튼을 누른다.
3. 아두이노의 시리얼 모니터에서 정상적으로 수신되는지 확인한다.
[참고]
https://juahnpop.tistory.com/96
모두의 아두이노 환경 센서 책
[모두의 아두이노 환경 센서] 책은 예스24, 인터넷 교보문고, 알라딘, 인터파크도서, 영풍문고, 반디앤루니스 , 도서11번가 등에서 구입할 수 있다. 이 책에서는 PMS7003, GP2Y1010AU0F, PPD42NS, SDS011 미세먼지 센서, DHT22 온습도 센서, MH-Z19B 이산화탄소 센서, ZE08-CH2O 포름알데히드 센서, CCS811 총휘발성유기화합물 TVOC, GDK101 방사선(감마선) 센서, MQ-131 오존(O3) 센서, MQ-7 일산화탄소, MICS-4514 이산화질소 센서, MICS-6814 암모니아 센서, DGS-SO2 아황산가스(SO2) 센서, BME280 기압 센서, GUVA-S12SD 자외선(UV) 센서, MD0550 기류 센서, QS-FS01 풍속 센서(Wind speed) 를 사용한다.
'모두의 ESP32-ESP8288' 카테고리의 다른 글
[ESP32] ESP32 CAM-MB 보드 webserver사용하기 (0) | 2022.01.04 |
---|---|
[ESP32] 열화상 카메라 만들기(MLX90640, ST7735S TFT LCD) (0) | 2021.12.16 |
[ESP32] MLX90640 및 ESP32가 탑재된 적외선 열화상 카메라 (0) | 2021.12.15 |
[ESP32] ST7735S IPS (SPI 인터페이스) TFT LCD 1.8인치 사용하기 (0) | 2021.12.15 |
[ESP32] 블루투스 테스트 하기 (0) | 2021.12.15 |
댓글