Πέμπτη 23 Νοεμβρίου 2017

Κατασκευή GNSS δύο δεκτών. BASE-ROVER

Το project είναι η κατασκευή ενός ζεύγους GNSS BASE-ROVER και μίας βάσης fix-base  με μικρό κόστος και ο έλεγχός του σε συνθήκες πεδίου.

ΤΑ ΥΛΙΚΑ

Τρείς δέκτες GNSS ( u-blox NEO-M8T) με κόστος 75 € ο καθένας.
Επιλέχθηκαν οι συγκεκριμένοι δέκτες καθώς δέχονται σήμα και απο τα 4 ενεργά δίκτυα ( GPS - GLONASS - GALILEO - BEIDOU ) και με συχνότητα 5 Hz.


Ένα RASPBERRY PI 3 με κόστος 40 €.

Δύο RASPBERRY PI ZERO με κόστος 5 € το καθένα
Δύο USB HUB για τα RASPBERRY PI ZERO με κόστος 5 € το καθένα

Ένα ζεύγος RADIO LINK 433 MHZ  με κόστος 70 €.

Ένα USB to UART με κόστος 3 €.

Τρείς κεραίες GNSS  με κόστος 60 € η μία
Τρία POWER BANK των 5000 mAh με κόστος 12 € το καθένα




 Μικρουλικά όπως καλώδια κλπ... με κόστος 10 €
Τρία κουτιά 12Χ12Χ12 cm με κόστος 10 € το καθένα.
 Τρείς κάρτες SD των 8GB με κόστος 7 € η μία.



ΟΙ ΣΥΝΔΕΣΕΙΣ-ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ

Η Fix BASE.

Πρίν απ' όλα θα πρέπει να ετοιμαστεί η κάρτα SD για το RASPBERRY PI ZERO .
Κατεβάζουμε το RASPBIAN lite από εδώ , στη συνέχεια το putty  , το WinSCP , το  Bonjour ,το win32disk imager.
Σε αυτό το σημείο καλό θα ήταν να κατεβάσουμε και το RTKLIB απο εδώ καθώς και τα εκτελέσιμα αρχεία απο εδώ
Εγκαθιστούμε στον υπολογιστή μας το bonjour , το WinSCP , το putty και το win32disk imager.

Θα πρέπει πρώτα απ΄όλα να φτιάξουμε την κάρτα του RASPBERRY PI 3
  1. Συνδέουμε την κάρτα SD στον υπολογιστή μέσω card reader και τρέχουμε το win32disk. Επιλέγουμε το image του Raspbian και γράφουμε την κάρτα.
  2. Πρίν βγάλουμε την κάρτα απο το card reader θα πρέπει να κάνουμε μερικές αλλαγές.
  3. Ανοιγουμε την κάρτα και φτιάχνουμε ένα αρχείο που θα το ονομάσουμε ssh. (χωρίς καμία επέκταση).
  4. Συνδέουμε το RASPERRY PI 3 με το δίκτυό μας μέσω ethernet και το τροφοδοτούμε με ρεύμα. 
  5. Τρέχουμε το winSCP στο PC και με host name: raspberrypi.local , username: pi και password : raspberry φτιάχνουμε νεό φάκελο στο /home/pi με όνομα rtklib και αντιγράφουμε από το RTKLIB που κατεβάσαμε ( τον κώδικα όχι τα εκτελέσιμα αρχεία) όλα τα αρχεία μέσα στο νέο φάκελο που φτιάξαμε. Ταυτόχονα φτιάχνουμε νεό φάκελο στο /home/pi με όνομα gps και αντιγράφουμε εκεί μέσα όλα τα περιεχόμενα από τα τα εκτελέσιμα αρχεία που κατεβάσαμε νωρίτερα.
  6. Τώρα τρέχουμε το pytty.
Βάζουμε user: pi και password : raspberryκαι εκτελούμε τις εντολές :
sudo apt-get update
sudo apt-get install socat
στη συνέχεια θα εγκαταστήσουμε το RTKLIB
εκτελούμε :
cd rtklib/app/str2str/gcc
make
sudo cp str2str /usr/local/bin/str2str
sudo chmod +x /usr/local/bin/str2str


7. Εδώ θα πρέπει να συνδέσουμε στο RASPBERRY PI 3 το GPS που θα χρησιμοποιήσουμε στη fix-BASE και να εκτελέσουμε
sudo reboot.
Κλείνουμε το Putty και μετά απο λίγο το ξανατρέχουμε
Εκτελούμε
Sudo lsusb
Θα μας δώσει μία λίστα με τις συσκευές που είναι  συνδεδεμένες στο USB και μία απο αυτές θα είναι η Ublox.
Σημειώνουμε τους δυο κωδικούς που θα μας δώσει για το Ublox  την  idVendor = ΑΑΑΑ και idProduct =ΒΒΒΒ όπου ΑΑΑΑ και  ΒΒΒΒ οι κωδικοί. Σημειώνουμε αυτούς του κωδικούς που θα μας χρησιμεύσουν μετά.
Το ίδιο κάνουμε για κάθε δέκτη απο τους τρείς που έχουμε αλλά το πιθανότερο είναι να μας δώσει τα ίδια νουμερα.
Μετά κάνουμε το ίδιο αλλά συνδέουμε το radio link ( το USB) και το USB to UART και τέλος το memory stick.

Τώρα θα φτιάξουμε τις κάρτες των RASPBERRY PI ZERO.
Εκτελούμε τα ίδια βήματα 1 , 2  και 3 αλλά κάνουμε και τα παραρακάτω 

Ανοίγουμε το αρχείο config.txt και προσθέτουμε στο τέλος την εντολή dtoverlay=dwc2 
Ανοίγουμε το αρχείο cmdline.txt και προσθέτουμε μετά την εντολή rootwait την εντολή         modules-load=dwc2,g_ether

Στο PC κάνουμε κοινόχρηστη την σύνδεση στο internet
Βάζουμε την κάρτα στο RASPBERRY PI ZERO και το συνέδουμε με USB καλώδιο στον υπολογιστή μας. Θέλει προσοχή να συνδέσουμε την USB θύρα του raspberry και όχι την θύρα για τροφοδοσία.
Και συνεχίζουμε με τα βήματα 5 και 6.

Τώρα θα πρέπει να "φιξάρουμε" τις συνδεδεμένες συσκευές: 
Για το Raspberry zero της fix βάσης αφού πάλι συνδεθούμε με το putty γράφουμε :
Sudo nano /etc/udev/rules.d/10-myrules.rules
και στο "wordpad" που θα ανοίξει προσθέτουμε το :
ACTION=="add", ATTRS{product}=="u-blox GNSS receiver", ATTRS{idVendor}=="ΑΑΑΑ" , ATTRS{idProduct}=="ΒΒΒΒ", SYMLINK+="ttyGPS"
όπου ΑΑΑΑ και ΒΒΒΒ οι κωδικοί που πήραμε νωρίτερα για το GPS.
CTRL + X
Save = Yes
και... reboot.

Ξανά σύνδεση με το putty.
sudo nano /home/pi/str2str_start.sh
Εισάγουμε στο "wordpad" τα παρακάτω
#!/bin/bash

path=”/home/pi/gps/”
# find unused file name
i=0
fname=$path”rover”$i”.ubx”
while [ -f $fname ]; do
     let “i=i+1”
     fname=$path”rover”$i”.ubx”
done

fname=$path”rover”$i”.ubx”
# start task to collect rover data at 5 Hz
str2str -in serial://ttyGPS#ubx -out tcpsvr://:128 -out $fname -c     home/pi/gps/m8t_rover_5hz.cmd &
# check for error by looking for output file
sleep 1
ls $fname
if [ $? -ne 0 ]
then
     echo Exit on error
     exit
fi
# blink LEDs to let user know all is OK and we are collecting data
X=0
while [ $X -le 0 ]
 do
     echo 0 > /sys/class/leds/led0/brightness
     sleep 1
     echo 1 > /sys/class/leds/led0/brightness
     sleep 1
done
CTRL + X
Save = Yes
και... reboot.
ξανά putty...
sudo nano /home/pi/gpslog.service
και εισάγουμε :
 [Unit]
Description=Startup Script Service
After=multi-user.target

[Service]
Type=idle
ExecStart=/home/pi/str2str_start.sh
[Install]
WantedBy=multi-user.target

CTRL + X
Save = Yes
και τέλος γράφουμε :

cd /home/pi
sudo chmod +x str2str_start.sh
sudo mv gpslog.service /lib/systemd/system
sudo systemctl daemon-reload
sudo systemctl enable gpslog.service
Αποσυνδέουμε το USB, Βάζουμε το USB HUB για τα RASPBERRY PI ZERO , συνδέουμε πάνω το GPS , τοποθετούμε την κεραία του GPS σε σημείο με γνωστά φ,λ,h ( ή τα υπολογίζουμε σε δεύτερο χρόνο) και όταν είμαστε έτοιμοι θα συνδέσουμε την θύρα παροχής ρεύματος με ένα απο τα power bank.
Κάθε φορά που συνδέουμε την παροχή στην κάρτα θα γράφεται ένα αρχείο με διαφορετικό αριθμό κάθε φορά το οποίο μπορούμε να το μεταφέρουμε στον υπολογιστή μας με το WINSCP. Τα data στο αρχείο είναι σε format RTCM3.

Τώρα φτιάχνουμε την BASE.
Βάζουμε την ανίστοιχη κάρτα SD (όπως την έχουμε ετοιμάσει για το ZERO) και αφού πάλι συνδεθούμε με το putty γράφουμε :
Sudo nano /etc/udev/rules.d/10-myrules.rules
και στο "wordpad" που θα ανοίξει προσθέτουμε το :
ACTION=="add",  ATTRS{product}=="CP2102 USB to UART Bridge Controller", ATTRS{idVendor}=="ΑΑΑΑ", ATTRS{idProduct}=="ΒΒΒΒ", SYMLINK+="ttyLINK"

ACTION=="add",  ATTRS{product}=="u-blox GNSS receiver", ATTRS{idVendor}=="CCCC" , ATTRS{idProduct}=="DDDD", SYMLINK+="ttyGPS"
Όπου ΑΑΑΑ , ΒΒΒΒ , CCCC & DDDD  οι αντοίστοιχοι κωδικοί για το USB to UART και GPS .

CTRL + X
Save = Yes
και... reboot.

Ξανά σύνδεση με το putty.
sudo nano /etc/rc.local


και πρίν απο την εντολή exit 0 προσθέτουμε.
sudo /usr/bin/socat /dev/ttyGPS,raw,crnl /dev/ttyLINK,b57600,raw,crnl
 CTRL + X
Save = Yes

Αποσυνδέουμε το USB, Βάζουμε το USB HUB για τα RASPBERRY PI ZERO , συνδέουμε πάνω το GPS , το USB to UART , συνδέουμε με καλωδίωση το USB to UART με το UART "τεμάχιο" του RADIO LINK. 

Τέλος ήρθε η ώρα του ROVER.

Βάζουμε την ανίστοιχη κάρτα SD (όπως την έχουμε ετοιμάσει για το PI 3 ) και αφού πάλι συνδεθούμε με το putty γράφουμε :
Sudo nano /etc/udev/rules.d/10-myrules.rules
και στο "wordpad" που θα ανοίξει προσθέτουμε το :
ACTION=="add",  ATTRS{product}=="CP2102 USB to UART Bridge Controller", ATTRS{idVendor}=="ΑΑΑΑ", ATTRS{idProduct}=="ΒΒΒΒ", SYMLINK+="ttyLINK"

ACTION=="add",  ATTRS{product}=="u-blox GNSS receiver", ATTRS{idVendor}=="CCCC" , ATTRS{idProduct}=="DDDD", SYMLINK+="ttyGPS"
Όπου ΑΑΑΑ , ΒΒΒΒ , CCCC & DDDD  οι αντοίστοιχοι κωδικοί για το Radio LINK και GPS .
CTRL + X
Save = Yes
και... reboot.
Συνδέουμε GPS και RADIO LINK
ξανά Putty
cd RTKLIB/app/rtkrcv/gcc
Make

sudo cp rtkrcv /usr/local/bin/rtkrcv
sudo chmod +x /usr/local/bin/rtkrcv
Εδω θα πρέπει να φτιάξουμε το config file για το RTKRCV το οποιο θα περιέχει την raw είσοδο του GPS που είναι η ttyGPS, η είσοδος των μετρήσεων της βάσης που είναι η ttyLINK ( στα 57600) , οι συντεταγμένες της βάσης και  η έξοδος της επίλυσης η οποια θα είναι η θύρα bluetooth , τέλος ορίζουμε ότι τα raw δεδομένα της βάσης θα αποθηκευονται και σε ένα συγκεκριμένο αρχείο. (πληροφορίες για την σύνταξη του συγκεκριμένου config  θα βρείτε στο manual του RTKLIB)
 Αν θέλουμε βάζουμε το rtkrcv να εκτελείται αυτόματα με το άνοιγμα του raspberry αλλά επειδή θέλουμε να αλλάζουμε κάθε φορά τις συντεταγμένες της βάσης μπορούμε να κάνουμε το παρακάτω κόλπο:
Ανοίγουμε στο κινητό μας το wifi hotspot. Δεν χρειάζεται να έχουμε σύνδεση internet απλά ανοιγουμε το hotspot. Ρυθμίζουμε το raspberry να συνδέεται με το hotspot του κινητού μας. Το ίδιο κάνουμε και με ένα laptop που έχουμε εγκαταστήσει τα patty , winSCP κλπ. Τώρα μπορούμε  να χρησιμοποιήσουμε το laptop ώστε να αλλάξουμε τις συντεταγμένες βασης στο config αλλά και να ξενινήσουμε το rtkrcv.
Στο κινητό μας τέλος κάνουμε χρήση ενός προγράμματος data collect ( πχ. myRTK  ).
Οι ακριβής συντεταγμένες του BASE μπορούν να υπολογιστούν με post processing απο το αρχείο της Fix βάσης και το αρχείο raw της BASE.
Είναι φυσικό ότι μπορούμε να στήσουμε τη βάση να πάρουμε raw data να κάνουμε  post processing

και να βάλουμε εξαρχής τις πραγματικές συντεταγμένες, όπως και αν έχουμε σημείο με γνωστές συντεταγμένες να στήσουμε την κεραία μας εκεί.
Όλα τα εξαρτήματα του ROVER , του BASE και της fix BASE τα βάζουμε μεσα στα κουτιά.
Στο project μου τα τοποθέτησα στα κουτιά , κέντραρα την κεραία και προσάρμοσα στο κάτω μέρος στήριγματα τύπου SOKKIA ( αγορασμένα απο e-bay) και πλέον μπορεί να γίνει κανονική RTK μετρηση.

ΣΥΜΠΕΡΑΣΜΑΤΑ ΑΠΟ ΤΙΣ ΔΟΚΙΜΕΣ.
Χρόνος  για fix λύση πριν απο RTK: περίπου 4-5 λεπτά.
Ακρίβεια εντοπισμού ( σε σχέση με συντεταγμένες απο RTK εμπορίου με HEPOS) : 2-4 cm
Αυτονομία : Πάνω απο 4 ώρες !!
Εμβέλεια radio link : πάνω απο 800 m.

ΜΕΛΛΟΝΤΙΚΕΣ ΠΑΡΕΜΒΑΣΕΙΣ:
Αντικατάσταση των GPS με διπλόσυχνο ( πχ. Novatel OEM 628) με κόστος περίπου 700 € το καθένα.
Καλύτερο κουτί ( εκτύπωση απο 3d printer)

Συνολικό Κόστος project : 614 € χωρίς το κινητό :-)
Πες μου κι άλλα.... »

Πέμπτη 28 Σεπτεμβρίου 2017

Πόσο "ευλογημένοι" είμαστε ;

Πόσο "ευλογημένοι" είμαστε ;


Ανεξάρτητα αν κάποιος πιστεύει ή όχι , η παρακάτω ανάλυση μπορεί να μας βάλει σε σκέψεις για το πόσο η θυσία του Χριστού στο Σταυρό μας ευλογεί κάθε μέρα.
Ας ξεκινήσουμε :
  • Η συνολική μάζα της ατμόσφαιρας μπορεί να υπολογιστεί απλά : Η πίεση της ατμόσφαιρας είναι 1Κgr/cm2 και το εμβαδό της γήινης επιφάνειας 500.000.000 Km2. Με απλό πολλαπλασιασμό  η μάζα της ατμόσφαιρας είναι 5 Χ 10^18 Kgr. 
  • Η κάθε αναπνοή ενός ανθρώπου έχει όγκο 500 ml . Με μέσο ειδικό βάρος αέρα 1.2 Kgr/m3 , η μέση αναπνοή έχει βάρος 6X10^(-4) Kgr .
  • Από τα παραπάνω βλέπουμε ότι η ατμόσφαιρα είναι : 5 Χ10^18 / 6 Χ 10^(-4) =  8.33 Χ 10^21 αναπνοές
  • Ένα γραμμομόριο (mol) αέρα σε κανονικές συνθήκες έχει όγκο 22.412 cm3 ή 0.022412 m3 και ζυγίζει 0.027 Kgr. 
  • Άρα κάθε αναπνοή μας είναι 6Χ10^(-4)/0.027 = 0.022 mol.
  • Όμως τόση ήταν και η τελευταία πνοή του Ιησού στο Σταυρό και επειδή 1mol = 6.023 Χ 10^23 μόρια έχουμε ότι η τελευταία πνοή ήταν 1.337 Χ 10 ^22 μόρια.
  • Τα 1.337 Χ 10^22 μόρια είναι περισσότερα από τις 8.33 Χ 10^21 αναπνοές που έχει συνολικά η ατμόσφαιρα.
Και καταλήγουμε σε κάτι συναρπαστικό :
Κάθε φορά που αναπνέουμε , αναπνέουμε και ένα τουλάχιστο μόριο από την τελευταία ανάσα του Ιησού στο Σταυρό.

Και μόνο που αναπνέουμε δεχόμαστε μέσα μας την ευλογία της τελευταίας πνοής στο Σταυρό.



Πες μου κι άλλα.... »