jeudi 28 avril 2011

/Flash: Affichage, changement de technique

Après quelques temps à faire des essais, il apparait que les LED, c'est pas le sommum: il faut avoir les yeux rivés au truc si on ne veut pas louper une info, et c'est d'autant plus marquant si les LED clignotent.

Je viens donc de faire une petite transfo: j'ai remplacé une des LED par un petit buzzer.
C'est plus facile à appréhender, et le type de radar est plus simple à identifier:

  • un bip: radar fixe
  • deux bips: radar feu
  • trois bips: radar mobile
La période entre 2 (groupes de) bips est directement liée à la distance entre le véhicule et le radar:
700m: 700ms, 1km: 1s

Je commence les essais et si ça convient, je nettoie un peu le code et le mets en ligne

lundi 25 avril 2011

/Flash: la base de données

Voici un extrait de la base de données des radar:

6.54937;48.96629;0;50;361;1213;XXX
1.74705;48.96686;0;110;361;2312;XX
2.09068;48.97220;0;90;361;13224;XX
2.23332;48.97715;0;110;361;10476;X

Dans l'ordre:
- longitude sur 7 digits, point compris
- latitude sur 8 digits, point compris
- type de radar sur 1 digit:
  • 0 pour un radar fixe
  • 1 pour un radar mobile
  • 2 pour un radar feu
- vitesse de contrôle sur 3 digit maxi
- cap de radar sur 3 digits maxi (1 cap à 361° indique que le cap du radar est inconnu)
- identifiant unique, sur 5 digits max
- complément de chaine, pour avoir des chaines de longueur constante de 36 caractères

Les données en rouge ne sont pas utilisées actuellement:
- J'ai dernièrement retiré le contrôle du respect de la vitesse car ça alourdissait l'affichage, en rajoutant des séquences de clignotement
- un petit bug empêche de déterminer avec exactitude les cohérences de cap entre le véhicule et le radar. J'espère trouver une solution. Cela permettrait d'affiner les avertissements.

dimanche 24 avril 2011

/Flash: Schéma électrique

/Flash: Affichage

Mon choix de LED s'est porté sur des modèles diamètre 5mm, de couleurs rouge, orange, jaune.
En fonction de la distance restant à parcourir pour rejoindre le radar, la LED allumée change de couleur: jaune, puis orange, puis rouge.

Les paliers sont modifiés en fonction de la vitesse de déplacement. Les voici:

SeuilV<80km/hv>80km/h
S long1000m2000m
S moy500m1000m
S min250m5000m

En fonction du type de radar et de la distance, l'allumage des LED est le suivant:
Type radar              D<S min           D<S moy         D<S long

Fixe / mobile                                                   

Feu                                                                        

Un radar feu situé à plus de 500m ne sera pas détecté différemment d'un radar feu situé à 1000m. Ce n'est pas génant car ces radar sont en ville et une détection si éloignée est sans intérêt.


En complément, d'autres séquences sont prévues en fonction du statut de fonctionnement:

Erreur de lecture carte SD
Recherche des radars en BDD
Trame GPS invalide ou GPS hors portée

/Flash: modules logiciels

/Flash se base sur plusieurs librairies externes:
- TinyGPS pour la mise en oeuvre du GPS sur port série
- SDFATlib pour la mise en oeuvre du lecteur SD
- NewSoftSerial, permettant de définir plusieurs ports série (GPS, terminal pour debugger)

Le déroulement séquentiel s'approche de ceci:

Acquisition d'une trame valide
Véhicule dans zone géo ?
non         .
          oui
Calcul d'une nouvelle zone avec VHL au centre
Calcul/affichage distance radar le plus proche
Retour début

La seule contrainte imposée lors du calcul de la distance avec le radar le plus proche est la suivante: le radar le plus proche de la liste n'est pris en compte que si la distance diminue entre 2 calculs (véhicule se rapproche effectivement du radar)

/Flash: présentation ...

/Flash ... (lire flash barre)

Je viens partager ma première réalisation ayant une "utilité", dans le sens où c'est un produit, pas un embryon de truc roulant vers la lumière, ou vers l'obscurité, ou je ne sais quoi d'autre encore ...

/Flash est censé protéger de la lumière ... pas de celle du soleil: une bonne paire de lunettes appropriées devrait suffire, mais ce celle des flashs, qui bordent de plus en plus les côtés de nos chaussées, ou le pied de nos feux de circulation. /flash est un avertisseur de radar ...

J'habite dans le 95, qui est le département le plus peuplé en terme de radar feu. Je dois vous dire que c'est hallucinant: on en voit partout !

Ayant un vieux GPS série, je me suis dit qu'en le couplant avec un Arduino, un lecteur de carte SD et 2-3 LED, ça devrait donner quelque chose de potable.
C'est pas que je vais en avoir une utilité folle: je me déplace exclusivement en électrique, à 50km/h, en silence ... Je vous invite d'ailleurs à visiter LE forum de référence en terme de véhicule électrique.
Enfin, revenons-en à /Flash ...
Le but est donc de réaliser un avertisseur de radar grâce à un GPS embarqué, et de prévenir lorsque "la menace" s'approche.

Le matériel
  1. La base de données:
    La liste des radar est stockée sur carte SD. Cette liste est issue de celle mise à disposition gratuitement sur gpspassion. J'ai cependant supprimé beaucoup de radar mobiles pour l'alléger, puis je l'ai mis manuellement à jour, surtout sur les zones qui m'intéressent.
    Il en ressort une liste de radar fixes & feu (et quelques radar mobiles) avoisinant les 2000 !
  2. Le contrôleur:
    L'Arduino utilisé est un '2009'. Un Uno fonctionnerait tout autant. Un Mega serait largement plus approprié aux futures évolutions. Vu la quantité de données à traiter, j'ai été obligé de tailler dans les fonctions proposées, pour n'en garder que le minimum
  3. L'affichage:
    Réduit à son plus strict minimum: 3 LED 1 buzzer
L'approche logicielle
  • A partir des coordonnées actuelles du véhicule, effectuer une recherche sur une zone de proximité de tous les radar présents. La capacité en RAM de l'Arduino m'a vite imposée de limiter la liste des radar pris en considération en la limitant à 10.
  • Vérifier en permanence la distance entre le véhicule et chacun des 10 radar, et remonter une info en fonction de la distance et du type de radar: le comportement 'préventif' à adopter n'est pas le même entre un radar en bord de route et un radar feu: dans un cas il vaut mieux anticiper un changement de la couleur des feux, dans l'autre vérifier qu'on respecte la limitation de vitesse
  • Lorsque le véhicule qui la zone de recherche, relancer une nouvelle recherche par rapport à la position actuelle ...

Les évolutions possibles

Moyennant une évolution matérielle, soit en passant sur un Arduino Mega, soit en mettant 2 '2009' en parallèle, il serait intéressant:
  • de virer les LED buzzer au profit d'un LCD: les LED qui clignotent c'est joli, mais au bout d'un moment, on n'a plus vraiment la logique en tête: radar fixe, mobile, feu, en fonction de la distance, du respect de la vitesse ... ça fait beaucoup de combinaisons pour pas beaucoup de LED
  • de pouvoir rajouter des radar en live, au moyen d'un petit poussoir par exemple
  • d'affiner le calcul de l'approche véhicule-radar. Actuellement, le radar peut être en contresens, dans une rue perpendiculaire ... on est tout de même prévenu.