본문 바로가기
모두의 ESP32-ESP8288

[ESP32] I2C로 아두이노와 통신하기

by 로니킴 2021. 12. 17.


본 절은 ESP32와 아두이노의 I2C 통신을 사용하기 위해 알아야 할 내용과 실습 방법에 대해 설명한다. 아두이노와 ESP32를 연결하고, 간단한 코딩으로 쉽게 실습할 수 있다. 

 

 

 

 




[ESP32] I2C로 아두이노와 통신하기

 

 

 


 

ESP32와 아두이노 I2C 연결하기

다음과 같이 ESP32와 아두이노의 I2C (SCL, SDA, GND)를 연결한다. +(VCC) 전원은 연결하면 안된다. 

 

https://juahnpop.tistory.com/96

 

 


 



아두이노 소프트웨어 코딩

하드웨어 연결이 완료되면, 아두이노 IDE를 이용해 아두이노 소스코드를 코딩할 수 있다. 

i2carduino.ino
0.00MB

코드는 다음과 같다. 


#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

 

아두이노 강좌 #17 I2C 통신으로 아두이노 우노와 ESP32 통신 하기

Arduino Uno and nodeMCU ESP-32s 지난 포스트에서 I2C 통신에 대한 설명과 아두이노에서 I2C 통신 구현을 위한 기본적인 함수들을 알아보았습니다. 본 포스트에서는 아두이노 보드끼리 I2C 통신하여 내장 L

juahnpop.tistory.com

 

 

 


 

모두의 아두이노 환경 센서 책

[모두의 아두이노 환경 센서] 책은 예스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) 를 사용한다.  

 

모두의 아두이노 환경 센서

아두이노와 센서로 내 건강을 지킬 수 있다!다양한 환경 센서를 실생활 프로젝트에 응용해보자!시중에 판매되고 있는 간이측정기도 센서로 값을 측정합니다. 똑같은 센서를 아두이노에 연결하

book.naver.com

 

반응형


댓글