Calculs des éphémérides planétaires

J’ai donc maintenant de quoi m’amuser pour calculer les éphémérides (Soleil, Lune, planètes) avec mon Arduino. L’application des formules proposées par Jean Meeus n’est pas très complexe en soit pour peu d’être méthodique car chaque étape des calculs est bien détaillée. Là où cela se complique un peu c’est qu’il va falloir jongler avec un microcontrôleur « simple précision » hors certains calculs nécessitent une précision plus importante.
Intégration du GPS dans le projet

Et pour le fun, je me suis même amusé à animer les ondes qui émanent de l’icône de localisation pendant qu’on patiente. :)
Nouveau prototype nomade pour le dev...

Il suffit d’ouvrir le coffret, de le brancher et hop c’est parti pour les devs...

Le prototype en l’état est maintenant quasi complet et constitué des éléments opérationnels suivant:
- Arduino Mega.
- Ecran LCD 16x2.
- Buzzer.
- Led de mise en veille.
- Capteur de température/humidité DHT 11 (qui sera remplacé à terme par un DHT22 pour plus de précision).
- Puce GPS qui remplace l’ancienne horloge.
- Lecteur micro SD en remplacement du premier lecteur SD trop encombrant.
- Puce bluetooth pour la connection sans fil avec un ordi, un ipad ou un iPhone.
Voici une vue côté câblage interne...

Amélioration des performances de l'écran TFT
https://www.youtube.com/watch?v=Tjh4EQe2xGI
Optimisation:
- Librairie SD de base remplacée par SDFat qui offre de meilleurs performances.
- Modification de la méthode pushColor() de la classe Adafruit_TFT afin de permettre l’usage d’un buffer de pixels supérieur à 256. On peut ainsi allouer toute la largeur d’une image plein écran de 320 pixels.
- Les fichiers bitmap 24 bits sont remplacés par de vrais fichiers bmp 16 Bits. On évite ainsi tout besoin de conversion pour l’écran 16 bits.
- Les fichiers bmp sont aussi préalablement retournés haut/bas du fait de l’origine inversée entre le format bmp et l’écran. Ainsi on peut se déplacer linéairement lors de la lecture (pas besoin de seek).
Au final les performances sont améliorées d’un facteur 3x pour de l’affichage bitmap. :)
Ecran TFT or not écran TFT?

https://www.amazon.fr/gp/product/B01C3RDFN6/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1
L’écran offre une résolution de 320x240 en 16bits (65535 couleurs). Au dos on trouve un lecteur de carte micro SD. Et pour le tactile c’est du résistif on ne peut plus commun. Alors autant le dire tout de suite, pour 14€ ce shield est une plagia pur et simple du produit proposé par Adafruit…
2.8" TFT TOUCH SHIELD FOR ARDUINO WITH RESISTIVE TOUCH SCREEN
D’ailleurs, Kuman fournit le code source du driver sur demande uniquement par mail. Et pour cause, c’est une version à peine modifiée du code proposé par Adafruit. Sacrés chinois!!!
Les plus:
- Shield plug & play.
- Pas cher.
- Lecteur de carte SD intégré.
- Qualité d’écran très correcte notamment en mode portrait.
Les moins:
- Performance d’affichage assez limitées.
- Utilise quasiment toutes les connections d’un Arduino Uno.
- Angle de vue optimisé pour un affichage portrait ce qui devient désagréable visuellement si on préfère un usage en mode paysage.
- L’usage en simultané des librairies pour l’affichage, le tactile et la carte SD consomme quasi entièrement les 32Ko de stockage. L’usage d’un Arduino Mega n’est donc pas du luxe.
Astuce: le remplacement de la librairie SD par la librairie SDFat permet un gain substantiel: l’usage de la mémoire Flash est plus réduit (environ 9% sur un Uno) ainsi que l’usage de la SRAM et les performances sont sensiblement améliorées.
Dans l’immédiat, je ne pense pas utiliser cet écran TFT pour la raquette de commande mais il pourrait être pratique pour concevoir une console de débogage déportée avec une connexion Bluetooth.
Et hop un GPS pour le projet

Le module est piloté via la librairie TinyGPS ou TinyGPS++. Et vous savez quoi? Ca le fait carrément! Latitude/Longitude/Altitude et bien sûr horloge interne synchronisée par satellite. Voilà qui va remplacer avantageusement l’horloge avec pile bouton de mon kit de base. :)
Niveau connectique, c’est on ne peut plus basique: deux pins d’alimentations (VCC et GND) et deux pins de communications (Tx/Rx) pour la communication série des infos de la puce GPS vers le Arduino.
Seul petit bémol, le module ne maintient pas l’horloge interne en cas de coupure prolongée.
Voici la modélisation 3D sous OpenSCAD…
Module Bluetooth HC-05 et HM-10
J’ai tout d’abord opté pour un HC-06 de chez Neuftech à 10€. La puce est automatiquement reconnue par le PC au niveau des périphériques Bluetooth et se comporte ensuite comme une simple liaison série. Cela fonctionne vraiment bien. Le hic c’est qu’il n’en va pas de même pour un iBidule comme mon iPhone ou l’iPad qui ne le détectent pas.

Après quelques recherches sur le Net, il s’avère que c’est un problème connu avec les HC. La solution est le HM-10. Etant un peu échaudé par les soucis de « fake chinois » avec le souci rencontré sur les Arduino Mega, j’ai opté pour une carte SunFounder Bluetooth 4.0 HM-10. Cela reste du chinois mais cette marque semble relativement plus fiable.

Le module fonctionne parfaitement que ce soit avec le PC ou la tablette. Le seul défaut du HM-10 est de ne pas être « Plug & Play » comme le HC-06. Il faut donc en passer par les frameworks système dédiés à la gestion du Bluetooth comme par exemple IOBluetooth sur Mac.
DFRobot MicroSD

https://www.amazon.fr/gp/product/B01C8EWDDW/
Couplé à une carte 4GB, cela fera parfaitement l’affaire pour stocker la base d’objets célestes.
Voici la modélisation 3D sous OpenSCAD…



