Piloter son Arduino avec son navigateur web et Node.js (4)
. Par : bobyAndCo
Vous répondez à :
Hello Christophe,
unfortunately I do not speak french, I hope Google Translate will help us. I found your project here regarding webbrowser and Node.js. I like your work very much. And I would like to add further functionality to the Browser App like controlbuttons that could switch on LEDs. I would like to find out, what kind of Serial Ascii Signal I have to send to the arduino mega to switch on Output 20 for example. It would be great to have several custom buttons which could switch on or of specific outputs. I also would like to experiment with current sensors, so train feedback will be possible.
I have found a page on github where a french guy has started building html track-layout https://github.com/Krevo/geotrain
It would be nice to add track layout with real train feedback to your webpage project. That might be a huge step. But why not think about how to reach this. I would be pleased if you write me an email. Best Regards Kobal
29 Messages
-
Piloter son Arduino avec son navigateur web et Node.js (4) 6 février 2018 21:34, par veste62
Bonsoir
Bravo pour votre travail. J’ai un problème je suis en mode serie et une fois le lien effectué http://localhost:8080/controller_dc...
les commandes de la page n’envoient aucune information (pas de logs qui apparaissent dans le haut de la page) alors que l’arduino est bien connecté.
Merci pour votre aide-
Bonjour et merci pour votre appréciation !
Dans l’invite commande ou le terminal, au lancement de dccpp_node.js vous devez avoir un message de ce type.
Server NodeJs at : 192.168.1.37:8080 Connected to Arduino DCC++ serial at : /dev/cu.usbmodem1421 Connection socket : Ok
Si vous avez bien la 3° ligne, Connection socket : Ok, c’est que la page HTML et plus exactement la page de scripts "controller_4.2.js" n’ont pas la bonne adresse IP.
Ligne 105 de controller_4.2.js, remplacez 192.168.1.37:8080 avec l’adresse IP de l’ordinateur telle qu’elle apparait dans le terminal pour votre propre configuration.
105. $scope.socket = io.connect('http://192.168.1.37:8080/');
Essayez tout d’abord ceci et n’hésitez pas si le problème est autre.
Bien cordialement.
Christophe
-
Bonjour,
J’ai tout vérifié ( adresse ip, port etc ), la page web se lance correctement ( ip correspond au serveur node) mais n’envoie aucune information vers l’arduino alors que celui est bien connecté en mode série et node répond correctement lors du script node dccpp_node.js sur le terminal.
Merci pour votre aide-
Bonjour,
Il faut m’envoyer en message privé des copies d’écran de la fenêtre du terminal, du fichier Javascript controller_4.2.js qui montre bien la ligne 105 et du haut du fichier dccpp_node.js. C’est une question de paramètres.
Bien cordialement.
Christophe
-
-
-
-
Piloter son Arduino avec son navigateur web et Node.js (4) 7 février 2018 21:23, par Xavier Bouillard
Bonsoir,
Merci pour ce beau travail qui ouvre de nombreuses perspectives.
A mon tour, je me suis lancé dans la version Ethernet. Je suis bien reparti de la version originale du sketch DCC++ mais, lancé depuis le terminal (Windows comme Linux) j’obtiens :
Server NodeJs as : 192.168.xx.xx:8080
Connected to Arduino Mega DCC++ at : 192.168.0.40:2560
Sans jamais avoir la suite :
Connection socket : OkMalgré un certain temps passé à chercher, je ne trouve pas ce que j’ai raté...
Merci pour votre aide-
Bonsoir,
La suite de :
Server NodeJs as : 192.168.xx.xx:8080
Connected to Arduino Mega DCC++ at : 192.168.0.40:2560s’obtient (en Ethernet) quand on lance la page web. C’est à ce moment que le terminal indique "Socket OK" si la connection est OK.
Si vous n’avez rien quand vous ouvrez la page web, n’est pas le même problème que ma réponse ci-dessus ?
N’hésitez pas à revenir vers moi si le problème est autre.
Bien cordialement.
Christophe
-
Piloter son Arduino avec son navigateur web et Node.js (4) 7 février 2018 22:57, par Xavier Bouillard
C’est tombé en marche !
avec le bon scope.socketMerci.
-
-
-
Piloter son Arduino avec son navigateur web et Node.js (4) 15 février 2018 19:38, par xavier
Bonsoir christophe,
Pour aller encore plus loin ...
Serait-il envisageable de compléter cet interface avec un onglet accessoire permettant déclarer des accessoires (exemple : aiguillages= adresse Dcc + Type + X + Y + angle) que l’on pourrait disposer sur une image représentant son TCO ?X et Y seraient les coordonnées sur le TCO, angle permettrait d’orienter correctement l’accessoire.
Type indiquerait si l’aiguillage est droit, gauche, symétrique, triple etcLes fonctions locomotives seraient dans un premier onglet, la configuration dans un troisième.
Bref, je me prends à rêver !
-
Piloter son Arduino avec son navigateur web et Node.js (4) 15 février 2018 19:55, par bobyAndCo
Bonsoir Xavier,
Dans ce gout là : https://alkans.fr/locoduino/tco/tco...
Vous constaterez que vous pouvez cliquer sur les aiguilles qui sont actives.
C’est une nouvelle page HTML que vous pouvez mettre à côté du contoller et effectivement, vous naviguez de l’un à l’autre par les onglets.
Ici, la communication avec les aiguilles est en TCP (Ethernet). Mes aiguilles sont pilotées par des servos via Arduino. Mais le TCO peut tout à fait communiquer avec DCC++ qui dispose des fonctions pour piloter des accessoires en DCC. Cela est d’ailleurs assez simple à programmer sur le même modèle que le controller.
Ne rêvez plus !
Bien amicalement.
Christophe
-
Piloter son Arduino avec son navigateur web et Node.js (4) 17 février 2018 12:32, par xavier
Bonjour Christophe,
C’est en effet une approche possible, qui m’amène à quelques questions :
Dans ton javascript, quelles sont les valeurs possible des paramètres des $scope.aiguillagesInit[x] ?
.pas => qu’est-ce que ça représente ?
.sens => "d"=droite / "g"=gauche (axeVertical)
.axeHoriz => "b"=bas / "h"=haut / "45"=45° (/ "135"=135°)
.state => "T"=tourné / "D"=droit
Ainsi tu calcule l’image utilisée (par exemple img/agbT.png) mais à quoi correspond le pas ?Tu fais aussi appel à aiguilApp.controller : te serait-il possible de le mettre à disposition ?
J’ai cherché à adapter ce fichier à mon layout en :
- modifiant le html
ng-src=" aiguillages[X].imgScr " etc... où X est l’index de l’aiguillage - créant les png absents (aiguillages verticaux)
- modifiant le scripts
- Nombre de colonnes
- Nombre de lignes
- Nombre d’aiguillage
- Parametres des aiguillages (sauf .pas)
J’obtiens un TCO sans les aiguilles. L’initialisation semble ne pas s’effectuer !
ng-src=" aiguillages[0].imgScr " etc...
NB : Je découvre les glyphicons sans encore les maitriser !
Bien amicalement,
Xavier-
En creusant ... on trouve ! (je profite du froid pour rester dans la maison...)
- L’affichage du TCO est effectif.
- Les aiguillages ont été complétés par un pont tournant à 40 voies.
- La communication vers Dcc++ commence à fonctionner
Il faut encore :
- Revoir le protocole pour les pont tournant
- Assurer la remontée des information vers la page html (Version, Power, Log)
Voici donc sur mon site où j’en suis ...
http://fadiese.hd.free.fr/cms/index...Bien amicalement,
-
Xavier, serait-il possible que tu me contactes en MP, j’ai d’autres éléments à te donner pour le TCO.
-
Petite question de boetien moyen : Comment te contacter en MP ? je ne trouve pas sur locoduino ?
Tu peux me contacter sur Le Forum du N(Barbadidoua) ou Loco-Revue(Barbadidoua) ou CDM-Rail(Xavier)Amicalement,
-
- modifiant le html
-
Piloter son Arduino avec son navigateur web et Node.js (4) 25 février 2018 15:17, par bobyAndCo
Bonjour Xavier,
Bon ici en Bretagne il fait un temps magnifique à être au jardin. Comme quoi, on se moque de la bretagne !
Désolé tout d’abord, je n’ai pas vu ton message du 17. Mais je vois que tu t’es débrouillé. Bravo, je suis allé sur ton site, bon boulot !
Moi c’est vraiment comme cela que je vois le modélisme ferroviaire en DIY.
Bien amicalement.
Chrsitophe
-
Piloter son Arduino avec web et Node.js (4) 13 mars 2018 15:10, par Rob1
Bonsoir
Tout d’abord merci pour ces articles et pour les autres aussi ...
Nous y trouvons des solutions partielles ou complètes bien utiles voire indispensables pour nos projets.Une petite question quant au codage des ordres T x loco vitesse sens
il semble que x contienne le Id de la locomotive, en quoi est-ce utile ou nécessaire ?Merci d’avance
-
Bonjour Rob1,
Votre question aborde un aspect avancé des micro controleurs ; les registres qui sont des mémoires à accès très rapides. Ce sont eux qui enregistrent les timers ou les interruptions.DCC++ écrit dans des registres les informations concernant une loco (un décodeur). A chaque fois que l’on envoie une commande, on envoie aussi le numéro du registre, l’ID ici, sinon, sur le principe, DCC++ enregistre dans un nouveau registre... et comme il s’agit d’une mémoire très limitée !
Ce paramètre est par défaut de 12 et est réglable ligne 23 de Config.h
// DEFINE NUMBER OF MAIN TRACK REGISTER #define MAX_MAIN_REGISTERS 20
J’ai donné la valeur 20 car j’ai 13 locos et que je suis sur un MEGA
Si vous voulez vous faire mal à la tête, Dominique en parle dans son article sur DCC++ : http://www.locoduino.org/spip.php?a...
Bien cordialement.
Christophe
-
Jean-Luc me fait toute fois remarquer que, bien que portant le même nom, ce que l’on appelle registre dans DCC++ ne correspond pas aux registres du microcontroleur (zone de stockage). En relisant l’article de Dominique que j’ai cité précédemment, je vois qu’il parle de tableaux, de zones mémoire donc, où sont stockées les informations de chaque locomotive. Dans une autre mémoire donc.
L’endroit de stockage n’est pas celui que j’indiquais mais le principe que l’ID correspond à une locomotive et une seule pour le stockage de ses information reste vrai.
A corriger donc !
Christophe
-
Merci de vos réponses la première a eu le mérite de me faire relire l’article et de compléter ma compréhension du programme.
La seconde réponse correspond mieux à ce que j’avais cru comprendre et me convient d’avantage.
En effet j’utilise DCCpp de manière un peu particulière avec la fonction TextCommand::parse(Order) ; .
Mon application principale est en VisualExpress C# avec une socket (ethernet ;port8172) vers l’Arduino Mega qui héberge DCCpp.
Pour intégrer le pilotage Web j’ai ouvert une seconde socket sur Arduino(ethernet:port2560) qui écoute le serveur Node.
Cela fonctionne très bien et je peux lancer une loco depuis ma tablette et la stopper depuis mon PC(Visual). Par contre mais lorsque l’octet qui contient Id est différent de l’ordre PC(Visual) le fonctionnement est aléatoire. Je vais voir comment récupérer les infos du fichiers locos.json pour servir voire supprimer ma table Sql actuelle.
Si vous m’autorisez un petite suggestion quant à l’ergonomie de Controller_sm pour le curseur de vitesse. Lors de l’utilisation sur Iphone ou sans doute Android, il est tellement proche du bord que son actionnement est difficile car le système interprète comme le souhait de tourner la page. La suppression de colspan"2" et l’ajout d’une case améliore la chose.
Encore merci pour vos réponses et certainement à bientôt-
Merci pour ces retours. Je ferai la modification suggérée concernant l’érgonomie. Vous me semblez bien avancé sur les échanges d’informations et les sockets. C’est à mon avis c’est vers cela que vont évoluer nos réseaux. Dans le cadre d’un projet Locoduino, je travail actuellement sur un système d’échange d’informations incluant du CAN, de l’Ethernet et du WiFi. Le meilleur de chaque en quelque sorte.
N’hésitez pas à publier vos travaux soit sur le forum ou sous forme d’article.
Bien cordialement
Christophe
-
-
-
-
-
Piloter son Arduino avec son navigateur web et Node.js (4) 30 avril 2018 11:11, par Benoit
Bonjour et merci de ce travail que je viens d’adapter pour transformer une installation analogique en DCC.
J’ai pu utiliser un arduino Mega, une carte ethernet de base et un booster LM298 de chez Velleman (VMA409). Ce dernier que j’ai dû adapter, possède de bonnes caractéristiques avec ce qu’il faut pour contrôler le courant des deux circuits de puissance. Basé sur le schéma du shield Arduino Motor, j’ai dû principalement ajouter un inverseur (CD4011) sur les sorties DIRA et B pour alimenter les entrées IN1 et IN2 puis IN3 et IN4 du booster. Ensuite et j’en viens à la principale difficulté pour moi qui a été de calibrer la résistance à inclure dans le circuit de contrôle du courant (pour recevoir les réponses des contrôleurs vers DCCpp). Il n’est pas dit grand chose sur le sujet. J’ai placé des R 1 Ohm 1W bobinées qui donnent satisfaction.
Je vais maintenant passer aux aiguillages... autre chantier !
Merci encore. Benoit-
Bonjour Benoit,
Merci pour ce retour en particulier pour le VMA409. VELLEMAN est une marque sérieuse qui propose de bons produits.
Ensuite et j’en viens à la principale difficulté pour moi qui a été de calibrer la résistance à inclure dans le circuit de contrôle du courant (pour recevoir les réponses des contrôleurs vers DCCpp). Il n’est pas dit grand chose sur le sujet. J’ai placé des R 1 Ohm 1W bobinées qui donnent satisfaction.
Je ne comprends pas bien "réponses des contrôlleurs". Vous ne vouliez pas plutôt parler de décodeurs ? Si c’est le cas, il n’est effectivement pas dit grand choses car nous n’avons pas approfondis le sujet mais rencontrons des difficultés sur certains décodeurs. Si vous avez des propositions à faire, nous sommes très intéressés.
Christophe
-
-
Piloter son Arduino avec son navigateur web et Node.js (4) 1er mai 2018 09:35, par benoit
OK, je vais préciser. La connexion des CS (current sensor) sur les broches A0 et A1 nécessite une résistance entre la masse et la sortie basse des lignes PROG et MAIN. Rien n’est dit sur sa valeur. Sans le micro circuit genre MAX471, il faut donc avec le VMA409 placer une R de 1 Ohm environ de façon que les fonctions comme ReadCV sachent lire en retour les valeurs de CV depuis le décodeur Loco (voie PROG).
J’ajoute que j’ai laissé en l’air les résistances PullUp des lignes IN1 à IN4 qui sont en option sur le VMA409.
Benoit -
Control your Arduino with your web browser and Node.js (4) 27 décembre 2018 22:19, par Kobal
Hello Christophe,
unfortunately I do not speak french, I hope Google Translate will help us. I found your project here regarding webbrowser and Node.js. I like your work very much. And I would like to add further functionality to the Browser App like controlbuttons that could switch on LEDs. I would like to find out, what kind of Serial Ascii Signal I have to send to the arduino mega to switch on Output 20 for example. It would be great to have several custom buttons which could switch on or of specific outputs. I also would like to experiment with current sensors, so train feedback will be possible.
I have found a page on github where a french guy has started building html track-layout https://github.com/Krevo/geotrain
It would be nice to add track layout with real train feedback to your webpage project. That might be a huge step. But why not think about how to reach this. I would be pleased if you write me an email. Best Regards Kobal -
Piloter son Arduino avec son navigateur web et Node.js (4) 28 décembre 2018 01:01, par bobyAndCo
Hello Kobal,
Thank you for your appreciations. If I understand correctly, you would like to add extensions to be able to control outputs of the Arduino MEGA to turn on or off DELs for example.
This would require not only adding these functions to the HTML page, but also modifying DCC ++ BaseStation. I already had the opportunity to say before I did not advise to modify DCC ++ BaseStation by adding this type of functionality.
The work that we realized on the Satellites shows that this type of functions can be realized by specific interfaces like what I present in this video for example :
Or this one :
When you talk about current sensors, I think it’s something similar to what we do with Satellites, and it shows the areas occupied by locomotives in red on the graph.
We are going to publish a series of articles on this subject, but it takes time and we do not have many of them.
Do not hesitate to return regularly on the homepage of the site. Do not hesitate to come back to me if I did not understand your request or that I do not answer well.
Best regards.
Christophe
-
Hello Christophe,
yes I would like to achieve exactly what you do in the second video. I would like to be able to add Sensors and Turnouts.
Create a tracklayout and in the end automate trainrides....
Is the tracklayout and the traffic lights html based ? https://www.dropbox.com/s/okwptxj4x...
I have added a screenshot where I added new Tabs to your controller. The aim is to create Sensors and Turnouts.
I have started to translate the GUI also into English, because I do not speak French. Is there already a way to change the speech of the controller ? It would be great to support several languages. Languages could be switched depending on the locale of the browser. I could help you with that also. I could translate to German and English.What do you exactly mean if you talk about Satellites ? Are those extra devices which I have to connect to my arduino mega ?
Thanks for answering my questions.
-
-
Piloter son Arduino avec un navigateur web (en java) ayant une base de donnees, par pc et par telephone 6 août 2019 02:20
Bonjour à tous.
je suis un débutant dans la programmation du shield Ethernet de l’Arduino et piloter certains paramètre de mon domicile à partir de mon site web préalablement paramétrer.
Théorique, ledit site doit me permettre de voir sous forme graphique la variation de la température en fonction du temps et de l’humidité en fonction du temps ; mettre en marche et en arrêt les lampes.
je me suis dit qu’il me faut une base de données pour stocker les paramètres de température et de l-humidité dans une base de données ainsi lorsque l’opérateur voudra consulter ces différentes évolution alors une requête sera envoyée sur la base de données. mais pratiquement je ne sais pas comment m’y prendre.
j’ai vraiment besoin de votre aide
merci -
Piloter son Arduino avec son navigateur web et Node.js (4) 6 août 2019 21:40, par bobyAndCo
Bonjour,
Désolé de ne pouvoir vous répondre car Locoduino est un site spécifique au modélisme ferroviaire. Vous trouverez de nombreux articles sur internet qui abordent votre question. Pour ce qui est des bases de données, je vous invite à vous intéresser à MySQL Conector dont je parle ici : http://forum.locoduino.org/index.ph...
Bien cordialement,
Christophe.
-
Piloter son Arduino avec son navigateur web et Node.js (4) 25 mai 2021 10:59, par help
AIDE-NOUS !
Viens DM pour les info -
Piloter son Arduino avec son navigateur web et Node.js (4) 30 novembre 2021 15:41, par Olivier CASSE
Bonjour,
vraiment de la belle ouvrage, chapeau !
tout fonctionne après quelques tatonnements et une lecture trop rapide :)Olivier