logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[Zlecę] Napisanie programu arduino, C++, GPRS + MicroSD

rcmodele 22 Sty 2024 02:25 567 6
REKLAMA
  • #1 20922200
    rcmodele
    Poziom 2  

    Witam,
    Zlecę napisanie programu, który będzie odczytywał prędkość i czas co 0,2s z modułu GPRS i zapisywał na kartę pamięci mikroSD.

    Ogólnie projekt wykonałem na Arduino Mini + GPS GY-NEO6MV2, lecz zapis mam tylko co 1s i nie wiem, jak z tego mam wybrnąć. Na Arduino nie musi być, bo i tak po zaprogramowaniu muszę wylutować mikroprocesor i przenieść na mniejszą płytkę.

    A to program na Arduino.

    #include
    #include
    #include
    #include

    /*
    * WIRING DIAGRAM:
    * NANO PIN 3.3V -> SD PIN 3V3
    * NANO PIN GND -> SD PIN GND
    * NANO PIN D10 -> SD PIN CS
    * NANO PIN D11 -> SD PIN MOSI
    * NANO PIN D12 -> SD PIN MISO
    * NANO PIN D13 -> SD PIN CLK
    * NANO PIN 5V -> GPS PIN VCC
    * NANO PIN GND -> GPS PIN GND
    * NANO PIN D3 -> GPS PIN RX
    * NANO PIN D4 -> GPS PIN TX
    */

    /*
    * DATA FORMAT:
    * HHMMSS;DDMMYYYY;LATITUDE;LONGITUDE;SPEED;NUMBEROFSATELLITES;
    * HHMMSS is UTC time!
    */

    // SD Variables
    File myFile;
    String dataString = "";
    const int chipSelect = 10;

    // GPS Variables
    static const int RXPin = 4, TXPin = 3;
    static const uint32_t GPSBaud = 9600;
    TinyGPSPlus gps;
    SoftwareSerial ss(RXPin, TXPin);

    void readGPSData()
    {
    while (ss.available() > 0)
    gps.encode(ss.read());
    }

    void sdInitialization()
    {
    if (!SD.begin(chipSelect))
    {
    while (1);
    }
    }

    void sdWriteData()
    {
    myFile = SD.open("GPS_data.txt", FILE_WRITE);
    if (myFile)
    {
    myFile.println(dataString);
    myFile.close();
    }
    }

    void setup()
    {
    sdInitialization();
    ss.begin(GPSBaud);
    // Serial.begin(9600);
    }

    void loop()
    {
    readGPSData();
    if (gps.time.isValid() && gps.time.isUpdated() && gps.date.isValid() && gps.speed.isValid() && gps.satellites.isValid()) // && gps.location.isValid()0
    {
    dataString = "";
    if (gps.time.hour() < 10) { dataString += "0"; }
    dataString += String(gps.time.hour());
    if (gps.time.minute() < 10) { dataString += "0"; }
    dataString += String(gps.time.minute());
    if (gps.time.second() < 10) { dataString += "0"; }
    dataString += String(gps.time.second());
    dataString += ";";
    if (gps.date.day() < 10) { dataString += "0"; }
    dataString += String(gps.date.day());
    if (gps.date.month() < 10) { dataString += "0"; }
    dataString += String(gps.date.month());
    dataString += String(gps.date.year());
    dataString += ";";
    // dataString += String(gps.location.lat(), 6);
    // dataString += ";";
    // dataString += String(gps.location.lng(), 6);
    // dataString += ";";
    dataString += gps.speed.kmph();
    dataString += ";";
    dataString += gps.satellites.value();
    dataString += ";";
    sdWriteData();
    }
    }
  • REKLAMA
  • #2 20922254
    ChatGPT
    Poziom 10  
    @ElektrodaBot Napisz program, który będzie odczytywał prędkość i czas co 0,2s z modułu GPRS i zapisywał na kartę pamięci mikroSD.

    Ogólnie projekt wykonałem na Arduino Mini + GPS GY-NEO6MV2
  • REKLAMA
  • #3 20922257
    ElektrodaBot
    AI od OpenAI ChatGPT4
    ChatGPT napisał:
    Napisz program, który będzie odczytywał prędkość i czas co 0,2s z modułu GPRS i zapisywał na kartę pamięci mikroSD.

    Ogólnie projekt wykonałem na Arduino Mini + GPS GY-NEO6MV2
    Witaj na forum elektroda.pl!

    Na początek świetnie, że już masz sprzęt przygotowany. Skoro używasz Arduino Mini oraz modułu GPS GY-NEO6MV2, będziesz potrzebował bibliotek do obsługi GPS oraz możliwości zapisu na kartę microSD. Do komunikacji z modułem GPS często używana jest biblioteka TinyGPS lub TinyGPS++, natomiast do obsługi karty SD - biblioteka SD.h dostępna w standardowym środowisku Arduino IDE.

    Zanim zaczniesz pisać program, upewnij się, że masz potrzebne biblioteki oraz moduł SD podłączony do Arduino. Poniżej znajdziesz przykładowy szkic programu, który spełnia Twoje wymagania:

    Kod: text
    Zaloguj się, aby zobaczyć kod


    Pamiętaj, aby przed użyciem tego kodu przetestować osobno moduł GPS i moduł SD, aby mieć pewność, że każdy z nich działa poprawnie. Następnie, połącz cały system i przetestuj działanie tego kodu, zwracając uwagę na poprawność odczytów danych GPS oraz zapisu na karcie SD.

    Mam nadzieję, że udzielone informacje będą pomocne. Jeśli napotkasz jakiekolwiek problemy, nie wahaj się pytać!
    Możesz mnie wywołać w każdym temacie pisząc @ElektrodaBot. Zastrzeżenie: Niektóre odpowiedzi udzielone przez ElektrodaBota mogą być niedokładne. Elektroda nie ponosi odpowiedzialności za dokładność, rzetelność ani kompletność prezentowanych informacji. Wszystkie odpowiedzi ElektrodaBota powinny być zweryfikowane przez użytkownika. OpenAI może monitorować i zapisywać informacje wprowadzane po wywołaniu ElektrodaBota.
  • REKLAMA
  • REKLAMA
  • #5 20934147
    rcmodele
    Poziom 2  

    Próbowałem czegoś przez program u-Blox, ale niestety porażka.
  • #6 20934150
    funak
    Poziom 26  
    Ublox jest do Ublox'ów generalnie,

    a żeby zwykłemu zmienić prędkość, trzeba mu wysłać polecenie.


    Ja ostatnio testowałem ten:
    https://www.tme.eu/pl/details/gu-502mgg-usb/moduly-gnss-gps/yic/

    Wydaje mi się, że bez problemu przełączył się na 10Hz ale trzeba było mu zwiększyć prędkość transmisji do 115200.

    Jutro mogę to zweryfikować

    Dodano po 2 [minuty]:

    W dokumentacji napisane jest, że można większyć do 10Hz
    https://www.tme.eu/Document/b71ec2d1703d01513dd043e3847a9535/YIC-GT-502GG-GT-502MGG.pdf

    i szybkość transmisji :

    
    UART Port: TXD and RXD
    9600bps (default), Supports baud rate 4800bps to 460800bps
    NMEA 0183 Protocol
    
  • #7 20943213
    rcmodele
    Poziom 2  
    Przepraszam, dawno mnie nie było... Dziękuję i jeszcze dzisiaj to sprawdzę.
REKLAMA