- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 12

Thema: Datenaustausch per I2C

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
    55
    Beiträge
    2.208

    Datenaustausch per I2C

    Hallöle.
    Angeregt durch eine Unterhaltung mit @inka hab ich meinem Freddie II mal einen Pi ZeroW spendiert.
    Für den möchte ich mir ein grafisches Interface bauen, damit ich Freddie per VNC fern steuern kann.

    Das Problem dabei: ausser meiner IR/Cut-Kamera hängt eigentlich nix wirklich am Pi, die gesamte Fahrwerkskontrolle macht ein Arduino Nano.
    Deshalb hab ich den Pi an I2C gehängt (mit Levelshifter natürlich), und das funktioniert auch. Ich kann das kleine Display, was Freddie auf dem Schutzblech hat, sowohl vom Nano, als auch vom Raspi aus füttern.
    Auch der verbaute Kompass wird problemlos vom Pi erkannt.

    Motorsteuerung, Hinderniserkennung (Freddie hat vier IR-Wand-Sensoren ringsum), Akkuüberwachung, Odometrie, an die ganzen Sachen kommt der Pi gar nicht ran.

    Der Plan ist, dass der Pi dem Nano sagt, was zu tun ist (in Form von "fahre mal 5m vor" oder "drehe um 30° nach rechts").
    Nebenbei sollte der Nano auch gelegentlich Daten zurücksenden, wie z.B. die Spannung des Akkus, oder eben einfach "ausgeführt".
    Ich frage mich gerade, wie man das sinnvoll umsetzen kann...so dass es später auch erweiterbar ist (ich hab nicht die geringste Ahnung, was ich mit Freddie in Zukunft vor habe).

    Es müssen ja vollkommen unterschiedliche Daten hin-und hergeschickt werden.
    Wie geht ihr bei sowas vor?
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    897
    Telegramme über I2C geht fast genau wie bei UART, wenn man die UART-typischen Fifos weiter verwendet. Das spart die bei I2C übliche Registeradressierung. Statt
    Slaveadresse, Registeradresse, Registerinhalt,...
    muss man dann nur noch
    Slaveadresse, Fifoinhalt,...
    schreiben. Beim Lesen geht's ebenso.

    Ich habe so was letztens für ATXMega und 1er Tiny-Controller gebaut. Wie immer der Hauptteil (teuflisches Gestocher) in der I2C-Hardware mit den ganzen I2C-Stati, aber im Ergebnis recht zufriedenstellend.

    Was man in die Fifos schreibt (Json, XML, Ascii oder binäre Strukturen), kann man sich ja selber erfinden.
    Ich schreibe mir in der Regel Strukturtypen, deren erstes Byte grundsätzlich eine CommandID als eindeutigen Identifier beinhalten. Das frisst nicht viel Platz.
    Geändert von Holomino (07.11.2021 um 12:45 Uhr)

  3. #3
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    30.12.2008
    Ort
    Essen
    Alter
    65
    Beiträge
    358
    Hallo !

    Das hört sich nach Multi Master Betrieb an.
    Ich habe das gleiche mal mit meinem Sensobot 3 versucht, mit 2 ATmega32 Boards. Ich muss sagen, ich bin kläglich gescheitert.
    Ich habe das Ganze aber auch mit Bascom AVR programmiert, hat aber nicht funktioniert. Vielleicht war ich aber auch zu blöd. bin ja nur Hobby Programmierer.
    Dann habe habe ich umgestellt auf Master - Slave Betrieb, was funktionierte.
    Da mein Problem aber immer nur der Speicherplatz war, habe ich einfach einen anderen Prozessor genommen. Den ATmega1284p.
    Den habe ich auch beim Sensobot4 genommen. Er fungiert auch hier als Master.
    Als Slave habe ich noch den SD 21 Servocontroller und den Evensense 6050 Gyro / Accelerometer dran. Also 1 Master, 2 Slave.
    Funktioniert tadellos. Ich schwöre auf Master / Slave Betrieb. Kann aber auch mit meinen eingeschränkten Programmierfähigkeite zu tun haben.

    MfG
    Robotik & Arduino Homepage
    http://www.ardumega.de

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    55
    Beiträge
    2.208
    Du hast recht- bei mir läuft es tatsächlich auf Multi-Master hinaus.
    Und teilweise (mehr hab ich schlichtweg noch nicht versucht, momentan frisst das grafische Interface meine Zeit) funktioniert es auch.

    Ich hab ein kleines OLED-Display drauf, was sowohl der Nano als auch der Pi beschreiben können.
    Das hatte ich zum testen versucht: klappt.
    Nötig ist das nicht, da der Pi ein grafisches Interface bekommt, auf das ich per VNC zugreifen kann.
    Inzwischen hab ich, zum testen, dem Nano auch mal ne feste Adresse verpasst, nun erkennt der Pi ihn, den Kompass, und das Display auch als I2C-Gerät.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Rabenauge
    Registriert seit
    13.10.2007
    Ort
    Osterzgebirge
    Alter
    55
    Beiträge
    2.208
    Es geht...noch etwas holprig (der Nano antwortet momentan auf alle Anfragen mit der Spannung des Akkus, der kanns schlichtweg noch nicht anders), aber der Wert hinter "Akku" kommt direkt vom Nano, der den Akku ab und zu prüft (ich glaube, alle 10 Sekunden).
    Die Anzeige ist das grafische Interface, was auf dem Pi läuft (ich hol mir das per VNC auf den Laptop, da am Pi gar kein Display dran ist, würde aber auch gehen).
    Klicke auf die Grafik für eine größere Ansicht

Name:	FreddieBordspannung.jpg
Hits:	11
Größe:	40,1 KB
ID:	35636

    Die Sache fängt an, mir zu gefallen.
    Grüssle, Sly
    ..dem Inschenör ist nix zu schwör..

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    30.12.2008
    Ort
    Essen
    Alter
    65
    Beiträge
    358
    Hallo !

    Hoert sich so an , als ob der Pi mit den Daten vom Nano noch nichts anfangen kann (zumindest alles was nach der Akku Spannung kommt).
    Oder der Pi weiss einfach noch nicht, was er mit den nachfolgenden Daten anfangen soll.

    Du bist auf einem guten Weg.
    Ich kenne das Problem!
    Es ist so, dass es nicht reicht, am Nano etwas umzuschreiben, du musst dann auch den Pi so umprogrammieren, das er mit den neuen Daten etwas anfangen kann.
    Multi Master ist eben kompliziert, aber ich wuerde mich freuen , wenn Du es hin bekommst.

    MfG
    Roland
    Robotik & Arduino Homepage
    http://www.ardumega.de

Ähnliche Themen

  1. Roboter Datenaustausch
    Von hammerle im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 4
    Letzter Beitrag: 27.04.2010, 19:12
  2. Datenaustausch PC
    Von Facharbeit im Forum Assembler-Programmierung
    Antworten: 12
    Letzter Beitrag: 22.10.2009, 17:25
  3. Datenaustausch mit Interrupts: volatile
    Von ikarus_177 im Forum C - Programmierung (GCC u.a.)
    Antworten: 8
    Letzter Beitrag: 06.07.2009, 21:25
  4. BTM222 Datenaustausch
    Von crusico im Forum C - Programmierung (GCC u.a.)
    Antworten: 4
    Letzter Beitrag: 30.11.2008, 08:33
  5. Datenaustausch
    Von martin66119 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 9
    Letzter Beitrag: 05.02.2007, 21:37

Berechtigungen

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

LiFePO4 Speicher Test