Skocz do zawartości

konx8

Użytkownicy
  • Zawartość

    11
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O konx8

  • Ranga
    2/10

Ostatnio na profilu byli

Blok z ostatnio odwiedzającymi jest wyłączony i nie jest wyświetlany innym użytkownikom.

  1. Witam Tworzę robota który będzie w stanie podążać za pomocą GPS za GPSem w telefonie. Aktualnie posiadam GPS NEO 6M -0-001. Problem jest jaki, że GPS ten nie jest za bardzo dokładny. W karcie katalogowej miał napisane, że dokładność wynosi około 2,5m. Dokładność ta chyba dotyczy wartości przy dostępnych 12 satelitach bo u mnie błąd to od 20m do 15m przy dostępnych 7-9 satelitach. Żeby robot działał w miarę poprawnie potrzebował bym dokładności do 5m. Nie chciałbym wydawać na moduł GPS z 200 - 300 zł więc zacząłem zastanawiać się nad modułami z glonass. Czy ktoś coś o tym wie? Czy to się nada na do mojego projektu? Jeśli tak jaki model polecacie ?
  2. Oto kod który używam. #include <TinyGPS++.h> #include <SoftwareSerial.h> SoftwareSerial serial_connection(10,11); TinyGPSPlus gps2; void setup() { Serial.begin(4800); serial_connection.begin(9600); Serial.println("GPS Start"); } void loop() { if(serial_connection.available()) { gps2.encode(serial_connection.read()); } if(gps2.location.isUpdated()) { Serial.print("Satelite Count"); Serial.println((gps2.satellites.value()) ); Serial.print("Lotitude"); Serial.println((gps2.location.lat()),6 ); Serial.print("Longitude:"); Serial.println((gps2.location.lng()),6 ); Serial.print(("")); delay (2000); } } Wystarczy pozmieniać piny oraz ewentualnie rate i powinno działać. Mój moduł to U-blox NEO-6M-0-001. Mam nadzieję, że ktoś na tym skorzysta.
  3. Pomogła biblioteka TinyGPS++ po pewnych modyfikacjach.
  4. Witam Mam problem z modułem GPS a dokładnie z Ublox NEO-6m. Otóż po podłączeniu modułu pod Arduino UNO wgraniu biblioteki TinyGPS oraz uruchomieniu przykładu test_with_gps_device po uruchomieniu monitora portu, zamiast danych dostaję tylko gwiazdki (***). Moduł podłączam TX pin 10 VCC 5, GND. W programie testowych zmieniam dane dotyczące Baudu oraz piny niestety bez większego rezultatu. Oglądałem filmiki oraz czytałem odnośnie podłączenia tego modułu ale nic nie pomaga. Może ktoś wie co robię nie tak.
  5. Seriale które używam to od BT oraz od GPS SoftwareSerial BT_Serial(2, 3); SoftwareSerial GPS_Serial (10, 11); Jeden jest normalnie podłączony do Ardunio (GPS od robota) na pinach 10/11, natomiast drugi GPS to GPS z telefonu. Udało mi się dziś uruchomić GPS z telefonu który na bieżąco wysyła dane i wyświetla w porcie. Jednak dane z GPS z robota są odbierane jako 0 co nie jest prawdą. GPS z telefonu działa za pomocą aplikacji BLYNK. Funkcja dotycząca go jest zawarta w funkcji : BLYNK_WRITE (V0) A co do seriali tam masz racje ten ALT nie jest tam potrzebny. Dodaje troszkę zmieniony program w którym działa GPS odczytujący dane z telefonu. Dodaję również to co widzę na porcie. Aktualnie brakuje mi odczytywania danych z GPS z robota abym mógł ruszyć dalej z obliczaniem dystansu itd. Wydaje mi się ,że gdy port dotyczący BT wysyła i odbiera dane z telfonu to dane z GPS nie są już wysyłane ponieważ BT zajmuje wszystko. Ale to tylko moje gdybanie, mogę się mylić. #include "TinyGPS++.h" // GPS #include "SoftwareSerial.h" #include <BlynkSimpleSerialBLE.h> // Biblioteka odpowiadająca za BT #include <QMC5883LCompass.h> // Compas Library #define BLYNK_PRINT Serial #define BLYNK_USE_DIRECT_CONNECT // BT #define BLYNK_PRINT BT_Serial // BT SoftwareSerial BT_Serial(2, 3); // BT podłączony do Seriala na pinach 2-RX, 3-TX SoftwareSerial GPS_Serial (10,255 ); //GPS nowy Serial 10-TX, 11-RX TinyGPSPlus gps2; // GPS z robota fizyczny WidgetTerminal terminal(V2); // przypisanie terminala do V2 QMC5883LCompass compass; // deklaracja char auth[] = "ok3q9uiJKllXv9dtOR7XyewQq0EL-_H6"; // Token przypisany do aplikacji BLYNK struct GeoLoc { float szer; float dlu; }Phone,Robo; void Distance () // in KM { float X = ((Phone.szer - Robo.szer) * 6378,14 * cos(Robo.dlu)) / 360.0; float Y = ((Phone.dlu - Robo.dlu) * 6356,75) / 360.0; float X2 = X * X; float Y2 = Y * Y; float Distance = sqrt(X2 + Y2); Serial.println("Distance"); Serial.println(Distance); } //---------------------------------------------------------------------------------------------------------------------------- void Compas() { int x, y, z; // Read compass values compass.read(); // Return XYZ readings x = compass.getX(); y = compass.getY(); z = compass.getZ(); Blynk.virtualWrite(V2," X:",x ," Y:",y ," Z:",z ); } void GPS_robot() // Data GPS form robot --------------------------------------------------------------------------------- { while(GPS_Serial.available() > 0) { gps2.encode(GPS_Serial.read()); } if(gps2.location.isUpdated()) { // Serial.print("Lotitude"); //Serial.println((gps2.location.lat()),6 ); //Serial.print("Longitude:"); //Serial.println((gps2.location.lng()),6 ); Robo.szer = gps2.location.lat(); Robo.dlu = gps2.location.lng(); } } BLYNK_WRITE (V0) // GPS Stream Widget Data from Phone ------------------------------------------------------------ { GpsParam gps(param); Serial.println("Received remote GPS: "); // Print 7 decimal places for Lat Serial.print(gps.getLat(), 7); Serial.print(", "); Serial.println(gps.getLon(), 7); Phone.szer = gps.getLat(); Phone.dlu = gps.getLon(); } BLYNK_WRITE (V1) // Wirtualny przycisk -------------------------------------------------------------------------------------- { } BLYNK_WRITE (V2) // Terminal Widget ------------------------------------------------------------------------------------------ { if (String("clear") == param.asStr()) { terminal.clear (); } else if (String("compas") == param.asStr()) { Compas(); } else if (String("rob") == param.asStr()) { } } void setup() //------------------------------------------------------------------------------------------- { //Debugging Serial.begin(9600); //GPS GPS_Serial.begin(9600); //Bluetooth BT_Serial.begin(9600); Blynk.begin(BT_Serial, auth); //Terminal terminal.clear(); //Compas compass.init(); } void loop() //------------------------------------------------------------------------------------------------------- { Blynk.run(); Serial.println("dane z robota"); Serial.println(Robo.szer, 5); Serial.println(Robo.dlu, 5); delay (2000); }
  6. Ok, tak myślałem, że mogłem w zły dział dodać.
  7. Witam Zwracam się z prośbą o pomoc dotyczącej robota którego właśnie tworzę. Zaczynając od początku, robot działa na Arduino UNO posiada moduł GPS, BT, kompas oraz w przyszłości będzie posiadał napęd składający się z 2 silników. Zamysł był taki aby korzystając z aplikacji Blynk (wybrałem taką ponieważ jest bardzo prosta a ja nie będę potrzebował dużo zadań wykonywanych z telefonu) poprzez moduł BT, telefon łączył się z robotem, następnie odczytał wartość GPS z robota porównał ją z GPS z telefonu następnie obliczając dystans kąt i kilka innych rzeczy rozpoczął podążać z telefonem podłączonym do robota. Niestety mam problemy z danymi które szczytuje z GPS ponieważ wyświetla mi on co tylko 0. Każdy program z osobna działa poprawnie i odczytuje poprawne wartości GPSów. Niestety podczas łączenia ich w jedno nie działa. Myślałem na początku ,że problem może być ze strony portów które nie nadążają wysyłać i odbierać dane z BT oraz z 2 GPS. Wtedy zacząłem korzystać z biblioteki ALTSerial i początkowo dało to jakiś progres jednak GPS w telefonie zaczął przypisywać wartości GPS z robota. Aktualnie mam robota który nie działa poprawnie gdy są 2 GPS podłączone i próbują odczytać dane. Oto kod : #include "TinyGPS++.h" // GPS #include "SoftwareSerial.h" #include <AltSoftSerial.h> #include <BlynkSimpleSerialBLE.h> // Biblioteka odpowiadająca za BT #include <QMC5883LCompass.h> // Compas Library #define BLYNK_PRINT Serial #define BLYNK_USE_DIRECT_CONNECT // BT #define BLYNK_PRINT BT_Serial // BT SoftwareSerial BT_Serial(2, 3); // BT podłączony do Seriala na pinach 2-RX, 3-TX SoftwareSerial GPS_Serial (10, 11); //GPS nowy Serial 10-TX, 11-RX TinyGPSPlus gps2; // GPS z robota fizyczny WidgetTerminal terminal(V2); // przypisanie terminala do V2 QMC5883LCompass compass; // deklaracja char auth[] = "ok3q9uiJKllXv9dtOR7XyewQq0EL-_H6"; // Token przypisany do aplikacji BLYNK struct GeoLoc { float szer; float dlu; }Phone,Robo; void Distance () // in KM { float X = ((Phone.szer - Robo.szer) * 6378,14 * cos(Robo.dlu)) / 360.0; float Y = ((Phone.dlu - Robo.dlu) * 6356,75) / 360.0; float X2 = X * X; float Y2 = Y * Y; float Distance = sqrt(X2 + Y2); Serial.println("Distance"); Serial.println(Distance); } //---------------------------------------------------------------------------------------------------------------------------- void Compas() { int x, y, z; // Read compass values compass.read(); // Return XYZ readings x = compass.getX(); y = compass.getY(); z = compass.getZ(); Blynk.virtualWrite(V2," X:",x ," Y:",y ," Z:",z ); } void GPS_robot() // Data GPS form robot --------------------------------------------------------------------------------- { while(GPS_Serial.available() > 0) { gps2.encode(GPS_Serial.read()); } if(gps2.location.isUpdated()) { Serial.print("Lotitude"); Serial.println((gps2.location.lat()),6 ); Serial.print("Longitude:"); Serial.println((gps2.location.lng()),6 ); Robo.szer = gps2.location.lat(); Robo.dlu = gps2.location.lng(); } } BLYNK_WRITE (V0) // GPS Stream Widget Data from Phone ------------------------------------------------------------ { GpsParam gps(param); Serial.println("Received remote GPS: "); // Print 7 decimal places for Lat Serial.print(gps.getLat(), 7); Serial.print(", "); Serial.println(gps.getLon(), 7); Phone.szer = gps.getLat(); Phone.dlu = gps.getLon(); } BLYNK_WRITE (V1) // Wirtualny przycisk -------------------------------------------------------------------------------------- { } BLYNK_WRITE (V2) // Terminal Widget ------------------------------------------------------------------------------------------ { if (String("clear") == param.asStr()) { terminal.clear (); } else if (String("compas") == param.asStr()) { Compas(); } else if (String("rob") == param.asStr()) { } } void setup() //------------------------------------------------------------------------------------------- { //Debugging Serial.begin(9600); //GPS GPS_Serial.begin(9600); //Bluetooth BT_Serial.begin(9600); Blynk.begin(BT_Serial, auth); //Terminal terminal.clear(); //Compas compass.init(); } void loop() //------------------------------------------------------------------------------------------------------- { Blynk.run(); Serial.println("dane z tele"); Serial.println(Phone.szer, 5); Serial.println(Phone.dlu, 5); Serial.println("dane z robota"); Serial.println(Robo.szer, 5); Serial.println(Robo.dlu, 5); delay (2000); Distance (); delay (2000); } Czy ktoś mógłbym pomóc mi z otrzymywaniem poprawnych danych z 2 GPS ( z telefonu oraz robota) ?
  8. Przejściówki takiej nie mam ale może uda mi się ja wykąbinować. A co do Arduino podłączam Vcc- 5v, Gnd-Gnd, i tx do rx, rx do tx. Czy robię coś źle? Jest potrzebny jakiś kod jeszcze?
  9. Różnie próbowałem. Ale głównie do arduino na pusto, z kodem z Internetu. Próbowałem już nawet te inne wejścia podłączyć (CL) bo gdzie wyczytałem , ze to może pomóc.
  10. Wczoraj właśnie doszedłem do tych samych wzniosów. Na pewno zagłębie się w temat, lecz pojawia się kolejny problem błąd czy jak to nazwać. Nie mogę włączyć komend AT. Po wpisaniu ich nie dostaje żadnych odpowiedzi. Na stronie producenta powinienem otrzymać normalnie odpowiedź OK, niestety u mnie nie mam żadnego odzewu. Widziałem, że ktoś miał już ten problem z Arduino Mega ale jego problem nie został rozwiązany. Co może być tego przyczyną ?
  11. Witam Pisze ponieważ nie mogę poradzić sobie z błędem który dostaje podczas podłączania modułu bluetooth XM-15. Przeglądałem strony w poszukiwaniu jakieś pomocy nie udało mi się tego niestety znaleźć. Jestem nowy wiec odrazu rzuciłem się na głęboka wodę nie sprawdzając tego moduły. Konfiguracja polegała na tym że podłączyłem moduł do arduino i działało to ok. Podczas pisania programów miałem problem z uruchomieniem monitora portu szeregowego. Błąd mówił ze port jest zajęty. Zacząłem szukać po internecie co to może być i znalazłem ,że może to być poprostu złe dobrana prędkość. Więc spróbowałem ja zmieniać na 9600. Na forum jest pokazane jak zrobić to z modelem HC za pomocą polecenia AT. Napisane jest tam ze po wpisaniu AT powinno wyskoczyć " AT ok ". U mnie wyskakuje " Witaj AT ! ", pisałem jakiś prosty program który miał właśnie tak dziać, że pisze coś i on ma wyświetlać Witaj + "coś "+ !. Teraz napisałem prosty program aby wgl sprawdzić czy jakoś ten moduł mogę podłączyć i dostaje błąd problemu z wgrywaniem na płytkę. Wygląda on tak : avrdude: Version 6.3-20171130 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/ Copyright (c) 2007-2014 Joerg Wunsch System wide configuration file is "C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.19.0_x86__mdqgnx93n4wtt\hardware\tools\avr/etc/avrdude.conf" Using Port : COM4 Using Programmer : arduino Overriding Baud Rate : 115200 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0xe2 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xe2 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0xe2 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0xe2 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0xe2 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0xe2 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0xe2 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0xe2 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0xe2 avrdude: stk500_recv(): programmer is not responding avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0xe2 avrdude done. Thank you. Problem z wgrywaniem na płytkę. Program który wgrywam jest następujący : int data; void setup() { // put your setup code here, to run once: Serial.begin(115200); } void loop() { // put your main code here, to run repeatedly: data=Serial.read(); Serial.println(data); delay(200); } Jeśli odepnę wejścia TX, RX program działa normalnie i nie żadnego problemu. Po podłączeniu modułu tylko do zasilania i uruchomieniu terminala na telefonie po wpisaniu polecenie AT dostaje jakieś znaczki których nie można przeczytać. Używam Arduino Uno. Z góry przepraszam jeśli coś namieszałem jestem początkującym i to mój pierwszy problem którego nie mogę przejść. Proszę o pomoc
×
×
  • Utwórz nowe...