본문 바로가기
모두의 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

     

    반응형


    댓글