Arduino – die besten Beiträge

Fehlermeldung Esp8266 01?

Wenn ich versuche über Arduino das Programm auf die Esp zu spielen bekomme ich folgende Fehlermeldung: A fatal esptool.py error occured: Failed to Connect to ESP8266: Invalid Head of packen (0×72)

Hier ist der Code den ich benutze:

#define BLYNK_TEMPLATE_ID "steht drinne"

#define BLYNK_TEMPLATE_NAME "Bot1"

#include <Arduino.h>

#include <ESP8266WiFi.h>

#include <BlynkSimpleEsp8266.h>

#include "fauxmoESP.h"

#include <Servo.h>

// Dein Blynk-Auth-Code

char auth[] = "code steht drinne";

// Deine WLAN SSID und Passwort

char WIFI_SSID[] = "MagentaWLAN-43FZ";

char WIFI_PASS[] = "Passwort steht drinne";

// Initialisierung des Servo und fauxmoESP

Servo servo;

fauxmoESP fauxmo;

// Blynk-Steuerungslogik für virtuellen Pin V1

BLYNK_WRITE(V1) {

if (param.asInt() == 1) {

servo.write(0);

delay(500);

servo.write(70);

}

}

// Blynk-Steuerungslogik für virtuellen Pin V2

BLYNK_WRITE(V2) {

if (param.asInt() == 2) {

servo.write(70);

} else if (param.asInt() == 3) {

servo.write(0);

}

}

// WLAN-Verbindung einrichten

void wifiSetup() {

WiFi.mode(WIFI_STA);

WiFi.begin(WIFI_SSID, WIFI_PASS);

while (WiFi.status() != WL_CONNECTED) {

delay(100);

}

}

// Setup-Funktion, die einmal beim Start ausgeführt wird

void setup() {

servo.attach(0); // Servo an GPIO0 anschließen

Serial.begin(115200);

Blynk.begin(auth, WIFI_SSID, WIFI_PASS);

wifiSetup();

// fauxmoESP-Einstellungen

fauxmo.addDevice("Bot1");

fauxmo.setPort(80);

fauxmo.enable(true);

fauxmo.onSetState([](unsigned char device_id, const char * device_name, bool state, unsigned char value) {

if (state) {

servo.write(0);

} else {

servo.write(70);

}

});

}

// Loop-Funktion, die wiederholt ausgeführt wird

void loop() {

fauxmo.handle();

Blynk.run();

}

Bild zum Beitrag
Elektronik, Arduino, ESP8266

Arduino Uno Wifi Rev.2 verbindet sich nicht mit dem Internet?

Ich versuche meinen Arduino Uno Wifi Rev.2 mit dem WLAN zu verbinden. Der Code (Beispiel Code WiFi Nina ConnectWithWPA) lässt sich kompilieren und hochladen, keine Fehlermeldung. Alle "Werte" (Passwort, SSID) stimmen. Der Arduino hat die neuste Firmware. Wenn das Programm dann aber hochgeladen ist, entsteht eine Endlosschleife, in der der Arduino immer wieder "Attempting to connect to WPA SSID: XXXXXX" ausgibt, er sich aber nicht mit dem WLAN verbindet, da er sonst "You´re connected with the network" ausgeben würde.

Danke schonmal für eure Hilfe

Mein Code:
/*
 This example connects to an unencrypted WiFi network.
 Then it prints the MAC address of the WiFi module,
 the IP address obtained, and other network details.


 created 13 July 2010
 by dlf (Metodo2 srl)
 modified 31 May 2012
 by Tom Igoe
 */
#include <SPI.h>
#include <WiFiNINA.h>


#include "arduino_secrets.h" 
///////please enter your sensitive data in the Secret tab/arduino_secrets.h
char ssid[] = SECRET_SSID;        // your network SSID (name)
char pass[] = SECRET_PASS;    // your network password (use for WPA, or use as key for WEP)
int status = WL_IDLE_STATUS;     // the WiFi radio's status


void setup() {
  //Initialize serial and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  // check for the WiFi module:
  if (WiFi.status() == WL_NO_MODULE) {
    Serial.println("Communication with WiFi module failed!");
    // don't continue
    while (true);
  }


  String fv = WiFi.firmwareVersion();
  if (fv < WIFI_FIRMWARE_LATEST_VERSION) {
    Serial.println("Please upgrade the firmware");
  }


  // attempt to connect to WiFi network:
  while (status != WL_CONNECTED) {
    Serial.print("Attempting to connect to WPA SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network:
    status = WiFi.begin(ssid, pass);


    // wait 10 seconds for connection:
    delay(10000);
  }


  // you're connected now, so print out the data:
  Serial.print("You're connected to the network");
  printCurrentNet();
  printWifiData();


}


void loop() {
  // check the network connection once every 10 seconds:
  delay(10000);
  printCurrentNet();
}


void printWifiData() {
  // print your board's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);
  Serial.println(ip);


  // print your MAC address:
  byte mac[6];
  WiFi.macAddress(mac);
  Serial.print("MAC address: ");
  printMacAddress(mac);
}


void printCurrentNet() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());


  // print the MAC address of the router you're attached to:
  byte bssid[6];
  WiFi.BSSID(bssid);
  Serial.print("BSSID: ");
  printMacAddress(bssid);


  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.println(rssi);


  // print the encryption type:
  byte encryption = WiFi.encryptionType();
  Serial.print("Encryption Type:");
  Serial.println(encryption, HEX);
  Serial.println();
}


void printMacAddress(byte mac[]) {
  for (int i = 5; i >= 0; i--) {
    if (mac[i] < 16) {
      Serial.print("0");
    }
    Serial.print(mac[i], HEX);
    if (i > 0) {
      Serial.print(":");
    }
  }
  Serial.println();
}
WLAN, Arduino, C (Programmiersprache)

Arduino Code funktioniert nicht?

IRremote und JoyStick funktionieren nicht

#include <SPI.h> // Bibliothek für SPI-Kommunikation

#include <Mirf.h> // Bibliothek für nRF24L01

#include <nRF24L01.h> // Treiber für nRF24L01

#include <MirfHardwareSpiDriver.h> // Hardware-SPI-Treiber für Mirf

#include <IRremote.h> // Bibliothek für IR-Kommunikation

// Pin-Definitionen

int receiver = 4; // Pin für den IR-Empfänger

const int SW = 2; // Pin für den Schalter

const int X = A0; // Analog-Pin für X-Achse

const int Y = A1; // Analog-Pin für Y-Achse

// Initialisierung des IR-Empfängers

IRrecv irrecv(receiver);

IRsend results;

uint32_t last_decodedRawData = 0; // Variable zum Speichern des letzten IR-Codes

// Funktion zur Verarbeitung des empfangenen IR-Codes

void translateIR() {

 if (irrecv.decodedIRData.flags) {

  // Wenn ein Wiederholungscode empfangen wird, den letzten empfangenen Code verwenden

  irrecv.decodedIRData.decodedRawData = last_decodedRawData;

 } else {

  // Den empfangenen Code im seriellen Monitor ausgeben

  Serial.print("Empfangener IR-Code: 0x");

  Serial.println(irrecv.decodedIRData.decodedRawData, HEX);

 }

}

// Setup-Funktion, die einmal beim Starten des Programms ausgeführt wird

void setup() {

 Serial.begin(9600); // Startet die serielle Kommunikation mit 9600 Baud

 irrecv.enableIRIn(); // Aktiviert den IR-Empfänger

 pinMode(SW, INPUT); // Setzt den Schalter-Pin als Eingang

 digitalWrite(SW, HIGH); // Aktiviert den Pull-up-Widerstand für den Schalter

 Mirf.cePin = 9; // Setzt den Chip Enable (CE) Pin für den nRF24L01

 Mirf.csnPin = 10; // Setzt den Chip Select Not (CSN) Pin für den nRF24L01

 Mirf.spi = &MirfHardwareSpi; // Setzt den SPI-Treiber für Mirf

 Mirf.init(); // Initialisiert den nRF24L01

 Mirf.setRADDR((byte *)"Sen01"); // Setzt die Adresse des Senders

 Mirf.payload = sizeof(unsigned int); // Setzt die Payload-Größe auf die Größe eines unsigned int

 Mirf.channel = 3; // Setzt den Kommunikationskanal auf 3

 Mirf.config(); // Konfiguriert den nRF24L01

}

unsigned int adata = 0; // Variable zum Speichern der zu sendenden Daten

// Hauptschleife, die kontinuierlich ausgeführt wird

void loop() {

 // Überprüfen, ob ein IR-Signal empfangen wurde

 if (irrecv.decode()) {

  translateIR(); // Verarbeitung des empfangenen IR-Codes

  irrecv.resume(); // Bereit zum Empfang des nächsten IR-Codes

 }

 // Lesen des Schalter- und Analogwerte

 int swValue = digitalRead(SW); // Lesen des Schalterzustands

 int xValue = analogRead(X); // Lesen des X-Achsen-Werts

 int yValue = analogRead(Y); // Lesen des Y-Achsen-Werts

 // Überprüfen der empfangenen IR-Codes und Setzen von adata entsprechend

 if (last_decodedRawData == 0xAD52FF00) {

  adata = 12006;

 } else if (last_decodedRawData == 0xBF40FF00) {

  adata = 12005;

 } else if (last_decodedRawData == 0xBC43FF00) {

  adata = 12004;

 } else if (last_decodedRawData == 0xBB44FF00) {

  adata = 12003;

 }

 // Überprüfen des Schalterwerts und Setzen von adata

 if (swValue == 0) {

  adata = 2103;

 }

 // Überprüfen der Analogwerte und Setzen von adata

 if (yValue < 1024 && yValue > 6 && xValue > 150 && xValue < 800) {

  adata = 213;

 } else if (yValue < 512 && yValue > -1 && xValue > 200 && xValue < 700) {

  adata = 312;

 } else if (xValue < 509 && xValue > -1 && yValue > 200 && yValue < 750) {

  adata = 231;

 } else if (xValue < 1024 && xValue > 515 && yValue > 450 && yValue < 750) {

  adata = 321;

 } else if (xValue < 514 && xValue > 510 && yValue < 511 && yValue > 507) {

  adata = 123;

 }

 // Senden der Daten über Mirf, wenn adata gesetzt wurde

 if (adata != 0) {

  byte data[Mirf.payload]; // Array zum Speichern der zu sendenden Daten

  data[0] = adata & 0xFF; // Niedriges Byte von adata

  data[1] = adata >> 8; // Hohes Byte von adata

  Mirf.setTADDR((byte *)"Rec01"); // Setzt die Adresse des Empfängers

  Mirf.send(data); // Sendet die Daten

  while (Mirf.isSending()) {} // Warten, bis das Senden abgeschlossen ist

  delay(20); // Kurze Pause, um das Senden zu beenden

  adata = 0; // Zurücksetzen von adata nach dem Senden

 }

}

Arduino, Code, Programmiersprache, Arduino Uno, Arduino IDE

Wie integriert man einen externen Kabelanschluss beim PCB-Design?

Hallo, ich habe einen Schaltplan für ein Projekt entwickelt, bei dem vier Servos mittels zwei Schaltern, einem Reed-Sensor und einem Fotowiderstand angesteuert werden. Gesteuert wird dies über ein Arduino Nano. Ich möchte jetzt über EasyEDA eine PCB designen, aber die Servos sowie alle anderen Bauteile außer den Widerständen und dem Arduino Nano werden über an die Bauteile verlötete Kabel verbunden und nicht direkt auf der Platine montiert.

Da ich dies zum ersten Mal mache und nach Recherche keine Antwort gefunden habe, wollte ich wissen, wie ich diese "Löcher" in der Platine erzeuge, an denen ich die Kabel, also die Verlängerung der Bauteile, verlöten kann. Ich habe das in meiner Version jetzt mit dem Verbinder HDR-M-2.54_1x1 gelöst, weiß aber nicht, ob dies richtig ist. Ein Verbesserungsvorschlag wäre eine große Hilfe, und falls meine Version richtig ist, wäre das auch toll. Vielen Dank für alle Antworten :)

[Bilder durch Support aufgrund des erkennbaren Realnamens entfernt]

Code :#include <Servo.h>
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;


int pos = 0;
int sensorWert = 0;
int onTime = 200;
int offTime = 200;


int reedInPin = 7;
int eingang = A0;
int buttonPin1 = 2;
int buttonPin2 = 8;
int servoPin1 = 9;
int servoPin2 = 10;
int servoPin3 = 11;
int servoPin4 = 6;


void setup()
{
  	Serial.begin(9600);
 	servo1.attach(servoPin1);
 	servo2.attach(servoPin2);
 	servo3.attach(servoPin3);
    servo4.attach(servoPin4);
    pinMode(buttonPin1, INPUT_PULLUP);
    pinMode(buttonPin2, INPUT_PULLUP);
    pinMode(reedInPin, INPUT);
}


void loop()
{
    
  	sensorWert = analogRead(eingang);
	Serial.print("Sensorwert = " ); 
    Serial.println(sensorWert);
    int buttonState1 = digitalRead(buttonPin1);
    int buttonState2 = digitalRead(buttonPin2);
  
    if (buttonState1 == LOW) 
    {
      servo2.write(180);
     
    delay(15);
    }
  	if (sensorWert > 100)
    {
        servo1.write(180);
    }
  	if(digitalRead(reedInPin) == LOW)
    {
    	servo4.write(180);
        delay(onTime);
    }
    else
    {
    	delay(offTime);
    }
    if (buttonState2 == LOW)
    {
    	servo3.write(180);
    }
}
Bild zum Beitrag
Elektrik, Arduino, Schaltung

Meistgelesene Beiträge zum Thema Arduino