Weichen die Baud raten eigentlich ab?

Ich will dieses Servo Controller Modul ansprechen: https://de.aliexpress.com/item/Official-Smarian-Mini-USB-16-road-servo-controller-servo-control-board-USC-16-servo-drive/32796976115.html

allerdings funktioniert es mit Arduino nur mit 9600, aber nicht mit anderen Baud raten wie 19200 57600 115200, 128000.

Andere Baud raten gehen nur vom PC aus über USB.

Mein Arduino ist mit diesem Modul über RX und TX verbunden. Jetzt weiss ich nicht ob das an RX oder TX liegt, oder ob die automatische Erkennung von Baud raten einfach nicht funktioniert. Kann es sein dass die Baud raten von Arduino Nano stark abweichen?

Woran könnte es liegen?

Hi

Ok, für mich ist das Teil einfach nur eine weitere Arduino-Platine (also eine Platine, Die mit dem Zusatz 'Arduino' unters Volk gebracht wird).

Wenn Du Dokumentation zu dem Teil hast: her damit
Wenn nicht: weg damit (dem Teil)

Meine Glaskugel meint leise murmelnd auf dem Schreibtisch stehend, daß Du dem Modul gar nicht erzählst, daß Du jetzt mit einer anderen Baudrate kommunizieren willst und Dieses deshalb weiterhin mit 9600Baud Rede und Antwort steht.

R kommt übrigens von Receive (Empfangen)
T kommt von Transmit (Senden)

Somit ist auch klar, weshalb man diese Pinne über Kreuz anschließt - Da, wo der Arduino mit redet, muß da angeschlossen werden, wo der Slave zuhört - und umgekehrt.

MfG

Verwendest Du die in Software emulierte serielle Schnittstelle oder eine Hardwareschnittstelle des Arduino?

Die SW Schnittstelle kann im Empfang keine schnelleren Bautraten als 9600.

Grüße Uwe

Dass ich mal dem Uwe wiedersprechen werde... Unglaublich :wink:

Natürlich kann man SW Serial mangels buffer nicht unendlich schnell werden lassen. Es gehen aber durchaus Baudraten bis zu 57600.
Damit betreibe ich ein Bluetooth-Modul sehr verlässlich lesend und schreibend.

@Topic: Du schreibst von der "automatischen Erkennung". Wie sieht die denn aus?

Verstehe ich es richtig, Du kannst Deinen Servo direkt über den PC ansteuern und er erkennt die aktuell eingestellte Baudrate automatisch. Arduino an Servo klappt nur mit 9600?
Korrektes Zeilenendzeichen? Carriage return, Linefeed oder beides?
Der Arduino nutzt die Serielle Schnittstelle auch um programmiert zu werden. Daher reagiert dieser beim Start etwas anders als der PC. Würde mal mit SoftwareSerial testen ob das einen Unterschied macht. (Aber eben nicht höher als 57600 baud).

Soweit ich das erkennen kann, und viel sehe ich nicht, ist das kein weiterer Arduino Abklatsch. Auch wenn es von den Bauteilen keinen Unterschied machen muss.

Ein 32Bit µC -- den Type finde ich in keiner Beschreibung
512k Flash -- vermutlich der 8 beinige Käfer

Natives USB, virtuelle Serielle -- darum ist die Baudrate da auch egal
Natives UART, fest auf 9600 -- evlt einstellbar.

Auf dem Chip ist eine Firmware, welche per mir bisher unbekannten Protokoll über die seriellen Schnittstellen quatscht.
Zusätzlich kann die Firmware an 16 Beinchen zappeln um Servos zu bedienen.

Soweit zu den fast Fakten.....

Zur ursprünglichen Frage:

Woran könnte es liegen?

An der Firmware auf dem Board.
Andere Annahmen kann man getrost verwerfen.
(wenn ich mit dem anderen Quatsch recht habe)

Entweder kannst du die Baudrate über das bisher geheime Protokoll ändern, oder keine Chance.

Hallo, danke für die Antworten!

Also, ich habe jetzt mit SoftwareSerial probiert, auch hier funktioniert es nur mit 9600. Höher nicht.

Der Code sieht simpel so aus:

#include <SoftwareSerial.h>


SoftwareSerial mySerial(5, 6); 

void setup() {
  mySerial.begin(19200);
  delay(1000);
}

void loop() {
  mySerial.print("#1P500T2000\r\n");
    delay(1000);
  mySerial.print("#1P1500T2000\r\n");  
    delay(1000);
  mySerial.print("#1P2500T2000D1555\r\n");  
    delay(1000);
  mySerial.print("#1P1500T2000\r\n");
    delay(1000);
}

Mit 19200 geht es zum Beispiel nicht. Nur mit 9600.

Der Prozessor auf dem Servo Controller Board ist Stm32f103c8t6 48-pin

Mehr Informationen konnte ich nicht herausfinden.

Anleitungen habe ich nur das gefunden:
https://drive.google.com/file/d/0B-Vn6E73-uHxb1JRbVlHWWxRUGs/view

aus diesem Tutorial werde ich auch nicht schlau:
link

aber die weichen ein bisschen ab von dem Board was ich habe. Das Problem ist halt dass alles aus Fernost kommt, und die Kommunikation mit Chinesen schwierig ist.

Gäbe es vielleicht noch die Möglichkeit von Arduino Nano aus auf USB vom Servo Board anzusprechen?
Oder ist USB Protokoll zu kompliziert? (ich lese nur dass viele Leute auch mit Maus und Tastatur nicht hinbekommen)

forgoden:
Gäbe es vielleicht noch die Möglichkeit von Arduino Nano aus auf USB vom Servo Board anzusprechen?
Oder ist USB Protokoll zu kompliziert? (ich lese nur dass viele Leute auch mit Maus und Tastatur nicht hinbekommen)

USB geht nicht einfach.man braucht ein USB HOST und die dazugehörige Programmierung. Auch wenn man das bewerkstelligt hat fehlt immernoch das Datenprotokoll bzw Befehlsliste mit dem die Platine Befehle engegennimmt.

Frag mal den Verkäufer nach Informationen wie man die Platine über TTL anspricht.

Grüße Uwe

Okay, was Du uns noch nicht verraten hast ist, mit welcher Software Du den Servo direkt am PC betreibst.
Da kannst Du einfach im laufenden Betrieb die Baudrate ändern und der Servo erkennt das?

Das wäre für mich noch die letzte Information, um herauszufinden wo der Unterschied liegen mag.
Vielleicht gibt es ja noch ein paar Steuerbefehle (AT-) die Deine Software mitsendet.

[Uwe war schneller]
Vergiss das mal per USB. Einmal würdest Du einen USB-Master benötigen und keinen Slave. Sprich ein anderes Board. Letztendlich ist aber der USB nicht viel anderes als der Serielle-Anschluss. Er verwendet sogar die beiden Rx & Tx Pins. -> Vereinfacht ausgedrückt.

Die Tastatureingabe per Arduino (Leonardo) funktionieren dank eines anderen Protokolls (HID), welches dem Treiber auf dem PC sagt, dass eine Maus oder Tastatur angeschlossen sind. Dann werden Datenpakete erwartet, die einem bestimmten Format entsprechen. Das ist nicht der Droide, den Du suchst :wink:

Also, ich habe jetzt mit SoftwareSerial probiert, auch hier funktioniert es nur mit 9600. Höher nicht.
...
Mit 19200 geht es zum Beispiel nicht. Nur mit 9600.

Und ich habe dir gesagt, warum das so ist!

Durch Wiederholung des Problems kommst du nicht weiter, sondern blockierst eher die Lösungswege.

Ja das ist richtig. Ich kann mit der PC Software im laufenden Betrieb die Baudrate ändern und der Servo Controller reagiert darauf.

Also, es gibt aus dem asiatischen Raum mehrere verschiedene Software die aber alle ähnlich aussehen. Alle lassen sich mit diesem Modul oder mit anderen Servo controllern ansprechen. Die Befehle (protokoll) scheinen standardisiert zu sein. Man wählt Port und baudrate aus und dann auf "connecten". Das sieht man am besten in diesem Video uji test USB 32 channel servo controller board - YouTube auf der rechten Leiste.

oder screenshot:
Bild: link

Bild 2: link

Herunterladen kann man die Software z.B. von da: http://www.rtrobot.org/software/ (Servo Controller
3.2.8 ) da sind dann einige examples dazu, auch arduino code.

Das nützt una nichts. Du brauchst die Beschreibung wie Du die Steuerung am TTL Eingang machen kannst. Eine Software auf dem PC, die das macht, hilft hier gar nicht.

http://www.elabpeers.com/productattachments/index/download?id=101 auf der Seite https://www.elabpeers.com/32-channel-servo-controller.html
Im Dokument auf Seite 6 (Secondary devolopment) wird nur von 9600 Baud geredet.

Der COM Port der vom Treiber der USB Schnittstelle bereitgestellt wird kennt verschiedenen Baudraten aber das ist etwas total anderes als die TTL Schnittstelle.

Grüße Uwe

Da ist doch ein Manual bei..
/manual_english-V3.5.pdf

Das sagt ganz klar Check “Setting”->“Hardware”,
..
Uart Baud Rate: Set up P.5 ④ the location of the serial port baud rate.

Ich kann das nicht testen!

combie:
Da ist doch ein Manual bei..
/manual_english-V3.5.pdf
Ich kann das nicht testen!

Whow, jetzt funktionierts!, das war wohl der Knackpunkt. (ABER) Nur mit diesem Board funktioniert es wohl. Setting mit "baud rate" taucht erst dann auf, sobald ich mit diesem Board angeschlossen habe und auf "connected" geklickt habe. Mit dem 16ch Board den ich ursprünglich ansprechen wollte, erkennt die Software zwar nicht richtig, es kommt eine Meldung (You are not using USB line. The software use only a small number of features!) , man kann zwar über USB Servos steuern, aber es taucht keine Hardware-Setting auf.

Aber irgendwie bin ich jetzt auf der richtigen Spur. Oder ich benützt nur noch diese 32ch Servo board. kostet halt nur 17 euro. Sorry bin müde und gedanklich völlig in die Elektro und Codes verschwunden.

Grad eben habe ich den Voltage Regulator von 32ch board zerschossen. GND und 5V vertauscht an Arduino geschlossen. Argh ...

:o

combie:
Da ist doch ein Manual bei..
/manual_english-V3.5.pdf

Wo hast Du das Manual gefunden. Bitte Link
Uwe

Gerne doch!

forgoden:
Herunterladen kann man die Software z.B. von da: http://www.rtrobot.org/software/ (Servo Controller
3.2.8 ) da sind dann einige examples dazu, auch arduino code.

In der hier verlinkten Zip Datei.

Danke.