Arduino und ESP-01s Pins

Hallo,

ich habe ein kleines Verständnisproblem. Wenn ich das ESP-01s WLAN Modul an den Arduino über die Rx und Tx Pins anschließe, kann ich dann noch immer die Pins des Arduinos benützen?

Ich schicke nämlich erfolgreich Daten vom ESP-01s an eine auf Firebase angelegte Datenbank. Möchte ich allerdings im selben Sketch, eine einfache LED auf dem Pin 10, für eine Sekunde ein- und wieder ausschalten, so funktioniert das nicht.

Deswegen meine Frage, ob man im obigen Fall die Arduino Pins auch noch benützen kann.

Liebe Grüße

Was genau meinst du mit "ESP-01S" ?
Bitte die genaue Bezeichnung und einen Link posten.

Weiterhin fehlt die Information welchen Arduino du meinst und welche Pins du am Arduino angeschlossen hast.

Normal macht das mit dem Pin D10 kein Problem, wenn dieser Pin frei ist.

Edit:
Evtl. liegt der Fehler ja an deinem Sketch. Poste den auch mal.

Was genau meinst du mit "ESP-01S" ?

Da gibts nur eins!
ESP8266-01S

Ich habe ein kleines Verständnisproblem. Wenn ich das ESP-01s WLAN Modul an den Arduino über die Rx und Tx Pins anschließe, kann ich dann noch immer die Pins des Arduinos benützen?

Code geheim.
Schaltplan geheim.

Also: Untestbar!
Und keine Hilfe möglich.

Mein Rat:
Lass das mit der seriellen Schnittstelle.
Verwende besser I2C.
Den ESP als Master, den geheimen Arduino als Slave.

Deswegen meine Frage, ob man im obigen Fall die Arduino Pins auch noch benützen kann.

Natürlich kannst du die freien Pins nach belieben nutzen.
OK, du offensichtlich nicht, ich allerdings schon.
Warum du nicht? Da habe ich absolut keine Ahnung!

combie:
Da gibts nur eins!
ESP8266-01S

Hatte ich vermutet.
Nur wenn der TO das noch nicht einmal weiß, wie soll da etwas funktionierendes bei rum kommen.

HotSystems:
Nur wenn der TO das noch nicht einmal weiß, ...

Interessante Sicht...
Nur: Ich verstehe/teile sie nicht.

Hallo,

Mit dem ESP-01s meine ich das ESP-01s Board mit dem ESP8266 Mikroprozessor.
Datenblatt: http://www.microchip.ua/wireless/esp01.pdf

Als Arduino Board bediene ich mich am Arduino UNO.

Das Hochladen des Codes auf das WLAN Modul geht problemlos. Will ich allerdings den Besipeilsketch "Blink" auf den Arduino hochladen, so kommt folgende Fehlermeldung:
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x42

Sketch der auf den ESP-01s hochgeladen wird:

//
// Copyright 2015 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//

// FirebaseDemo_ESP8266 is a sample that demo the different functions
// of the FirebaseArduino API.

#include <ESP8266WiFi.h>
#include <FirebaseArduino.h>

// Set these to run example.
#define FIREBASE_HOST "xxx"
#define FIREBASE_AUTH "xxx"
#define WIFI_SSID "xxx"
#define WIFI_PASSWORD "xxx"

void setup() {
  Serial.begin(9600);
  pinMode(10, OUTPUT);
  // connect to wifi.
  WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
  Serial.print("connecting");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
  Serial.println();
  Serial.print("connected: ");
  Serial.println(WiFi.localIP());
  
  Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH);
}

int n = 0;

void loop() {
  // set value
  Firebase.setFloat("number", 42.0);
  // handle error
  if (Firebase.failed()) {
      Serial.print("setting /number failed:");
      Serial.println(Firebase.error());  
      return;
  }
  delay(1000);
  
  // update value
  Firebase.setFloat("number", 43.0);
  // handle error
  if (Firebase.failed()) {
      Serial.print("setting /number failed:");
      Serial.println(Firebase.error());  
      return;
  }
  delay(1000);

  // get value 
  Serial.print("number: ");
  Serial.println(Firebase.getFloat("number"));
  delay(1000);

  // remove value
  Firebase.remove("number");
  delay(1000);

  // set string value
  Firebase.setString("message", "hello world");
  // handle error
  if (Firebase.failed()) {
      Serial.print("setting /message failed:");
      Serial.println(Firebase.error());  
      return;
  }
  delay(1000);
  
  // set bool value
  Firebase.setBool("truth", false);
  // handle error
  if (Firebase.failed()) {
      Serial.print("setting /truth failed:");
      Serial.println(Firebase.error());  
      return;
  }
  delay(1000);

  // append a new value to /logs
  String name = Firebase.pushInt("logs", n++);
  // handle error
  if (Firebase.failed()) {
      Serial.print("pushing /logs failed:");
      Serial.println(Firebase.error());  
      return;
  }
  Serial.print("pushed: /logs/");
  Serial.println(name);
  delay(1000);

  digitalWrite(10, HIGH);
  delay(1000);
  digitalWrite(10,LOW);
  delay(1000);
}

Sketch der auf den Arduino hochgeladen wird:

/*
  Blink

  Turns an LED on for one second, then off for one second, repeatedly.

  Most Arduinos have an on-board LED you can control. On the UNO, MEGA and ZERO
  it is attached to digital pin 13, on MKR1000 on pin 6. LED_BUILTIN is set to
  the correct LED pin independent of which board is used.
  If you want to know what pin the on-board LED is connected to on your Arduino
  model, check the Technical Specs of your board at:
  https://www.arduino.cc/en/Main/Products

  modified 8 May 2014
  by Scott Fitzgerald
  modified 2 Sep 2016
  by Arturo Guadalupi
  modified 8 Sep 2016
  by Colby Newman

  This example code is in the public domain.

  http://www.arduino.cc/en/Tutorial/Blink
*/

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
}

Die Pinbelegungen sehen wie folgt aus:

ESP-01s / Arduino UNO

Vcc / 3,3V
GND / GND
GPIO0 / no connection (außer während dem Hochladen -> GPIO0 auf GND)
GPIO2 / no connection
CH_PD / 3,3V
Rx / Tx (beim Hochladen Rx / Rx)
Tx / Rx (beim Hochladen Tx / Tx)
Reset / no connection

zusätzliche Verkabelungen:

LED auf Pin 13

Das Problem liegt am belegten seriellen Port.
Du kannst nur auf den Uno hochladen, wenn der ESP nicht angeschlossen ist.

Und mach bitte immer komplette Angaben.

Ich kappe die Rx und Tx Verbindung während dem Hochladen.

Ich habe jetzt ein bisschen herumexperimentiert und habe es geschafft, dass die LED und das ESP gleichzeitig ihre Funktionen erfüllen.

Wieso es jetzt funktioniert und vorhin nicht kann ich leider nicht sagen. Ich werde morgen noch ein wenig experimentieren und den möglichen Fehler hier reinschreiben. Vielen Dank für die vielen Antworten und Hilfen.

Liebe Grüße und einen schönen Abend noch :slight_smile:

Diese Meldung

 stk500_getsync() attempt 10 of 10: not in sync: resp=0x4

deutet auf einen Fehler der seriellen Verbindung hin.
Was da genau das Problem ist, kannst nur du feststellen.