ESP-WROOM-02 Arduino 호환 보드에 Wi-Fi를 통해 스케치 쓰기

이 기사는 기사 「 ESP-WROOM-02+ArduinoOTA로 스케치 WiFi를 통해 업로드 」를 참고로 했습니다. 감사합니다

스위치 사이언스 ESP-WROOM-02 Arduino 호환 보드



스위치 과학에서 ESP-WROOM-02 Arduino 호환 보드이 출시되었습니다. 지금까지는 ESP-WROOM-02(ESP8266)를 Arduino의 스케치를 작성하여 사용하기 위해서는 모듈을 납땜하여 브레드보드에서 사용하거나 조금 사용하기 어려운 부분이 있었습니다. 이 호환 보드가 제거됩니다

ESP-WROOM-02 Arduino 호환 보드


ArduinoOTA를 사용하면 Wi-Fi를 통해 스케치를 쓸 수 있습니다!



OTA(Over the Air)란, 「무선 통신을 경유해」라는 의미의 영어 표현으로, 지금까지 외부 기억 장치나 유선 통신으로 행해져 온 데이터의 송수신 등이 무선 통신에 대응한 경우 등에 자주 사용되는 표현.
OTA란? - IT 용어 사전 보다 인용

Arduino에서는, PC와 USB 케이블로 접속하고 있던 곳을, Wi-Fi로 무선 접속한다고 하는 것입니다. 그러므로, USB 케이블 필요 없이 기입할 수 있게 됩니다(무선화하는 스케치는 USB 접속으로 기입할 필요가).

실현 절차



Wi-Fi를 통해 스케치를 쓸 때까지의 단계입니다.
  • 개발 환경 구축
  • USB 케이블을 통해 호환 보드에 OTA 샘플 스케치 쓰기
  • USB 케이블을 분리하여 Wi-Fi 연결
  • Arduino IDE에서 동일한 네트워크에서 호환 보드 선택
  • Wi-Fi를 통해 쓰기!

  • 개발 환경 구축



    Arduino IDE와 ESP8266 라이브러리는 이미 설치되어 있다는 점에서 시작합니다. Arduino IDE 외에 필요한 것이 파이썬입니다. 버전은 2.7을 설치합니다.

    다운로드 링크
    - Windows
    - Mac OS X

    USB 케이블을 통해 호환 보드에 OTA 샘플 스케치 쓰기



    조속히 Wi-Fi 경유로 스케치를 기입하고 싶은 곳입니다만, 그대로는 호환 보드에 대해서 아무것도 설정하고 있지 않은 상태이기 때문에 기입할 수 없습니다. 여러가지 돌진하고 싶은 곳은 억제하면서, USB 경유로 OTA용의 스케치를 호환 보드에 기입합니다. Arduino IDE 메뉴에서 [ファイル]→[スケッチの例]→[ArduinoOTA]→[BasicOTA]를 클릭하여 샘플 스케치를 엽니다. 스케치에서 ssidpassword를 적절하게 변경하고 씁니다.
    #include <ESP8266WiFi.h>
    #include <ESP8266mDNS.h>
    #include <WiFiUdp.h>
    #include <ArduinoOTA.h>
    
    const char* ssid = "..........";
    const char* password = "..........";
    
    void setup() {
      Serial.begin(115200);
      Serial.println("Booting");
      WiFi.mode(WIFI_STA);
      WiFi.begin(ssid, password);
      while (WiFi.waitForConnectResult() != WL_CONNECTED) {
        Serial.println("Connection Failed! Rebooting...");
        delay(5000);
        ESP.restart();
      }
    
      // Port defaults to 8266
      // ArduinoOTA.setPort(8266);
    
      // Hostname defaults to esp8266-[ChipID]
      // ArduinoOTA.setHostname("myesp8266");
    
      // No authentication by default
      // ArduinoOTA.setPassword((const char *)"123");
    
      ArduinoOTA.onStart([]() {
        Serial.println("Start");
      });
      ArduinoOTA.onEnd([]() {
        Serial.println("\nEnd");
      });
      ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
        Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
      });
      ArduinoOTA.onError([](ota_error_t error) {
        Serial.printf("Error[%u]: ", error);
        if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
        else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
        else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
        else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
        else if (error == OTA_END_ERROR) Serial.println("End Failed");
      });
      ArduinoOTA.begin();
      Serial.println("Ready");
      Serial.print("IP address: ");
      Serial.println(WiFi.localIP());
    }
    
    void loop() {
      ArduinoOTA.handle();
    }
    

    Wi-Fi에 연결할 수 있으면 다음과 같이 시리얼 모니터에 표시됩니다. ESP-WROOM-02에 할당된 IP 주소와 함께.



    Arduino IDE에서 동일한 네트워크에서 ESP-WROOM-02 선택



    Wi-Fi를 통해 쓰려면 몇 가지 설정이 필요합니다. 먼저 ESP-WROOM-02가 연결된 포트를 변경합니다. Arduino IDE 메뉴에서 [ツール]→[ポート]→[Network ports esp8266-〜〜〜]를 클릭합니다. 그렇지 않은 경우 Arduino IDE를 다시 시작하거나 ESP-WROOM-02가 Wi-Fi에 연결할 때까지 기다립니다. 그런 다음 OTA로 작성하므로 [ツール]→[Upload Using]→[OTA]를 선택하십시오.



    Wi-Fi를 통해 쓰기!



    여기서 1점 주의하는 포인트. 그것은 방금 작성한 BasicOTA의 샘플 스케치를 바탕으로 OTA의 처리를 남긴 채로 스케치를 개발한다는 것입니다. OTA의 처리가 없어져 버리면, Wi-Fi 경유로 기입할 수 없게 되는 간단한 이유입니다. 그러므로 OTA의 처리가 늘어나는 만큼, 스케치의 데이터 용량이 늘어나 버립니다. 다음 소스 코드를 보시다시피 OTA 처리에 L 치카 처리를 추가했습니다.
    #include <ESP8266WiFi.h>
    #include <ESP8266mDNS.h>
    #include <WiFiUdp.h>
    #include <ArduinoOTA.h>
    
    const char* ssid = "..........";
    const char* password = "..........";
    
    void setup() {
      Serial.begin(115200);
      Serial.println("Booting");
      WiFi.mode(WIFI_STA);
      WiFi.begin(ssid, password);
      while (WiFi.waitForConnectResult() != WL_CONNECTED) {
        Serial.println("Connection Failed! Rebooting...");
        delay(5000);
        ESP.restart();
      }
    
      // Port defaults to 8266
      // ArduinoOTA.setPort(8266);
    
      // Hostname defaults to esp8266-[ChipID]
      // ArduinoOTA.setHostname("myesp8266");
    
      // No authentication by default
      // ArduinoOTA.setPassword((const char *)"123");
    
      ArduinoOTA.onStart([]() {
        Serial.println("Start");
      });
      ArduinoOTA.onEnd([]() {
        Serial.println("\nEnd");
      });
      ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
        Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
      });
      ArduinoOTA.onError([](ota_error_t error) {
        Serial.printf("Error[%u]: ", error);
        if (error == OTA_AUTH_ERROR) Serial.println("Auth Failed");
        else if (error == OTA_BEGIN_ERROR) Serial.println("Begin Failed");
        else if (error == OTA_CONNECT_ERROR) Serial.println("Connect Failed");
        else if (error == OTA_RECEIVE_ERROR) Serial.println("Receive Failed");
        else if (error == OTA_END_ERROR) Serial.println("End Failed");
      });
      ArduinoOTA.begin();
      Serial.println("Ready");
      Serial.print("IP address: ");
      Serial.println(WiFi.localIP());
    
      pinMode(14, OUTPUT);
    }
    
    void loop() {
      ArduinoOTA.handle();
    
      // Lチカの処理
      digitalWrite(14, HIGH);
    
      delay(1000);
    
      digitalWrite(14, LOW);
    
      delay(1000);
    }
    

    개발 중에는 Wi-Fi를 통해 좋지만 프로덕션은 USB로 쓰는 것이 좋습니다.



    개인적인 주관입니다만, 이 OTA를 사용한 Wi-Fi 경유로의 기입은 주로 개발중에 사용하는 것인가라고 느꼈습니다. 스케치를 업로드하는 데 걸리는 시간도 USB 케이블을 사용할 때보다 빠릅니다. 일단 개발이 완료된 시점에서, OTA의 처리를 스케치로부터 생략해 쓰면 낭비도 생략해 안심입니다.

    좋은 웹페이지 즐겨찾기