- 3D-Druck Einstieg und Tipps         
Seite 6 von 18 ErsteErste ... 4567816 ... LetzteLetzte
Ergebnis 51 bis 60 von 175

Thema: Raspberry Pi: ARM/Linux-Computer für 28 Euro

  1. #51
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Du brauchst für I²C nichtmal einen Pegelwandler. Wenn dein Pi mit 3,3V läuft und z.B. dein Atmel mit 5V erkennt der Atmel 3,3V I²C Pegel auch noch korrekt, sprich du legst die Spannung des I²C direkt auf 3,3V.
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  2. #52
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    So ich habe heute eine E-Mai lvon RS bekommen das ich mein Raspberry bestellen kann. Sprich ich habe Ende nächsten Monats ganz wahrscheinlich einen Code von Farnell den ich abgeben könnte.
    Geändert von Kampi (28.05.2012 um 18:46 Uhr)
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  3. #53
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    30
    Beiträge
    449
    Hab den Raspberry Pi inzwischen erfolgreich mit dem RP6 verheiratet, d.h. I²C haut einwandfrei. Als Pegelwandlung hab ich folgendes benutzt:
    Klicke auf die Grafik für eine größere Ansicht

Name:	frage.png
Hits:	159
Größe:	2,2 KB
ID:	22482
    (R2 und R3 kann man weglassen, weil die beim RP6 und Raspi schon eingebaut sind. Macht also alles zusammen (SDA+SCL) 2Rs und 2Transistoren)

    Hab in C ein paar kleine Programme geschrieben, die jeweils einen Befehl (forwärts/links/rechts/...) via I²C senden. Man kann den RP6 also schon ganz primitiv auf der Kommandozeile steuern

    Und Auslesen der ganzen Register (LDRs etc) funktioniert auch. (Hab für die Base einfach das I²C-Slave-Beispiel genommen)

    Nur die Stromversorgung macht zur Zeit noch ein bisschen Probleme (7805 wird verdammt heiß, im Moment wird Raspi getrennt versorgt). Aber da kommen bald Schaltregler rein, für RP6 und Raspi jeweils einer.
    Geändert von -schumi- (03.06.2012 um 21:49 Uhr)

  4. #54
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Zitat Zitat von -schumi- Beitrag anzeigen
    Hab den Raspberry Pi inzwischen erfolgreich mit dem RP6 verheiratet, d.h. I²C haut einwandfrei. Als Pegelwandlung hab ich folgendes benutzt:
    Klicke auf die Grafik für eine größere Ansicht

Name:	frage.png
Hits:	159
Größe:	2,2 KB
ID:	22482
    (R2 und R3 kann man weglassen, weil die beim RP6 und Raspi schon eingebaut sind. Macht also alles zusammen (SDA+SCL) 2Rs und 2Transistoren)

    Hab in C ein paar kleine Programme geschrieben, die jeweils einen Befehl (forwärts/links/rechts/...) via I²C senden. Man kann den RP6 also schon ganz primitiv auf der Kommandozeile steuern

    Und Auslesen der ganzen Register (LDRs etc) funktioniert auch. (Hab für die Base einfach das I²C-Slave-Beispiel genommen)

    Nur die Stromversorgung macht zur Zeit noch ein bisschen Probleme (7805 wird verdammt heiß, im Moment wird Raspi getrennt versorgt). Aber da kommen bald Schaltregler rein, für RP6 und Raspi jeweils einer.
    Wie funktioniert den das mitm I²C bei dem Pi?
    Hast du da nen Link zu?
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  5. #55
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    30
    Beiträge
    449
    Als erstes braucht man nen I²C-Treiber. Ich war faul und hab einfach ein fertiges Image genommen

    In dem Artikel http://nathan.chantrell.net/20120519...c-io-expander/ verlinkt der Autor auf das Image: http://www.frank-buss.de/tmp/kernel.img
    (Ist ein Debian, einfach das kernel.img in der Bootpartition ersetzen. Der in diesem Image enthaltene I2C-Treiber arbeitet zwar noch über Software-I2C, aber das reicht dicke. Es gibt auch einen Treiber der das Hardware-I2C nutzt, aber da muss man sich den Kernel erst mal selbst bauen und da hab ich grad kein Bock drauf . Ausserdem haben Kernel mit diesem Treiber bis jetzt mehr Probleme beim booten von SD-Karten)

    Dann kann man relativ einfach das Device öffen, Slave-Adresse angeben und dann nach Lust und Laune schreiben und lesen:
    Code:
    #include <linux/i2c-dev.h>
    #include <linux/i2c.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <sys/ioctl.h>
    
    // Commands:
    #define CMD_POWER_OFF             0
    #define CMD_POWER_ON             1
    #define CMD_CONFIG                2
    #define CMD_SETLEDS             3
    #define CMD_STOP                4
    #define CMD_MOVE_AT_SPEED        5
    #define CMD_CHANGE_DIR            6
    #define CMD_MOVE                7
    #define CMD_ROTATE                8
    #define CMD_SET_ACS_POWER        9
    #define CMD_SEND_RC5            10
    #define CMD_SET_WDT                11
    #define CMD_SET_WDT_RQ            12
    
    int main()
    {
        bus = open( "/dev/i2c-0", O_RDWR );  // I2C öffnen
        if ( bus == -1 )
        {
          // error
        }
        slave_addr = 0x05;   // Slave Adresse (0x05 ist von der Base)
        ioctl( bus, I2C_SLAVE, slave_addr );  // Slave Adresse setzen
    
        char buffer[] = {0, CMD_MOVE_AT_SPEED, 30, 30};     // Command
        unsigned int bytes;
        bytes = write( bus, buffer, sizeof(buffer) );  // Rausschreiben
    
        close (bus);  // I2C schließen
        return 0;
    }
    Dieses Programm setzt die Geschwindigkeit jetzt eben auf 30/30. Für die ganzen Commands nehm ich mir die RP6Base_I2CSlave.c und die RP6Control_*I2C-XYZ-Master*.c aus den Beispielen zu Hilfe.

    Den Quelltext einfach in eine rp6ctrl.c oder sowas schreiben (am besten via SSH auf Raspi zugreifen und dann in Nano Strg+Alt+V). Dann das Programm übersetzen mit "gcc rp6ctrl.c -o rp6ctrl". Ausführen mit "sudo ./rp6ctrl". Da braucht man eben Root-Rechte, oder man includet den User in irgend eine Gruppe deren Namen ich jetzt nicht weis, die die Rechte zum I2C-Schreiben hat.

  6. #56
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Zitat Zitat von -schumi- Beitrag anzeigen
    Als erstes braucht man nen I²C-Treiber. Ich war faul und hab einfach ein fertiges Image genommen

    In dem Artikel http://nathan.chantrell.net/20120519...c-io-expander/ verlinkt der Autor auf das Image: http://www.frank-buss.de/tmp/kernel.img
    (Ist ein Debian, einfach das kernel.img in der Bootpartition ersetzen. Der in diesem Image enthaltene I2C-Treiber arbeitet zwar noch über Software-I2C, aber das reicht dicke. Es gibt auch einen Treiber der das Hardware-I2C nutzt, aber da muss man sich den Kernel erst mal selbst bauen und da hab ich grad kein Bock drauf . Ausserdem haben Kernel mit diesem Treiber bis jetzt mehr Probleme beim booten von SD-Karten)

    Dann kann man relativ einfach das Device öffen, Slave-Adresse angeben und dann nach Lust und Laune schreiben und lesen:
    Code:
    #include <linux/i2c-dev.h>
    #include <linux/i2c.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <sys/ioctl.h>
    
    // Commands:
    #define CMD_POWER_OFF             0
    #define CMD_POWER_ON             1
    #define CMD_CONFIG                2
    #define CMD_SETLEDS             3
    #define CMD_STOP                4
    #define CMD_MOVE_AT_SPEED        5
    #define CMD_CHANGE_DIR            6
    #define CMD_MOVE                7
    #define CMD_ROTATE                8
    #define CMD_SET_ACS_POWER        9
    #define CMD_SEND_RC5            10
    #define CMD_SET_WDT                11
    #define CMD_SET_WDT_RQ            12
    
    int main()
    {
        bus = open( "/dev/i2c-0", O_RDWR );  // I2C öffnen
        if ( bus == -1 )
        {
          // error
        }
        slave_addr = 0x05;   // Slave Adresse (0x05 ist von der Base)
        ioctl( bus, I2C_SLAVE, slave_addr );  // Slave Adresse setzen
    
        char buffer[] = {0, CMD_MOVE_AT_SPEED, 30, 30};     // Command
        unsigned int bytes;
        bytes = write( bus, buffer, sizeof(buffer) );  // Rausschreiben
    
        close (bus);  // I2C schließen
        return 0;
    }
    Dieses Programm setzt die Geschwindigkeit jetzt eben auf 30/30. Für die ganzen Commands nehm ich mir die RP6Base_I2CSlave.c und die RP6Control_*I2C-XYZ-Master*.c aus den Beispielen zu Hilfe.

    Den Quelltext einfach in eine rp6ctrl.c oder sowas schreiben (am besten via SSH auf Raspi zugreifen und dann in Nano Strg+Alt+V). Dann das Programm übersetzen mit "gcc rp6ctrl.c -o rp6ctrl". Ausführen mit "sudo ./rp6ctrl". Da braucht man eben Root-Rechte, oder man includet den User in irgend eine Gruppe deren Namen ich jetzt nicht weis, die die Rechte zum I2C-Schreiben hat.
    Dank dir ^.^
    Dann kann ich am Ende des Monats, wenn mein Pi ankommt, gleich mal meinen CAN-Knoten zusammen mit dem Pi testen ^.^
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  7. #57
    Erfahrener Benutzer Begeisterter Techniker Avatar von Chypsylon
    Registriert seit
    02.02.2011
    Ort
    Graz/Österreich
    Beiträge
    256
    Zitat Zitat von -schumi- Beitrag anzeigen
    Als erstes braucht man nen I²C-Treiber. Ich war faul und hab einfach ein fertiges Image genommen

    In dem Artikel http://nathan.chantrell.net/20120519...c-io-expander/ verlinkt der Autor auf das Image: http://www.frank-buss.de/tmp/kernel.img
    (Ist ein Debian, einfach das kernel.img in der Bootpartition ersetzen. Der in diesem Image enthaltene I2C-Treiber arbeitet zwar noch über Software-I2C, aber das reicht dicke. Es gibt auch einen Treiber der das Hardware-I2C nutzt, aber da muss man sich den Kernel erst mal selbst bauen und da hab ich grad kein Bock drauf . Ausserdem haben Kernel mit diesem Treiber bis jetzt mehr Probleme beim booten von SD-Karten)

    Dann kann man relativ einfach das Device öffen, Slave-Adresse angeben und dann nach Lust und Laune schreiben und lesen:
    Code:
    #include <linux/i2c-dev.h>
    #include <linux/i2c.h>
    #include <unistd.h>
    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <sys/ioctl.h>
    
    // Commands:
    #define CMD_POWER_OFF             0
    #define CMD_POWER_ON             1
    #define CMD_CONFIG                2
    #define CMD_SETLEDS             3
    #define CMD_STOP                4
    #define CMD_MOVE_AT_SPEED        5
    #define CMD_CHANGE_DIR            6
    #define CMD_MOVE                7
    #define CMD_ROTATE                8
    #define CMD_SET_ACS_POWER        9
    #define CMD_SEND_RC5            10
    #define CMD_SET_WDT                11
    #define CMD_SET_WDT_RQ            12
    
    int main()
    {
        bus = open( "/dev/i2c-0", O_RDWR );  // I2C öffnen
        if ( bus == -1 )
        {
          // error
        }
        slave_addr = 0x05;   // Slave Adresse (0x05 ist von der Base)
        ioctl( bus, I2C_SLAVE, slave_addr );  // Slave Adresse setzen
    
        char buffer[] = {0, CMD_MOVE_AT_SPEED, 30, 30};     // Command
        unsigned int bytes;
        bytes = write( bus, buffer, sizeof(buffer) );  // Rausschreiben
    
        close (bus);  // I2C schließen
        return 0;
    }
    Dieses Programm setzt die Geschwindigkeit jetzt eben auf 30/30. Für die ganzen Commands nehm ich mir die RP6Base_I2CSlave.c und die RP6Control_*I2C-XYZ-Master*.c aus den Beispielen zu Hilfe.

    Den Quelltext einfach in eine rp6ctrl.c oder sowas schreiben (am besten via SSH auf Raspi zugreifen und dann in Nano Strg+Alt+V). Dann das Programm übersetzen mit "gcc rp6ctrl.c -o rp6ctrl". Ausführen mit "sudo ./rp6ctrl". Da braucht man eben Root-Rechte, oder man includet den User in irgend eine Gruppe deren Namen ich jetzt nicht weis, die die Rechte zum I2C-Schreiben hat.
    Ebenfalls danke für das Beispiel

    Den Hardware-Treiber gibts übrigens hier, ich glaube das die Probleme beim booten mittlerweile gefixt sind...

  8. #58
    Moderator Robotik Einstein Avatar von Kampi
    Registriert seit
    21.11.2009
    Ort
    Monheim, Nordrhein-Westfalen, Germany
    Alter
    34
    Beiträge
    3.501
    Blog-Einträge
    9
    Kleine Frage noch.....das Image ist einfach ein Kernel der auf die SD-Karte gepackt wird?
    Schaut ruhig mal auf meiner Homepage vorbei :
    http://kampis-elektroecke.de

    Oder folge mir auf Google+:
    Daniel Kampert

    Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.

    Gruß
    Daniel

  9. #59
    Erfahrener Benutzer Roboter-Spezialist Avatar von -schumi-
    Registriert seit
    30.12.2009
    Ort
    Wasserburg am Inn / Bayern
    Alter
    30
    Beiträge
    449
    Es gibt ja so ein fertiges Debian Image für den Raspi, das kannst du mit dd auf die SDKarte kopieren. Anschließend hast du dann 2 Partitionen auf der SDKarte. Eine Fat32 zum Booten und die andere eine Ext3 (oder 4?) glaub ich (auf der ist das System an sich). Auf der Bootpartition befindet sich eine kernel.img, die bennenst du einfach in kernel.img.bak oder so um und kopierst die neue kernel.img auf diese Partition. Fertig

    Den anderen Kernel, den Chypsylon verlinkt hat musst du auf den Raspi kopieren (ins Homeverzeichnis oder so) und dann mit "sudo dpkg -i /pfad/zum/kernel.deb" installieren. Ob der Kernel funzt hab ich aber selbst noch nicht ausprobiert

  10. #60
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    19.02.2006
    Beiträge
    982
    Unterstuetzt das OS das man via RaspPI herunter laden kann noch kein I2C?
    Nam et ipsa scientia potestas est..

Seite 6 von 18 ErsteErste ... 4567816 ... LetzteLetzte

Ähnliche Themen

  1. SO-DIMM-Computer unter Linux oder Windows CE
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 26.01.2012, 10:50
  2. Welches Linux für AVR , Asuro.....Linux überhaupt?
    Von oderlachs im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 10
    Letzter Beitrag: 09.01.2012, 12:23
  3. Antworten: 9
    Letzter Beitrag: 11.04.2006, 16:09
  4. robosapien für 49 euro
    Von pebisoft im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 4
    Letzter Beitrag: 22.01.2005, 16:06
  5. Servo für 1 Euro
    Von DrZoidberg im Forum Motoren
    Antworten: 18
    Letzter Beitrag: 18.09.2004, 10:46

Stichworte

Berechtigungen

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

LiFePO4 Speicher Test