Se connecter
Se connecter

ou
Créer un compte

ou

Ajout d'écrans sur une BCF2000

  • 58 réponses
  • 12 participants
  • 5 848 vues
  • 22 followers
Sujet de la discussion Ajout d'écrans sur une BCF2000

Salut à tous,

J'ai commencé un projet qui a pour but d'ajouter des écrans pour chaque tranche de ma BCF 2000 (un peu à la Xtouch de la même marque).

L'idée, c'est d'afficher le nom de la piste correspondant, et en fonction d'une touche dédiée, où alors directement sur l'édition d'un paramètre, afficher le paramètre en question. Éventuellement par la suite, ajouter un vu-metre par piste.

Le but est de faire un truc open-source, facile à mettre en place pour un bricoleur débutant et compatible avec plusieurs surfaces de contrôle, voir même chainable pour des surfaces plus larges et le tout sans se ruiner. yumyum.gif  

Pour le moment, j'utilise un Arduino flashé avec HIDuino pour que celui-ci soit reconnu comme un périphérique USB-MIDI et un écran OLED de 0,96" (c'est tout petit, mais ça tiens pile sur une largeur de tranche) de la BCF icon_mrgreen.gif.

 

Pour la compatibilité, j'utiliserai le protocole Mackie HUI MIDI en me basant sur le boulot de theageman qui a reverse-engineeré tout ça et en a fait un joli document d'explications dispo sur un thread du forum de Reaper.

 

Dans mes avancées, j'arrive à faire en sorte que l'Arduino soit reconnu comme périphérique USB-MIDI et afficher sur l'écran oled les paramètres MIDI et leur valeurs tels que CC, PC, noteOn/Off, etc. avec le numéro de canal MIDI associé. 

Le projet est dispo sur mon Github, et la route est encore longue pour avoir quelque chose de fonctionnel, mais si des motivés sont prêts à m'aider, c'est pas de refus!

 

Pour le moment je galère à recevoir des informations depuis le protocole Mackie HUI, qui est sensé être transporté dans des trames SysEx. Les messages que je reçois sont tout sauf du SysEx, donc ils sont interprétés par mon programme comme des Notes ou des Changes (qui font juste 3 bytes, et non plus, comme prévu par les SysEx). Si quelqu'un à déjà mis les mains dans ce genre de truc, qu'il n'hésite pas à me guider! icon_boire.gif

 

Afficher le sujet de la discussion
51
Traditionnellement, l'I²C a 2 fils (SDA et SCL) et le SPI en a 4 (CS, SCK, MOSI et MISO). Je ne sais pas que signal est supprimé dans un SPI à 3 fils : données bidirectionnelles (ou bien rien à relire sur un périphérique de sortie ?) ou absence de chip select ?

J'ai trouvé ca :
http://cyaninfinite.com/tutorials/0-96-spi-oled-display/
https://lib.chipdip.ru/490/DOC001490735.pdf
https://www.robot-r-us.com/downloads/e/986-ssd1306-datasheet-for-096-oled/download.html <- datasheet de la puce, avec les chronogrammes SPI 3 et 4 fils.
52

Merci pour les DS!

Là dessus, y'a pas de soucis, j'ai 2 modèles I²C à la maison, ainsi que mes 10 en SPI.

Ils fonctionnent tous très bien, mais individuellement... C'est dès que je veux en controller 2 ou plus séparément que ça se gâte icon_neutral.gif.

En SPI, il me faut le ChipSelect (non présent sur le bornier du module oled), et en I²C, il faut que je puisse définir les adresses des modules (limités à 2 choix seulement sur le module: “b0111100” ou “b0111101”, donc pas valable pour mon utilisation d'un minimum de 8 écrans) 

 

Je vais regarder ça d'un peu plus près quand même, mais à première vue, le ChipSelect est bien là (pin 17 de la nappe), mais pas déporté sur le bornier. J'essaierai de faire de la chirurgie et de me raccorder directement sur le CS de la nappe, peut-être que c'est juste ça le soucis.

Visiblement, que ce soit en 3SPI ou 4SPI, le CS est toujours là:

«The 4-wire serial interface consists of serial clock: SCLK, serial data: SDIN, D/C#, CS#»

«The 3-wire serial interface consists of serial clock SCLK, serial data SDIN and CS#.»

 

53
Citation de Silhm :
à première vue, le ChipSelect est bien là (pin 17 de la nappe), mais pas déporté sur le bornier. J'essaierai de faire de la chirurgie et de me raccorder directement sur le CS de la nappe, peut-être que c'est juste ça le soucis.


Oui, ca me semble tout à fait faisable avec une panne fine et du fil à wrapper. Soit sur la soudure de la nappe, soit sur un passif qui y serait connecté. Et quelques mm plus loin, une petite goutte de colle chaude pour assurer la tenue mécanique du fil.
54

Quelques news du projet:

  • J'ai commandé un écran SPI avec ChipSelect, et bien entendu ils se sont plantés dans l'envoi, il m'ont renvoyé un écran sans, donc me voilà avec 11 écrans identiques, mais pas utilisable comme je le souhaite… headbang.gif
  • Je me suis rendu compte que le bootloader que j'utilisais sur l'arduino gérait très mal les SysEx, pas de bol, le protocole Mackie HUI est bourré de SysEx, j'ai donc essayé d'autres Bootloaders, mais ma carte Arduino UNO est une R2, et non R3, donc les autres Bootloaders ne fonctionnent pas…
  • J'ai en attendant avancé sur plusieurs points:
    • Une interface Web en passant par de l'OSC (open sound control), sur une carte type Raspberry Pi,
    • J'ai créé une version osc avec une carte Arduino, un shield Ethernet et un écran Oled, qui fonctionne mais on sent la limitation des systèmes embarqués, j'ai 98% de la mémoire utilisée sur mon Arduino, et l'osc étant assez bavard sur le réseau, l'interface Ethernet <--> Arduino a du mal à suivre, on sent de la latence.

 Plusieurs intérogations restent pour la suite, est-ce que je continue avec un arduino? Je me prend un UNO R3, et j'y mets le bon bootloader pour gérer le MIDI, tant pis pour l'OSC, je galèrerai un peu plus pour décoder les trames MIDI.

Est-ce que je passe sur un Teensy++2, qui possède plus de mémoire et d' I/O, gère le MIDI nativement (avec toujours la même galère pour décoder les trames MIDI)

Est-ce que je passe sur un NanoPi qui me permet de gérer à la fois le MIDI, l'OSC via Ethernet, plein d' I/0 et une interface web de configuration?

 

Forcément, toutes les solutions proposées ont un prix différent, un niveau technique requis différent aussi. Le NanoPi me semble une bonne solution pour maximiser la compatibilité (USB,Ethernet et interface Web), mais on s'éloigne de la solution légère et simpliste de base... 

 

 

55
Regarde les cartes ESP32 : on peut les programmer avec l'environnement Arduino (entre autres) mais c'est pas mal plus performant et il y a Wifi et Bluetooth intégrés. Une plate-forme à mi-chemin entre Arduino et Raspi, pour une fraction du prix (j'ai vu des cartes à moins de 7€).
http://esp32.net/
56

Je ne connaissais pas cette ESP32, elle a l'air pas mal du tout, en effet! 

Par contre, bluetooth, j'ai du mal à voir l'interet ici, wifi pareil, un afficheur pour surface de contrôle, ça reste assez fixe, et de l'ethernet pour le coup eu été plus pratique.  

Sinon, j'ai trouvé des mulitplexeur I2C pas cher pour brancher tous mes écrans comme il faut yumyum.gif

57

Hello par ici! ça fait longtemps hein? tout le monde pensait que mon projet était mort? icon_tourne.gif 

Et bien non! Je m'accroche, et donc voici un résumé:

J'ai bazardé mon arduino et mes écrans I2C, j'ai mis de coté le projet OSC, raspberry, interface web pour revenir aux basiques, j'étendrais par la suite.

Me voilà donc avec une board Teensy++2 (avec plein de GPIO, et suffisament de mémoire interne) et des écrans OLED en SPI, avec un ChipSelect cette fois ci!

La Teensy++2 gère très bien le mode usb-MIDI (sans recompiler de bootloader), mais aussi le MIDI "de base" via un port série. Donc ça me permet de faire mes developpements avec l'usb-MIDI et par la suite, passer sur du MIDI standard directement sur les midiOUT de ma BCF, le port usb ne servant que d'alimentation à tout ça.

 

Donc j'ai adapté mon ancien code sur la Teensy, et j'arrive à gérer 4 écrans (je serais un peu plus progressif sur l'achat des écrans cette fois), de manière indépendante, sans avoir à multiplexer quoique ce soit! yumyum.gif

 

Il faut encore que j'allège mon code, car ça reste trop lent pour une utilisation concrète. Mais j'arrive bien à faire fonctionner les valeurs de faders, de pan et autre sur mes 4 premières pistes!

Enfin ça avance un peu, j'essaierai de faire une vidéo pour montrer tout ça!

icon_bravo.gif

 

58
Bravo :bravo:
59
:bravo: Bravo aussi !

Bernard

http://sonotrad.org --- http://diato.org --- "Collectionneur" de tables numériques Innovason et de micros DIY --- Fer à souder toujours chaud...