- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 566

Thema: outdoor I

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    steigungswinkel verdoppelt, also ca. 18°, die Stepper laufen bei beiden versuchen im halbschritt und mit einer verzögerung von 2ms zwischen HIGH und LOW...

    https://youtu.be/nPnKT4-R_8o

    es ist aber bei weitem nicht so aufregend, wie der "klatschi" vom Rumgucker, bei mir ist es egal, ob eine oma, ein auto oder ein hund vor die karre laufen, die kommen alle noch rechtzeitig weg
    Bei dem wackligen aufbau traue ich mich aber nicht die geschwindigkeit zu erhöhen, weil mir das dann vermutlich alles um die ohren fliegt...

    korrektur:
    ---------------------------------------------------------------------------------
    bei einer steigung von ca. 20°, im halbschritt und einem delay zwischen HIGH und LOW von 0.5ms, schafft er es auch und deutlich schneller:

    https://youtu.be/t8sk6ldp5fI
    Geändert von inka (17.11.2019 um 16:41 Uhr) Grund: 1ms geänder in 2ms, ergänzt um 0.5ms
    gruß inka

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Musst jetzt nur aufpassen, bei den Microschritten verlierst Du Drehmoment. Immer im Hinterkopf behalten.


    MfG

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    diesmal ohne video dafür mit dem letzten
    Code:
    //libraries
    #include <IRremoteInt.h>
    #include <ir_Lego_PF_BitStreamEncoder.h>
    #include <IRremote.h>
    #include <Bounce2.h>
    
    
    uint8_t RECV_PIN = 13;
    uint8_t taste = 0;
    uint8_t zaehler = 1;
    
    //resett pin definieren
    #define PIN2RESET 10
    
    
    // DIR und STEP pins definieren
    #define dirPin_VL 2
    #define stepPin_VL 3
    #define dirPin_HL 4
    #define stepPin_HL 5
    #define dirPin_VR 6
    #define stepPin_VR 7
    #define dirPin_HR 8
    #define stepPin_HR 9
    
    //enable pins definieren
    #define enbl_VL 40
    #define enbl_HL 42
    #define enbl_VR 41
    #define enbl_HR 43
    
    //steps pro umdrehung definieren:
    #define stepsPerRevolution 200
    
    //IR pin definieren
    IRrecv irrecv(RECV_PIN);
    
    decode_results results;
    
    // debouncer instanz definieren
    Bounce debouncer = Bounce();
    
    
    void setup()
    {
    
      //pins als output:
      pinMode(dirPin_VL, OUTPUT);
      pinMode(stepPin_VL, OUTPUT);
      pinMode(dirPin_HL, OUTPUT);
      pinMode(stepPin_HL, OUTPUT);
      pinMode(dirPin_VR, OUTPUT);
      pinMode(stepPin_VR, OUTPUT);
      pinMode(dirPin_HR, OUTPUT);
      pinMode(stepPin_HR, OUTPUT);
    
      Serial.begin(115200);
    
      //resett pin zustand definieren
      pinMode(PIN2RESET, INPUT);
    
      // IR empfänger pin mit bounce verbinden
      debouncer.attach(RECV_PIN);
    
      // debounce interval in ms
      debouncer.interval(5);
    
      // starte IR receiver
      irrecv.enableIRIn();
    
      //enable pins deaktivieren:
      digitalWrite(enbl_VL, HIGH);
      digitalWrite(enbl_HL, HIGH);
      digitalWrite(enbl_VR, HIGH);
      digitalWrite(enbl_HR, HIGH);
    
      //resett pin aktivieren
      digitalWrite(PIN2RESET, HIGH);
    }
    
    void loop()
    {
    /*
      // aktiviere enable pins:
      digitalWrite(enbl_VL, LOW);
      digitalWrite(enbl_HL, LOW);
      digitalWrite(enbl_VR, LOW);
      digitalWrite(enbl_HR, LOW);
    */
    
      // bounce instance updaten:
      debouncer.update();
    
      // neuen bounce wert holen :
      zaehler = debouncer.read();
    
      if (zaehler == 1)
      {
        zaehler = 0;
        //    taste = 0;
        if (irrecv.decode(&results))
        {
          taste = results.value;
          Serial.println(taste);
          //      delay(1000);
          // nächsten IR-wert empfangen
          irrecv.resume(); 
        }
    
      }
      tasten_abfrage();
    
    }
    
    
    /***********************************************************/
    
    void tasten_abfrage(void)
    {
      switch (taste)
      {
    
        case 151 ://taste 1 große FB
          {
            if (taste == 151 )
            {
              Serial.println("szenario_1");
              Serial1.println("szenario_1");
    
              //fahre szenario_1
    
              delay (1000);
    
              break;
            }
          }
    
        case 103://taste 2 große FB
          {
            if (taste == 103)
            {
              Serial.println("szenario_2");
              Serial1.println("szenario_2");
    
              //fahre szenario_2
    
              delay (1000);
    
              break;
            }
          }
    
        case 79://taste 3 große FB
          {
            if (taste == 79)
            {
              Serial.println("szenario_3");
              Serial1.println("szenario_3");
    
              //fahre szenario_3
    
              delay (1000);
    
              break;
            }
          }
    
    
        case 207://taste 4 große FB
          {
            if (taste == 207)
            {
              Serial.println("szenario_4");
              Serial1.println("szenario_4");
    
              //fahre szenario_4
    
              delay (1000);
    
              break;
            }
          }
    
    
        case 253://OK taste, motor stop
          {
            if (taste == 253)
            {
              alle_stepper_stop();
    
              break;
            }
          }
    
    
        case 61:// rotate rechts große FB
          {
            if (taste == 61)
            {
              rechts_drehen();
    
              break;
            }
          }
    
    
        case 221:// rotate links große FB
          {
            if (taste == 221)
            {
              links_drehen();
    
              break;
            }
    
          }
    
    
        case 157:// fahre vor große FB
          {
            if (taste == 157)
            {
              vorwaerts();
    
              break;
            }
          }
    
    
        case 87:// fahre rückwärts große FB
          {
            if (taste == 87)
            {
              rueckwaerts();
    
              break;
            }
          }
      }
    
    
    }
    
    
    /***********************************************************/
    void alle_stepper_stop(void)
    {
      //enable pins deaktivieren
      digitalWrite(enbl_VL, HIGH);
      digitalWrite(enbl_HL, HIGH);
      digitalWrite(enbl_VR, HIGH);
      digitalWrite(enbl_HR, HIGH);
      reboot();
    }
    
    /***********************************************************/
    void vorwaerts(void)
    {
    
      // enable pins aktivieren:
      digitalWrite(enbl_VL, LOW);
      digitalWrite(enbl_HL, LOW);
      digitalWrite(enbl_VR, LOW);
      digitalWrite(enbl_HR, LOW);
    
      //richtung bestimmen
      digitalWrite(dirPin_VL, LOW);
      digitalWrite(dirPin_HL, LOW);
      digitalWrite(dirPin_VR, HIGH);
      digitalWrite(dirPin_HR, HIGH);
    
      for (int i = 0; i < stepsPerRevolution; i++)
      {
        digitalWrite(stepPin_VL, HIGH);
        digitalWrite(stepPin_HL, HIGH);
        digitalWrite(stepPin_VR, HIGH);
        digitalWrite(stepPin_HR, HIGH);
        delayMicroseconds(250);
        digitalWrite(stepPin_VL, LOW);
        digitalWrite(stepPin_HL, LOW);
        digitalWrite(stepPin_VR, LOW);
        digitalWrite(stepPin_HR, LOW);
        delayMicroseconds(250);
      }
    }
    
    
    /**********************************************************/
    
    void rueckwaerts(void)
    {
    
      // enable pins aktivieren:
      digitalWrite(enbl_VL, LOW);
      digitalWrite(enbl_HL, LOW);
      digitalWrite(enbl_VR, LOW);
      digitalWrite(enbl_HR, LOW);
    
      //richtung bestimmen
      digitalWrite(dirPin_VL, HIGH);
      digitalWrite(dirPin_HL, HIGH);
      digitalWrite(dirPin_VR, LOW);
      digitalWrite(dirPin_HR, LOW);
    
      for (int i = 0; i < stepsPerRevolution; i++)
      {
        digitalWrite(stepPin_VL, HIGH);
        digitalWrite(stepPin_HL, HIGH);
        digitalWrite(stepPin_VR, HIGH);
        digitalWrite(stepPin_HR, HIGH);
        delayMicroseconds(500);
        digitalWrite(stepPin_VL, LOW);
        digitalWrite(stepPin_HL, LOW);
        digitalWrite(stepPin_VR, LOW);
        digitalWrite(stepPin_HR, LOW);
        delayMicroseconds(500);
      }
    }
    
    /***********************************************************/
    void rechts_drehen(void)
    {
    
      // enable pins aktivieren
      digitalWrite(enbl_VL, LOW);
      digitalWrite(enbl_HL, LOW);
      digitalWrite(enbl_VR, LOW);
      digitalWrite(enbl_HR, LOW);
    
      //richtung bestimmen
      digitalWrite(dirPin_VL, LOW);
      digitalWrite(dirPin_HL, LOW);
      digitalWrite(dirPin_VR, LOW);
      digitalWrite(dirPin_HR, LOW);
    
      for (int i = 0; i < stepsPerRevolution; i++)
      {
        digitalWrite(stepPin_VL, HIGH);
        digitalWrite(stepPin_HL, HIGH);
        digitalWrite(stepPin_VR, HIGH);
        digitalWrite(stepPin_HR, HIGH);
        delayMicroseconds(500);
        digitalWrite(stepPin_VL, LOW);
        digitalWrite(stepPin_HL, LOW);
        digitalWrite(stepPin_VR, LOW);
        digitalWrite(stepPin_HR, LOW);
        delayMicroseconds(500);
      }
    
    }
    
    
    /**********************************************************/
    void links_drehen(void)
    {
    
      //enable pins aktivieren
      digitalWrite(enbl_VL, LOW);
      digitalWrite(enbl_HL, LOW);
      digitalWrite(enbl_VR, LOW);
      digitalWrite(enbl_HR, LOW);
    
      //richtung bestimmen
      digitalWrite(dirPin_VL, HIGH);
      digitalWrite(dirPin_HL, HIGH);
      digitalWrite(dirPin_VR, HIGH);
      digitalWrite(dirPin_HR, HIGH);
    
      for (int i = 0; i < stepsPerRevolution; i++)
      {
        digitalWrite(stepPin_VL, HIGH);
        digitalWrite(stepPin_HL, HIGH);
        digitalWrite(stepPin_VR, HIGH);
        digitalWrite(stepPin_HR, HIGH);
        delayMicroseconds(500);
        digitalWrite(stepPin_VL, LOW);
        digitalWrite(stepPin_HL, LOW);
        digitalWrite(stepPin_VR, LOW);
        digitalWrite(stepPin_HR, LOW);
        delayMicroseconds(500);
      }
    
    }
    
    /***********************************************************/
    void reboot()
    {
      pinMode(PIN2RESET, OUTPUT);
      digitalWrite(PIN2RESET, LOW);
      delay(100);
    }
    /***********************************************************/
    
    /************************************************************/
    der letzter stand ist: halbschritt und 2,5ms zwischen HIGH und LOW, damit fährt er 1m in ca 2sekunden. Das reicht erstmal, würde ich sagen. Damit schafft er auch eine 20° steigung, mehr konnte ich innen nicht testen und mehr haben wir hier kaum an der Elbe, ausser in der Sächsischen Schweiz, und da ist es dann doch zu steil und sandig...

    Ich werde jetzt ein paar "szenarios" einprogrammieren und bei schönerem wetter ein paar bilder vom outdooreinsatz schicken....

    Die bedienung ist erstmal mit IR, das geht draussen natürlich nur schlecht. Der nächste schritt ist WiFi, sprich der ESP32 kommt zusätzlich rein, die komunikation über I2C mit dem 2560 als motorsteuerung muss noch entwickelt werden und die bedienung über WiFi über smartphone geschrieben werden....
    Dieser
    Code:
    // https://microcontrollerslab.com/esp32-web-server-arduino-led/#Displaying_HTML_web_server_with_ESP32
    
    #include <Arduino.h>
    #include <analogWrite.h>
    
    #include <WiFi.h>
    #include <WebServer.h>
    
    double velo = 0;
    
    const char* ssid = "ESP32-lok"; //PTCL-BB
    const char* password = "12345678";  //5387c614
    WiFiServer server(80);
    
    String header;
    
    String LED_ONE_STATE = "vorwaerts";
    String LED_TWO_STATE = "aus";
    String LED_THREE_STATE = " 0 ";
    String LED_FOUR_STATE = "aus";
    
    //String MOTOR_STATE = "off";
    //String DIRECTION_STATE = "off";
    
    const int GPIO_PIN_NUMBER_5 = 5;
    const int GPIO_PIN_NUMBER_18 = 18;
    const int GPIO_PIN_NUMBER_22 = 22;
    const int GPIO_PIN_NUMBER_19 = 19;
    
    //const int GPIO_PIN_NUMBER_9 = 9; //motor
    //const int GPIO_PIN_NUMBER_10 = 10;//direction
    
    
    IPAddress local_ip(192, 168, 1, 101);
    IPAddress gateway(192, 168, 1, 101);
    IPAddress subnet(255, 255, 255, 0);
    
    void setup() {
      Serial.begin(115200);
      Serial.print("code----ESP_32/pico_lok/HTTP_AP_server_motor_control_8_buttons_velo");
    
      pinMode(GPIO_PIN_NUMBER_5, OUTPUT);
      pinMode(GPIO_PIN_NUMBER_18, OUTPUT);
      pinMode(GPIO_PIN_NUMBER_22, OUTPUT);
      pinMode(GPIO_PIN_NUMBER_19, OUTPUT);
    
      //  pinMode(GPIO_PIN_NUMBER_9, OUTPUT);
      //  pinMode(GPIO_PIN_NUMBER_10, OUTPUT);
    
    
      digitalWrite(GPIO_PIN_NUMBER_5, LOW);
      digitalWrite(GPIO_PIN_NUMBER_18, LOW);
      digitalWrite(GPIO_PIN_NUMBER_22, LOW);
      digitalWrite(GPIO_PIN_NUMBER_19, LOW);
    
      //  digitalWrite(GPIO_PIN_NUMBER_9, LOW);
      //  digitalWrite(GPIO_PIN_NUMBER_10, LOW);
    
    
      Serial.print("Connecting to ");
      Serial.println(ssid);
    
      //  WiFi.begin(WIFI_NAME, WIFI_PASSWORD);
    
      WiFi.softAP(ssid, password);
      WiFi.softAPConfig(local_ip, gateway, subnet);
    
      /*
        while (WiFi.status() != WL_CONNECTED)
        {
        delay(1000);
        Serial.println("Trying to connect to Wifi Network");
        }
      */
      Serial.println("");
      Serial.println("Successfully connected to WiFi network");
      Serial.println("IP address: ");
      Serial.println(WiFi.localIP());
      server.begin();
    }
    
    void loop() {
      WiFiClient client = server.available();
      if (client)
      {
        Serial.println("New Client is requesting web page");
        String current_data_line = "";
        while (client.connected())
        {
          if (client.available())
          {
            char new_byte = client.read();
            Serial.write(new_byte);
            header += new_byte;
            if (new_byte == '\n')
            {
    
              if (current_data_line.length() == 0)
              {
    
                client.println("HTTP/1.1 200 OK");
                client.println("Content-type:text/html");
                client.println("Connection: close");
                client.println();
                
    // lok vorwärts/rückwärts
                if (header.indexOf("LED1=ON") != -1)
                {
                  Serial.println("GPIO5 LED is ON");
                  LED_ONE_STATE = "vorwaerts";
                  digitalWrite(GPIO_PIN_NUMBER_5, HIGH);
                }
                if (header.indexOf("LED1=OFF") != -1)
                {
                  Serial.println("GPIO5 LED is OFF");
                  LED_ONE_STATE = "rueckwaerts";
                  digitalWrite(GPIO_PIN_NUMBER_5, LOW);
                }
    // lok an/aus
                if (header.indexOf("LED2=ON") != -1)
                {
                  Serial.println("GPIO18 LED is ON");
                  LED_TWO_STATE = "an";
                  analogWrite(GPIO_PIN_NUMBER_18, velo); //HIGH);
                }
                if (header.indexOf("LED2=OFF") != -1)
                {
                  Serial.println("GPIO18 LED is OFF");
                  LED_TWO_STATE = "aus";
                  analogWrite(GPIO_PIN_NUMBER_18, LOW);
                }
    //lok schneller/langsammer
                if (header.indexOf("LED3=ON") != -1)
                {
                  Serial.println("GPIO22 LED is ON");
                  velo = velo + 5;
                  LED_THREE_STATE = velo; //"on";
                  //analogWrite(GPIO_PIN_NUMBER_22, velo);//HIGH
                }
                if (header.indexOf("LED3=OFF") != -1)
                {
                  Serial.println("GPIO22 LED is OFF");
                  velo = velo - 5;
                  LED_THREE_STATE = velo; //"off";
                  //analogWrite(GPIO_PIN_NUMBER_22, velo); //LOW
                }
    
                if (header.indexOf("LED4=ON") != -1)
                {
                  Serial.println("GPIO19 LED is ON");
                  LED_FOUR_STATE = "an";
                  digitalWrite(GPIO_PIN_NUMBER_19, HIGH);
                }
                if (header.indexOf("LED4=OFF") != -1)
                {
                  Serial.println("GPIO19 LED is OFF");
                  LED_FOUR_STATE = "aus";
                  digitalWrite(GPIO_PIN_NUMBER_19, LOW);
                }
    
                client.println("<!DOCTYPE html><html>");
                client.println("<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">");
                client.println("<link rel=\"icon\" href=\"data:,\">");
                client.println("<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}");
                client.println(".button { background-color: #4CAF50; border: 2px solid #4CAF50;; color: white; padding: 15px 32px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px; margin: 1px 1px; cursor: pointer; }");
                client.println("text-decoration: none; font-size: 30px; margin: 2px; cursor: pointer;}");
                // Web Page Heading
                client.println("</style></head>");
                //client.println("<body><center><h1>ESP32 Web server LED controlling example</h1></center>");
                //client.println("<center><h2>Web Server Example Microcontrollerslab.com</h2></center>" );
                //client.println("<center><h2>Press on button to turn on led and off button to turn off LED</h3></center>");
                client.println("<form><center>");
    
                client.println("<p> richtung ist " + LED_ONE_STATE + "</p>");
                client.println("<button class=\"button\" name=\"LED1\" value=\"ON\" type=\"submit\">VORW</button>") ;
                client.println("<button class=\"button\" name=\"LED1\" value=\"OFF\" type=\"submit\">RUECKW</button></center>");
    
                client.println("<p>motor ist " + LED_TWO_STATE + "</p>");
                client.println("<button class=\"button\" name=\"LED2\" value=\"ON\" type=\"submit\">AN</button>");
                client.println("<button class=\"button\" name=\"LED2\" value=\"OFF\" type=\"submit\">AUS</button></center>");
    
                client.println("<p>geschwindigkeit ist " + LED_THREE_STATE + "</p>");
                client.println("<button class=\"button\" name=\"LED3\" value=\"ON\" type=\"submit\">SCHNELLER</button>");
                client.println("<button class=\"button\" name=\"LED3\" value=\"OFF\" type=\"submit\">LANGSAMMER</button></center>");
    
                client.println("<p>kamera ist " + LED_FOUR_STATE + "</p>");
                client.println("<button class=\"button\" name=\"LED4\" value=\"ON\" type=\"submit\">AN</button>");
                client.println("<button class=\"button\" name=\"LED4\" value=\"OFF\" type=\"submit\">AUS</button></center>");
    
    
                client.println("</center></form></body></html>");
                client.println();
                break;
              }
              else
              {
                current_data_line = "";
              }
            }
            else if (new_byte != '\r')
            {
              current_data_line += new_byte;
            }
          }
        }
        // Clear the header variable
        header = "";
        // Close the connection
        client.stop();
        Serial.println("Client disconnected.");
        Serial.println("");
      }
    }
    sollte umgeschrieben werde, war ursprünglich für die autonome TT - lok geschrieben, bzw. abgewandelt worden...
    gruß inka

Ähnliche Themen

  1. Abstandsmessung Outdoor bis 3m
    Von robo218 im Forum Sensoren / Sensorik
    Antworten: 4
    Letzter Beitrag: 14.12.2017, 06:56
  2. outdoor spy robot
    Von jancrombach im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 7
    Letzter Beitrag: 14.08.2010, 13:09
  3. Outdoor Roboter
    Von OsramLED im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 3
    Letzter Beitrag: 07.08.2006, 09:34
  4. Outdoor-Robo
    Von RobotrixerP im Forum Mechanik
    Antworten: 3
    Letzter Beitrag: 16.04.2006, 18:38
  5. [ERLEDIGT] Outdoor - Navigation
    Von Quaio im Forum Sensoren / Sensorik
    Antworten: 37
    Letzter Beitrag: 21.04.2005, 12:31

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

fchao-Sinus-Wechselrichter AliExpress