WiFi

WiFiボードESP-Wroom-02

ESP_breakout1-1_500.jpg

メーカー情報ページ

ピン配置

写真奥から、

GNDGND
IO010kΩ抵抗経由で3.3V
IO2未接続
EN10kΩ抵抗経由で3.3V
RST10kΩ抵抗経由で3.3V
TXDArduinoのRx
RXDArduinoのTx
3V33.3V

接続

プログラミング

#include <SoftwareSerial.h>
SoftwareSerial mySerial(2, 3); // RX, TX

bool recvFind( String target, uint32_t timeout=1000 );
String recvString( String target, uint32_t timeout=1000 );
void clear_rx();

const unsigned long newBAUD=57600;

unsigned long bauds[]= {
  300,1200,2400,4800,9600,14400,
  19200,28800,31250,38400,57600,115200
};

void setup() {
  int i;
  int flag;
  unsigned char c;
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }
  Serial.println("Goodnight moon!");
  flag = 0;
  for( i=0; i<12; i++ ){
    Serial.println( "Trying "+String(bauds[i])+" BAUD" );
    mySerial.begin( bauds[i] );
    clear_rx();
    mySerial.println("AT+UART_DEF="+String(newBAUD)+",8,1,0,0");
    if( recvFind( "OK" ) ){
      flag = 1;
      break;
    }
  }
  clear_rx();
  if( !flag ){
    Serial.println( "?????" );
  } else {  
    clear_rx();
    Serial.println( "BAUD="+String(newBAUD) );
  }
  mySerial.begin( newBAUD );
  clear_rx();
  delay( 100 );
  mySerial.println( "AT" );
}

void clear_rx()
{
  while( mySerial.available() ){
    mySerial.read();
  }
}

bool recvFind( String target, uint32_t timeout=1000 )
{
  String data;
  char a;
  unsigned long start = millis();
  while (millis() - start < timeout) {
    while(mySerial.available() > 0) {
      a = mySerial.read();
      if(a == '\0') continue;
      data += a;
    }
    if (data.indexOf(target) != -1) {
      return true;
    }   
  }
  return false;
}

void loop() { // run over and over
char buf[128];
int i, j;
  if (mySerial.available()) {
    Serial.write(mySerial.read());
  }
  if (Serial.available()) {
    mySerial.write(mySerial.read());
  }
}

ライブラリ


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS