• Bonjour à tous,

    J'en ai déjà parlé un peu, je développe depuis quelque temps un outil graphique qui permet de créer des applications sur des cartes Arduino sans écrire une ligne de code.

    Cet outil est une évolution de l'outil de design de traitement audio crée par Paul Stoffregen (concepteur des Teensy), qui est lui même parti du système de design Node Red crée par Nicholas O'Leary, Dave Conway-Jones de la société IBM.

    J'ai nommé cet outil Node Blue...

    Node Blue permet de concevoir facilement des systèmes de traitement de signaux numériques ou analogiques, des périphériques HID, des liaisons radio, des systèmes domotiques ou même des applications pour la robotique, et bien d'autres choses encore.

    Cet outil va générer du code qu'il faudra copier dans l'éditeur Arduino, pour déployer votre système.

    L'outil est disponible en ligne, mais pour l'utiliser réellement il vous faudra installer l'environnement de développement.

    J'ai installé un wiki qui se trouve ici : http://www.nodeblue.org/wiki_fr/

    Vous y trouverez les premiers tutoriaux, notamment pour l'installer.

    Je vous laisse découvrir, je posterai ici les avancements au fur et à mesure que je rentre des infos sur le wiki.

    Amusez vous bien :B

  • Hello,

    Je me suis essayé au tuto et chez moi ça ne commence pas trés bien!

    Lorsque je fais le glissé - déposé du module j'obtiens ceci:

    20ddR.jpg

    Et si je double clique dessus il ne se passe rien...

    En faisant un clic droit sur l'espace de travail j'obtiens alors ceci:

    vL223.jpg

    2 modules et en double-cliquant sur ce dernier j'ai enfin le menu déroulant.

    Je modifie la valeur, ok, la fenêtre disparait.

    Mais rien lorsque je fais Export...

    J'ai peut-être déjà loupé quelque chose...!:B

    Message modifié 1 fois, dernière modification par Balky (12 janvier 2018 à 18:38).

  • Bon, ça marche!

    En fait, il faut que je lance Node Blue directement depuis le liens que tu as mis plus haut.

    Si je lance depuis depuis le fichier téléchargé et installé dans le dossier Arduino , c'est pas bon.

  • A regarder les exemples fournis avec le soft, on va pouvoir faire bien plus que cela!!

    Donc, si je veux lancer node blue depuis mon pc (fichier téléchargé) il me faut l'ouvrir avec internet explorer pour qu'il soit opérationnel.

    Avec les autres il s'ouvre mais ne fonctionne pas, sauf à recopier le lien directement dans le navigateur et la ça fonctionne avec tous.

    J'ai commencé à faire joujou avec une uno et le tuto., ça va être génial ce truc!

  • Salut,

    Oui désolé j'ai oublié de dire qu'il y a un bug avec le double click sur les modules. Chez moi j'ai ce bug sur Chrome mais pas sur FireFox ni Edge.

    Je n'ai pas encore trouvé d'où ça vient. S'il y a des kadors en javascript, help :B

    Je suis en train de préparer le tuto pour les roues Fanatec équipée de TBB_02.

    Il faut faire attention avec la version actuelle, une partie des exemples dans le répertoire NodeBlue/gui/exemples ne sont plus bien importés, parce j'ai changé des trucs sur les modules nrf24. Je vais faire une passe sur tous ces exemples mais ça va prendre du temps.

    Se fier aux tutos du wiki au fur et à mesure que je le rempli, chaque exemple décrit est testé avec la dernière version.

    Riton39 : C'est clair qu'à un moment donné ça pourrait faire des trucs pour les simulateurs, des trucs plutôt cools :B. Et des sonnettes aussi :B

  • Bonjour, en m'inspirant comme vous de Paul Beckmann (DSP Concepts) et de Paul Stofffregen (PJRC), j'essaie d'arriver à ce que des puces ARM Cortex-M exécutent du traitement numérique du signal audio en temps réel.

    Les cartes de prototypage suivantes, que tout le monde peut se procurer à l'unité chez Mouser, sont présentées par STMicro comme "ARM MBED Enabled". Leur connectivité qui est compatible Arduino, comporte de nombreuses broches supplémentaires permettant à l'application d'exploiter la totalité des périphériques situés dans la puce.

    - STM32F072RB Nucleo - Cortex-M0 - 9,13 eur - 2 x simplex I2S

    - STM32F446RE Nucleo - Cortex-M4 - 12,38 eur - 3 x simplex I2S et 2 x SAI

    - STM32F446ZE Nucleo - Cortex-M4 - 16,80 eur - 3 x simplex I2S et 2 x SAI

    - STM32F746GZ Nucleo - Cortex-M7 - 20,33 eur - 3 x simplex I2S et 2 x SAI

    - STM32H743ZI Nucleo - Cortex-H7 - 20,33 eur - 3 x duplex I2S et 4 x SAI

    Il serait bon que Node-Blue permette à l'architecte audio de définir l'un ou l'autre module de son canevas, en langage assembleur plutôt qu'en langage C ANSI. Selon que l'architecte audio cible une puce Cortex-M0+, ou Cortex-M4, ou Cortex-M7, il peut écrire un code assembleur spécifique qui recourt aux mnémoniques ARM, qui n'a rien de compliqué, qui exploite au maximum le jeu d'instruction de la puce. La réflexion à ce niveau porte sur les possibilités suivantes : virgule fixe ou virgule flottante, multiplication-accumulation, auto-incrémentation de pointeurs, boucles rapides, SIMD. Selon le jeu d'instructions disponible, selon les mémoires cache disponibles, on devra dérouler les boucles, séquencer les calculs d'une façon particulière, etc. Kishore Dasari (DSP Concepts) a produit un bon papier à ce sujet : Designing with the Cortex-M4 - Arm. Kishore Dasari parle de modules simples tels un filtre Biquad IIR, une cascade de filtres IIR Biquad, un filtre IIR long de 256 échantillons, un filtre IIR long de 2048 échantillons.

    En ce qui concerne les cartes de prototypage listées plus haut, STMicro recommande de les mettre en oeuvre de la façon suivante : http://www.st.com/en/development…roductId=SC2106

    - confier à l'utilitaire ST32CubeMX la génération de code C ANSI (code source) pour l'initialisation qui configure les horloges, pour l'initialisation qui configure les périphériques (UART, SPI, I2C, CAN, I2S, SAI), pour l'initialisation qui configure les interruptions, et pour l'initialisation qui affecte les différentes fonctions aux différentes broches en sortie,

    - confier le développement du corps de l'application à un environnement de développement et de test qui recourt à un ou plusieurs langages, et là vous voyez qu'il est aussi question des environnements de développement gratuits tels Arduino, ARM MBED, AC6 OpenSTM32, CooCox.

    - confier à l'utilitaire ST-LINK la préparation du code exécutable devant être implanté dans la mémoire Flash de la puce,

    - confier à la sonde de débogage ST-LINK/V2, tant le flashage de la puce, que le débogage de l'application.

    Pour notre bonheur, l'équivalent d'une sonde de débogage ST-LINK/V2 fait partie de chaque carte de prototypage Nucleo. La partie du circuit imprimé qui lui est dédiée, est détachable de façon à ce que le prototype gagne en compacité une fois que le développement logiciel est terminé. La partie du circuit imprimé qui est dédiée est à la sonde de débogage ST-LINK/V2, comporte un petit microcontrôleur doté d'un port USB qui établit une passerelle entre votre PC (qui sert d'environnement de développement et de débogage) et le port "Cortex-M Debug" de la puce que l'on programme et que l'on teste. Sur une carte STMicro Nucleo, sur la partie du circuit imprimé qui est dédiée à la sonde de débogage ST-LINK/V2, les signaux SWDIO / TMS, SWDCLK / TCK, SWO / TDO, NC / TDI, nRESET sont routés (via straps) vers la puce ARM Cortex-M, et sont routés en direct sur une rangée 1 x 6 = 6 pins au pas de 2,54 mm, rangée nommée "SWD" sur la sérigraphie. Si on coupe le circuit imprimé de la carte de prototypage Nucleo pour en détacher la partie dédiée à la sonde de débogage ST-LINK/V2, cette partie constitue bel et bien un sonde de débogage, grâce à cette rangée de 6 pin. On peut la connecter sur n'importe quelle carte à ARM-Cortex-M qu'on aurait développé, pour autant qu'il s'y trouve une rangée de 1 x 6 = 6 pins au pas de 2,54 mm. Qui soit dit en passant, n'obéit pas au format 2 x 5 pin au pas de 1,27 mm qui est préconisé par ARM en tant que nouveau standard. Ce n'est pas grave, car tous les signaux nécessaires sont présents sur la rangée de 6 pins.

    Notez qu'une fois qu'on a amputé une carte de débogage STMicro Nucleo de sa sonde de débogage ST-LINK/V2, il devient difficile de reconnecter sa puce ARM Cortex-M sur une sonde de débogage ST-LINK/V2 externe, car sur le circuit imprimé subsistant, celui qui comporte la puce Cortex-M, ne se trouve aucun connecteur de débogage. Mieux vaut donc ne jamais séparer les sous-ensembles. Les straps dont question plus haut permettent d'isoler la puce ARM Cortex-M, permettant à l'application d'exploiter ces lignes anciennement dédiées au débogage, sans rentrer en conflit avec la sonde de débogage ST-LINK/V2. C'est bien pensé !

    Et donc voilà, en fonction de toutes ces informations, si vous architecturez convenablement Node-Blue, il pourra être exploité en tant que composant logiciel universel, qui injecte tant du code C ANSI (petits modules écrits en C), que du code ARM assembleur (petits modules écrits en assembleur), dans n'importe quelle filière de développement logiciel. Du code C ANSI pourra probablement suffire en ce qui concerne la gestion des pointeurs (entrées et sorties audio), et en ce qui concerne le séquencement de l'exécution des différents modules (n'exécuter un module que si il n'a pas déjà été exécuté, et que toutes ses entrées sont définies). Au bout du compte, Node-Blue se borne à livrer à l'environnement de développement de votre choix, du code assembleur et du code C ANSI. Que l'environnement de votre choix compile. Point barre. Ne cherchons pas midi à quatorze heures. En guise de simplification, compte tenu de ce que les puces énumérées plus haut sont abondamment pourvues en mémoire Flash, on peut dupliquer N fois un même module en mémoire Flash, lorsque l'application requiert d'exécuter N modules de tel type. Noter qu'en procédant de la sorte, on tue des opportunités de mises en cache, ce qui est dommage s'agissant des puces ARM Cortex-M7.

    Est-ce que pareillement à Synthmaker, un module pourrait être construit et sauvé, regroupant des module existants ?

    Il existe un public, qui n'a pas l'envie ou la compétence pour installer un environnement de développement sur son PC, qui trouverait avantageux de faire compiler Node-Blue sur le "cloud" pour les cinq cartes de prototypage répertoriées plus haut. Et si tel service est gratuit, c'est encore mieux. L'utilisation de Node-RED (IBM) au sein de Node-Blue empêche-t-elle une monétisation ?

    En ce qui concerne une application audio, je me contenterais de mettre en oeuvre les quelques périphériques suivant :

    - I2S ou SAI pour un module miniDSP miniStreamer (audio stéréo de bonne qualité, provenant d'un PC)

    - I2S ou SAI pour 2 ADC stéréo (4 canaux donc, notamment pour la mesure du gain et de la phase)

    - I2S ou SAI pour un ou deux TDA7801 ou TDA7802 (circuit intégré quadruple ampli de puissance 15 watt Classe AB avec entrée I2S)

    - SPI pour configurer ces périphériques

    - I2C pour configurer ces périphériques

    - réception des ordres d'une télécommande infrarouge (il existe des chips 3 pattes + fenêtre infrarouge, qui opèrent une partie du décodage, non ?)

    L'horloge audio (44,1 kHz ou 48 kHz) provient du miniDSP miniStreamer qui est équipé d'un quartz à 256 * Fs, en conséquence de quoi le chip ARM Cortex-M ne voit que l'horloge bit (BCLK), et l'horloge trame (LRCK). On ne peut plus simple. Les circuits ADC et DAC reçoivent en plus, l'horloge 256 * Fs émise par le miniDSP miniStreamer.

    En fonction des possibilités des chips ARM Cortex-M, j'implémenterais des préamplis + filtres répartiteurs pour enceintes acoustiques fonctionnant selon Linkwitz-Riley, selon Lipshitz-Vanderkooy (complémentaires, à délai compensé), ou selon des filtrages complémentaires de type FIR, tous au moyen d'une arithmétique (16*16)+64=64 en virgule fixe. J'augmenterais ensuite la précision des calculs au moyen d'une arithmétique (16*24)+64=64 en virgule fixe, capable de filtrer de l'audio codé sur 16 bits à l'aide de coefficients codés sur 24 bits. Je recenserait les puces ARM Cortex-M, rapides assez pour supporter elle évolution. Puis j'essaierais une arithmétique (24*24)+64=64 en virgule fixe, capable de filtrer de l'audio codé sur 24 bit à l'aide de coefficients codés sur 24 bits.

    Meilleurs vœux, et bonne continuation !

  • Juste un mot pour décrire la satisfaction que je ressentirais à utiliser Node-Blue :

    - atteindre la même précision (audio et coefficients tous deux codés en virgule fixe sur 24 bits) que le Motorola DSP56K qui date de 1988 (30 ans !),

    - programmer graphiquement pour atteindre une lisibilité parfaite, et une modularité parfaite,

    - créer certains modules en contrôlant tout jusqu'au dernier détail (cas des modules écrits en assembleur ARM Cortex-M),

    - créer certains modules en les écrivant dans un langage standardisé indépendant du matériel (C ANSI),

    - loger l'abstraction, là où plutôt que de ralentir la vitesse d'exécution, elle l'accélère,

    - comprendre (et éventuellement optimiser à la main) le séquencement de l'exécution des différents modules,

    - continuer à profiter de librairies, notamment celles très nombreuses, dont on estime que le temps d'exécution n'est pas critique,

    - profiter du prix nettement dérisoire des cartes de prototypage STMicro Nucleo,

    - profiter du prix nettement dérisoire des puces ARM Cortex-M produites par STMicro, NXP/Freescale, T.I., sans oublier Microchip/Atmel,

    - choisir librement l'environnement de développement : Arduino, MBED, AC6 OpenSTM32, CooCox,

    - choisir librement un éventuel exécutif, collaboratif ou préemptif, dont on peut régler l'interaction avec le traitement audio,

    - écrire et compiler pour d'autres familles de processeurs (proches telles Cortex-A, éloignées telles PIC32 ou ESP32).

    Une petite angoisse tout de même. Est-ce que je serai capable de me livrer à toutes les contorsions auxquelles les développeurs doivent se livrer aujourd'hui, pour réussir à écrire une une application, compiler celle-ci et programmer une puce ARM Cortex-M logée sur une carte de prototypage STMicro Nucleo ? Est-ce que je me retrouverai tributaire d'une kyrielle d'utilitaires et de librairies que je devrai m'efforcer de tenir à jour, des utilitaires et des librairies qui prendront des directions pléthoriques que je ne peux pas contrôler, et qui à force, pourraient infecter mon processus de création d'applications ? Les tutoriaux qui concernent Arduino tels http://www.toptechboy.com/arduino-lessons/ ont de quoi inquiéter. C'est comme si on s'ingéniait à rendre compliqué, ce qui est simple. Le tutoriel dit de faire ceci et cela, et encore cela, qui n'ont strictement rien à voir avec le but qu'on s'est fixé. Dans les années 1990, c'était autrement plus simple. On écrivait du code assembleur pour Motorola DSP56K, on le déboguait à l'aide du débogueur édité par Domain Technologies, on s'inspirait d'une des applications-modèle, et quelques heures plus tard, pour autant qu'on sache calculer les coefficients d'un filtre IIR Biquad ou d'un filtre FIR, le travail était terminé.

    Je pose la question, car j'ai lu le forum consacré au Teensy Audio Library. Quelle galère !

    Tout ça pour une seule et même carte de prototypage a puce NXP/Freescale ARM Cortex-M4.

    Tout ça pour une seule et même carte audio.

    Comment couvrir les cinq cartes de prototypage STMicro Nucleo ?

    Comment couvrir différents modèles de cartes ADC et DAC ?

    Il faut traiter ces questions dès premiers instants de la conception de Node-Blue. Est-ce le cas ? Vous voyez comment faire ?

  • Merci pour toutes ces suggestions. ça fait beaucoup de choses quand même :hihihi:.

    Je vais essayer d'être efficace dans ma réponse :B :

    - Effectivement il y a des cartes et des mcu très intéressants dans la famille des STM32. J'en ai certains mais je n'ai pas encore eu le temps de tous les tester. Le problème c'est que pour mettre en place un environnement et pour programmer ces cartes il ne suffit pas de dézipper une archive comme celle de l'IDE Arduino. C'est à souvent une contorsion et une perte de temps :S

    Mais je vais très probablement bientôt regarder comment faire marcher un grande partie de Node Blue sur STM32. J'ai déjà un environnement de dev/debug opérationnel pour STM32F407 (carte discovery et SimuCube), je commencerai par là...

    Pour simplifier l'utilisation de Node Blue et surtout sa maintenance, il est certain que l'idéal serait des serveurs en ligne qui compilent directement le design et fournissent un fichier .hex à un client local sur le PC de l'utilisateur qui ensuite irait l'uploader (téléverser :B) sur la carte. Mais ce service a un coût, donc impossible que ça soit gratuit. Ou alors peut être créer une cryptomonaie où les mineurs compilent du code :hihihi:.

    Ou bien un environnement de développement qui s'installe et se met à jour facilement. C'est quand même l'idéal, au cas où on n'a plus de connexion.

    - Intégrer l'audio dans Node Blue est prévu (audio ou autres signaux). Je compte partir de la Lib audio Teensy et de son outil graphique (duquel je suis parti pour faire celui de Node Blue).

    En fait, je n'ai pas encore essayé, mais il est sans doute déjà possible de prendre le code provenant de Node Blue et de le faire marcher avec du code généré par l'audio design tool, en rajoutant dans la loop des appels de fonction du genre "audioGainModule.SetGain(GetF32(analogIn.GetOutput()))".

    Cela va nécessiter des évolutions dans la gestion des types de flux qui sont créés, pour pouvoir faire coexister le flux audio et les flux contrôle en empêcher dans l'outil de connecter des flux incompatibles.

    Je compte rajouter dans Node Blue la notion de paramètre, afin permettre l'interaction entre les modules à ce niveau.

    Faire interagir tout ça n'est peut être pas si simple, à voir.

    Je veux aussi mettre en place tout le système qui permettrai de compiler + uploader en 1 click depuis l'interface.

    La possibilité de travailler sur plusieurs onglets, de créer des "SuperModules" qui intègrent un design séparé, de sauvegarder ses projets dans l'interface. Il y a encore plein de choses à faire.

    Sinon, dans le dernier message, je suis d'accord avec tout, jusqu'à " choisir librement l'environnement de développement : Arduino, MBED, AC6 OpenSTM32, CooCox".

    Pour l'instant ça va rester Arduino, ensuite pour des MCU non supportés par l'environnement Arduino, ça sera sans doute sous forme dynamique (on crée les modules comme on veut, ils sont stockés dans la Mémoire Flash, pas besoin de recompiler).

    C'est déjà un travail énorme de rentrer dans Node Blue le mapping de toutes les MCU/cartes gérées dans l'IDE Arduino, et il en reste plein à faire.

    Il y a la partie librairie mais aussi la partie interface à faire pour chacun. Dans certains cas (souvent si on veut optimiser) il faut du code spécifique pour gérer le hardware.

    Gérer d'autres environnement est encore une autre histoire.

    Mais en fait la base d'abstraction que Node Blue utilise dans le cas où il n'y a pas d'optimisation spécifique à un MCU reste pour la plupart des concepts de Wiring, qui est disponible dans pas mal d'environnements. Donc il doit y avoir moyen de l'intégrer dans la plupart des environnements C++.

    Wiring est un des 2 concepts forts de l'environnement Arduino, le 2ème étant Processing pour l'interface. L'interface est une chose indépendante.

    Il est toujours possible d'utiliser une autre interface. Mais je ne peux pas faire des tutos pour 10 Milliard de trucs différents non plus.

    Et aussi, c'est open source, tout le monde peux apporter des contributions, des tutos, etc...

    Le core du DSP56K est toujours utilisé, je l'ai retrouvé dans une des familles de MCU FreeScale, je ne sais plus laquelle.

    C'est certain que pouvoir rentrer quelques lignes d'assembleur DSP56K dans un module custom ça me fait rêver aussi.

    Il faudra que je crée un topic dédié à l'audio, qu'on puisse parler d'amplification séparée, de filtres adaptatifs et autres instructions SIMD.

    Ensuite il ne restera plus qu'à attendre que RacingMat sorte de sa léthargie pour bouger ces messages :B

  • Salut Etienne ,

    Lol la remarque sur RacingMat !! Enfin j'espère que tout va bien chez lui !

    Bon revenons à nos moutons , à dire vrai redesçendons sur terre parce que les 3 derniers posts .... :hihihi:Oo8(:senile::paix::mur::dodo2::etoiles::cut::grog:8)

    J'espère que j'ai été assez clair ?

    En plus vos posts ils sont bourrés d'erreurs de calcul (16*16) + 64 = 64 , vous êtes nuls en calcul ça fait 320 !! Mince alors , j'espère que des gamins ne liront pas vos'posts ....

    Bon trève de plaisanterie .Dans ton wiki tu as donné des explications pour les volants fanatecs .Tu te souviens à l'epoque sous l'initiative de TortueG qui avait filé le tuyau on etait quelque uns à avoir acheter un volant fanatec en promo pour l'adapter ensuite sur nos direct drive ( avec le fameux QR de Mat avec le collier de velo ) .C'etait un clubsport formula , le plus basique avec juste un affichage 3 digit ( pas de leds) .

    Ma question : en utilisant la carte tb01 et le dongle et le sans fil pour l'alim , il est possible alors de garder l'electronique du volant?

    D'apres ton wiki oui mais je ne suis pas sur !

  • c'était le volant formula pour CSR Elite, pas le ClubSport, et il n'était malheureusement pas compatible car la communication entre ce volant et la base CSR Elite n'est pas la même qu'entre les volant formula/BMW/Porsche et la base ClubSport.

    il faudrait faire le même travail que Darknao avait fait pour arriver à comprendre comment le formula CSR Elite communique.

    Le plus simple je pense c'est de relier les boutons directement à une des cartes proposées par Etienne , ou alors virer l'électronique et mettre de nouveaux boutons et encodeurs

  • C'etait un clubsport formula , le plus basique avec juste un affichage 3 digit ( pas de leds) .

    Ma question : en utilisant la carte tb01 et le dongle et le sans fil pour l'alim , il est possible alors de garder l'electronique du volant?

    D'apres ton wiki oui mais je ne suis pas sur !

    Oui c'est l'idée, peut être que ce n'est pas clair. Le tuto ne parle pas trop des connexions et différents volants, c'est plus le coté logiciel. Il faut sans doute que je mette l'info quelque part.

    Les cartes TBB_01 et TBB_02 ont toutes les 2 un connecteur jst 8 pins pour se connecter aux roues qui ont le même connecteur (et branchements).

    Pour le moment j'ai testé sur le Fanatec BMW et Formula. Si c'est un CSR élite, je ne sais pas quel protocole ils utilisent, c'est peut être pas grand chose. J'en ai peut être un au fond d'un carton, je vais voir.

  • Ensuite il ne restera plus qu'à attendre que RacingMat sorte de sa léthargie pour bouger ces messages :B

    ah ah ah ! c'est pire que de la léthargie... j'ai pas touché un volant depuis 6 mois au moins.

    Quand je vois comme notre génial Etienne phosphore et produit des trucs incroyables !! j'ai l'impression d'être comme ça :

    zombieanimated.gif

    ► La liste de mes tutos 

    Gseat à presssion, harnais 2DOF, Simucube 1 mige normal, CSP V3, TH8RS moddé, FaM loadcell, ThroneThumper, triple 24"

    ►Les impacts de la 5G ? doc en français exposition 24H/24 à des niveaux de rayonnement RF (+20 000 satellites braquant leur faisceaux sur la terre + stations relais au sol). Si vous ne voulez pas muter à seule fin d'avoir un frigo connecté, signez la pétition