LOCODUINO

Parlons Arduino => Vos projets => Discussion démarrée par: Sed le février 25, 2018, 04:02:18 pm

Titre: Début de projet !
Posté par: Sed le février 25, 2018, 04:02:18 pm
Bonjour,

On débute dans Arduino, mais avons des bonnes bases de programmation, notamment en C, C++.
Voici notre projet, où tout est encore à faire (même l'achat du train/voies).

Via Arduino, pour un train :

- Vitesse contrôlable, en avant comme en arrière
- Sélection de l'embranchement qu'emprunte un train.
- Contrôle de l'éclairage du train
- Détection d'obstacles sur les voies entraînant l'arrêt du train.
- Chargement et déchargement de convois du train.
- Pilotage automatique/manuel.
- Feu rouge/vert obligeant l'arrêt du train.
- Passages à niveau.

Ce serait le début d'un projet (cadre universitaire), qui pourrait être repris par d'autres personnes dans les années suivantes (où il y aurait alors plusieurs trains à gérer, etc.. )
Mais nous débutons avec un seul train pour l'instant.

Voici le coffret que nous pensons acheter :
http://www.marklin.be/fr/produits/detailsh0.html?art_nr=29452

On voit qu'il est muni d'un décodeur numérique mfx. On pense avoir compris qu'il existe plusieurs protocoles, mfx, dcc, motorola.
Dans les articles présents sur votre site, ça semble très tourné vers le dcc.  (par exemple : http://www.locoduino.org/spip.php?article19)  Si l'on veut s'en inspirer pour réaliser notre projet, est-ce que le mfx pose problème ? Acheter un décodeur mfx n'est pas nécessaire si on veut tout contrôler via Arduino, correct ?


Par ailleurs, nous devons être assez précis au niveau du budget, on sait qu'Arduino exécute "un seul programme".
Est-ce qu'il faudrait acheter plusieurs Arduino pour tout ce qu'on veut faire ?

Si vous pensez qu'on a pas bien saisi certaines choses, n'hésitez pas à nous le mentionner :)
Merci pour tous vos articles, ils nous sont très utiles !


Titre: Re : Début de projet !
Posté par: Dominique le février 25, 2018, 04:50:14 pm
Bonjour Sed,

Cette approche projet pour l’education (en Belgique ?) est très intéressante. On y trouve des éléments qui demanderont à être complétés plus tard (plusieurs trains par exemple), alors pourquoi ne pas regarder tout de suite au loin en visant une étape intermédiaire ?

Regardez si votre décodeur MFX supporte le DCC qui est quand même la norme la plus répandue. Sinon vous devrez faire la modification du logiciel DCC++ !!! Ou changez de décodeur, c’est possible.

L’Arduino ne peut faire tourner qu’un seul programme à la fois, sans OS multitâche ... mais ce programme peut être multitâche (regardez les nombreux exemples sur Locoduino, il y a de multiples types d’Arduino plus ou moins puissants, à vous de choisir celui qui vous convient, et il y a de multiples architectures possibles, comme dans le reste de l’informatique. Rien n’empeche de réaliser votre projet avec un ET/OU plusieurs Arduino.

Amicalement
Dominique

Titre: Re : Début de projet !
Posté par: Thierry le février 25, 2018, 09:01:49 pm
Pour compléter la réponse de Dominique et pour être clair : DCC++ (la base de toutes nos commandes Dcc) ne gère pas Mfx et il n'y a pas de projet pour cela dans un avenir plus ou moins proche. Donc il y a deux solutions si vous voulez continuer avec Arduino, c'est de trouver une bibliothèque qui gère Mfx ou de changer le décodeur de votre locomotive pour un modèle Dcc, un standard ouvert du modélisme ferroviaire, contrairement à Mfx qui est je crois la propriété de Marklin.
Bien sûr, nous serons heureux de vous aider dans votre projet avec Dcc. Bon courage.
Titre: Re : Début de projet !
Posté par: msport le février 26, 2018, 12:18:22 am
Bonjour,
Il me semble que Locoduino a complètement adopté le DCC (en particulier DCC++), et le support sera optimum pour ce protocole.
Bien qu'on ait un (des) exemple(s) de commande du DCC via IR, ce n'est pas la philosophie de base.
Or ce kit indique :
Liberté de mouvement autour du réseau grâce à l'appareil de commande IR sans fil.
Je crains que cela ne réduise fortement les possibilités d'interaction.
Plutôt que d'investir dans un coffret (il en existe chez ROCO)
https://www.roco.cc/fr/productsearch/0-0-0-0-0-0-0-001001/products.html
il vaudrait mieux acquérir une locomotive, numérique ou numérisable et construire la BaseStation décrite dans ces colonnes. Et étudier les multiples possibilités de commande de cette locomotive et de ses fonctions puis des accessoires que constituent les appareils de voie (JMRI, manettes physiques ou logiques ...).
Coté budget, tout ce qui tourne autour de l'arduino est sans commune mesure (prix dérisoires) avec les éléments vendus dans le commerce.
L'ordre de grandeur pour une locomotive sonorisée est de 250€ (mais il existe d'excellentes occasions), une BaseStation peut rester en dessous de 10€, JMRI est gratuit et n'implique qu'un PC ou un Mac et éventuellement un ancien téléphone portable.
Lisez l'article récent suivant pour éviter de partir dans une mauvaise direction ou de vous disperser (fixez vous des objectifs raisonnables - en identifiant les objectifs pédagogiques - car vous avez tout prévu dans dans votre descriptif) :
http://locoduino.org/spip.php?article233
Bien à vous,



Titre: Re : Début de projet !
Posté par: Dominique le février 26, 2018, 09:46:45 am
Et j’ajouterai qu’il faut eviter d’acheter un coffret contenant une centrale DCC, si vous voulez construire votre propre centrale. ;) :D ;D
Titre: Re : Début de projet !
Posté par: bobyAndCo le février 26, 2018, 01:09:01 pm
Petite précision suite à la réponse de Thierry :

DCC++ (la base de toutes nos commandes Dcc) ne gère pas Mfx

Ah oui, Marklin la joue un peu vache sur ce coup car leurs décodeurs sont en générale compatible DCC (j'en ai trois) mais à priori pas ici. Pour te "scotcher" à la marque dès ton premier achat ! C'est pas pour rien que l'on nomme cela un produit d'appel.

Bien amicalement.

Christophe.
Titre: Re : Début de projet !
Posté par: Sed le mars 13, 2018, 11:53:12 am
Bonjour, voici un suivi de l'évolution de notre projet (oui nous sommes bien de Belgique :) ) :

Après plusieurs vérifications, le train que nous proposions ne supportait effectivement pas le dcc. On a donc fini par choisir un autre train et voici celui que nous devrions commander d'ici peu :

https://www.latelierdutrain.com/coffret-demarrage-digital/106853-coffret-digitale-avec-multimaus-vapeur-obb-ep-iii-ho-187-fleischmann-631582-4005575180818.html?search_query=loco%20et%20rails&results=511

On a vu qu'il fallait amplifier le signal qu'on peut sortir d'un Arduino pour alimenter le rail en DCC. On se tournerait alors vers un Motor shield + Arduino uno.
Pour générer le signal, on pense utiliser le DCC++, il faut cependant encore qu'on creuse un peu plus le sujet.

A cela nous ajouterions 1 aiguillage gauche et droit + rails manquants pour compléter ce circuit, et pouvoir faire des changements de voie.
Pour les aiguillages, nous envisagions de les commander également via DCC par ce décodeur + moteurs d'aiguillages :
http://www.fleischmann.de/fr/product/22394-0-0-0-0-0-0-004002002/products.html
Ce décodeur est apparemment octuple, et peut donc servir pour plus que 2 aiguillages. Ce n'est pas un souci puisqu'à priori ce projet continuerait les années suivantes, et ils auraient alors aussi besoin de commander d'autres aiguillages.

Nous voulions faire du chargement/déchargement de convois. Or il n'y a pas de wagon basculant ici, nous en achèterions un, et il s'agirait alors d'arriver à le faire basculer par nous-mêmes.

On a trouvé une vidéo (bien que ce ne soit pas le même wagon basculant que le nôtre) ou c'était plus ou moins bien réalisé :
https://www.youtube.com/watch?v=dE1zPnSVOb8

On a pas trouvé de "pièces" telles quelles pour réaliser le déchargement de la même façon, on essayera de faire quelque chose dans le même genre une fois que nous aurons reçu le wagon, comme sa forme  n'est pas la même que celle vue dans cette vidéo.

Quant à l'éclairage du train, il n'y a pas d'achats particuliers à faire, on peut les commander via le décodeur du train en lui envoyant la bonne instruction, si on a bien compris.

Pour la détection d'obstacles, nous utiliserions un arduino nano qu'on mettrait quelque part sur le train + un capteur ultrason pour connaître la distance.

Pour notre passage à niveau, on utiliserait des interrupteurs à lame souple avec des aimants pour les activer, comme vu sur un article de ce site, bien qu'il n'y ait pas plusieurs voies à l'endroit du passage à niveau.

Voilà un peu où nous en sommes arrivés  jusqu'à maintenant :)




 
Titre: Re : Début de projet !
Posté par: Sed le mars 13, 2018, 12:03:40 pm
Et merci pour vos commentaires et conseils  ;) !
Titre: Re : Début de projet !
Posté par: msport le mars 13, 2018, 04:00:22 pm
Bonjour,
comme évoqué plus tôt, faites attention au double emploi de ce que vous prévoyez d'acheter : dans ce stater set vous avez un booster 10764 et une multimaus qui assurent les mêmes fonctions que la BaseStation et ses commandes.
De même pour le décodeur d'aiguillages qui correspond à un décodeur d'accessoires (Rudy, ...)
Contrairement à votre cahier des charges initial, vous semblez vouloir commencer par l'utilisation du matériel du commerce, ce qui n'est pas le sujet de prédilection de Locoduino, mais c'est vous qui choisissez.
Bien à vous.
Titre: Re : Début de projet !
Posté par: Sed le mars 17, 2018, 01:17:51 pm
Effectivement, merci on y fera attention !

On va acheter les composants nécessaires pour chaque partie pas à pas, pas tout en une fois, ce serait idiot de tout acheter si on a des problèmes qu'on ne sait pas résoudre dès le début.

D'abord le train/rails / arduino, et le faire fonctionner en générant le signal DCC.
A ce niveau-là, on avait une question : on a cru voir qu'il fallait alimenter en 15-18V pour un arduino uno à cet escient, si on ne dit pas de bêtises.
Est-ce bien le cas? Qu'utilisez-vous simplement pour cela ?
Titre: Re : Re : Début de projet !
Posté par: Dominique le mars 17, 2018, 01:39:34 pm
D'abord le train/rails / arduino, et le faire fonctionner en générant le signal DCC.
A ce niveau-là, on avait une question : on a cru voir qu'il fallait alimenter en 15-18V pour un arduino uno à cet escient, si on ne dit pas de bêtises.
Est-ce bien le cas? Qu'utilisez-vous simplement pour cela ?

Attention, suivez bien ce qui est décrit dans cet article :
http://www.locoduino.org/spip.php?article187 (http://www.locoduino.org/spip.php?article187)

Le 15-18v ne doit pas être appliqué sur l’Arduino (sinon fumée).

Titre: Re : Début de projet !
Posté par: msport le mars 17, 2018, 02:26:06 pm
A moins que vous ne commenciez par un Thalys à vitesse nominale (et encore que), vous pouvez démarrer par la solution basique : un shield moteur Arduino enfiché sur un Arduino UNO et un bloc secteur 12V 2A. (montage à conserver ensuite car il vous servira à programmer vos locos). Télé déversez DCCpp_Uno.ino dedans, lancez vos premières commandes avec le serial monitor et vous aurez fait la moitié du chemin.
N'hésitez pas à relire les articles d’initiation de la partie éditoriale de Locoduino si vous avez du mal.
Bien à vous.
Titre: Re : Début de projet !
Posté par: Sed le avril 02, 2018, 03:40:55 pm
Bonjour,
on a fini par trouvé une alimentation qui convient.

(https://scontent.fbru3-1.fna.fbcdn.net/v/t34.0-12/29920482_1842581725774120_189095853_n.jpg?_nc_cat=0&_nc_eui2=v1%3AAeElRCD1duYK3kd6-8y8NVhYJ35yii1GGi3GuylyhiALT-Jwv-JKW_W-UZZNx51DQdzkus2KdLM28hfQ05WyBK9Z-5AHS4V554llwjRm1XpIsA&oh=6d27eda71b6e4cfc769c925b67062668&oe=5AC45E55)

Cette alimentation est donc à brancher sur le motorshield, via deux fils.

(http://www.locoduino.org/local/cache-vignettes/L610xH559/schema_5-2fd63.png?1484740403)

Comment faire le lien entre la sortie initiale de l'alimentation, et les deux fils que l'on doit connecter au motorshield ?

Titre: Re : Début de projet !
Posté par: msport le avril 02, 2018, 05:46:20 pm
Bon, vous avez pris l'option Thalys. Soignez la protection contre les courts-circuits.
Avec votre alimentation, vous couperez la prise et raccorderez les fils au shield en respectant la polarité. (à vérifier avec un multimètre)
Comme vous l'a recommandé Dominique vous séparerez l'alimentation du shield et celle de l'Arduino en coupant le strap au dos du shield.
Si vous ne souhaitez pas mutiler votre alimentation, il faut utiliser une prise femelle 5,5/2,1 et souder deux bouts de fils pour la relier aux bornes correspondantes du motor shield.
https://www.ebay.fr/itm/5-Stueck-2-1-mm-x-5-5-mm-Female-DC-Power-Socket-Verbindungsstecker-GY/262519539749
Si vous n'aimez pas souder, même genre, à vis
https://www.ebay.fr/itm/1Pair-Male-Female-Plug-12V-DC-Power-Jack-Connector-Adapter-CCTV-Camera-2-1x5-5mm/122175096071
Et si vous mettez en boitier :
https://www.ebay.fr/itm/10PCS-DC-Power-Supply-Jack-Socket-Female-Panel-Mount-Connector-5-5-x-2-1m-2018/202249657772
Vous auriez retenu une alimentation 12V , vous n'auriez peut-être pas atteint les 300 km/h mais vous auriez simplement mis la fiche dans la prise de l'Arduino, ce que vous allez être obligé de faire pour l'alimenter. A ne pas faire avec votre alimentation, comme déjà dit, avec 18V l'arduino grillera.
Ci-dessous un lien pour une 12V 3A pour 2,93€
https://www.ebay.fr/itm/Adapter-Charger-Power-Supply-for-LED-Strip-Light-DC-5-6-9-12V-1-2-3A-AC110-220V/222871063041
Bon courage.
Titre: Re : Début de projet !
Posté par: Dominique le avril 02, 2018, 06:22:23 pm
Vous auriez retenu une alimentation 12V , vous n'auriez peut-être pas atteint les 300 km/h mais vous auriez simplement mis la fiche dans la prise de l'Arduino, ce que vous allez être obligé de faire pour l'alimenter. A ne pas faire avec votre alimentation, comme déjà dit, avec 18V l'arduino grillera.

A mon avis c'est mieux d'avoir deux alims indépendantes : une pour la traction (15 à 18V) et une pour l'Arduino (9V plutôt que 12V pour ménager le régulateur de tension de l'Arduino car c'est sa limite supérieure).

Si on ne peut pas disposer de 2 alims, la solution est de faire du 9V à partir du 15V en utilisant un régulateur "step down" de ce genre là :
https://www.ebay.fr/itm/1237-LM2596S-LM2596-Voltage-step-down-Module-arduino-DC-4-0-40-a-1-3-37-V/292006410217?_trkparms=aid%3D555018%26algo%3DPL.SIM%26ao%3D1%26asc%3D20170920101122%26meid%3Df732b4a8bdcd4d8aa48e0b50451898ee%26pid%3D100010%26rk%3D4%26rkt%3D6%26sd%3D262936743644%26itm%3D292006410217&_trksid=p2047675.c100010.m2109 (https://www.ebay.fr/itm/1237-LM2596S-LM2596-Voltage-step-down-Module-arduino-DC-4-0-40-a-1-3-37-V/292006410217?_trkparms=aid%3D555018%26algo%3DPL.SIM%26ao%3D1%26asc%3D20170920101122%26meid%3Df732b4a8bdcd4d8aa48e0b50451898ee%26pid%3D100010%26rk%3D4%26rkt%3D6%26sd%3D262936743644%26itm%3D292006410217&_trksid=p2047675.c100010.m2109)
Titre: Re : Début de projet !
Posté par: msport le avril 02, 2018, 07:28:27 pm
Absolument d'accord, mais il faut s'adapter à l’expérience de ceux qui débutent (leur projet).

Mieux vaut commencer simple et procéder par étapes.
Titre: Re : Début de projet !
Posté par: Sed le avril 24, 2018, 04:32:48 pm
Bonjour,

nous voulions utiliser du 18v car l'idée est de faire un projet sur plusieurs années, avec plusieurs trains, et on avait compris que le 18v était donc beaucoup mieux, le 12V suffisant à un train et à vitesse non maximale.

Nous avons fini par faire fonctionner notre train via DCC++, on envoie des commandes via le moniteur série (<t 1 3 100 1>) et il roule simplement. (Y a-t-il une commande spécifique pour gérer l'éclairage d'un train également ?)

Par ailleurs, dans le cablâge qu'on doit faire sur le motorshield, il y a la voie principale et la voie de programmation. Nous n'avons fait que la voie principale et notre train tourne. Quel est le rôle de chaque voie ? Est-ce nécessaire d'en avoir deux tant qu'il n'y a qu'un train?

Si on veut coder un programme avec DCC++, et non juste taper une commande "en temps réel" sur le moniteur série, comment s'y prendre ? Il faut reprendre une partie du code DccppUno et inclure les librairies dcc++ utiles au début ?


Par souci de prix, on va commander les aiguillages via des servo-moteurs. Cependant, ça commence à faire beaucoup pour mettre sur une même carte arduino.

On a vu qu'il existait ce qu'on appelle "Master reader( ou writer)/ Slave sender" si on utilise une seconde carte. (est-ce intéressant / la meilleure option ? ou on peut utiliser un breadboard pour avoir plusieurs fils sur un 5V par exemple ?)

Encore merci pour toutes vos réponses et votre excellent site :)
Titre: Re : Re : Début de projet !
Posté par: msport le avril 24, 2018, 05:44:59 pm
... et il roule simplement ...
Bravo, vous avez fait le plus difficile.

Y a-t-il une commande spécifique pour gérer l'éclairage d'un train également ?
revoir plus haut dans ce fil :
page 4 de Commands for DCCpp BaseStation.docx
CAB FUNCTIONS   3
To set functions F0-F4 on=(1) or off=(0): <f CAB BYTE1 [BYTE2]>   3
Cela dépend du décodeur de votre locomotive, potentiellement ce sont les fonctions F0 ou F4
Le document est la bible du DCC++, l'original est dans le git de DCC++.

voie principale et  voie de programmation
La voie de programmation ne sert qu'à programmer les décodeurs, à voir plus tard !

non juste taper une commande ... sur le moniteur série

C'est le rôle des manettes (throttles), soit matérielles soit logicielles. On envoie les séquences DCC++ sur RX/TX (le serial) de la base.
Il vaut peut-être mieux commencer par reproduire ce qui a déjà été fait et qui marche : voir sur ce site ou ailleurs.
Dominique en a présenté une simple (logicielle) qui tourne sous processing (même IDE qu'Arduino)
Mais la solution immédiate, c'est JRMI soit sur PC ou Mac ou autre.
Avec possibilité d’utiliser un téléphone portable ou une tablette en wifi.
Voir le site JMRI. http://jmri.org/
Pour les aiguilles, il faut des décodeurs d'accessoires qui reçoivent leurs ordres des manettes ou des TCO.
La aussi voir sur le site Locoduino ou https://rudysmodelrailway.wordpress.com/software/
Bien à vous.


Titre: Re : Début de projet !
Posté par: Dominique le avril 24, 2018, 07:11:39 pm
Citer
Pour les aiguilles, il faut des décodeurs d'accessoires

Pas nécessairement : DCC++ peut commander directement les aiguilles.

Un Mega a 80 ports et peut donc faire beaucoup de chose.
Titre: Re : Début de projet !
Posté par: msport le avril 24, 2018, 07:35:54 pm
Merci Dominique d'avoir rectifié, ce n'est pas parce qu'on utilise pas qu'il faut ignorer.
Je recopierai 100 fois Commands for DCCpp BaseStation ...
(avec Word Open Office)
Titre: Re : Début de projet !
Posté par: Dominique le avril 24, 2018, 08:45:03 pm
Merci Michel,

On peut remarquer aussi que la totalité du projet va-et-vient qui fait l’objet de mon dernier article est entièrement réalisé à partir de DCCpp.

Mais en dehors des commandes DCC envoyées par DCCpp, tout le reste des entrées sorties est réalisé directement à partir de l’Arduino.
Titre: Re : Début de projet !
Posté par: Sed le avril 30, 2018, 11:47:06 am
Bonjour, on a essayé d'utiliser JMRI, mais on a un message d'erreur (voir fichier ci-joint).

Auriez-vous par hasard eu des problèmes semblables ?
Titre: Re : Début de projet !
Posté par: Dominique le avril 30, 2018, 12:54:11 pm
Alors la réponse est dans l’image : JMRI ne trouve pas la connexion sur COM4, donc c’est là qu’il faut chercher.
Titre: Re : Re : Début de projet !
Posté par: msport le avril 30, 2018, 04:14:09 pm
Auriez-vous par hasard eu des problèmes semblables ?
Oui, on a ce problème quand on oublie de brancher l'Arduino.
Une fois l'Arduino connecté et sous tension, vérifiez le port COM sur lequel cet Arduino est identifié (*) et si besoin, modifiez ce port COM dans les préférences de JMRI.
(*) Ouvrez l'IDE de l’Arduino et regardez si il communique sur le Serial Monitor et avec quel port COM. Puis refermez l'IDE avant de poursuivre.
Titre: Re : Début de projet !
Posté par: Sed le mai 01, 2018, 11:08:05 am
Merci, on va continuer là-dessus dès qu'on aura l'occasion.
Sinon j'avais une autre question :
si on veut écrire notre programme, faisant rouler le train, changeant d'aiguillages, ouvrant un passage à niveau, etc..  puis le téléverser et laisser tourner dans l'arduino sans connexion avec un pc, est-ce que le mieux est d'utiliser dccpp et commanders ?
Titre: Re : Début de projet !
Posté par: Dominique le mai 01, 2018, 11:32:42 am
Regardes donc ce que j'ai fait dans le va et vient automatique : il n'y a plus de PC/Mac connecté du tout !
Titre: Re : Début de projet !
Posté par: Sed le mai 03, 2018, 09:43:06 am
Bonjour,
 
je me suis inspiré du va et vient (merci!) pour faire un premier code, juste dans le but de faire rouler le train.
(J'ai joint le code à ce message)

Cependant on a quelques soucis :

quand on a lancé le code la première fois, on a eu un problème avec notre gLocofunctions, et DCC_SIGNAL_PIN_MAIN. En revenant sur l'article "Bibliothèque DCCpp", on a vu que le DCC_SIGNAL_PIN_MAIN venait du DCC++ original, que je n'avais pas sur mon ordinateur.

J'ai donc téléchargé le zip via ce lien : https://github.com/DccPlusPlus/BaseStation

Suite à cela, plus d'erreur pour gLocoFunctions ou DCC_SIGNAL_PIN_MAIN.
On sait compiler sans souci, mais quand on téléverse :

"Bibliothèque non valide trouvée dans C:\Users\sed\Documents\Arduino\libraries\BaseStation-master : C:\Users\sed\Documents\Arduino\libraries\BaseStation-master"

On a donc deux questions :
1) Mon code permettra-t-il bien de faire rouler le train ?
2) Auriez-vous une idée pour ce souci de bibliothèque ? Apparemment ça enlève notre souci avec DCC_SIGNAL_PIN_MAIN, mais elle est non valide?
Titre: Re : Début de projet !
Posté par: Thierry le mai 03, 2018, 10:01:53 am
Bonjour

Dans DCCpp, DCC_SIGNAL_PIN_MAIN existe bien, il n'y a pas de raison d'utiliser le code original... La seule raison pour qu'il n'existe pas, c'est de compiler votre .ino pour autre chose qu'un Uno, un Nano ou un Mega2560. Ce sont les seuls trois versions d'Arduino compatibles. Dans le code original, il n'y avait même pas le Nano...

Ce code original BaseStation issu de Github n'est pas une bibliothèque, c'est pour ça que j'ai créé DCCpp. Si on veut l'utiliser, il faut le mettre comme un projet Arduino classique et modifier plein de fichiers pour obtenir le même résultat en moins clair que DCCpp.
Titre: Re : Début de projet !
Posté par: Sed le mai 05, 2018, 05:29:20 pm
il est probable qu'on aie branché le motorshield par erreur sur une m0.
J'ai enfin pu réessayé et il semble tout reconnaître sans souci.

Cependant, le train ne roule toujours pas.

Voici ce que j'obtiens désormais lorsque je compile :



"Les options de compilation ont été modifiées, tout sera recompilé
C:\Users\sed\Documents\Arduino\libraries\DCCpp\src\Outputs.cpp:315:8: warning: extra tokens at end of #endif directive

 #endif USE_OUTPUT

        ^

C:\Users\sed\Documents\Arduino\libraries\DCCpp\src\Turnout.cpp:301:8: warning: extra tokens at end of #endif directive

 #endif USE_TURNOUT

        ^

Le croquis utilise 14106 octets (43%) de l'espace de stockage de programmes. Le maximum est de 32256 octets.
Les variables globales utilisent 562 octets (27%) de mémoire dynamique, ce qui laisse 1486 octets pour les variables locales. Le maximum est de 2048 octets.
"


Est-ce que ces warnings sont importants et peuvent être la raison pour laquelle mon train ne roule pas ?

Titre: Re : Début de projet !
Posté par: Thierry le mai 05, 2018, 05:56:56 pm
Non, ce n'est pas important, mais je pousserai une correction à ce sujet pour la prochaine mise à jour...
Il y a quantité de raisons qui peuvent faire échouer la génération du signal DCC. Pour comprendre le problème, il faut tester les différents éléments un par un.
Un bon moyen est d'utiliser l'exemple minimaliste SerialDCC. Une fois le même comportement que la version basestation obtenu (votre message du 24 à 16h32) à partir de messages série, cela validera la partie DCCpp logicielle comme matérielle.
Ensuite il faut vérifier que le code avec la structure Train fonctionne. Je vois déjà un problème, c'est que le premier argument de setSpeedMain devrait être un nombre entre 1 et 10, différent pour chaque train. Ca permet de gérer dix trains différents. Tel que codé actuellement, lorsque le second train recevra un ordre de vitesse, l'ordre du premier train n'existera plus que dans le décodeur de la loco, et dès qu'un court circuit ou une perte de courant va arriver la loco va s'arreter sans repartir.
Avez vous lu l'article à propos de DCCpp http://www.locoduino.org/spip.php?article228&var_mode=calcul (http://www.locoduino.org/spip.php?article228&var_mode=calcul)? C'est essentiel à la bonne compréhension du fonctionnement de basestation (je n'ai pas changé le fonctionnement de base) et donc de DCCpp. S'y trouvent les explications sur les fonctions (l'éclairage des locos), les registres (dont je viens de parler), les accessoires (dont vous semblez avoir besoin), l'utilisation et le câblage des shields moteur (qui semble vous poser des problèmes), etc...
Titre: Re : Début de projet !
Posté par: Sed le mai 05, 2018, 06:33:12 pm
Merci ! J'ai ouvert le code Autotest de Dccpp je l'ai rapidement parcouru et j'ai vu que je n'avais pas mis DCC::powerOn(); dans le setup.
Je l'ai rajouté à mon code, et le train roule  :D :D

Sinon, je suis d'accord avec vous pour le 1à 10, la structure ne devrait pas être faite pour un seul train.
Titre: Re : Début de projet !
Posté par: Sed le mai 06, 2018, 01:59:06 pm
J'ai maintenant essayé de rajouter à mon code des servo-moteurs, avec la bibliothèque servo.

Faire un code utilisant uniquement les servo-moteurs, pas de souci ça fonctionne.
Par contre quand je dois faire rouler le train et utiliser un servo en même temps ça pose souci.
je crée un servo :
Servo servo1;
dans le setup : servo1.attach(2); (la pin 2 est bien une pin libre avec le dcc si je ne me trompe pas).

Et j'ai remarqué que même sans donner d'ordres au servo-moteur, le servo-moteur se met à osciller tout seul, à faire des petits aller-retours, et ne répond pas aux angles que je veux lui donner lorsque je fais rouler le train en même temps.
Sauriez-vous d'où ça vient, et comment régler ça ?
Titre: Re : Début de projet !
Posté par: Dominique le mai 06, 2018, 02:06:17 pm
Citer
Sauriez-vous d'où ça vient,

Non en l’absence de code.

Hypothèse :


Quand on débute ça arrive !
Titre: Re : Début de projet !
Posté par: Sed le mai 06, 2018, 02:15:50 pm
Voici le code.
Je ne fais même pas tourner le servo, juste l'attacher à la pin avec le train roulant, donc je ne comprends pas.
Titre: Re : Début de projet !
Posté par: Dominique le mai 06, 2018, 02:32:34 pm
Ça sent le parasite ou le mauvais Servo (essayez-en un autre) !
Il est alimenté comment le Servo (5v indépendant de l’arduino ?) ?
Est-ce que la pin 6 n’est pas utilisée par autre chose ?
Titre: Re : Début de projet !
Posté par: nopxor le mai 06, 2018, 02:40:22 pm
Bonjour,

Il s'agit probablement d'un problème de même timer utilisé par les bibliotheques servo et DCCpp.
Lorsqu'une bibliotheque configure un timer pour son propre usage, il ne peut pas être reconfiguré par une autre bibliotheque sans dommages.

DCCpp peut gérer nativement des pins de sortie pour l'envoi de commande d'aiguillage:
https://github.com/DccPlusPlus/BaseStation/wiki/Commands-for-DCCpp-BaseStation

Il suffit d'envoyer ces ordres sur un ATtiny ou un autre arduino dédié à la commande de servos d'aiguillage.

A noter qu'il est possible, par contre, de commander des aiguillages à solénoïde via des cartes à relais directement depuis l'arduino DCCpp:
http://forum.locoduino.org/index.php?topic=442.0
Titre: Re : Début de projet !
Posté par: Thierry le mai 06, 2018, 02:43:47 pm
Pour les mouvements erratiques que j'ai également constaté, il suffit de faire un attach() avant le mouvement et un detach() juste après. Une autre solution est de n'alimenter le servo que pendant un mouvement à l'aide d'un relais ou d'un transistor. J'ai employé les deux techniques dans Accessories.
Titre: Re : Début de projet !
Posté par: Sed le mai 06, 2018, 03:55:16 pm
J'ai essayé différents servomoteurs, même problème d'aller retour.
J'utilise le 5v de l'arduino.
Je ne pense pas que la pin6 soit utilisée pour autre chose, j'ai été vérifié, et j'ai testé 2 pins différentes qui sont supposées être libre avec le DCC, on obtient la même chose.

C'est peut-être bien un souci de même timer.


J'ai testé l'attach juste avant le mouvement, et le detach juste après :
servo1.attach(servo1pin);
servo1.write(servo1pos);
servo1.detach()

tant que je ne mets pas un delay(1000) après le write, le servo ne bouge pas (et on a forcément pas d'aller/retour). Et si je mets un delay, le servo bouge, mais les allers et retours aussi.
Titre: Re : Début de projet !
Posté par: nopxor le mai 06, 2018, 04:24:09 pm
Vraisemblablement un conflit au niveau du Timer1 utilisé à la fois par la biliothèque servo et la bibliothèque DCCpp:

DCC++ BASE STATION for the Uno configures the OC0B interrupt pin associated with Timer 0,
and the OC1B interupt pin associated with Timer 1, to generate separate 0-5V
unipolar signals that each properly encode zero and one bits conforming with
DCC timing standards.  When compiled for the Mega, DCC++ BASE STATION uses OC3B instead of OC0B.

Si tu utilises un arduino Mega, il devrait être possible en modifiant le code de la bibliothèque servo d'utiliser le timer4 ou 5 (16 bits) à la place du timer1.

------------------------------------------------
rectificatif:
the Servo library uses timer1 on Arduino Uno (timer5 on Arduino Mega).

donc question, quel type d'Arduino utilises-tu ?
Titre: Re : Début de projet !
Posté par: Sed le mai 06, 2018, 04:58:27 pm
j'utilise un Arduino UNO  :-\
Est-ce qu'il serait possible de modifier le timer qu'utilise la bibliothèque servo en utilisant l'arduino Uno ?
Titre: Re : Début de projet !
Posté par: nopxor le mai 06, 2018, 06:19:16 pm
D'ou le conflit probable.

Alors ça vaut le coup d'essayer cette bibliothèque servo qui utilise le timer2:
https://github.com/nabontra/ServoTimer2

Tiens nous au courant.
Titre: Re : Début de projet !
Posté par: Dominique le mai 06, 2018, 06:47:25 pm
 Peut-être mais si tu commences à vouloir faire des acrobaties c’est la chute assurée bientôt. Sortir de l’ordinaire n’est pas bon signe.

Déjà le UNO vas très vite s'avérer insuffisant vu tous les développements qu’il y a dans ton projet.

 Il faudrait réfléchir d’abord à l’architecture générale avant les détails de réalisation. Comme plusieurs Arduino semblent nécessaires il serait bon de penser à les mettre en réseau.

 Car il vaut mieux réaliser plusieurs projets simples qu’un seul gros projet compliqué.
Titre: Re : Début de projet !
Posté par: Sed le mai 09, 2018, 04:01:40 pm
J'ai pu tester la bibliothèque ServoTimer2, ça fonctionne, plus de va et vient, et les servos répondent correctement.  Il est juste à noter que les angles ne sont pas exprimés en degrés (on a du utiliser de 0 à plus ou moins 3000 pour exprimer les angles de 0 à 180) dans cette bibliothèque.

A partir de là, on a pu réaliser la commande des aiguillages via servo-moteurs, une détection du train via ultrason, et l'ouverture/ fermeture de passage à niveaux qui en suit, c'est fonctionnel.

Effectivement, si on va plus loin que ça, on arrive rapidement à court au niveau des pins disponibles pour l'Arduino en utilisant DCC++.
Titre: Re : Début de projet !
Posté par: nopxor le mai 10, 2018, 01:07:50 pm
Bonne nouvelle  :D
C'est tellement agréable quand tout fonctionne comme prévu après avoir surmonté des problèmes.