Zdalne sterowanie 433MHz na Arduino - prośba o pomoc

Projekty Arduino i pochodne
Awatar użytkownika
Krzysztof
Administrator
Posty: 2860
Rejestracja: 19 kwie 2016, 14:03
Lokalizacja: Darłowo
Kontaktowanie:

Zdalne sterowanie 433MHz na Arduino - prośba o pomoc

Postautor: Krzysztof » 19 lis 2016, 19:24

Bardzo proszę o pomoc w temacie zdalnego sterowania. Układ oparty o:
- 2x Arduino NANO
- nadajnik/odbiornik 433MHZ
- potencjometr
- servo
- 2x przycisk chwilowy
- 2x przekaźnik

Chciałbym mieć możliwość sterowania servem zdalnie za pomocą potencjometru a przyciski chwilowe by załączały przekaźniki. Po stronie podłączenia nie widzę problemu. Niestety, ale nie mogę namierzyć odpowiedniego wsadu do sterowania wszystkim :( Jedynie udało mi się znaleźć do sterowania servem za pomocą potencjometru.

Sprawa dla mnie dość pilna, więc jeśli jest ktoś chętny, to mogę zlecić i zapłacić za pracę.

TX

Kod: Zaznacz cały

//zoomkat multi pot/servo test 3-23-13
//includes dead band for testing and limit servo hunting
//view output using the serial monitor

#include <Servo.h>
Servo myservo1;  //declare servos
Servo myservo2;
Servo myservo3;
Servo myservo4;
Servo myservo5;

int potpin1 = 0;  //analog input pin A0
int potpin2 = 1;
int potpin3 = 2;
int potpin4 = 3;
int potpin5 = 4;

int newval1, oldval1;  //pot input values
int newval2, oldval2;
int newval3, oldval3;
int newval4, oldval4;
int newval5, oldval5;

void setup()
{
  Serial.begin(9600);
  myservo1.attach(2);
  myservo2.attach(3);
  myservo3.attach(4);
  myservo4.attach(5);
  myservo5.attach(6);
  Serial.println("testing multi pot servo");
}

void loop()
{
  newval1 = analogRead(potpin1);           
  newval1 = map(newval1, 0, 1023, 0, 179);
  if (newval1 < (oldval1-2) || newval1 > (oldval1+2)){ //dead band
    myservo1.write(newval1); //position the servo
    Serial.print(newval1); //print the new value for testing
    Serial.print("a,");
    oldval1=newval1; //set the current old value
  }

  newval2 = analogRead(potpin2);
  newval2 = map(newval2, 0, 1023, 0, 179);
  if (newval2 < (oldval2-2) || newval2 > (oldval2+2)){
    myservo2.write(newval2);
    Serial.print(newval2);
    Serial.print("b,");
    oldval2=newval2;
  }

  newval3 = analogRead(potpin3);           
  newval3 = map(newval3, 0, 1023, 0, 179);
  if (newval1 < (oldval3-2) || newval3 > (oldval3+2)){
    myservo3.write(newval3);
    Serial.print(newval3);
    Serial.print("c,");
    oldval3=newval3;
  }

  newval4 = analogRead(potpin4);           
  newval4 = map(newval4, 0, 1023, 0, 179);
  if (newval4 < (oldval4-2) || newval4 > (oldval4+2)){
    myservo1.write(newval4);
    Serial.print(newval4);
    Serial.print("d,");
    oldval4=newval4;
  }

  newval5 = analogRead(potpin5);           
  newval5 = map(newval5, 0, 1023, 0, 179);
  if (newval5 < (oldval5-2) || newval5 > (oldval5+2)){
    myservo5.write(newval5);
    Serial.print(newval5);
    Serial.print("e,");
    oldval5=newval5;
  }
  delay(50);  //to slow loop for testing, adjust as needed
}



RX

Kod: Zaznacz cały


//zoomkat 11-22-12 simple delimited ',' string parse
//from serial port input (via serial monitor)
//and print result out serial port
//multi servos added

String readString;
#include <Servo.h>
Servo myservoa, myservob, myservoc, myservod, myservoe;  // create servo object to control a servo

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

  //myservoa.writeMicroseconds(1500); //set initial servo position if desired

  myservoa.attach(6);  //the pin for the servoa control
  myservob.attach(7);  //the pin for the servob control
  myservoc.attach(8);  //the pin for the servoc control
  myservod.attach(9);  //the pin for the servod control
  myservod.attach(10);  //the pin for the servoe control
  Serial.println("multi-servo-delimit-test-dual-input-11-22-12"); // so I can keep track of what is loaded
}

void loop() {

  //expect single strings like 700a, or 1500c, or 2000d,
  //or like 30c, or 90a, or 180d,
  //or combined like 30c,180b,70a,120d,

  if (Serial.available())  {
    char c = Serial.read();  //gets one byte from serial buffer
    if (c == ',') {
      if (readString.length() >1) {
        Serial.println(readString); //prints string to serial port out

        int n = readString.toInt();  //convert readString into a number

        // auto select appropriate value, copied from someone elses code.
        if(n >= 500)
        {
          Serial.print("writing Microseconds: ");
          Serial.println(n);
          if(readString.indexOf('a') >0) myservoa.writeMicroseconds(n);
          if(readString.indexOf('b') >0) myservob.writeMicroseconds(n);
          if(readString.indexOf('c') >0) myservoc.writeMicroseconds(n);
          if(readString.indexOf('d') >0) myservod.writeMicroseconds(n);
          if(readString.indexOf('e') >0) myservoe.writeMicroseconds(n);
        }
        else
        {   
          Serial.print("writing Angle: ");
          Serial.println(n);
          if(readString.indexOf('a') >0) myservoa.write(n);
          if(readString.indexOf('b') >0) myservob.write(n);
          if(readString.indexOf('c') >0) myservoc.write(n);
          if(readString.indexOf('d') >0) myservod.write(n);
          if(readString.indexOf('e') >0) myservoe.write(n);
        }
         readString=""; //clears variable for new input
      }
    }
    else {     
      readString += c; //makes the string readString
    }
  }
}



Awatar użytkownika
Printed4U
Posty: 181
Rejestracja: 29 kwie 2016, 8:02
Lokalizacja: Wrocław
Kontaktowanie:

Re: Zdalne sterowanie 433MHz na Arduino - prośba o pomoc

Postautor: Printed4U » 19 lis 2016, 21:18

Tutaj masz przykład z potencjometrem, zostaje dopisanie tacoswitcha

Awatar użytkownika
Sławek
Posty: 437
Rejestracja: 15 maja 2016, 5:45
Kontaktowanie:

Re: Zdalne sterowanie 433MHz na Arduino - prośba o pomoc

Postautor: Sławek » 20 lis 2016, 4:28

Krzysiek, w kodzie nie ma zaimplementowanej transmisji danych po 433, jest tylko sterowanie komendami (znakami) poprzez serial monitor. Tu masz fajnie opisane jak przesyłać i odbierać dane i co potem z nimi zrobić https://majsterkowo.pl/jak-zaczac-z-rf/

Pozdr

Oskar
Posty: 337
Rejestracja: 19 kwie 2016, 17:26
Kontaktowanie:

Re: Zdalne sterowanie 433MHz na Arduino - prośba o pomoc

Postautor: Oskar » 20 lis 2016, 5:15

W akademi nettigo o ile dobrze pamiętam było dużo przykładów, nie jestem pewny ale coś podobnego chyba też. Jednak dla tego https://nettigo.pl/products/modul-nrf24l01-pa-lna-wiekszy-zasieg-lacznosci-bezprzewodowej-dla-arduino modułu, który mogę polecić. Jest też tańsza wersja z mniejszym zasięgiem.

Awatar użytkownika
Printed4U
Posty: 181
Rejestracja: 29 kwie 2016, 8:02
Lokalizacja: Wrocław
Kontaktowanie:

Re: Zdalne sterowanie 433MHz na Arduino - prośba o pomoc

Postautor: Printed4U » 20 lis 2016, 9:06

Sławek pisze:Krzysiek, w kodzie nie ma zaimplementowanej transmisji danych po 433, jest tylko sterowanie komendami (znakami) poprzez serial monitor. Tu masz fajnie opisane jak przesyłać i odbierać dane i co potem z nimi zrobić https://majsterkowo.pl/jak-zaczac-z-rf/

Pozdr


Nie wiem czy zauważyłeś wysłałeś ten sam link co ja. Na pewno nim chciałeś się podzielić ?:P

Awatar użytkownika
Artu
Posty: 1236
Rejestracja: 19 kwie 2016, 16:44
Lokalizacja: Winnica k/Pułtuska
Kontaktowanie:

Re: Zdalne sterowanie 433MHz na Arduino - prośba o pomoc

Postautor: Artu » 20 lis 2016, 9:11

Pewnie był jeszcze przed poranną kawą :lol:
autor: Sławek » 20 lis 2016, 5:28
Pozdrawiam, Artur
# Mendel90 - wreszcie drukuje tak jak ja chcę :OK: # Delta under construction... 8-)
Moje wypociny na Thingiverse :oops:

Awatar użytkownika
Krzysztof
Administrator
Posty: 2860
Rejestracja: 19 kwie 2016, 14:03
Lokalizacja: Darłowo
Kontaktowanie:

Re: Zdalne sterowanie 433MHz na Arduino - prośba o pomoc

Postautor: Krzysztof » 20 lis 2016, 12:04

Printed4U pisze:Tutaj masz przykład z potencjometrem, zostaje dopisanie tacoswitcha

No to "zostaje dopisanie" to niestety nie dla mnie, bo nie mam o tym pojęcia :( Może ktoś mi to ogarnąć?

Awatar użytkownika
Sławek
Posty: 437
Rejestracja: 15 maja 2016, 5:45
Kontaktowanie:

Re: Zdalne sterowanie 433MHz na Arduino - prośba o pomoc

Postautor: Sławek » 20 lis 2016, 21:09

Printed4U pisze:
Sławek pisze:Krzysiek, w kodzie nie ma zaimplementowanej transmisji danych po 433, jest tylko sterowanie komendami (znakami) poprzez serial monitor. Tu masz fajnie opisane jak przesyłać i odbierać dane i co potem z nimi zrobić https://majsterkowo.pl/jak-zaczac-z-rf/

Pozdr


Nie wiem czy zauważyłeś wysłałeś ten sam link co ja. Na pewno nim chciałeś się podzielić ?:P

Jakbyś zostawił czysty link a nie słowo "Tutaj" to bym pewnie nie wkleił bo widać adres ;)
Ale bardzo Cię przepraszam za to jak to dla Ciebie ważne ;)

Pozdr

Awatar użytkownika
Printed4U
Posty: 181
Rejestracja: 29 kwie 2016, 8:02
Lokalizacja: Wrocław
Kontaktowanie:

Re: Zdalne sterowanie 433MHz na Arduino - prośba o pomoc

Postautor: Printed4U » 20 lis 2016, 21:23

Sławek pisze:Jakbyś zostawił czysty link a nie słowo "Tutaj" to bym pewnie nie wkleił bo widać adres ;)
Ale bardzo Cię przepraszam za to jak to dla Ciebie ważne ;)

Pozdr


Nie rozumiem Twojego tonu, myślałem, że chciałeś wkleić inny link niż wkleiłeś bo może po prostu przeglądając artykuł, który udostępniłem skopiowałeś zły LINK. Ale ważniejsze jest dla mnie rozwiązanie problemu niż wywodzenie na temat jak powinienem udostępniać link dlatego kuniec OT.
Pzdr

Awatar użytkownika
Sławek
Posty: 437
Rejestracja: 15 maja 2016, 5:45
Kontaktowanie:

Re: Zdalne sterowanie 433MHz na Arduino - prośba o pomoc

Postautor: Sławek » 21 lis 2016, 5:06

Nie klikałem po prostu w twój link i dlatego wstawiłem , czy to tak trudno zrozumieć ? burza w szklance wody o nic ;) wiecej pożytku byłoby gdybys pomógł Krzyskowi napisać ten soft zamiast dyskutować o lnku :Piwo:

Pozdr


Wróć do „Arduino”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 5 gości