Добрый день, Нужна помощь. Начал работать с WiFi модулем ESP8266 (ESP-001) на Arduino M0 (Arduino IDE 1.7.10 от arduino.org под Mac OS X 10.9.5 Mawericks на MacBook Pro Retina mid-2013). Использую ESP8266 библиотеку WeeESP8266 от ITEAD ( http://docs.iteadstudio.com/ITEADLIB_Ar ... index.html ). ESP8266 модуль соединен с M0 вот так: ESP8266_TX->RX(0) ESP8266_RX->TX(1) ESP8266_CH_PD->3.3V ESP8266_VCC->3.3V ESP8266_GND->GND М0 общается с IDE по порту /dev/tty.usbmodem1421. Попробовал загрузить скетч из примеров библиотеки "UDPClientSingle". Код (C++): // example UDPClientSingle.ino - demo of library WeeESP8266. #include "ESP8266.h" #define SSID "my_net" #define PASSWORD "123456" #define HOST_NAME "192.168.1.255" #define HOST_PORT (5416) ESP8266 wifi(Serial,9600); void setup() { delay(5000); // to free-up SerialUSB after sketch loading SerialUSB.print("setup begin\r\n"); SerialUSB.print("FW Version:"); SerialUSB.println(wifi.getVersion().c_str()); if (wifi.setOprToStationSoftAP()) { SerialUSB.print("to station + softap ok\r\n"); } else { SerialUSB.print("to station + softap err\r\n"); } if (wifi.joinAP(SSID, PASSWORD)) { SerialUSB.print("Join AP success\r\n"); SerialUSB.print("IP: "); SerialUSB.println(wifi.getLocalIP().c_str()); } else { SerialUSB.print("Join AP failure\r\n"); } if (wifi.disableMUX()) { SerialUSB.print("single ok\r\n"); } else { SerialUSB.print("single err\r\n"); } SerialUSB.print("setup end\r\n"); } void loop() { uint8_t buffer[128] = {0}; if (wifi.registerUDP(HOST_NAME, HOST_PORT)) { SerialUSB.print("register udp ok\r\n"); } else { SerialUSB.print("register udp err\r\n"); } char *hello = "Hello, this is client!"; wifi.send((const uint8_t*)hello, strlen(hello)); uint32_t len = wifi.recv(buffer, sizeof(buffer), 10000); if (len > 0) { SerialUSB.print("Received:["); for(uint32_t i = 0; i < len; i++) { SerialUSB.print((char)buffer[i]); } SerialUSB.print("]\r\n"); } if (wifi.unregisterUDP()) { SerialUSB.print("unregister udp ok\r\n"); } else { SerialUSB.print("unregister udp err\r\n"); } delay(5000); } Вот что происходит. ESP8266+M0 подключены к IDE. IDE компилирует и загружает скетч. Но как только пытаюсь открыть Монитор последовательного порта, IDE сообщает "Board at /dev/tty.usbmodem1421 is not available". И после этого подключение M0 уже не распознается системой (и IDE). М0 заблокирована. Снять блокировку удается только с помощью "Rescue guide for microcontroller ATSAMD21G18A" ( http://www.arduino.org/learning/tut...rescue-guide-for-microcontroller-atsamd21g18a). Если коротко, то это загрузка стандартного тестового скетча Blink и нажатие во время загрузки RESETa на M0. M0 оживает. Повторял эти попытки с ESP8266 несколько раз с тем же результатом. Что не так? Что делать? Спасибо.
Не вникая в Ваш код и в то что есть эта плата, замечу вот что. ESP-8266 работает по UART. Если программирование платы осуществляется тоже по UART и именно тот, на котором сидит ESP-8266 - ничего не получится. Чтобы запрограммировать плату - нужно отсоединить модуль. Если же программа должна общаться с компьютером во время работы и там же находится ESP-8266 - ничего не получится в принципе. И решить эту проблему без присоединения модуля к другим ногам - не возможно. Для присоединения к другим ногам, скорее всего, нужна библиотека SoftwareSerial.
ИгорьК, спасибо за ответ. На Arduino M0 есть аппаратный UART Serial (ноги 0 и 1) - по нему М0 общается с ESP8266, и есть виртуальный serial-port SerialUSB (идет напрямую в процессор ATSAMD21G18) для общения с компом. Они физически разные. Так что тут я проблемы не вижу.