Programming ESP8266 through Zero

So I got AT commands working on my Arduino Zero, but I am unable to figure out how to program the ESP8266 module through my Zero, everything I've tried has resulted in a failure. I did ground the GPIO 0 pin as instructed, so I'm unsure what I'm missing.

Try selecting Tools > Upload Speed > 115200.

You might consider buying a USB to TTL serial adapter. It's much more convenient than trying to turn an Arduino board into an adapter. They are available from all the places you would purchase electronics components (eBay, Aliexpress, Amazon, Adafruit, Sparkfun, etc.) for a reasonable price. They most commonly use either the FT232 or the CH340 chip. It's a useful tool to have on hand. I prefer the ones that come with the "FTDI header" pinout:

  • DTR
  • RX
  • TX
  • VCC
  • CTS
  • GND

That is the most standardized pinout, which allows you to plug it right in to many boards (e.g. Pro Mini). Some have DTR and CTS swapped, but that doesn't matter. You will want one that allows you to select 5 V or 3.3 V.

pert:
Try selecting Tools > Upload Speed > 115200.

You might consider buying a USB to TTL serial adapter. It's much more convenient than trying to turn an Arduino board into an adapter. They are available from all the places you would purchase electronics components (eBay, Aliexpress, Amazon, Adafruit, Sparkfun, etc.) for a reasonable price. They most commonly use either the FT232 or the CH340 chip. It's a useful tool to have on hand. I prefer the ones that come with the "FTDI header" pinout:

  • DTR
  • RX
  • TX
  • VCC
  • CTS
  • GND

That is the most standardized pinout, which allows you to plug it right in to many boards (e.g. Pro Mini). Some have DTR and CTS swapped, but that doesn't matter. You will want one that allows you to select 5 V or 3.3 V.

Speed was already set correctly.

I'm not exactly trying to repurpose an Arduino to be an adapter, I'm currently attempting to add networking functionality to it. The ESP8266 will need to send data over the UART serial connection, and be able to connect to my Adafruit IO MQTT account. I've got all the code I need, its just the trouble of uploading it.

Java_SE_Binary:
I'm not exactly trying to repurpose an Arduino to be an adapter

OK, but that's exactly what the configuration in your previous thread does. It's making your fancy Zero into something inferior to a $1 USB to TTL serial adapter.

Java_SE_Binary:
its just the trouble of uploading it.

Please do this:

  • File > Preferences > Show verbose output during: > compilation (uncheck) > upload (check) > OK
  • Sketch > Upload
  • After the upload fails you'll see a button on the right side of the orange bar "Copy error messages". Click that button.
  • Paste the error messages in a reply here USING CODE TAGS (</> button on the forum toolbar).
Arduino: 1.8.4 (Windows 10), Board: "Generic ESP8266 Module, 80 MHz, Flash, Enabled, ck, 26 MHz, 40MHz, QIO, 512K (no SPIFFS), 2, v2 Lower Memory, Disabled, None, Only Sketch, 115200"

Archiving built core (caching) in: C:\Users\Java\AppData\Local\Temp\arduino_cache_8101\core\core_esp8266_esp8266_generic_xtal_80,vt_flash,exception_enabled,ResetMethod_ck,CrystalFreq_26,FlashFreq_40,FlashMode_qio,eesz_512K,led_2,ip_lm2f,dbg_Disabled,lvl_None____,wipe_none,baud_115200_159e75d41891d1e4fb711824f439b28b.a
Sketch uses 312176 bytes (62%) of program storage space. Maximum is 499696 bytes.
Global variables use 28528 bytes (34%) of dynamic memory, leaving 53392 bytes for local variables. Maximum is 81920 bytes.
C:\Users\Java\AppData\Local\Arduino15\packages\esp8266\tools\esptool\2.5.0-3-20ed2b9/esptool.exe -vv -cd ck -cb 115200 -cp COM4 -ca 0x00000 -cf C:\Users\Java\AppData\Local\Temp\arduino_build_532219/MQTT.ino.bin 
esptool v0.4.13-1-gf80ae31 - (c) 2014 Ch. Klippel <ck@atelier-klippel.de>
 setting board to ck
 setting baudrate from 115200 to 115200
 setting port from COM1 to COM4
 setting address from 0x00000000 to 0x00000000
 espcomm_upload_file
 espcomm_upload_mem
 setting serial port timeouts to 1000 ms
opening bootloader
resetting board
trying to connect
 flush start
 setting serial port timeouts to 1 ms
 setting serial port timeouts to 1000 ms
 flush complete
 espcomm_send_command: sending command header
 espcomm_send_command: sending command payload
 read 0, requested 1
trying to connect
 flush start
 setting serial port timeouts to 1 ms
 setting serial port timeouts to 1000 ms
 flush complete
 espcomm_send_command: sending command header
 espcomm_send_command: sending command payload
 read 0, requested 1
trying to connect
 flush start
 setting serial port timeouts to 1 ms
 setting serial port timeouts to 1000 ms
 flush complete
 espcomm_send_command: sending command header
 wrote 0, requested 8
error: failed sending 8 bytes
 espcomm_send_command: sending command payload
 wrote 0, requested 36
error: failed sending 36 bytes
 wrote 0, requested 1
error: failed sending 0xC0
 read 0, requested 1
resetting board
trying to connect
 flush start
 setting serial port timeouts to 1 ms
 setting serial port timeouts to 1000 ms
 flush complete
 espcomm_send_command: sending command header
 espcomm_send_command: sending command payload
 read 0, requested 1
trying to connect
 flush start
the selected serial port trying to connect
 does not exist or your board is not connected
 setting serial port timeouts to 1 ms
 setting serial port timeouts to 1000 ms
 flush complete
 espcomm_send_command: sending command header
 espcomm_send_command: sending command payload
 read 0, requested 1
trying to connect
 flush start
 setting serial port timeouts to 1 ms
 setting serial port timeouts to 1000 ms
 flush complete
 espcomm_send_command: sending command header
 wrote 0, requested 8
error: failed sending 8 bytes
 espcomm_send_command: sending command payload
 wrote 0, requested 36
error: failed sending 36 bytes
 wrote 0, requested 1
error: failed sending 0xC0
 read 0, requested 1
resetting board
trying to connect
 flush start
 setting serial port timeouts to 1 ms
 setting serial port timeouts to 1000 ms
 flush complete
 espcomm_send_command: sending command header
 espcomm_send_command: sending command payload
 read 0, requested 1
trying to connect
 flush start
 setting serial port timeouts to 1 ms
 setting serial port timeouts to 1000 ms
 flush complete
 espcomm_send_command: sending command header
 espcomm_send_command: sending command payload
 read 0, requested 1
trying to connect
 flush start
 setting serial port timeouts to 1 ms
 setting serial port timeouts to 1000 ms
 flush complete
 espcomm_send_command: sending command header
 wrote 0, requested 8
error: failed sending 8 bytes
 espcomm_send_command: sending command payload
 wrote 0, requested 36
error: failed sending 36 bytes
 wrote 0, requested 1
error: failed sending 0xC0
 read 0, requested 1
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

so let start from the beginning. the Zero has native USB port configured as Serial and UART configured Serial1. I expect that you connected the esp8266 module to Serial1. so to flash the esp8266 you would need a SerialPassthrough sketch in Zero.

what do you want to flash into esp8266. you don't want to use AT firmware?

and if you still want to use and flash the esp8266 with Zero, you can use EspProxy

Juraj:
so let start from the beginning. the Zero has native USB port configured as Serial and UART configured Serial1. I expect that you connected the esp8266 module to Serial1.

Half correct, I have the programming USB port configured as Serial. Using the Serial Monitor, I cannot get AT commands to work on the Native USB port, only on the Programming port.

Juraj:
what do you want to flash into esp8266. you don't want to use AT firmware?

I'm intending on flashing this, as I have no clue how I would do this through the AT stuff.

#include <ESP8266WiFi.h>
#include "Adafruit_MQTT.h"
#include "Adafruit_MQTT_Client.h"

#define WIFI_SSID "WirelessL"
#define WIFI_PASS "3038861117"

#define MQTT_SERV "io.adafruit.com"
#define MQTT_PORT 1883
#define MQTT_NAME "Java_SE_Binary"
#define MQTT_PASS "74ba791825fc48bfa7cdcd86c9b4c339"

WiFiClient client;
Adafruit_MQTT_Client mqtt(&client, MQTT_SERV, MQTT_PORT, MQTT_NAME, MQTT_PASS);

Adafruit_MQTT_Subscribe onoff = Adafruit_MQTT_Subscribe(&mqtt, MQTT_NAME "/f/onoff");

void setup()
{
  Serial.begin(115200);

  //Connect to WiFi
  Serial.print("\n\nConnecting Wifi... ");
  WiFi.begin(WIFI_SSID, WIFI_PASS);
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(500);
  }

  Serial.println("OK!");

  //Subscribe to the onoff topic
  mqtt.subscribe(&onoff);

  pinMode(LED_BUILTIN, OUTPUT);
}

void loop(){
  //Connect/Reconnect to MQTT
  MQTT_connect();

  //Read from our subscription queue until we run out, or
  //wait up to 5 seconds for subscription to update
  Adafruit_MQTT_Subscribe * subscription;
  while ((subscription = mqtt.readSubscription(5000)))
  {
    //If we're in here, a subscription updated...
    if (subscription == &onoff)
    {
      //Print the new value to the serial monitor
      Serial.print("onoff: ");
      Serial.println((char*) onoff.lastread);

      //If the new value is  "ON", turn the light on.
      //Otherwise, turn it off.
      if (!strcmp((char*) onoff.lastread, "ON"))
      {
        //active low logic
        digitalWrite(LED_BUILTIN, LOW);
      }
      else
      {
        digitalWrite(LED_BUILTIN, HIGH);
      }
    }
  }

  // ping the server to keep the mqtt connection alive
  if (!mqtt.ping()){    
    mqtt.disconnect(); 
  }
}

void MQTT_connect() 
{
  int8_t ret;
  // Stop if already connected
  if (mqtt.connected())
  {
    return;
  }

  Serial.print("Connecting to MQTT... ");
  uint8_t retries = 3;
  while ((ret = mqtt.connect()) != 0) // connect will return 0 for connected
  { 
    Serial.println(mqtt.connectErrorString(ret));
    Serial.println("Retrying MQTT connection in 5 seconds...");
    mqtt.disconnect();
    delay(5000);  // wait 5 seconds
    retries--;
    if (retries == 0) 
    {
      // basically die and wait for WDT to reset me
      while (1);
    }
  }
  Serial.println("MQTT Connected!");
}

Juraj:
and if you still want to use and flash the esp8266 with Zero, you can use EspProxy

I gave it a try, and got a nice, nasty error. Will make another reply because character limits.

Java_SE_Binary:
I gave it a try, and got a nice, nasty error. Will make another reply because character limits.

Arduino: 1.8.4 (Windows 10), Board: "Arduino/Genuino Zero (Native USB Port)"

Build options changed, rebuilding all
WARNING: library NeoSWSerial claims to run on (avr) architecture(s) and may be incompatible with your current board which runs on (samd) architecture(s).
C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:511:6: error: #error MCU not supported by NeoSWSerial!

     #error MCU not supported by NeoSWSerial!

      ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp: In member function 'void NeoSWSerial::listen()':

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:140:13: error: cannot convert 'volatile uint32_t* {aka volatile long unsigned int*}' to 'volatile uint8_t* {aka volatile unsigned char*}' in assignment

   rxPort    = portInputRegister( digitalPinToPort( rxPin ) );

             ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:143:13: error: cannot convert 'volatile uint32_t* {aka volatile long unsigned int*}' to 'volatile uint8_t* {aka volatile unsigned char*}' in assignment

   txPort    = portOutputRegister( digitalPinToPort( txPin ) );

             ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:155:7: error: 'TCCR2A' was not declared in this scope

       TCCR2A = 0x00;

       ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:156:7: error: 'TCCR2B' was not declared in this scope

       TCCR2B = 0x03;  // divide by 32

       ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:160:52: error: 'digitalPinToPCMSK' was not declared in this scope

   volatile uint8_t *pcmsk = digitalPinToPCMSK(rxPin);

                                                    ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:197:24: error: 'SREG' was not declared in this scope

     uint8_t prevSREG = SREG;

                        ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:198:9: error: 'cli' was not declared in this scope

     cli();

         ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:200:66: error: 'digitalPinToPCMSKbit' was not declared in this scope

       *pcmsk                    |= _BV(digitalPinToPCMSKbit(rxPin));

                                                                  ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:200:67: error: '_BV' was not declared in this scope

       *pcmsk                    |= _BV(digitalPinToPCMSKbit(rxPin));

                                                                   ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:201:31: error: 'digitalPinToPCICR' was not declared in this scope

       *digitalPinToPCICR(rxPin) |= _BV(digitalPinToPCICRbit(rxPin));

                               ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:201:66: error: 'digitalPinToPCICRbit' was not declared in this scope

       *digitalPinToPCICR(rxPin) |= _BV(digitalPinToPCICRbit(rxPin));

                                                                  ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp: In member function 'void NeoSWSerial::ignore()':

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:214:54: error: 'digitalPinToPCMSK' was not declared in this scope

     volatile uint8_t *pcmsk = digitalPinToPCMSK(rxPin);

                                                      ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:216:24: error: 'SREG' was not declared in this scope

     uint8_t prevSREG = SREG;

                        ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:217:9: error: 'cli' was not declared in this scope

     cli();

         ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:221:33: error: 'digitalPinToPCICR' was not declared in this scope

         *digitalPinToPCICR(rxPin) &= ~_BV(digitalPinToPCICRbit(rxPin));

                                 ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:221:69: error: 'digitalPinToPCICRbit' was not declared in this scope

         *digitalPinToPCICR(rxPin) &= ~_BV(digitalPinToPCICRbit(rxPin));

                                                                     ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:221:70: error: '_BV' was not declared in this scope

         *digitalPinToPCICR(rxPin) &= ~_BV(digitalPinToPCICRbit(rxPin));

                                                                      ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:222:50: error: 'digitalPinToPCMSKbit' was not declared in this scope

         *pcmsk &= ~_BV(digitalPinToPCMSKbit(rxPin));

                                                  ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp: In member function 'virtual int NeoSWSerial::available()':

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:257:9: error: 'cli' was not declared in this scope

     cli();

         ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:262:9: error: 'sei' was not declared in this scope

     sei();

         ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp: In member function 'void NeoSWSerial::attachInterrupt(NeoSWSerial::isr_t)':

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:285:21: error: 'SREG' was not declared in this scope

   uint8_t oldSREG = SREG;

                     ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:286:7: error: 'cli' was not declared in this scope

   cli();

       ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp: In static member function 'static void NeoSWSerial::rxISR(uint8_t)':

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:308:16: error: 'TCNTX' was not declared in this scope

   uint8_t t0 = TCNTX;            // time of data transition (plus ISR latency)

                ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp: In member function 'bool NeoSWSerial::checkRxTime()':

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:383:28: error: 'TCNTX' was not declared in this scope

       uint8_t  t0        = TCNTX; // now

                            ^

In file included from C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src/NeoSWSerial.h:4:0,

                 from C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:32:

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp: In member function 'virtual size_t NeoSWSerial::write(uint8_t)':

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:531:50: error: 'digitalPinToPCICRbit' was not declared in this scope

   uint8_t PCIbit = bit(digitalPinToPCICRbit(rxPin));

                                                  ^

C:\Users\Java\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.6.20\cores\arduino/Arduino.h:120:25: note: in definition of macro 'bit'

 #define bit(b) (1UL << (b))

                         ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:533:22: error: 'SREG' was not declared in this scope

   uint8_t prevSREG = SREG;

                      ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:534:7: error: 'cli' was not declared in this scope

   cli();        // send the character with interrupts disabled

       ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:536:18: error: 'TCNTX' was not declared in this scope

     uint8_t t0 = TCNTX; // start time

                  ^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:561:13: error: 'PCI_FLAG_REGISTER' was not declared in this scope

         if (PCI_FLAG_REGISTER & PCIbit) {

             ^

exit status 1
Error compiling for board Arduino/Genuino Zero (Native USB Port).

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Java_SE_Binary:

Arduino: 1.8.4 (Windows 10), Board: "Arduino/Genuino Zero (Native USB Port)"

Build options changed, rebuilding all
WARNING: library NeoSWSerial claims to run on (avr) architecture(s) and may be incompatible with your current board which runs on (samd) architecture(s).
C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:511:6: error: #error MCU not supported by NeoSWSerial!

#error MCU not supported by NeoSWSerial!

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp: In member function 'void NeoSWSerial::listen()':

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:140:13: error: cannot convert 'volatile uint32_t* {aka volatile long unsigned int*}' to 'volatile uint8_t* {aka volatile unsigned char*}' in assignment

rxPort    = portInputRegister( digitalPinToPort( rxPin ) );

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:143:13: error: cannot convert 'volatile uint32_t* {aka volatile long unsigned int*}' to 'volatile uint8_t* {aka volatile unsigned char*}' in assignment

txPort    = portOutputRegister( digitalPinToPort( txPin ) );

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:155:7: error: 'TCCR2A' was not declared in this scope

TCCR2A = 0x00;

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:156:7: error: 'TCCR2B' was not declared in this scope

TCCR2B = 0x03;  // divide by 32

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:160:52: error: 'digitalPinToPCMSK' was not declared in this scope

volatile uint8_t *pcmsk = digitalPinToPCMSK(rxPin);

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:197:24: error: 'SREG' was not declared in this scope

uint8_t prevSREG = SREG;

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:198:9: error: 'cli' was not declared in this scope

cli();

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:200:66: error: 'digitalPinToPCMSKbit' was not declared in this scope

*pcmsk                    |= _BV(digitalPinToPCMSKbit(rxPin));

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:200:67: error: '_BV' was not declared in this scope

*pcmsk                    |= _BV(digitalPinToPCMSKbit(rxPin));

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:201:31: error: 'digitalPinToPCICR' was not declared in this scope

*digitalPinToPCICR(rxPin) |= _BV(digitalPinToPCICRbit(rxPin));

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:201:66: error: 'digitalPinToPCICRbit' was not declared in this scope

*digitalPinToPCICR(rxPin) |= _BV(digitalPinToPCICRbit(rxPin));

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp: In member function 'void NeoSWSerial::ignore()':

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:214:54: error: 'digitalPinToPCMSK' was not declared in this scope

volatile uint8_t *pcmsk = digitalPinToPCMSK(rxPin);

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:216:24: error: 'SREG' was not declared in this scope

uint8_t prevSREG = SREG;

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:217:9: error: 'cli' was not declared in this scope

cli();

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:221:33: error: 'digitalPinToPCICR' was not declared in this scope

*digitalPinToPCICR(rxPin) &= ~_BV(digitalPinToPCICRbit(rxPin));

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:221:69: error: 'digitalPinToPCICRbit' was not declared in this scope

*digitalPinToPCICR(rxPin) &= ~_BV(digitalPinToPCICRbit(rxPin));

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:221:70: error: '_BV' was not declared in this scope

*digitalPinToPCICR(rxPin) &= ~_BV(digitalPinToPCICRbit(rxPin));

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:222:50: error: 'digitalPinToPCMSKbit' was not declared in this scope

*pcmsk &= ~_BV(digitalPinToPCMSKbit(rxPin));

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp: In member function 'virtual int NeoSWSerial::available()':

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:257:9: error: 'cli' was not declared in this scope

cli();

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:262:9: error: 'sei' was not declared in this scope

sei();

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp: In member function 'void NeoSWSerial::attachInterrupt(NeoSWSerial::isr_t)':

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:285:21: error: 'SREG' was not declared in this scope

uint8_t oldSREG = SREG;

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:286:7: error: 'cli' was not declared in this scope

cli();

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp: In static member function 'static void NeoSWSerial::rxISR(uint8_t)':

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:308:16: error: 'TCNTX' was not declared in this scope

uint8_t t0 = TCNTX;            // time of data transition (plus ISR latency)

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp: In member function 'bool NeoSWSerial::checkRxTime()':

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:383:28: error: 'TCNTX' was not declared in this scope

uint8_t  t0        = TCNTX; // now

^

In file included from C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src/NeoSWSerial.h:4:0,

from C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:32:

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp: In member function 'virtual size_t NeoSWSerial::write(uint8_t)':

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:531:50: error: 'digitalPinToPCICRbit' was not declared in this scope

uint8_t PCIbit = bit(digitalPinToPCICRbit(rxPin));

^

C:\Users\Java\AppData\Local\Arduino15\packages\arduino\hardware\samd\1.6.20\cores\arduino/Arduino.h:120:25: note: in definition of macro 'bit'

#define bit(b) (1UL << (b))

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:533:22: error: 'SREG' was not declared in this scope

uint8_t prevSREG = SREG;

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:534:7: error: 'cli' was not declared in this scope

cli();        // send the character with interrupts disabled

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:536:18: error: 'TCNTX' was not declared in this scope

uint8_t t0 = TCNTX; // start time

^

C:\Users\Java\Documents\Arduino\libraries\NeoSWSerial\src\NeoSWSerial.cpp:561:13: error: 'PCI_FLAG_REGISTER' was not declared in this scope

if (PCI_FLAG_REGISTER & PCIbit) {

^

exit status 1
Error compiling for board Arduino/Genuino Zero (Native USB Port).

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

are you a coder or a copy/paster? that sketch is for AVR, but it needs only small changes. you have hardware Serial1. remove the software serial part

Juraj:
are you a coder or a copy/paster? that sketch is for AVR, but it needs only small changes. you have hardware Serial1. remove the software serial part

Fixed and uploaded. ESP still is not responding to upload attempts.

did you tyr the Se

Java_SE_Binary:
Fixed and uploaded. ESP still is not responding to upload attempts.

is the esp8266 in flashing mode? (io 0 LOW at boot)

did you try SerialPassthrough sketch? (from basic examples)

Juraj:
did you tyr the Se
is the esp8266 in flashing mode? (io 0 LOW at boot)

did you try SerialPassthrough sketch? (from basic examples)

GPIO 0 is connected to the ground pin of my Arduino.

SerialPassthrough sketch with the baudrates changed to 115200 does not work.

so I have a MKR Zero and I flashed now the esp8266 over SerialPassthrough at first try. MKR Zero has only native USB port

When I try going through the Arduino Zero's Native USB port, I get this error message.

Arduino: 1.8.4 (Windows 10), Board: "Generic ESP8266 Module, 80 MHz, Flash, Enabled, ck, 26 MHz, 40MHz, DOUT, 1M (no SPIFFS), 2, v2 Lower Memory, Disabled, None, Only Sketch, 115200"

Archiving built core (caching) in: C:\Users\Java\AppData\Local\Temp\arduino_cache_52649\core\core_esp8266_esp8266_generic_xtal_80,vt_flash,exception_enabled,ResetMethod_ck,CrystalFreq_26,FlashFreq_40,FlashMode_dout,eesz_1M,led_2,ip_lm2f,dbg_Disabled,lvl_None____,wipe_none,baud_115200_159e75d41891d1e4fb711824f439b28b.a
Sketch uses 312176 bytes (30%) of program storage space. Maximum is 1023984 bytes.
Global variables use 28528 bytes (34%) of dynamic memory, leaving 53392 bytes for local variables. Maximum is 81920 bytes.
C:\Users\Java\AppData\Local\Arduino15\packages\esp8266\tools\esptool\2.5.0-3-20ed2b9/esptool.exe -vv -cd ck -cb 115200 -cp COM8 -ca 0x00000 -cf C:\Users\Java\AppData\Local\Temp\arduino_build_868622/MQTT.ino.bin 
esptool v0.4.13-1-gf80ae31 - (c) 2014 Ch. Klippel <ck@atelier-klippel.de>
	setting board to ck
	setting baudrate from 115200 to 115200
	setting port from COM1 to COM8
	setting address from 0x00000000 to 0x00000000
	espcomm_upload_file
	espcomm_upload_mem
	setting serial port timeouts to 1000 ms
opening bootloader
resetting board
trying to connect
	flush start
	setting serial port timeouts to 1 ms
	setting serial port timeouts to 1000 ms
	flush complete
	espcomm_send_command: sending command header
	wrote 0, requested 8
error: failed sending 8 bytes
	espcomm_send_command: sending command payload
	wrote 0, requested 36
error: failed sending 36 bytes
	wrote 0, requested 1
error: failed sending 0xC0
	read 0, requested 1
trying to connect
	flush start
	setting serial port timeouts to 1 ms
	setting serial port timeouts to 1000 ms
	flush complete
	wrote 0, requested 1
error: failed sending 0xC0
	espcomm_send_command: sending command header
	wrote 0, requested 8
error: failed sending 8 bytes
	espcomm_send_command: sending command payload
	wrote 0, requested 36
error: failed sending 36 bytes
	wrote 0, requested 1
error: failed sending 0xC0
	read 0, requested 1
trying to connect
	flush start
	setting serial port timeouts to 1 ms
	setting serial port timeouts to 1000 ms
	flush complete
	wrote 0, requested 1
error: failed sending 0xC0
	espcomm_send_command: sending command header
	wrote 0, requested 8
error: failed sending 8 bytes
	espcomm_send_command: sending command payload
	wrote 0, requested 36
error: failed sending 36 bytes
	wrote 0, requested 1
error: failed sending 0xC0
	read 0, requested 1
resetting board
trying to connect
	flush start
	setting serial port timeouts to 1 ms
	setting serial port timeouts to 1000 ms
	flush complete
	wrote 0, requested 1
error: failed sending 0xC0
	espcomm_send_command: sending command header
	wrote 0, requested 8
error: failed sending 8 bytes
	espcomm_send_command: sending command payload
	wrote 0, requested 36
error: failed sending 36 bytes
	wrote 0, requested 1
error: failed sending 0xC0
	read 0, requested 1
trying to connect
	flush start
	setting serial port timeouts to 1 ms
	setting serial port timeouts to 1000 ms
	flush complete
	wrote 0, requested 1
error: failed sending 0xC0
	espcomm_send_command: sending command header
	wrote 0, requested 8
error: failed sending 8 bytes
	espcomm_send_command: sending command payload
	wrote 0, requested 36
error: failed sending 36 bytes
	wrote 0, requested 1
error: failed sending 0xC0
	read 0, requested 1
trying to connect
	flush start
	setting serial port timeouts to 1 ms
	setting serial port timeouts to 1000 ms
	flush complete
	wrote 0, requested 1
error: failed sending 0xC0
	espcomm_send_command: sending command header
	wrote 0, requested 8
error: failed sending 8 bytes
	espcomm_send_command: sending command payload
	wrote 0, requested 36
error: failed sending 36 bytes
	wrote 0, requested 1
error: failed sending 0xC0
	read 0, requested 1
resetting board
trying to connect
	flush start
	setting serial port timeouts to 1 ms
	setting serial port timeouts to 1000 ms
	flush complete
	wrote 0, requested 1
error: failed sending 0xC0
	espcomm_send_command: sending command header
	wrote 0, requested 8
error: failed sending 8 bytes
	espcomm_send_command: sending command payload
	wrote 0, requested 36
error: failed sending 36 bytes
	wrote 0, requested 1
error: failed sending 0xC0
	read 0, requested 1
trying to connect
	flush start
	setting serial port timeouts to 1 ms
	setting serial port timeouts to 1000 ms
	flush complete
	wrote 0, requested 1
error: failed sending 0xC0
	espcomm_send_command: sending command header
	wrote 0, requested 8
error: failed sending 8 bytes
	espcomm_send_command: sending command payload
	wrote 0, requested 36
error: failed sending 36 bytes
	wrote 0, requested 1
error: failed sending 0xC0
	read 0, requested 1
trying to connect
	flush start
	setting serial port timeouts to 1 ms
	setting serial port timeouts to 1000 ms
	flush complete
	wrote 0, requested 1
error: failed sending 0xC0
	espcomm_send_command: sending command header
	wrote 0, requested 8
error: failed sending 8 bytes
	espcomm_send_command: sending command payload
	wrote 0, requested 36
error: failed sending 36 bytes
	wrote 0, requested 1
error: failed sending 0xC0
	read 0, requested 1
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

The current settings for upload are attached, as those are what the board reported when I called AT+RST. Not sure if I have them quite set correctly.

Capture.PNG