Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Sujets - Thierry

Pages: [1]
1
Vos projets / Support multi contrôleur
« le: mai 01, 2018, 10:26:20 pm »
J'ai en tête depuis quelque temps de faire évoluer DCCpp et mes autres bibliothèques vers les ESP, mais la structure matérielle à mettre en place à chaque test est assez rebutante. C'est pourquoi j'ai eu l'idée (saugrenue) d'une plateforme matérielle de test qui pourrait servir à vérifier le bon fonctionnement d'une bibliothèque pour plusieurs types d'Arduino.

La base est un connecteur femelle de deux fois dix broches, raccordées à deux jeux d'autres connecteurs femelles de même taille qui pourront recevoir des cartes de test, par exemple une avec des entrées et l'autre avec des sorties. Ou l'une avec des boutons, et l'autre avec un LMD18200, un max471 et un écran Lcd...



Au centre, le support de micro-contrôleur. Sur les côtés, les deux connecteurs des plateaux entrées et sorties.
Le connecteur central permet de raccorder via un petit circuit n'importe quel type de contrôleur. Pour que cela soit possible, l'interface est normalisée :
  • Port de droite tout en haut : GND
  • Port de droite en haut : Trois ports PWM : 1, 2 et 3
  • Port de droite en dessous : Six ports analogiques, de A1 à A6
  • Port de gauche tout en haut : 5V
  • Port de gauche en haut : sept ports digitaux, de D1 à D7
  • Port de gauche en dessous : deux ports d'interruption : 1 et 2
  • Port central de gauche à droite : 5V, 3.3V, GND .

Ce port constitue un compromis et contient le plus petit dénominateur commun entre les Arduino de différents type. En fait c'est le Uno qui a le moins de capacité, c'est donc lui la référence. Les autres type d'Arduino doivent mettre des broches équivalentes sur ces connecteurs. Il subsiste une incertitude sur les broches d'interruption qui sont gérés assez différemment selon les types d'Arduino.

Du côté des micro-contrôleurs, ils reposent sur un petit support avec la mise en correspondance des broches, connecteurs male en dessous vers la platine de test, femelle au dessus pour le contrôleur:




Je n'ai pas essayé de brancher un Teensy ou un mini, mais je ne pense pas que ce soit très différent. Par contre pour un Uno ou un Mega, il faut aller chercher les broches sur le dessus de la carte. Par exemple, c'est un shield de prototypage pluggué sur le Uno qui va s'en charger, mais je ne sais pas encore comment renvoyer les broches en dessous... Ou peut être faut il présenter le Uno tête en bas, avec les deux connecteurs de dix broches soudés sur le shield ?

Sur les connecteurs des entrées et sorties, toutes les broches du support sont disponibles. Il faudra que les deux circuits soient compatibles pour se partager correctement ces broches. Ou alors peut être qu'un seul connecteur avec un seul circuit suffirait... En fichier joint, les affectations des broches par type d'Arduino.

Je continue ma réflexion.

2
Bibliothèques / ArduiEmulator
« le: octobre 18, 2017, 04:15:13 pm »
Pour moi qui développe professionnellement au quotidien avec Visual Studio de Microsoft sous Windows 10, utiliser l'IDE et ses ressources pour identifier un problème dans mes développements Arduino est une 'souffrance' permanente. Pas de vrai débogueur, un éditeur minimaliste... Alors dès le début de mes pérégrinations Arduinesques, j'ai tenté de trouver le moyen d'utiliser visual plutôt que l'IDE, mais aussi et surtout de tester mon code sans utiliser d'Arduino !

Des émulateurs existent sur le net ou ailleurs, mais ils ne permettent pas de voir l'évolution des variables pendant l'exécution, ni de suivre la progression du programme sur chaque ligne de code exécutée... Et ça, c'est dans le meilleurs des cas, lorsqu'ils permettent d'utiliser une bibliothèque maison...

Utilisant Visual Studio 2015 à l'époque, j'ai créé un projet ArduiEmulator dont le but initial n'était que de pouvoir compiler et lancer un fichier .ino sans aucune émulation. Juste de quoi voir ce qui se passe dans le setup... Pour ceux que cela intéresse, ce projet est en C++ managé, c'est à dire dans le Framework .Net. Si ces mots ne vous disent rien, ce n'est pas grave, ils ne seront utiles qu'à ceux qui voudront modifier l'émulateur. Rapidement, le besoin d'une véritable émulation pour les broches et un écran Lcd ont été nécessaires. En particulier au moment de développer et tester LcdUI.

Aujourd'hui, le projet s'est étendu, et il permet de simuler une mémoire EEPROM, une liaison série bidirectionnelle, un écran Lcd. Il dispose d'une console série pour voir passer les messages, d'une zone de saisie pour en envoyer par la liaison série, d'une liste des broches actives avec possibilité de les nommer pour plus de clarté, de la possibilité de cliquer dessus pour en changer l'état, etc...

Pour s'en servir il faut un Visual Studio 2015 ou 2017 Community qui est gratuit (https://www.visualstudio.com/fr/thank-you-downloading-visual-studio/?sku=Community&rel=15). Je sais que Visual existe sous Mac, mais je ne sais pas s'il est compatible, en particulier à cause de la partie .Net qui est obligatoire pour l'émulateur. Pour simplifier, nous considéreront pour la suite que l'on parle d'une version Windows.
Les croquis créés à l'aide de l'IDE vont par défaut dans 'Mes Documents/Arduino'. C'est là qu'il faudra décompresser le ArduiEmulator.zip que vous trouverez dans le répertoire extras de toutes mes bibliothèques (très) récentes. C'est d'ailleurs le même zip partout, il n'y a pas une version par bibliothèque...

Visual a besoin d'une 'solution' (un fichier .sln) pour travailler. Une solution est un ensemble de projets (fichiers .vcxproj) dont ArduiEmulator fait partie. Toujours dans mes bibliothèques récentes, se trouve un répertoire vstudio contenant une solution. Par exemple Accessories contient dans le répertoire 'Mes documents/Arduino/libraries/Accessories/vstudio' un fichier AccessoriesTestExe.sln qui permet de travailler avec l'émulateur.
Pour utiliser un fichier ino particulier, il faut modifier le fichier InoProjet.cpp dans Visual en remplaçant l'include du type

#include "../examples/locoduino.org/programme6/programme6.ino"

par le vôtre :

#include "../../MonCroquis/MonCroquis.ino"

Ensuite, F5 pour compiler et lancer, et vous vous retrouvez dans l'émulateur !

Il est également disponible pour Commanders, Accessories, LcdUi et DcDccNanoController. Bien sûr, certaines choses ne sont pas traitées, comme le DCC ou les bus CAN, I2C ou SPI. Mais si vous utilisez Commanders, alors vous aurez à disposition un nouveau type de bouton ButtonsCommanderKeyboard qui permet d'utiliser le clavier pour simuler des poussoirs. Il y a aussi une fonction pinName() pour nommer une broche. Pour les parties de code spécifiques à Visual, il y a un define VISUALSTUDIO pour faire la différence entre compilation dans Visual et ailleurs:

#ifdef VISUALSTUDIO
...
#endif

Cela permet par exemple d'isoler une partie liée au bus I2C puisque l'émulateur n'en fera rien.
Lors d'une compilation sur Visual Studio, on compile pour un Mega2560 avec 200 broches ! Les macros comme ACCESSORIES_DEBUG_MODE et ACCESSORIES_PRINT_ACCESSORIES sont activées par défaut.

Beaucoup de fonctions ne sont que purement décoratives et ne font rien, sauf permettre de compiler, comme la gestion des interruptions ou la bibliothèque Wire utilisée par le bus SPI. D'autres ont été complètement implémentées pour fonctionner, comme LiquidCrystal ou Serial. Je ne serais pas contre un peu d'aide pour continuer à étendre les fonctionnalités de cet émulateur !

3
Présentez vous ! / Quel type de Locoduinote êtes vous ?
« le: janvier 06, 2017, 04:01:39 pm »
Bonjour à tous.

Mieux connaître son public est utile à tous les organes d'information. Locoduino n'échappe pas à la règle, et mieux vous connaître, c'est cibler au mieux vos attentes. Répondez à ce sondage, même si la seule chose à gagner est notre reconnaissance !

D'autres sondages seront proposés dans le futur dans le même but.

4
Bibliothèques / Stocker des données en mémoire Flash !
« le: avril 12, 2016, 08:48:29 am »
En surfant sur le nouveau site http://create.arduino.cc , je suis tombé sur une bibliothèque qui pourrait rendre de grands services lorsque l'EEPROM est trop petite ou déjà hors service.
D'après le pitch https://github.com/cmaglie/FlashStorage serait capable d'écrire dans la zone programme, la mémoire flash ! D'après le source, une zone mémoire est réservée par le programme via une déclaration de variable, et ensuite le programme va lire et écrire dans cette zone. L'inconvénient est la perte des données lorsque le programme est à nouveau uploadé, mais sinon le principe est des plus intéressants, surtout pour les petites bêtes bien pourvues en mémoire flash, comme le Mega...

5
Bibliothèques / Tuto d'utilisation de Git
« le: mars 26, 2016, 06:27:38 pm »
Tuto Partie 1 : Démarrer sous Windows

Git est un logiciel de gestion de versions, gérant à la fois l'historique de ses fichiers, et l'accès à des utilisateurs dotés de droits : lecture, création, modification, etc... Créé par Linus Torvalds, le créateur de Linux, c'est un produit libre, c'est à dire utilisable et modifiable par tout le monde, en respectant sa licence de distribution, bien sûr.

De nombreux sites proposent d'héberger vos codes source à travers un Git local. Les plus connus sont SourceForge et GitHub, mais il y en a de plus petits comme Gitlab, Gitorious ou Framasoft, fournisseurs de produits libres Français depuis des années. Locoduino a choisi Framasoft et installé ses quartiers de code dans Framagit. Vous pouvez y retrouver tous ses sources ici (https://git.framasoft.org/groups/locoduino.org).

Le site Framagit est organisé autour des utilisateurs, qui peuvent se regrouper sous un même nom, comme Locoduino.org. Chaque utilisateur, ou chaque groupe, dispose d'une liste de projets. Chaque projet est un 'coffre' ou un 'dépot' Git.

La première chose à faire est donc de s'inscrire sur Framagit.

Ensuite, il convient de créer votre premier projet en lui donnant un nom et une visibilité (privé, public...). Ce projet sera le réceptacle de votre travail. Le site propose tout de suite de créer un fichier README.md, faisons le pour disposer juste d'un point de départ... Cliquons sur le lien proposant la création, entrons un peu de texte sur le projet à venir, et sauvons en cliquant sur le bouton 'Commit changes'. Vous noterez que ce bouton refusera de fonctionner si aucun texte de Commit (Commit message) n'est rempli ! C'est le fonctionnement normal de Git qui veut absolument garder une trace de chaque opération effectuée sur le projet.
Voilà, vous avez un dépôt Git avec un peu de contenu !
Pour pouvoir autorisez une machine quelconque à accéder à ce dépôt, il va falloir l'authentifier auprès de Git. Pour cela nous avons besoins d'outils sous Windows.
Malgré mon âge avancé et mon expertise dans ce domaine, je ne suis pas partisan de l'utilisation de la ligne de commande. C'est pourquoi je privilégie toujours lorsque c'est possible l'utilisation d'outils modernes et interactifs.
Depuis le début (récent) de mon utilisation de Git, j'ai installé 'Git Extensions' qui est disponible depuis... SourceForge ! (https://sourceforge.net/projects/gitextensions/). Cet outil graphique d'accès à un dépôt Git permet d'éviter 99% des besoins de la ligne de commande très chères aux Linuxiens.
Outre Git Extensions lui même, l'installeur met en place de petits outils annexes comme PuTTY qui va nous servir à nous faire reconnaître.
Pour que Git authentifie une machine, il nous faut créer une clé SSH et envoyer le partie publique à Framagit, et conserver la partie privée sur notre machine.
Dans Git extensions, utiliser la commande 'Outils/PuTTY/Générer ou importer une clé' .



Suivre les instructions et lorsque la clé est générée, sauver les clés publiques et privées à un endroit sécurisé mais accessible (vous en aurez besoin à chaque connexion à Git...) et dans des fichiers différents. Attention, pour créer la clé privée, vous devrez donner une phrase clé, qui vous sera demandée à chaque connexion. C'est comme un mot de passe, il faut impérativement bien la retenir, y compris les majuscules/minuscules... La vidéo associée à Git extensions dans SourceForge explique bien tout cela, si on comprend l'Anglais supersonique de la narratrice vraisemblablement Indienne.

Laissez PuTTY ouvert, et retournons dans Framagit. Lorsque vous êtes sur le projet, allez dans les settings de votre profil. A gauche vous devez avoir une option 'SSH Keys' avec probablement '0' à côté. Copiez collez le texte de PuTTY de clé publique (le long texte imbuvable de plusieurs lignes, et plus grand que la taille visible, allez jusqu'au bout !) dans le cadre nommé 'Key'. Donnez un nom à votre clé dans 'Title' et cliquez sur Add Key. Voilà, cette clé vous identifiera pour Git.

Du côté Windows, dans Git Extensions, cliquez sur 'Outils/PuTTY/Démarrer l'agent d'authentification'. Cette commande va lancer une petite application qui va se coller dans les icônes de la barre de tâches. Cliquez droit dessus et utilisez 'Add key' qui va vous demander le fichier de clé privée, ainsi que la phrase clé. Une fois tout ça entré, la partie privée de la clé qui vous identifie est disponible a qui la demande. Vous êtes prêts pour la suite !

Je continuerais demain (si tout va bien) pour les manipulations de Git.

6
Le logiciel DCC++ / DCC++ BaseStation
« le: mars 03, 2016, 02:31:09 pm »
Denis nous a signalé il y a peu de temps l'existence d'une bibliothèque très intéressante pour créer un module de pilotage DCC à partir d'un Arduino: https://github.com/DccPlusPlus/BaseStation . Il faut que tout le monde en profite, alors je porte la discussion sur le Forum.

Ce projet couvre plusieurs domaines:

un générateur de signaux DCC comme le cmdrArduino largement utilisé ici, mais maison, qui traite aussi bien les locos que les accessoires.
un module de commande série permettant d'envoyer des commandes de pilotage via la console série
une extension de tout ça pour gérer aussi des aiguillages en conservant les dernières positions, et des capteurs de toutes sortes.

A noter les vidéos (https://www.youtube.com/channel/UCJmvQx-fe0OMAIH-_g-_rZw) très bien faites (si on comprend l'anglais) sur le DCC en général, et le projet en particulier.

Vu la qualité du discours et des commentaires sur les videos, c'est dommage que le gars soit anglo-saxon, sinon on aurait fait le forcing pour le fairer venir sur Locoduino !

7
Bibliothèques / UniversalAccessoryDecoder 420
« le: décembre 20, 2015, 02:36:19 pm »
Suite à plusieurs demandes, je me suis penché sur la consommation mémoire de UAD qui semblait à tout le monde (moi compris) excessive... De fait avec plus de 1400 octets de mémoire dynamique occupés pour l'exemple Full livré avec la version 4.15, ça laissait peu de place pour le fonctionnement. Je n'avais testé que sur un Mega, et ça marchait bien, mais sur un Uno , que nenni !

Après quelques heures d'optimisation, j'ai fait deux grosses amélios que je vais détailler ici parce que cela peut servir à beaucoup de monde...

Dcc_decoder.h/c : Ce bout de code utilisé fréquemment dans les décodeurs d'accessoires Dcc chez nous et ailleurs, est prévu pour beaucoup de choses, y compris la configuration du décodeur par des CVs. Et pour que cela marche, ce source tient une liste des valeurs courantes de toutes les CVs, soit 259 ! Dans le cas de UAD, seules certaines parmi les 29 premières sont utilisées, alors j'ai réduit cette liste à 29, soit 230 octets de gain ! Pour ceux que cela intéressent en tant que fichiers autonomes, il peuvent récupérer ces sources depuis la forge Framasoft https://git.framasoft.org/locoduino.org/UniversalAccessoryDecoder/tree/V4.

SerialCommander : Dans ce source je tente de piloter les accessoires à travers la liaison série fournie par les classes Serial et Serial1, 2 et 3 lorsqu'elles sont disponibles. Mais il y a deux gros bémols : mon source n'est pas opérationnel... J'aurais dû prendre le temps de m'inspirer de ce que Denis a écrit sur le sujet (article non publié...) mais ce n'est pas le cas ! Le second bémol, c'est que chaque classe Serial déclare en dur et en interne un buffer de lecture, un tampon de 150 caractères pris sur la mémoire dynamique. Et comme j'avais quand même tenté de faire les choses bien, j'avais permis d'utiliser les quatre interfaces séries lorsque le matériel le permet, ce sont 600 octets qui partaient en fumée même si le SerialCommander n'était pas utilisé ! Parce que l'IDE Arduino compile tous les sources du répertoire de la bibliothèque, même ceux qui ne sont appelés ou inclus par personne !

Voilà, au final, ce sont 619 octets de mémoire dynamique qui sont utilisés sur le même exemple en version 4.20 . C'est quand même beaucoup mieux et devrait permettre de piloter des accessoires avec un Uno ou un Nano !

9
Bibliothèques / MemoryUsage
« le: juillet 26, 2015, 05:47:47 pm »
Un problème récurrent, en tout cas dans mes sketchs, est la gestion de la mémoire. Chaque octet coûte cher, et les Arduino sont chiches en SRAM... Alors une nouvelle bibliothèque a été poussée sur Framasoft pour permettre d'afficher localement la taille de la mémoire disponible, et la taille maxi de la pile.

10
Bus DCC / DCC & CVs
« le: janvier 27, 2015, 03:56:51 pm »
Il y a un aspect du DCC qui me laisse perplexe. Lorsqu'une loco est sur sa voie de programmation, une centrale DCC peut l'interroger pour lui demander les valeurs courantes de ses CVs. Comment l'information de la valeur remonte t-elle ? D'ailleurs, est-ce qu'elle remonte ? Je voudrais ajouter la configuration de UAD par des CVs, mais je ne vois pas comment faire cela...

Pages: [1]