#author("2019-04-21T23:03:13+09:00","default:qua","qua") * WiFi [#uc577eec] WiFiボードESP-Wroom-02 #author("2019-04-21T23:14:11+09:00","default:qua","qua") #ref(http://www.ist.aichi-pu.ac.jp/lab/qua/~qua/pbl/img/ESP_breakout1-1_500.jpg,200x200) [[メーカー情報ページ:https://www.switch-science.com/catalog/2341/]] ** ピン配置 [#w3caf4a0] 写真奥から、 |GND|GND| |IO0|10kΩ抵抗経由で3.3V| |IO2|未接続| |EN|10kΩ抵抗経由で3.3V| |RST|10kΩ抵抗経由で3.3V| |TXD|ArduinoのRx| |RXD|ArduinoのTx| |3V3|3.3V| ** 接続 [#ef8ab517] - Arduinoとの接続~ Arduino UNOでは、Rx, Txの代わりに、3.3V⇔5V変換をして、デジタル2, 3番ピンに接続する。下の図は、MOSFET(BSS138)を用いて、RXDをデジタル3番ピンに接続する例である。 #ref(http://www.ist.aichi-pu.ac.jp/lab/qua/~qua/pbl/img/bss138.png,250x160) これを用いた接続図を下に示す。 #ref(http://www.ist.aichi-pu.ac.jp/lab/qua/~qua/pbl/img/ESP-WROOM-02-Arduino.png,350x450) - WiFiルータとの接続 SSID MeoBankSD_pbl パスワード Wikiのパスワードと同じ ** プログラミング [#i872dfd6] - ArduinoとWiFiの間の通信速度の設定 #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()); } } - ライブラリの利用 [[ライブラリ:http://www.ist.aichi-pu.ac.jp/lab/qua/~qua/pbl/lib/ITEADLIB_Arduino_WeeESP8266-master.zip]] // ESP-WROOM-02をUART Download Modeで使う場合、 // IO0を10kΩ抵抗経由でGNDに接続 // IO2を10kΩ抵抗経由で3.3Vに接続