Posts by pi-kurti

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!

    Hallo,

    ich befürchte, dass es hier im Forum keine Person gibt, die fähig oder willens ist mir zu helfen. :conf:

    Ich habe mit Hilfe anderer informationsquellen eine einfache Lösung gefunden:

    Das Programm muß mit root Privilegien ausgeführt werden.

    Hallo,

    Ich bin gerade dran einen SG90 servo mit wiringPI und C zu programmieren.

    Nach langem suchen bin ich halbwegs fündig geworden. Leider erschließen sich für mich die Funktion Parameter nicht ganz.

    Code

    Code
        pinMode(pin, PWM_OUTPUT);
        pwmSetMode(PWM_MODE_MS);    
        pwmSetRange(200);
        pwmSetClock(192);

    Was muß ich denn für Werte in pwmSetMode, pwmSetRange und pwmSetClock eintragen. Wenn ich das Programm in dieser Schleife laufen lasse, bewegt sich dir Servoachse um ca. 60°.

    Code

    Code
        for (int i=50; i<=110; i=i+2)
        {        
            pwmWrite (pin, i) ;
            delay (500);    
        }

    Ist das ok?

    Was bewirkt pwmSetRange und pwmSetClock und was bedeuten die Schritte, die ich in der Schleife ausführe.

    Ist das delay ok? Das bedeutet, dass alle 500 ms ein Schritt ausgeführt wird oder?

    Wie kann ich erreichen dass sich die die Achse um +/-90° dreht?

    Vielen Dank für Eure Hilfe

    Kurt

    Hallo _deets_ und Rap-Berlin,

    danke für Eure Antworten.

    Ja das ist schade aber das ist ok.

    Ich denke ich löse es so, dass das Programm in kurzen Abständen den Beschleunigungssensor ausliest und prüft ob ein Schwellwert des Betrages des Vektors überschritten wird.

    Dann liest es die zugeörige GPS Position aus und speichert es in einer Datei.

    Eleganter wäre es wenn ich einen threshold im adxl345 definiere und dann bei einem solchen Ereignis die GPS Position ermittle.

    Aber ich weis nicht ob man den threshold für +/- Werte definieren kann. Das heist : wenn der Z-Wert z. B. +2g oder - 2g ist soll ein Signal kommen.

    Aber ich denke das wird dann zu kompliziert.

    Hallo,

    seit mehreren Tagen suche ich nach einer Lösung für das folgende Problem:

    Bau eines Gerätes zur Schlaglochsuche mit einem

    1. Raspberry
    2. Beschleinuigungssensor
    3. GPS-Empfänger

    Die Lösung sollte folgende Funktione erfüllen:

    • Der Raspberry befindet sich im Schlafmodus bis der Beschleunigungssensor erkennt dass ein bestimmter Beschleunigungswert (z.B. 2g) überschritten wird.
    • Der Beschleunigungssenser setzt einen Interrupt ab, der den Raspberry aufweckt.
    • Das Programm registriert den Beschleunigungswert und liest die aktuelle GPS-Posistion aus.
    • das Programm schreibt diese Werte (Beschleunigung und GPS-Position) in eine Datei.

    Meine Frage ist jetzt:

    Wie kann ich den Beschleunigungssensor so programmieren, dass er einen Interrupt über den PIn INT1 oder INT2 an den Raspberry schickt?

    Die Sensoren ADXL345 oder MPU6050 kenne ich.

    Das GPS-Module is GY-NEO6MV2 ist auch kein Problem.

    Es wäre schön wenn ich hier Hilfe finden könnte.

    Vielen Dank im Vorraus

    Kurt

    Hallo hier im Forum gute und hilfreiche Antworten bekommen.

    Darum wende ich mich mit einer neuen Frage an Euch.

    Zunächst zur HW un SW:

    Ich habe einen RPI3

    Raspberry Pi 3 Model B Plus Rev 1.3

    Mit der Software:

    PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"

    NAME="Raspbian GNU/Linux"

    VERSION_ID="10"VERSION="10 (buster)"

    VERSION_CODENAME=busterID=raspbian

    ID_LIKE=debianHOME_URL="http://www.raspbian.org/"

    SUPPORT_URL="http://www.raspbian.org/RaspbianForums"BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"


    An den RPI habe ich einen GPS-Empfänger

    NEO-6M GPS mit dem TX bzw. RX-Pin verbunden.


    Wenn ich das Kommando
    cat /dev/ttyAMA0

    ausführe, dann bekomme ich folgende Meldung

    cat: /dev/ttyAMA0: Device or resource busy
    Den GPS-Empfänger kann ich auslesen

    gpsmon und cgps -s geht.

    Ich habe ein c++ programm erstellt. Da kommt beim ausführen des Statement

    fd = open(UART, O_RDONLY | O_NOCTTY);

    der Wert -1 für fd zurück.

    Wie kann ich erreichen, dass das device ttyAMA0 ohne sudo ausgelesen werden kann.

    hyle,

    vielen Dank für Deine Antwort.

    Ich denke dass ich mich nicht ganz klar ausgedrückt habe,

    Das eigentliche Problem zunächst ist, Dass hier

    Code
    // Init GPIO21 (on pin 13) as input (DATA), GPIO22 (pin 15) as output (nRES)
        *(gpio.addr + 2) = (*(gpio.addr + 2) & 0xfffffe07)|(0x001 << 6);

    wahrscheinlich der GPIO21 und GPIO22 definieret wird. Und das verstehe ich nicht so richtig.

    Denn zwischen dem Rapberry1 und Raspberry ZERO scheint es einige Unterschiede bei der Adreesierung der GPIOs zu geben.

    Was macht das Programm da?

    Hallo,

    ich bin gerade dran mit einem Rasperry Zero eine Funkschnittstelle zu meiner Wetterstation zu programmieren.

    Ich bin auf eine relativ alte Anleitung von 2012. Das ganze sieht zunächst mal ganz gut aus, denn es werden anscheinend Bits empfangen.

    https://www.susa.net/wordpress…sing-an-rfm01-and-rfm12b/

    dafür gestoßen.

    Das ganze sieht zunächst mal ganz gut aus, denn es werden anscheinend Bits empfangen.

    Leider wird hier wahrscheinlich sehr hardwarenah programmiert und ich habe da einige Schwirigkeiten das zu verstehen.

    Z.B:

    bzw:

    Code
        fd = open(device, O_RDWR);
        if (fd < 0)
            pabort("can't open device");
    
        // SPI mode
        if(ioctl(fd, SPI_IOC_WR_MODE, &mode) == -1)
            pabort("Can't set SPI mode");
    
        // Bits per word (driver only supports 8 -bits I think, but RFM12B handles this ok)
        if(ioctl(fd, SPI_IOC_WR_BITS_PER_WORD, &bits) == -1)

    für den device gilt folgende Definition:

    Code
    static const char *device = "/dev/spidev0.0";

    Nun zu meiner eigentlichen Frage:

    1. wie finde ich heraus was da wirklich gemacht wird? Stimmen Da die GPIO-Adressen GPIO21 und GPIO22 noch zusammen?
    2. gibt es eine Möglichkeit dies alles mit wiringPi zu realisieren?

    Ich würde mich freuen Hilfe zu bekommen.

    Vielen Dank!

    hyle,

    vielen Dank für Deine schnelle Antwort.

    Ich habe jetzt wie dort beschrieben in das Register CTRL_REG3_M den Wert 0x0 geschrieben.

    Code
    // Set CTRL_REG1_M (=0x20) = 0b1001 0000, x, y medum performance  output rate = 10
    reg = 0x20;
    val = 0x90;
    wiringPiI2CWriteReg8 (fdm, reg, val);
    
    // Set CTRL_REG3_M (=0x22) = 0b0000 0000, Continuous-conversion mode
    reg = 0x22;
    val = 0x00;
    wiringPiI2CWriteReg8 (fdm, reg, val);


    Jetzt tut es:

    Code
    Index :         37       Mag = X :-1957  Y :3079         Z : 3825        total :  5285.9

    Aber wie berechne ich dentatsächlichen Physikalischen Wert in nanoGauß?

    Die schreiben :

    Quote

    M_GN Magnetic sensitivity FS = ±16 gauss 0.58 mgauss/LSB

    Aber da komme ich auch nicht annähernd an diese Werte wie mit dem IGRF-Declination Calculator ermittelt.

    Da müßte ich doch den ausgelesenen Wert von total wie folgt berechnen:

    Code
    Totalintensität = 5285,9 / LSB*0,58

    Ich habe gerade mal nachgeschaurt was das Python-Programm von dieser Seite

    (http://cool-web.de/raspberry/l…r-ueber-i2c-ansteuern.htm)

    macht. Der Kompass scheint ja richtig unruhig zu sein. Ist das möglich?

    Hallo,

    ich bin gerade dabei auf meinem Raspberry ein c++ Programm zu schreiben um einen Kompass zu erstellen.

    Das funktiuoniert schon ganz gut. Ich habe jetzt allerdiungs das Problem, dass die gelesenen Daten nicht ordentlich angezeigt weden.

    Es sollten laut IGRF folgende Messwerte herauskommen:


    Ich denke, dass ich den Magnetometer nicht richtig konfiguriert habe.

    Hat jemand Erfahrung wie man das Gerät konfigurieret?


    Ich bin mal hergegangen und habe das RegisterCTRL_REG1_M wie folgt konfiguriert:

    Code
        reg = 0x20;
        val = 0x90;
        wiringPiI2CWriteReg8 (fdm, reg, val); // Set CTRL_REG1_M (=0x20) = 0b1001 0000, x, y medum performance  output rate = 10


    Da bekomme ich diese Rohdaten heraus:

    Code
    Index :         151      Mag = X :-1763  Y :2711         Z : 3801        total :  4990.52

    Das sieht so aus als würde da eimal ein Wert gelesen und der ändert sich dann nicht mehr.

    Ich würde mich echt freuen, wenn mir da jemand helfen könnte.

    Vielen Dank im Voraus!

    bombom ,

    danke für Deine Antwort. Wie gesagt es ist ein gy-51 welcher angeblich identisch ist mit einem LSM303DLHC. Der ist über die i2c Schnittstelle SCL und SDA mit einem Raspbeery PI3 verbunden. Die Stromversorgung ist 3.3v und GND.

    Ich habe aber das Gefühl, dass der Temperatursensor nicht richtig funktioniert.

    Das Magnetometer und der Accelerator scheinen ok zu sein.

    Muß mal schauen was da los ist.

    Hallo,

    in der Vergangenheit habe ich schon viele Tipps hier gefunden. Danke allen!

    Nun bin ich aber etwas ratlos, denn ich finde keinen Weg wie ich die Temperatur auslesen kann.

    es gibt dafür zwar eine Anleitung für das Board, aber was die Temperatur angeht finde ich keine brauchbare Information.

    Das ist alles was ich dazu gefunden habe.


    Weiterhin habe ich gefunden, dass man im Register CRA_REG_M das Bit TEMP_EN auf 1 setzen muß. Bei mir sieht das so aus:

    CRA_REG_M = 0b10001100.

    Im Internet finde ich zwar viele Informationen aber keine passt wirklich.

    Wäre schön wenn mir jemand helfen könnte.

    Hallo STF und Linus,

    zunächst mal vielen Dank für Eure antworten.

    Es ist in der Tat so, dass ich hier einmal die Eingabe über SSH beschreibe (=script oben). Das habe ich inzwischen ja hingekriegt.

    Mein Ziel ist es aber die applikation mittels Autostart beim boot zu starten.

    Da will ich mal nachschauen wie das geht.

    Hallo STF,

    danke für Deine Antwort.

    Hier kurz was ich machen möchte:

    • ich habe eine application (widget) in QT5 geschrieben.
    • Diese hat folgende Funktion: Anzeigen von Sensorwerten und Pushbutton zum shutdown des Raspberry.
    • Nachdem ich den Raspberry an die Stromversorgung angeschlossen habe sollte die application während des Bootvorganges gestartet werden,

    Wie kann ich das zu machen?

    Übrigens wenn ich nichts mache bekomme ich beim manuellen Starten des Scriptes über die Konsole den Fehler


    QXcbConnection: Could not connect to display


    Hallo,

    ich komme auf Euch zu, weil ich bei Euch bisher gute Informationen fand.

    Schon seit einiger Zeit versuche ich meinen Raspberry so zu konfigurieren, dass eine Application beim booten automatisch gestartet wird.

    Die application kann ich mit folgendem script starten :


    #!/bin/bash DISPLAY=:0 /home/pi/MeinHelloQtWorld


    Das geht auch mit einer Warnung :

    libEGL warning: DRI2: failed to authenticate


    Ich verwende einen


    Kuman 3.5 inch 320*480 Resolution Touch Screen TFT LCD Display Module SPI Interface with Touch Pen 3.5 zoll LCD Bildschirm for Raspberry-pi


    Das os ist :

    PRETTY_NAME="Raspbian GNU/Linux 8 (jessie)"

    NAME="Raspbian GNU/Linux"

    VERSION_ID="8"

    VERSION="8 (jessie)"

    ID=raspbian

    ID_LIKE=debian

    HOME_URL="http://www.raspbian.org/"

    SUPPORT_URL="http://www.raspbian.org/RaspbianForums"

    BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"



    Wie könnte ich da am Besten vorgehen?

    Vielen Dank im Vorraus!

    Kurt

    Hallo Dreamshader,
    danke nochmal für Deine Hilfe.
    Nein das geht nicht. Da ist irgendwas faul.
    Ich habe jetzt direkt auf dem Raspberry-LCD gearbeitet. Mit Stift und so.
    Das ist ein Alptraum mit dieser Konfiguration.
    Mal schauen ob ich da weitermache. :(
    Jetzt gehe ich mal an den SW-Bauer von Waveshare ran. Mal gespannt was der so sagt.