wDSPiy - commander le DSPiy par Wifi (et par Alexa et en MQTT)

Discutions générales sur le DSPiy et tout ce qui s'y rattache
Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

wDSPiy - commander le DSPiy par Wifi (et par Alexa et en MQTT)

Messagepar alka » dim. 13 nov. 2016 17:57

wDSPiy ou "le DSPiy à l'ère de l'IOT" :)

le prototype :
Image

Ca sert a quoi ?

Pour l'instant deux choses :
1. allumage/veille du DSPiy selon présence/absence du pc qui sert de source (par détection de la présence de l'usb sur l'amanero). On me dira qu'on peut déjà le faire avec TriggerIn, sauf que comme j'expliquais ici sur le forum, une amélioration s'impose pour pouvoir continuer de se servir aussi du BP et Telco pour on/sby

2. allumage/veille du DSPiy a distance par wifi :]

je tape http://wDSPiy dans un navigateur et voilà la première version (exemple sur mon smartphone)

Image

Bien sur j'ai plein d'idées pour des fonctions supplémentaires par wifi et y mettre tout ce qu'on peut faire par télécommande (Volume, Source, Preset, Contraste,...).
Plus précisément, tout ce qu'on peut faire par MultiDSPiy qui est un peu plus riche parait il mais pas documenté.

Ca fonctionne depuis plusieurs jours en version proto "cablé en l'air" avec une fiabilité déconcertante.

Ah oui j'allais oublier : le wDSPiy est a l'heure :)

Image

EDIT:

- fonctionnalités de la V10 ici https://www.dspiy.be/forum/viewtopic.php?p=6443#p6443
version web actualisées
Image Image Image


- ajout commande via Alexa https://www.dspiy.be/forum/viewtopic.php?p=9678#p9678

- télécommande avec écran oled via interface MQTT https://www.dspiy.be/forum/viewtopic.php?p=10040#p10040
Image

Représentation des interconnexions et protocoles utilisés
Image
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » dim. 13 nov. 2016 18:41

Comment c'est fait et comment ça marche ?

Un peu d'histoire : tout est parti du besoin souhait d'allumer/éteindre automatiquement le DSPiy quand le pc source est allumé/éteint. Bien sur, je veux continuer a éteindre et allumer le DSPiy par BP ou telco en donnant la priorité aux actions humaines sur l'automatisme. Comme discuté ici , sans modif du firmware du DSPiy il fallait rajouter un peu de logique externe.

Je pensais utiliser un simple ATTiny85 que je connais et qui aurait largement suffit.

D'autres envies se sont greffées, et surtout commander en wifi. Je me suis naturellement orienté vers une carte arduino + shield wifi.

En cherchant de ce coté, je suis tombé sur les cartes a base de ESP8266.
C'est un Soc wifi avec un puissant µC incorporé. ESP8266 est fait par Espressif qui a explosé avec ces chips le rapport performance/prix sur le marché. Espressif fournit un environnement et langage de programmation nommé LUA.

Au début ces chips étaient utilisé comme shield wifi pour Arduino. La galaxie des fans Aduino a décidé de porter les librairies pour pouvoir utiliser directement le µC de ces cartes avec l'environnement Arduino et tout l'écosystème. Ca devient un remplaçant pour les cartes arduino. Fabuleux :)


Il existe plusieurs chips ES8266. J'ai choisi une carte a base de l'ESP8266-ESP12E la plus performante a ce jour et qui gère assez de pins pour mon projet.(*)
Encore une bonne nouvelle : un design open source nommé NodeMCU a été fait pour une carte avec ce chip. Du coup, des tas de cartes ont été fabriquées par les chinois et on trouve son bonheur pour moins de 5Euros livré.
Oui oui, moins de 5 euros.
Du coup c'est devenu une carte populaire dans le monde arduino et l'expérience sur le web ne manque pas.

Specs de la carte NodeMCU Ver 1.0 (aussi appelée LoLin v3 du fabricant WeMos )
Image


En quelques heures, le serveur Web sur la carte fonctionnait et était accessible de mon réseau. Merci la communauté Arduino qui fait les exemples que j'ai juste eu a modifier. Quelques heures plus tard la carte synchronisait l'heure par internet sur les serveurs Ntc. Tout est a l'avenant : j'ai une idée, je fouille le web et quelques heures (ou jours) plus tard ça marche. Le souci est de savoir chercher avec les bons critères dans le fouilli des forums arduino.
Le reste c'est du cablage et du code a écrire.

En v1 (qui fonctionne), seules quelques fonctionnalités sont implémentées et le câblage est partiel.
j'utilise le TriggerIn du DSPiy en mode pulse ON/SBY
Led4 du DSPiy sert pour savoir l'état du DSPiy. A la fois pour confirmer que les commandes envoyées sont bien arrivées et aussi détecter si le DSPiy a été allumé/éteint de manière externe (typiquement par BP ou telco).

Image

(*) avec toutes ces références de cartes et de chips, je me suis emmêlé :gene3: et j'ai acheté un clone qui n'est ni vraiment version 0.9 ni une 1.0
Fonctionnellement identique mais j'ai un peu galéré car les pins ne sont pas tout a fait pareil. Portage sur une "vraie" NodeMCU 1.0 quand je la recevrai.
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » dim. 13 nov. 2016 18:48

En V2 la grosse nouveauté sera d'utiliser le TriggerIn du DSPiy en mode multiDSPiy pour passer davantage de commandes.
Et aussi le TriggerOut du DSpiy, lui aussi en MultiDSPiy, pour avoir un feedback complet de l'état du DSPiy.

Le mode MultiDSPiy a été un peu discuté ici. Il déconnecte le capteur IR, donc je devrais gérer le capteur IR avec NodeMCU et transcoder de ma télécommande NEC en Sony. De quoi m'amuser.

Techniquement aussi, je vais investiguer des choses que je n'exploite pas actuellement, comme la flash présente pour les datas sur NodeMCU (4MB au total partitionné en 1M pour les programmes, 3MB pour les datas).
Ca me permettra de gérer des données persistantes et simplifier la gestion du serveur web.

Autre chose que je souhaite investiqguer : la mise a jour des programmes et des données en OTA pour ne pas avoir a brancher la carte sur le pc pour les modifs. Pour l'intant en mode proto c'est pas genant mais a l'avenir une fois monté c'e sera plus simple en OTA.

Ensuite, une éventuelle gestion des BPs, molette et écran pour personnaliser l'affichage. Là c'est beaucoup de travail pour refaire ce qui existe dans le DSPiy. On verra si mon souhait d'interface minimaliste sera supérieur à la pénibilité de faire tout ça. Rien ne presse.

Et mettre a jour les presets du DSPiy par wifi ?
Sans doute faisable si on créé un lien entre le µC du DSPiy et NodeMCU mais c'est pas moi qui me lancerait la dedans ;)
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: wDSPiy

Messagepar thierryvalk » dim. 13 nov. 2016 21:13

Très intéressant.

Il y aurait une autre méthode pour dialoguer, l'I2C.
Mais faut voir s'il peut être configuré en Slave et bien protéger l'affaire vu que ce bus est utilisé pour dialoguer avec DSP et CS.

En regardant vraiment en diagonale la carte ESP-12E, il semble y avoir de l'I2S...

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » lun. 14 nov. 2016 00:55

Ces chips sont formidables et a ce prix, sont faites pour envahir l'IOT. C'est évidemment utilisé par des pros pour mettre du wifi dans leur système mais il y a aussi des centaines de projets sur le web avec ces chips, surtout en NodeMCU, faciles a adapter. Le paradis pour faire des objets connectés basse-consommation en tous genres. Encore plus propice au diy que les arduino AMHA.


Sur ce projet, je considère le DSPiy comme une boite noire avec laquelle je communique par ISOIN et ISOOUT avec " l'API " mutliDSPiy. Pour pilotage externe ca devrait suffir et Zero modif a faire coté DSPiy.
Evidemment, si le DSPiy devient une boite blanche, communiquer en I2C serait bien plus malin. NodeMCU peut etre configuré en slave. Mais cela demande surtout des modifs du firmware du DSPiy qui ne sont pas au programme me semble t il.

I2S n'est pas exposé par NodeMCU. Si l'idée est d'en faire un player audio qui reçoit un stream audio wifi et l'expose en I2S, il y a du boulot. Pour ça, je m'orienterai plutot sur une RPi ou équivalent qui dispose des services audio/video en natif et wifi aussi.


Apparté sur ce que j'ai compris
Espressif fait le chip en plusieurs versions. ESP8266 ESP-12E est je crois la plus récente et la plus grosse.
Le chip arrive avec un firmware minimaliste (commandes AT pour les controler comme un modem), est relativement pauvre en mémoire et oblige de charger les programmes avec des outils un peu rudes pour le néophyte.
Il existe des cartes ESP8266 minimalistes sur ebay vraiment pas cheres qui peuvent suffir si le besoin est modeste.

Le projet NodeMCU c'est deux choses : du hard et du soft tous deux en open source.
- une carte de développement pour l'ESP8266 qui contient de la flash (4MB), l'usb et les alims nécessaires.
- un firmware pour l'ESP8266 qui expose un certain nombre de services et facilite le chargement de programmes et de data en flash. Le firmware nodeMCU marche aussi sur d'autres cartes que NodeMCU a condition qu'il y ait la mémoire flash. On peut composer son propre firmware NodeMCU en fonction de ses besoins pour économisier des ressources sur les "petites" cartes.
https://nodemcu-build.com/index.php
NodeMCU au départ était uniquement programmable avec l'environnemment LUA d'Espressif, ou par des moyens "rudimentaires".

Les projets Arduino ont commencé a utiliser ces cartes NodeMCU comme simple shield wifi. Comme le µC dans le shield est plus puissant que celui des carte Arduino et gère aussi des GPIOs, certains on eu l'idée géniale l'idée de se passer de la carte Arduino.
La carte NodeMCU a été portée dans l'environnement Arduino et là c'est devenu simple : on programme / debug dans un contexte familier. En gros, c'est équivalent a programmer une carte arduino + shield wifi. Plus besoin de configurer le fimrware, c'est l'environnement Arduino qui charge les librairies utilisées.
Faut quand meme faire attention d'utiliser les bonnes versions de librairies compatibles ESP8266. Il existe quelques pièges semble t il.

Des choses pour l'infracstructure techniques comme SPI, I2C, UART, etc et librairies classiques pour gérer des écrans, même un filesystem en flash existent dans NodeMCU + Arduino.
acheter un DSPiy ? c'est ici

louisr
Messages : 456
Enregistré le : mar. 14 juil. 2015 15:52
Localisation : Bordeaux/Poitiers

Re: wDSPiy

Messagepar louisr » lun. 14 nov. 2016 11:24

Super :super:

Je connaissais pas cette famille de µC, je vais me renseigner !
Je pense faire à peu près la même chose pour mon projet mais avec une carte qui ferait le "master" en multi-dspiy. J'avais écrit un p'tit script pour arduino qui permet de communiquer au dspiy via le trig_in. Rien de bien compliqué, c'est du code sony (ou NEC je sais plus :o ). J'étais passé par des delais, mais je pense le refaire en passant par des timer !
J'suis très intéressé par ce que tu vas faire :)

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » lun. 14 nov. 2016 12:01

Nos projets ont des recoupements en effet. On peut voir MultiDSPiy comme une API du DSPiy :)

J'ai pas vraiment d'expérience et j'imagine que la réception IR devra se faire obligatoirement en interrupts.
L'emission vers IsoIn du DSPiy ça devrait aller.
Il doit y avoir des librairies IR pour arduino qui conviennent. Ce sera le sujet dans les prochains jours/semaines.
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » lun. 14 nov. 2016 21:12

ptite question sur le délai de réaction du DSPiy
j'envoie un pulse sur IsoIN paramétré en On Pulse.
Led4 paramétré en ON suit l'état du DSPiy. Led4 me sert de témoin pour confirmer que le DSPiy a bien répondu.

au PowerOn, tout va bien. Led4 passe ON environ 220ms après le début du pulse.

au PowerOff en revanche, l'écran s'éteint assez vite mais Led4 passe OFF seulement 2.3 sec après le début du pulse.
pourquoi c'est si long ? y a moyen d'avoir un feedback plus rapide ?
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: wDSPiy

Messagepar thierryvalk » lun. 14 nov. 2016 21:30

Sais plus trop, mais la séquence de mise en stand-by est relativement compliquée pour éviter des plocs.
Et de mémoire termine par les LED, ce qui est logique.

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » lun. 14 nov. 2016 21:46

ok. Je vais voir si trigger_out réagit plus vite.
Sinon, faudra trouver autrechose.
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » mer. 16 nov. 2016 13:47

quelques mesures de délai :
Tigger IN configuré en ON/SBY Pulse

délai entre début du pulse sur Trigger IN (ou sur un BP) et début de réaction sur Trigger OUT ou Led4

Image
en rouge ceux qui me semblent anormaux et surtout genants pour piloter le DSPiy à distance.
Me voilà fort embété.
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: wDSPiy

Messagepar thierryvalk » mer. 16 nov. 2016 15:09

D01_STBMODE 52 N
N de 0 à 7
Paramètres mise en standby.
Il s’agit de binaire, faire l’addition des valeurs des options.
+1 Mute hard des DAC (réduit la consommation en standby)
+2 Trigger out (si utilisé) relâché avant la procédure de standby
+4 Relais relâché avant la procédure de standby

:siffle:
Mais c'est un peu vieux, je te mettrais le code de la séquence de standby ce soir.

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » mer. 16 nov. 2016 15:13

thierryvalk a écrit :+2 Trigger out (si utilisé) relâché avant la procédure de standby

completement oublié que ça existait ! ça confirme que ce qui n'est pas affiché s'oublie :mrgreen:
j'essaie

Avec un peu de chance, ça marchera aussi pour MultiDSPiy au standby ?

edit : D01 52 = 7 ne change rien pour TrigerOUT en mode multidspiy
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » mer. 16 nov. 2016 15:26

en fait, ne te donne pas de peine : pas besoin du code de la séquence standby. Je peux pas la modifier.
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » mer. 16 nov. 2016 15:36

au passage : en regardant a l'oscilloscope, en mode multiDSPiy,
au Turn ON, le code est envoyé une première fois après 200ms

et il semble etre envoyé une deuxième fois apres 2000ms, et encore une fois 200ms plus tard. Donc trois fois au total.
Je dis "il semble" car les délais sont tellement longs qu'avec mon scope je ne peux pas voir en détail l'allure du deuxième et troisième train de pulses émis. J'ignore si c'est le meme code ON répété ou autre chose qui est émis.
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: wDSPiy

Messagepar thierryvalk » mer. 16 nov. 2016 15:53

Pas impossible, mais en toute logique ce serait Turn On puis N° du Preset et enfin Volume pour sortir du Mute.

Avatar de l’utilisateur
alka
Administrateur du site
Messages : 2907
Enregistré le : mer. 15 juil. 2015 15:18
Localisation : 92
Contact :

Re: wDSPiy

Messagepar alka » mer. 16 nov. 2016 16:14

ca a du sens.
je pensais faire un peu la même chose, mais plus rapproché.
Il y a une raison d'attendre 2 secondes ?

En config multiDSPiy habituelle, il y a un master et des slaves.
lorsqu'on lui envoie ON sur son IsoIN, le DSPiy master se réveille dans l'état ou il s'était endormi
A cela, il répond sur son IsoOut pour les slaves : ON + preset + volume en cours

Dans mon idée, je souhaitais transformer le DSPiy en un intermédiaire, à la fois master et slave.
la commande ON (ou les autres) lui est envoyée par moi en multiDSPiy sur son IsoIN comme s'il était un slave et il en reçoit aussi par BP et telco.
Comme son IsoOut est configuré en multiDSPiy, il est aussi master et transmet les commandes qu'il reçoit.

Je ne stocke pas l'information du preset et volume en cours et ne peux savoir ce qu'un utilisateur modifie avec les BPs ou telco.
Ecouter IsoOut me semblait pertinent. Ca m'ennuie que les commandes soient envoyées avec autant de retard.
acheter un DSPiy ? c'est ici

Avatar de l’utilisateur
thierryvalk
Administrateur du site
Messages : 3519
Enregistré le : jeu. 9 juil. 2015 20:08
Localisation : Belgique

Re: wDSPiy

Messagepar thierryvalk » mer. 16 nov. 2016 16:49

Le problème ait que tu veux utiliser un système qui n'est pas fait pour.

Pour les délais, il y pas mal de choses qui rentrent en jeux : Mute des DAC et la nécessiter d'attendre pour couper l'I2S qu'ils aient terminés leur propre séquence, chargement d'un Preset, et aussi le protoxole Sony qui est lent avec un délais entre deux frames.

Aller plus vite est certainement possible, mais critiques vu que certaines tâches ont des délais dépendants de divers facteurs.
C'est donc risqué.

Pour moi, il faut faire un système en I2C.
Les ordres passeraient par la fonction MultiDspiy In, tandis que le DSPiy écrit en permanence son état dans 2 ou 3 registres.


Retourner vers « DSPiy général »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 6 invités