- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 10 von 59

Thema: Universelle Fernsteuerung mit Bluetooth

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.213
    Ein bisschen hab ich mal weiter codiert:
    Es werden jetzt alle Werte tatsächlich auch per BT gesendet, in der Form:
    lX128-> X-Achse links hat den Wert 128.
    Auf die Weise geht das mit relativ wenigen Daten von statten-es werden _nur_ Änderungen gesendet.
    Wenn man nix tut, dann nicht....
    Die Auswertung auf der Gegenseite steht noch aus....ich denke aber, sehr schwierig wird das nicht.

    Inzwischen merkt die Fernsteuerung auch, wenn sie sich mit irgendwem verbinden konnte (so lange sie das nicht hat, gibts ne Art "Fortschrittsbalken" im Display.
    Ermittelt wird das über den STATE-Pin des HC-Moduls.

    Das Nächste wird jetzt sein, dass sie, nach erfolgter Koppelung, die Gegenstelle fragt "wer bist du"- ich möchte den Namen des verbundenen Roboters dann im Display stehn haben.
    Dazu brauch ich dann aber auch für den "Roboter" erst mal ein Software- Grundgerüst- momentan besteht der lediglich aus nem, neben das Steckbrett gespaxten Uno und einem weiteren HC 05-Modul, was lediglich per AT-Befehle passend konfiguriert ist.

    Verbinden klappt-aber mehr kann das noch gar nich...allerdings hab ich die Tage schonmal einen kleinen Parser gebastelt, der Kommandos, die von der seriellen Schnittstelle kommen, auswertet-der muss aber noch aufgebohrt werden, um z.B. die Zahlen aus den eintreffenden Strings extrahieren zu können.

    So nebenbei steigen meine Skills im RAM-Sparen, hehe: um diesen Fortschritts-Balken realisieren zu können (es werden einfach 1,2,3,4 Sternchen gezeichnet, und dann fängts von vorne an), brauchte ich ne Variable als Zähler-da hab ich kurzerhand eine der globalen, die an _dieser_ Stelle nicht gebraucht wird, mal eben ausgeliehen.
    Somit _kein_ zusätzlicher Speicherverbrauch *freu
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  2. #2
    HaWe
    Gast
    Zitat Zitat von Rabenauge Beitrag anzeigen
    Ein bisschen hab ich mal weiter codiert:
    Es werden jetzt alle Werte tatsächlich auch per BT gesendet, in der Form:
    lX128-> X-Achse links hat den Wert 128.
    Auf die Weise geht das mit relativ wenigen Daten von statten-es werden _nur_ Änderungen gesendet.
    Wenn man nix tut, dann nicht....
    Die Auswertung auf der Gegenseite steht noch aus....ich denke aber, sehr schwierig wird das nicht.
    hallo,
    ich halte das für u.U. bedenklich bzw. gefährlich:
    Folgender Fall:
    wert lX128 gesendet und empfangen => alles ok, Empfänger führt entspr. Befehl aus (z.B. Motor links auf pwm128 )
    danach
    wert lX0 gesendet aber wegen Unterbrechung oder Block (Serial stream/buffer hardware/software sync/async wire/wireless) nicht empfangen => Empfänger führt immer noch entspr. alten Befehl aus (Motor links auf pwm128 statt 0), da sich für ihn nichts geändert hat.

    Ganz abgesehen davon ist es ebenfalls denkbar, dass einzelne Bytes (l,X,1,2,8 ) durch Datenkorruption falsch übertragen bzw. empfangen werden - wie prüfst du auf Datenintegrität und korrekten Empfang? z.B.
    wert lX128 gesendet aber wegen Datenkorruption falsch empfangen => Empfänger liest lY128 (anderer Motor auf pwm128 ) oder noch was ganz anderes
    (edit: das müsste dann auf heartbeat und timeouts gecheckt und nach Rückmeldung auf Richtigkeit und Vollständigkeit überprüft werden; weitere Stichworte sind message-Startsignal, Ende-Signal, msg-Länge, checksum)
    Geändert von HaWe (15.04.2020 um 12:24 Uhr)

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.654
    Zur Not kann er noch ein Paritätsbit mitsenden und auf der Gegenseite prüfen. Sehr genau beschrieben ist das hier: https://de.wikipedia.org/wiki/Parit%C3%A4tsbit
    Eventuell kann das einfach so umgesetzt werden, dass man nur halbe Wertebereiche überträgt und das höchstwertige Bit als Paritätsbit verwendet.
    Sollte kein Problem sein.


    MfG

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    56
    Beiträge
    2.213
    Heartbeat ist schon vorbereitet.
    Ich habe schon einen Timer drin, der alle halbe Sekunde einen Tick erzeugt (den setze ich wahrscheinlich noch deutlich runter, in der Zeit), denn es stimmt: wenn das Stop-Signal nicht ankommt, fährt er endlos weiter.
    Die HC 05 merken auch erst nach ungefähr zehn Sekunden, wenn die Verbindung weg ist-> zu lange.
    Ich will also (wie gesagt, vermutlich wirds am Ende mindestens viermal pro Sekunde passieren) ein "alive" senden, und wenn das, sagen wir, zweimal, nicht kommt, weiss der Empfänger, dass da was faul ist, und kann sein fail-save aktivieren.

    Auch richtig: gegen verstümmelte Signale hab ich noch nix...hat aber nicht das BT-Protokoll da sowieso was eingebaut?

    Aber gut, dass der Einwand kam, ich werd das beim ausprobieren (vorerst sowieso nur trocken, mit dem UNO als Prügelknaben) mal im Auge behalten.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  5. #5
    HaWe
    Gast
    der Fehler kann v.a. in der verkabelten Serial TX/RX-Kette vorkommen, also außerhalb von BT.
    Meine Serial messages (hin/zurück) laufen immer per handshake, bei dem die Fernsteuerung und das Mobil msgs wechselweise in der Art versenden:

    0 0xff Start
    1 msg_len // (<=255)
    2 timer-byte für heartbeat (in 100ms), auch für timeout
    3 uint8_t(chksum) // summe über alle Datenbytes, die ab hier folgen, davon das low byte
    4 ack
    5 daten
    6 daten
    7 daten
    8 daten
    ...
    0xfe Ende

    so kann gecheckt werden, ob
    - alle bytes gelesen wurden (Anzahl inkl. Start und Ende)
    - ob dabei auch alle Einzel-Bytes korrekt sind über chksum (nur geringe Fehlerwahrschl. bei weggelassenem chksum- highbyte)
    - ob timeout und heartbeat im Rahmen sind
    - ob die zuletzt empfangene Nachricht korrekt war

    nach dem Senden wartet die Fernsteuerung, ob alle 4 checks korrekt waren beim Empfänger (Senden von ack plus Werte des Mobils an Fernsteuerung) - dann wartet wieder das Mobil, bis die Fernsteuerung neue Daten sendet.

    PS
    auch hier müsste evt. besser sichergestellt werden, dass immer alles gesendet wird, nicht nur bei Änderung eines Wertes.
    Ändert sich nämlich ein Wert sehr schnell (255-->0), kann es sein, dass der Empfänger nur eine msg mit einem Zwischenwert liest (z.B. 50), aber die 0 verpasst: trotzdem wird er die chksum etc. als korrekt prüfen (auf 50) ohne wegen der Zeitverzögerung jemals die 0 in der Folge-Message zu bekommen, und der Sender kann u.U. der Meinung sein, er hätte die letzte Änderung schon gesendet und sendet die 0 nicht nochmal: also macht das Mobil mit Wert 50 weiter, nicht mit 0.
    Geändert von HaWe (15.04.2020 um 21:52 Uhr) Grund: typo

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    14.12.2010
    Ort
    NRW
    Beiträge
    223
    hi rabenauge,

    bin ich letztens drüber gestolpert, vielleicht gibt Dir das noch die eine oder andere Anregung für Dein Project.

    https://howtomechatronics.com/projec...c-transmitter/
    cYa pig

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von inka
    Registriert seit
    29.10.2006
    Ort
    nahe Dresden
    Alter
    77
    Beiträge
    2.180
    als ich mir die webseite angeschaut habe, war meine erste reaktion - ob Rabenauge weitermacht? Machst Du?

    wäre schade drum, finde ich...

    Die gleiche frage stellte ich mir meines outdoors wegen auch. Eigentlich ist ja alles schon da - und viel schöner. Weiter gehts hier

    - - - Aktualisiert - - -

    @rabenauge:

    könntes du dir vorstellen die leiterplatte um den anschluss für ein HC05 modul zu ergänzen und dort zu bestellen? Wäre sofort dabei!
    gruß inka

Ähnliche Themen

  1. Der universelle IR Fernbedienungs-Empfänger
    Von for_ro im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 34
    Letzter Beitrag: 30.08.2015, 10:18
  2. Universelle Fernbedienung über Bluetooth
    Von Trabukh im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 2
    Letzter Beitrag: 05.01.2013, 20:58
  3. Universelle 16-bit-USB-Messbox
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 1
    Letzter Beitrag: 11.10.2012, 15:57
  4. UNITALK, Die universelle Sprachausgabe
    Von gpsklaus im Forum Eigene fertige Schaltungen und Bauanleitungen
    Antworten: 38
    Letzter Beitrag: 25.11.2006, 19:56
  5. Universelle LCD-Routine für AVR
    Von skyrider im Forum AVR Hardwarethemen
    Antworten: 10
    Letzter Beitrag: 22.05.2005, 15:05

Berechtigungen

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

Labornetzteil AliExpress