En effet, les consommations du rasp B et de la banane sont comparables, mais l'alim du B+ a été revue... j'ai pas mesuré.
Le mouvement mondial de la nanocarte est lancé, c'est pas fini. On n'est pas au bout des améliorations.
Plutot qu'utiliser un disque SATA, je me demande si une mémoire fixe qu'on peut ajouter en option ne serait pas un bon choix sur le bateau. Des soudures, pas des contacts...
J'ai re-testé différents trucs gourmands en graphique sur le rasp B, et ça marche pas mal du tout.
Affaires à suivre, et particulièrement comment vont réagir les communautés de développeurs, geeks, et autres défricheurs.
Merci pour le lien ci dessus, à bientôt
Raspberry
- La Daurade
- Membre ACTIF
- Messages : 1799
- Inscription : sam. 23 mars 2013, 1:00 am
- Port d'attache : Les Embiez
- Nom du bateau : Gloria
Raspberry
Et si en plus tu utilises un disque SSD (mémoire flash), très peu gourmand, en lieu et place du bon vieux 78 tours 7200 tours 

- La Daurade
- Membre ACTIF
- Messages : 1799
- Inscription : sam. 23 mars 2013, 1:00 am
- Port d'attache : Les Embiez
- Nom du bateau : Gloria
Raspberry
Et si en plus tu utilises un disque SSD (mémoire flash), très peu gourmand, en lieu et place du bon vieux 78 tours 7200 tours 

- Gibule
- Membre ACTIF
- Messages : 153
- Inscription : dim. 01 janv. 2012, 1:00 am
- Port d'attache : CHAUSEY
- Nom du bateau : Salines
Raspberry
Tout à fait, quoique je viens d'avoir des farces avec des SSD dont la gestion d'alimentation doit inclure la notion de sauvegarde, surtout en cas de longues périodes d'utilisation . Une mémoire nand soudée à la place prévue devrait avoir la capacité nécessaire pour les utilisations nav.
- starfield
- Membre ACTIF
- Messages : 275
- Inscription : mer. 04 mai 2011, 2:00 am
- Port d'attache : Marseille
- Nom du bateau : starfield
Raspberry
il y a le shuttle xs35 d’occasion monté avec linux qui est bien mais évidemment c'est plus gros
pour les écrans il y a une autre piste en chine on peut commander des adaptateurs
vga vers écran d'origine portables,pour les portables il y a des normes que beaucoup de constructeurs suivent
donc il est parfois possible de récupérer un vieux portable (mort mais écran ok)
exemple http://www.bunniestudios.com/blog/?page_id=236
exemple en vidéo youtube https://www.youtube.com/watch?v=6n5qWv6Hijk
edit en francais vidéo youtube interessant https://www.youtube.com/watch?v=DJ8H6Mja0qo
matériel vendeur http://www.ebay.com/itm/M-NT68676-2A-HDMI-DVI-VGA-Audio-LCD-LED-Screen-Cont…
pour les écrans il y a une autre piste en chine on peut commander des adaptateurs
vga vers écran d'origine portables,pour les portables il y a des normes que beaucoup de constructeurs suivent
donc il est parfois possible de récupérer un vieux portable (mort mais écran ok)
exemple http://www.bunniestudios.com/blog/?page_id=236
exemple en vidéo youtube https://www.youtube.com/watch?v=6n5qWv6Hijk
edit en francais vidéo youtube interessant https://www.youtube.com/watch?v=DJ8H6Mja0qo
matériel vendeur http://www.ebay.com/itm/M-NT68676-2A-HDMI-DVI-VGA-Audio-LCD-LED-Screen-Cont…
- La Daurade
- Membre ACTIF
- Messages : 1799
- Inscription : sam. 23 mars 2013, 1:00 am
- Port d'attache : Les Embiez
- Nom du bateau : Gloria
Raspberry
Sinon tu as un kit complet : carte, connectique et écran tactile en 7" compatible Banana ET Raspberry, pour moins de 45€ (conso dérisoire).
ATTENTION : Ce Kit n'inclut pas l'alimentaion DC. Cette alimentation est très courante, donc vous sera facile à trouver. Elle sera ajouté à ce pack prochainement.
Clique sur le lien ci-dessous :
http://e.banana-pi.fr/fr/ecrans/60-ecran-tactile-7-pouces-800-x-480-pixels-…

ATTENTION : Ce Kit n'inclut pas l'alimentaion DC. Cette alimentation est très courante, donc vous sera facile à trouver. Elle sera ajouté à ce pack prochainement.
Clique sur le lien ci-dessous :
http://e.banana-pi.fr/fr/ecrans/60-ecran-tactile-7-pouces-800-x-480-pixels-…

- La Daurade
- Membre ACTIF
- Messages : 1799
- Inscription : sam. 23 mars 2013, 1:00 am
- Port d'attache : Les Embiez
- Nom du bateau : Gloria
Raspberry
Sinon tu as un kit complet : carte, connectique et écran tactile en 7" compatible Banana ET Raspberry, pour moins de 45€ (conso dérisoire).
ATTENTION : Ce Kit n'inclut pas l'alimentaion DC. Cette alimentation est très courante, donc vous sera facile à trouver. Elle sera ajouté à ce pack prochainement.
Clique sur le lien ci-dessous :
http://e.banana-pi.fr/fr/ecrans/60-ecran-tactile-7-pouces-800-x-480-pixels-…

ATTENTION : Ce Kit n'inclut pas l'alimentaion DC. Cette alimentation est très courante, donc vous sera facile à trouver. Elle sera ajouté à ce pack prochainement.
Clique sur le lien ci-dessous :
http://e.banana-pi.fr/fr/ecrans/60-ecran-tactile-7-pouces-800-x-480-pixels-…

- starfield
- Membre ACTIF
- Messages : 275
- Inscription : mer. 04 mai 2011, 2:00 am
- Port d'attache : Marseille
- Nom du bateau : starfield
Raspberry
j'ai monté un Raspberry sur un gros Amel c'est vraiment sympa comme engin j’ai fait un petit programme en python qui montre la position des
satellites gps dans le ciel et permet de mettre le pi a l'heure car il n'a pas de conservation de la date une foi éteint et l'heure est utile pour un autre programme que j’ai fait pour établir une courbe de pression
(celui de open c.p.n. ne marchait pas et je ne sait pas pourquoi il y avait une : "erreur de type de capteur")
il le lancer et l’arrêter avant de lancer open c.p.n.
il faut insister plusieurs foi pour fermer le programme c'est encore un brouillon mais ca marche bien et c'est rigolo de voir les satelites
voila le code il vaut nettement mieux le voir avec un éditeur text pour le python (coloration et formatage python)
edit oups le forum me transforme une ligne de code en smileys mais c'est pas grave car
c'est une ligne commentarisee donc sans importance pour le fonctionnement du software
edit bis je ne connaissait ni le python ni le nmea ni la com port gps donc please soyez indulgent
*************************************************************************************************************************************
# ********************************************************************
# gps tracking by alexander voivoditch 14 05 2016
#
#
# there is also a time keeper device built with reading gps nmea sentences through usb
#
#
#**************************************************************************************************************************
# here are the NMEA sentences produced by this usb gps/glonas dongle
#**************************************************************************************************************************
#
# example read fom the dongle : $GPGGA,022824.00,4319.86622,N,00522.97280,E,1,07,1.14,68.8,M,47.7,M,,*65
#
# And here is a translation from an helpfile in open plotter:
#
#
# spliting at the comas $GPGGA,022824.00, 4319.86622,N, 00522.97280,E, 1, 07,
# translate to $GPGGA ident 02h28m24s.00s, 43deg19min.86622sec,N, 005deg22min.97280sec,E, 1GPS fix, 07 satellites,
#
# 1.14, 68.8,M, 47.7,M, ,*65
# 1.14 m Dilution of precision , 68.8,M alt, 47.7, Mgeoide diff, ,*65 parity check, xor result of all the line terms
#
#
#
# gps dongle txt visible at begin of data sending mostly dongle builder infos
#****************************************************************************
#
# $GPTXT,01,01,02,u-blox ag - www.u-blox.com*50
#
# $GPTXT,01,01,02,HW UBX-G70xx 00070000 *77
#
# $GPTXT,01,01,02,ROM CORE 1.00 (59842) Jun 27 2012 17:43:52*59
#
# $GPTXT,01,01,02,PROTVER 14.00*1E
#
# $GPTXT,01,01,02,ANTSUPERV=AC SD PDoS SR*20
#
# $GPTXT,01,01,02,ANTSTATUS=OK*3B
#
# $GPTXT,01,01,02,LLC FFFFFFFF-FFFFFFFD-FFFFFFFF-FFFFFFFF-FFFFFFF9*53
#
# standard datas output example all the nmea sentence produced ar present
#************************************************************************
#
#
# GPGGA,022922.00,4319.86431,N,00522.97225,E,1,05,1.48,51.2,M,47.7,M,,*66
#
# GPGLL,4319.86431,N,00522.97225,E,022922.00,A,A*69
#
# GPRMC,022923.00,A,4319.86428,N,00522.97229,E,0.039,,030616,,,A*7D
#
# GPVTG,,T,,M,0.039,N,0.072,K,A*2C
#
# GPGSA,A,3,07,02,09,23,06,
,3.50,1.48,3.18*08
#
# GPGLL,4319.86431,N,00522.97225,E,022922.00,A,A*69
#
# GPGSV,3,3,10,26,06,042,,30,20,186,14*77
#
#
#
#
# GPGGA Global Positioning System Fix Data, Time, Latitude/Longitude, nbr sat, hz dilution, alt
# gpgll Geographic Position - Latitude/Longitude, time
# GPRMC Recommended Minimum Navigation Information, - Latitude/Longitude, time, vel, over ground, date, dd mm yy,
# GPVTG VTG - Track made good, and Ground speed,
# GPGSA GPS DOP and active satellites sat ids
# GPGSV Satellites in view elev azim
#
# $GPGSV,3,1,10,02,31,089,20,06,16,045,,12,57,053,29,14,38,284,13*77
# $GPGSV, 3, 1 ,10 ,02 ,31 ,089
# $GPGSV, 3 message in this group ,1 st mess of group ,10,nbr sat in view 02 satellite PRN number, 31 elev deg,089 azim deg
#
#
#
#**************************************************************************************************************************
#**************************************** BEGIN MAIN **********************************************************************
#**************************************************************************************************************************
import time
import subprocess # for an eventual auto computer shut down
import turtle # for postscript file writing (curve saving)
import serial # for reading port /dev/ttyACM0 on thi pi
import subprocess # for an eventual auto time
import os # for giving order as command line such as ***os.system('sudo date --set="%s"' % dateformated)***
# ************************************************************************************************************************
# *********************************** sys time and date init ************************************************************
# ************************************************************************************************************************
nmeasentance = ""
nmea_id1 = "$GPRMC"
nmea_id2 = "$GPGGA"
nmea_date = ""
nmea_time = ""
lat = ""
lon = ""
timeread=0
dateread=0
dateorg= []
timeorg= []
timesorted= []
dateformated= ""
timeformated= ""
nbr_sat=0
sat_id=""
sat_data = []
mainloopa=0
mainloopb=0
letters_nbr=0 # debug nbr of chars in the nmea sentance
k=0 ;
#*********************************************************************************************************************
#*********** setting sys time and date on good track because pi does not have time keeper device *********************
#******************* THE PAART OF THEINSTRUCTIONS DEALING WITH GPS (at the begining) ******************************
#******************* may not work if gps is busy elswhere with opencpn for an example ******************************
#*********************************************************************************************************************
#*********************************************************************************************************************
#********************* serial port readding one sentence up to stop bit *****************************************
#*********************************************************************************************************************
ser = serial.Serial(
port='/dev/ttyACM0', # port adress
baudrate = 9600, # port transit speed
parity=serial.PARITY_NONE, # parity check y/n
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1
)
counter=0
letters_nbr=0
#********************************************************************************************************************
#**** when serial readding done, sentence identification and if good ones found then do spliting,and formating ****
#************* work on $GPRMC or $GPGGA while anny one or both havent been worked out yet ***********************
#****************** if both have been worked continue direct to pressure and temp ******************************
#********************************************************************************************************************
while (mainloopa==0)or(mainloopb==0): # $GPRMC or $GPGGA while anny one or both havent been worked out yet
# $GPGGA is used for time 1st loop $GPRMC is used for date 2nd loop
nmeasentance=ser.readline() # reading serial through a call
nmea_id1 = nmeasentance.split(",") # nmeasentance is splited on each commas
neededData1 = (nmea_id1[0]) # neededData1 this is the *first* nmea word --> source and format
#print neededData1 # debug
if (neededData1 == "$GPGGA")and(timeread==0): # if $GPGGA and not worked on it before else check 2nd loop
neededData2 = (nmea_id1[1]) # this is the *second word* of nmeasentance.split (nmea_id1)
nmea_time=neededData2
for k in range (6):
timeorg.append(nmea_time[k]) # organized list time append the 6 numbers
#print k # debug
k=0
#timeformated= adding the : separators between the 2 numbers blocks hh:mm:ss
timeformated=((timeorg[0])+(timeorg[1])+":"+(timeorg[2])+(timeorg[3])+":"+(timeorg[4])+(timeorg[5]))
#print timeformated # debug
timeorg=[]
timeread=timeread+1
mainloopa=mainloopa+1 # increment to set this job as done
if neededData1 == "$GPRMC": # if $GPRMC and not worked on it before else check the while
#print nmea_id1 # debug
neededData1 = (nmea_id1[3], nmea_id1[4], nmea_id1[5], nmea_id1[6], nmea_id1[9] )
lat =(nmea_id1[3]+nmea_id1[4])
lon =(nmea_id1[5]+nmea_id1[6])
nmea_date=(nmea_id1[9])
for k in range (6):
dateorg.append(nmea_date[k])
dateformated=((dateorg[4])+(dateorg[5])+(dateorg[2])+(dateorg[3])+(dateorg[0])+(dateorg[1])+" "+(timeformated))
dateorg= []
#print timeformated #ok but format is lost before the print it is in fact : dateformated="060711 05:12:01"
#print dateformated #ok but format is lost before the print it is in fact : dateformated="060711 05:12:01"
timesorted= []
timeformated="063722"
if (dateread==0)and(timeread==1) :
#os.system('sudo date --set="%s"' % dateformated) # keep comented for computer with time keeper device such as cmos battery
dateformated= [] # needed
dateread=dateread+1 # needed
mainloopb=mainloopb+1 # needed
#*********************************************************************************************************************
#*********** now the time should be set so we can begine the satelites tracking **************************************
#*********************************************************************************************************************
#****************************************************************************************************************
#****************************************************************************************************************
#****************************************************************************************************************
#****************** **********************************
#****************** drawing the graph with the little turtle application **********************************
#****************** **********************************
#****************************************************************************************************************
#****************************************************************************************************************
#****************************************************************************************************************
from turtle import * # import all from turtle
#*******************************************************************************************************************
#****************************************** windows title ****************************************************
#*******************************************************************************************************************
title("gps checking app by Alexander Voivoditch") # set window title
#*********************************************************************
#testing the presence of bg file else soft is blocked if bg is absent
#*********************************************************************
try:
fp=open('landscape.gif',"r")
bgpic('landscape.gif')
fp.close()
except:
up()
pencolor('red')
goto(-330,270)
write ("background picture file not found rendering white background")
pencolor('blue')
print" "
print"*********************************"
print"background picture file not found"
print"*********************************"
print" "
#*******************************************************************************************************************
#**************************** drawing the and graph and sats *************************************************
#*******************************************************************************************************************
tracer(20) # tracer(n,d) truly refresh evry n frame d=delay between fames, can be ignored
sat_count = 0
nbr_undo = 0
while 1: # while 1: always on main loop the reticle should be out but have
# to find a way to refresh sats and trace but not the reticle
#*******************************************************************************************************************
#**************************** drawing the graph reticle *******************************************************
#*******************************************************************************************************************
#print turtle.pos() # debug
goto(0,0)
turtle.speed(0) # the fastest slowest is 1 to fast 10 and fastest 0
hideturtle() # hide the turtle ht()
up() # no trace
goto(-10,0) # fix at graph tail (will draw to graph corner)
down() # trace no center cross
goto( 10,0)
up()
up() # no trace
goto(0,-10) # fix at graph tail (will draw to graph corner)
down() # trace no center cross
goto(0,10)
up()
pencolor('red')
goto(0,270)
write ("360", font=("Arial", 12, "bold")) # write cardinal point with ofset to be out of graph
goto(280,0)
write ("90", font=("Arial", 12, "bold")) # write cardinal point with ofset to be out of graph
goto(0,-260)
write ("180", font=("Arial", 12, "bold")) # write cardinal point with ofset to be out of graph
goto(-300,0)
write ("270", font=("Arial", 12, "bold")) # write cardinal point with ofset to be out of graph
goto(0,0)
up() # no trace
width(3) # trace width
pencolor('orange')
goto(0,-270) # begin the circle at botom
setheading(0) # important else the circle is drawn from here (0,-270) but to a wrong direction
down()
circle (270)
up()
width(1) # trace width
t=10
k=0
complete_list = [] # init
inthdg =0
intforward =0
goto(0,0)
k=0
turtle.shape('circle')
turtle.shapesize(0.3,0.3)
pencolor('blue')
#*******************************************************************************************************************
#******************** drawing the sats and refreshing the screen **********************************************
#*******************************************************************************************************************
nmeasentance=ser.readline() # reading serial through a call
nmea_id1 = nmeasentance.split(",") # nmeasentance is splited on each commas
neededData1 = (nmea_id1[0]) # neededData1 this is the *first* nmea word --> source and format
if neededData1 == "$GPGSV": # if $GPGSV (the nmeasentance we are looking for)
nbr_sat = (nmea_id1[3]) # 4 but 1 ofset due to start at 0
goto(-260,260) # out of circle top left
write ("nbr sat "+nbr_sat) # display "nbr sat "+ value
#print nbr_sat # debug
#nbr_sat = (0) # reset to 0 after display
goto(0,0) # very important else turtle heading and range can start from sat number
complete_list=nmea_id1 # list format
#print (complete_list) # debug very useful
#print " "
complete_list.pop() # get rid of the last one '28*75\r\n' (parity check line break etc)
complete_list.pop(0) # get rid of the first one sentence id
complete_list.pop(0) # get rid of the new first one mesage number
complete_list.pop(0) # get rid of the new first one mesage rank
complete_list.pop(0) # get rid of the new first one number of sat in view
lnght=len(complete_list) # number of ellements in the list
# print ("lnght")
# print (lnght)
# turtle.setundobuffer(300) # Set or disable undobuffer integer only
while k< (lnght-3):
k=k+3 # increment by 3 because need sat id (PRN number),
# elev (00,90) azimut (000,359)true north
#print ("k+3") # debug
#print (k) # debug
if (complete_list[(k-1)]) == '': # if $GPGSV (the nmeasentance we are looking for)
inthdg=0
else :inthdg=int (complete_list[(k-1)]) # (k-1) because we avoid the unused (SNR in dB)
disphdg=inthdg+90 # +90--> 0 apear at E90 on turtle graph coordinates
setheading(disphdg) # set turtle heading
intforward=int (complete_list[(k-2)]) # (k-2) because before inthdg
dispforward=int (90-intforward) # 90 is zenith (center of circle) 0 is perimeter
forward(dispforward*3) # (90-value) give a crude conversion *3 1/2 dia = 270
# move turtle ahead along heading
sat_id=(complete_list[(k-3)]) # (k-3) because before intforward
write (sat_id) # writing sat id need somthing less persistant
stamp() # turtle impression to mark sat position
goto(0,0) # back to center for an other sat
sat_count = sat_count+1
#print "sat count"
#print (sat_count)
#print " "
#print "nbr sat"
#print (nbr_sat)
if sat_count == int (nbr_sat)+1 :
#nbr_undo = sat_count*3
sat_count = 0
#print "sat count"
time.sleep(2)
clear()
complete_list.pop(k) # pop (erase) the unused list element (SNR in dB)
complete_list.append(0) # 0 to compensate poped items
#print ("k poped") # debug
#print (k) # debug
#print (complete_list) # debug
#print (k) # debug
#print (" ") # debug
goto(0,0)
k=0 # reset to 0
complete_list=[] # reset empty for a new line scan
# $GPGSV,3,1,10,02,31,089,20,06,16,045,,12,57,053,29,14,38,284,13*77
# $GPGSV, 3, 1, ,10
# $GPGSV, 3 message in this group ,1 st mess of group ,10,nbr sat in view
#
# ,02 ,31 ,089 ,20 ,06 ,16 ,045
# 02 sat PRN number, 31 elev deg, 089 azim deg ,20 snr db sat ,06 PRN number ,16 elev deg ,045 azim deg
#lat =(nmea_id1[3]+nmea_id1[4])
#lon =(nmea_id1[5]+nmea_id1[6])
#nmea_date=(nmea_id1[9])
#for k in range (6):
# dateorg.append(nmea_date[k])
# dateformated=((dateorg[4])+(dateorg[5])+(dateorg[6]))
#dateorg= []
#print timeformated #ok but format is lost before the print it is in fact : dateformated="060711 05:12:01"
#print dateformated #ok but format is lost before the print it is in fact : dateformated="060711 05:12:01"
#end of indent does not go farther
satellites gps dans le ciel et permet de mettre le pi a l'heure car il n'a pas de conservation de la date une foi éteint et l'heure est utile pour un autre programme que j’ai fait pour établir une courbe de pression
(celui de open c.p.n. ne marchait pas et je ne sait pas pourquoi il y avait une : "erreur de type de capteur")
il le lancer et l’arrêter avant de lancer open c.p.n.
il faut insister plusieurs foi pour fermer le programme c'est encore un brouillon mais ca marche bien et c'est rigolo de voir les satelites

voila le code il vaut nettement mieux le voir avec un éditeur text pour le python (coloration et formatage python)
edit oups le forum me transforme une ligne de code en smileys mais c'est pas grave car
c'est une ligne commentarisee donc sans importance pour le fonctionnement du software
edit bis je ne connaissait ni le python ni le nmea ni la com port gps donc please soyez indulgent

*************************************************************************************************************************************
# ********************************************************************
# gps tracking by alexander voivoditch 14 05 2016
#
#
# there is also a time keeper device built with reading gps nmea sentences through usb
#
#
#**************************************************************************************************************************
# here are the NMEA sentences produced by this usb gps/glonas dongle
#**************************************************************************************************************************
#
# example read fom the dongle : $GPGGA,022824.00,4319.86622,N,00522.97280,E,1,07,1.14,68.8,M,47.7,M,,*65
#
# And here is a translation from an helpfile in open plotter:
#
#
# spliting at the comas $GPGGA,022824.00, 4319.86622,N, 00522.97280,E, 1, 07,
# translate to $GPGGA ident 02h28m24s.00s, 43deg19min.86622sec,N, 005deg22min.97280sec,E, 1GPS fix, 07 satellites,
#
# 1.14, 68.8,M, 47.7,M, ,*65
# 1.14 m Dilution of precision , 68.8,M alt, 47.7, Mgeoide diff, ,*65 parity check, xor result of all the line terms
#
#
#
# gps dongle txt visible at begin of data sending mostly dongle builder infos
#****************************************************************************
#
# $GPTXT,01,01,02,u-blox ag - www.u-blox.com*50
#
# $GPTXT,01,01,02,HW UBX-G70xx 00070000 *77
#
# $GPTXT,01,01,02,ROM CORE 1.00 (59842) Jun 27 2012 17:43:52*59
#
# $GPTXT,01,01,02,PROTVER 14.00*1E
#
# $GPTXT,01,01,02,ANTSUPERV=AC SD PDoS SR*20
#
# $GPTXT,01,01,02,ANTSTATUS=OK*3B
#
# $GPTXT,01,01,02,LLC FFFFFFFF-FFFFFFFD-FFFFFFFF-FFFFFFFF-FFFFFFF9*53
#
# standard datas output example all the nmea sentence produced ar present
#************************************************************************
#
#
# GPGGA,022922.00,4319.86431,N,00522.97225,E,1,05,1.48,51.2,M,47.7,M,,*66
#
# GPGLL,4319.86431,N,00522.97225,E,022922.00,A,A*69
#
# GPRMC,022923.00,A,4319.86428,N,00522.97229,E,0.039,,030616,,,A*7D
#
# GPVTG,,T,,M,0.039,N,0.072,K,A*2C
#
# GPGSA,A,3,07,02,09,23,06,


#
# GPGLL,4319.86431,N,00522.97225,E,022922.00,A,A*69
#
# GPGSV,3,3,10,26,06,042,,30,20,186,14*77
#
#
#
#
# GPGGA Global Positioning System Fix Data, Time, Latitude/Longitude, nbr sat, hz dilution, alt
# gpgll Geographic Position - Latitude/Longitude, time
# GPRMC Recommended Minimum Navigation Information, - Latitude/Longitude, time, vel, over ground, date, dd mm yy,
# GPVTG VTG - Track made good, and Ground speed,
# GPGSA GPS DOP and active satellites sat ids
# GPGSV Satellites in view elev azim
#
# $GPGSV,3,1,10,02,31,089,20,06,16,045,,12,57,053,29,14,38,284,13*77
# $GPGSV, 3, 1 ,10 ,02 ,31 ,089
# $GPGSV, 3 message in this group ,1 st mess of group ,10,nbr sat in view 02 satellite PRN number, 31 elev deg,089 azim deg
#
#
#
#**************************************************************************************************************************
#**************************************** BEGIN MAIN **********************************************************************
#**************************************************************************************************************************
import time
import subprocess # for an eventual auto computer shut down
import turtle # for postscript file writing (curve saving)
import serial # for reading port /dev/ttyACM0 on thi pi
import subprocess # for an eventual auto time
import os # for giving order as command line such as ***os.system('sudo date --set="%s"' % dateformated)***
# ************************************************************************************************************************
# *********************************** sys time and date init ************************************************************
# ************************************************************************************************************************
nmeasentance = ""
nmea_id1 = "$GPRMC"
nmea_id2 = "$GPGGA"
nmea_date = ""
nmea_time = ""
lat = ""
lon = ""
timeread=0
dateread=0
dateorg= []
timeorg= []
timesorted= []
dateformated= ""
timeformated= ""
nbr_sat=0
sat_id=""
sat_data = []
mainloopa=0
mainloopb=0
letters_nbr=0 # debug nbr of chars in the nmea sentance
k=0 ;
#*********************************************************************************************************************
#*********** setting sys time and date on good track because pi does not have time keeper device *********************
#******************* THE PAART OF THEINSTRUCTIONS DEALING WITH GPS (at the begining) ******************************
#******************* may not work if gps is busy elswhere with opencpn for an example ******************************
#*********************************************************************************************************************
#*********************************************************************************************************************
#********************* serial port readding one sentence up to stop bit *****************************************
#*********************************************************************************************************************
ser = serial.Serial(
port='/dev/ttyACM0', # port adress
baudrate = 9600, # port transit speed
parity=serial.PARITY_NONE, # parity check y/n
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1
)
counter=0
letters_nbr=0
#********************************************************************************************************************
#**** when serial readding done, sentence identification and if good ones found then do spliting,and formating ****
#************* work on $GPRMC or $GPGGA while anny one or both havent been worked out yet ***********************
#****************** if both have been worked continue direct to pressure and temp ******************************
#********************************************************************************************************************
while (mainloopa==0)or(mainloopb==0): # $GPRMC or $GPGGA while anny one or both havent been worked out yet
# $GPGGA is used for time 1st loop $GPRMC is used for date 2nd loop
nmeasentance=ser.readline() # reading serial through a call
nmea_id1 = nmeasentance.split(",") # nmeasentance is splited on each commas
neededData1 = (nmea_id1[0]) # neededData1 this is the *first* nmea word --> source and format
#print neededData1 # debug
if (neededData1 == "$GPGGA")and(timeread==0): # if $GPGGA and not worked on it before else check 2nd loop
neededData2 = (nmea_id1[1]) # this is the *second word* of nmeasentance.split (nmea_id1)
nmea_time=neededData2
for k in range (6):
timeorg.append(nmea_time[k]) # organized list time append the 6 numbers
#print k # debug
k=0
#timeformated= adding the : separators between the 2 numbers blocks hh:mm:ss
timeformated=((timeorg[0])+(timeorg[1])+":"+(timeorg[2])+(timeorg[3])+":"+(timeorg[4])+(timeorg[5]))
#print timeformated # debug
timeorg=[]
timeread=timeread+1
mainloopa=mainloopa+1 # increment to set this job as done
if neededData1 == "$GPRMC": # if $GPRMC and not worked on it before else check the while
#print nmea_id1 # debug
neededData1 = (nmea_id1[3], nmea_id1[4], nmea_id1[5], nmea_id1[6], nmea_id1[9] )
lat =(nmea_id1[3]+nmea_id1[4])
lon =(nmea_id1[5]+nmea_id1[6])
nmea_date=(nmea_id1[9])
for k in range (6):
dateorg.append(nmea_date[k])
dateformated=((dateorg[4])+(dateorg[5])+(dateorg[2])+(dateorg[3])+(dateorg[0])+(dateorg[1])+" "+(timeformated))
dateorg= []
#print timeformated #ok but format is lost before the print it is in fact : dateformated="060711 05:12:01"
#print dateformated #ok but format is lost before the print it is in fact : dateformated="060711 05:12:01"
timesorted= []
timeformated="063722"
if (dateread==0)and(timeread==1) :
#os.system('sudo date --set="%s"' % dateformated) # keep comented for computer with time keeper device such as cmos battery
dateformated= [] # needed
dateread=dateread+1 # needed
mainloopb=mainloopb+1 # needed
#*********************************************************************************************************************
#*********** now the time should be set so we can begine the satelites tracking **************************************
#*********************************************************************************************************************
#****************************************************************************************************************
#****************************************************************************************************************
#****************************************************************************************************************
#****************** **********************************
#****************** drawing the graph with the little turtle application **********************************
#****************** **********************************
#****************************************************************************************************************
#****************************************************************************************************************
#****************************************************************************************************************
from turtle import * # import all from turtle
#*******************************************************************************************************************
#****************************************** windows title ****************************************************
#*******************************************************************************************************************
title("gps checking app by Alexander Voivoditch") # set window title
#*********************************************************************
#testing the presence of bg file else soft is blocked if bg is absent
#*********************************************************************
try:
fp=open('landscape.gif',"r")
bgpic('landscape.gif')
fp.close()
except:
up()
pencolor('red')
goto(-330,270)
write ("background picture file not found rendering white background")
pencolor('blue')
print" "
print"*********************************"
print"background picture file not found"
print"*********************************"
print" "
#*******************************************************************************************************************
#**************************** drawing the and graph and sats *************************************************
#*******************************************************************************************************************
tracer(20) # tracer(n,d) truly refresh evry n frame d=delay between fames, can be ignored
sat_count = 0
nbr_undo = 0
while 1: # while 1: always on main loop the reticle should be out but have
# to find a way to refresh sats and trace but not the reticle
#*******************************************************************************************************************
#**************************** drawing the graph reticle *******************************************************
#*******************************************************************************************************************
#print turtle.pos() # debug
goto(0,0)
turtle.speed(0) # the fastest slowest is 1 to fast 10 and fastest 0
hideturtle() # hide the turtle ht()
up() # no trace
goto(-10,0) # fix at graph tail (will draw to graph corner)
down() # trace no center cross
goto( 10,0)
up()
up() # no trace
goto(0,-10) # fix at graph tail (will draw to graph corner)
down() # trace no center cross
goto(0,10)
up()
pencolor('red')
goto(0,270)
write ("360", font=("Arial", 12, "bold")) # write cardinal point with ofset to be out of graph
goto(280,0)
write ("90", font=("Arial", 12, "bold")) # write cardinal point with ofset to be out of graph
goto(0,-260)
write ("180", font=("Arial", 12, "bold")) # write cardinal point with ofset to be out of graph
goto(-300,0)
write ("270", font=("Arial", 12, "bold")) # write cardinal point with ofset to be out of graph
goto(0,0)
up() # no trace
width(3) # trace width
pencolor('orange')
goto(0,-270) # begin the circle at botom
setheading(0) # important else the circle is drawn from here (0,-270) but to a wrong direction
down()
circle (270)
up()
width(1) # trace width
t=10
k=0
complete_list = [] # init
inthdg =0
intforward =0
goto(0,0)
k=0
turtle.shape('circle')
turtle.shapesize(0.3,0.3)
pencolor('blue')
#*******************************************************************************************************************
#******************** drawing the sats and refreshing the screen **********************************************
#*******************************************************************************************************************
nmeasentance=ser.readline() # reading serial through a call
nmea_id1 = nmeasentance.split(",") # nmeasentance is splited on each commas
neededData1 = (nmea_id1[0]) # neededData1 this is the *first* nmea word --> source and format
if neededData1 == "$GPGSV": # if $GPGSV (the nmeasentance we are looking for)
nbr_sat = (nmea_id1[3]) # 4 but 1 ofset due to start at 0
goto(-260,260) # out of circle top left
write ("nbr sat "+nbr_sat) # display "nbr sat "+ value
#print nbr_sat # debug
#nbr_sat = (0) # reset to 0 after display
goto(0,0) # very important else turtle heading and range can start from sat number
complete_list=nmea_id1 # list format
#print (complete_list) # debug very useful
#print " "
complete_list.pop() # get rid of the last one '28*75\r\n' (parity check line break etc)
complete_list.pop(0) # get rid of the first one sentence id
complete_list.pop(0) # get rid of the new first one mesage number
complete_list.pop(0) # get rid of the new first one mesage rank
complete_list.pop(0) # get rid of the new first one number of sat in view
lnght=len(complete_list) # number of ellements in the list
# print ("lnght")
# print (lnght)
# turtle.setundobuffer(300) # Set or disable undobuffer integer only
while k< (lnght-3):
k=k+3 # increment by 3 because need sat id (PRN number),
# elev (00,90) azimut (000,359)true north
#print ("k+3") # debug
#print (k) # debug
if (complete_list[(k-1)]) == '': # if $GPGSV (the nmeasentance we are looking for)
inthdg=0
else :inthdg=int (complete_list[(k-1)]) # (k-1) because we avoid the unused (SNR in dB)
disphdg=inthdg+90 # +90--> 0 apear at E90 on turtle graph coordinates
setheading(disphdg) # set turtle heading
intforward=int (complete_list[(k-2)]) # (k-2) because before inthdg
dispforward=int (90-intforward) # 90 is zenith (center of circle) 0 is perimeter
forward(dispforward*3) # (90-value) give a crude conversion *3 1/2 dia = 270
# move turtle ahead along heading
sat_id=(complete_list[(k-3)]) # (k-3) because before intforward
write (sat_id) # writing sat id need somthing less persistant
stamp() # turtle impression to mark sat position
goto(0,0) # back to center for an other sat
sat_count = sat_count+1
#print "sat count"
#print (sat_count)
#print " "
#print "nbr sat"
#print (nbr_sat)
if sat_count == int (nbr_sat)+1 :
#nbr_undo = sat_count*3
sat_count = 0
#print "sat count"
time.sleep(2)
clear()
complete_list.pop(k) # pop (erase) the unused list element (SNR in dB)
complete_list.append(0) # 0 to compensate poped items
#print ("k poped") # debug
#print (k) # debug
#print (complete_list) # debug
#print (k) # debug
#print (" ") # debug
goto(0,0)
k=0 # reset to 0
complete_list=[] # reset empty for a new line scan
# $GPGSV,3,1,10,02,31,089,20,06,16,045,,12,57,053,29,14,38,284,13*77
# $GPGSV, 3, 1, ,10
# $GPGSV, 3 message in this group ,1 st mess of group ,10,nbr sat in view
#
# ,02 ,31 ,089 ,20 ,06 ,16 ,045
# 02 sat PRN number, 31 elev deg, 089 azim deg ,20 snr db sat ,06 PRN number ,16 elev deg ,045 azim deg
#lat =(nmea_id1[3]+nmea_id1[4])
#lon =(nmea_id1[5]+nmea_id1[6])
#nmea_date=(nmea_id1[9])
#for k in range (6):
# dateorg.append(nmea_date[k])
# dateformated=((dateorg[4])+(dateorg[5])+(dateorg[6]))
#dateorg= []
#print timeformated #ok but format is lost before the print it is in fact : dateformated="060711 05:12:01"
#print dateformated #ok but format is lost before the print it is in fact : dateformated="060711 05:12:01"
#end of indent does not go farther
- starfield
- Membre ACTIF
- Messages : 275
- Inscription : mer. 04 mai 2011, 2:00 am
- Port d'attache : Marseille
- Nom du bateau : starfield
Raspberry
nbr sat 12 veut dire il y a 12 sat en vue
et les numeros que l'on voit sont leur noms on peut aussi avoir des infos de qualité signal et disponibilité etc.
le point au centre du graphique est le zenith (verticale au dessus observateur) le cercles jaune représente l'horizon des observations
pour essayer avec ubuntu linux : ca doit marcher aussi sur windows ou mac mais il faut avoir python installé
ps sur le bateau ou il y a beaucoup de place je lui ai mis un grand écran moniteur hdmi avec une très bonne résolution et le pi s'en sort très bien c'est bluffant

le fond (nécessaire) http://www.sendspace.com/file/akww9j
le fichier bat a adapter a vos ordis python /votre répertoire depuis la racine/good_gps.py
le fichier python come ca il n'y a plus de poissons (smileys) qui se baladent au milieu des commentaires du code http://www.sendspace.com/file/tdi93v
et les numeros que l'on voit sont leur noms on peut aussi avoir des infos de qualité signal et disponibilité etc.
le point au centre du graphique est le zenith (verticale au dessus observateur) le cercles jaune représente l'horizon des observations
pour essayer avec ubuntu linux : ca doit marcher aussi sur windows ou mac mais il faut avoir python installé
ps sur le bateau ou il y a beaucoup de place je lui ai mis un grand écran moniteur hdmi avec une très bonne résolution et le pi s'en sort très bien c'est bluffant


le fond (nécessaire) http://www.sendspace.com/file/akww9j
le fichier bat a adapter a vos ordis python /votre répertoire depuis la racine/good_gps.py
le fichier python come ca il n'y a plus de poissons (smileys) qui se baladent au milieu des commentaires du code http://www.sendspace.com/file/tdi93v