[TUTO] Application web dynamique

Proposer ou rechercher un tutoriel concernant le Raspberry Pi

Modérateur : Francois

BlackTom
Messages : 45
Enregistré le : jeu. 31 mars 2016 13:21

Re: [TUTO] Application web dynamique

Message par BlackTom » ven. 22 mai 2020 20:15


Bud Spencer a écrit :
BlackTom a écrit :
ven. 22 mai 2020 19:37
En réalité, j'ai juste besoin de tourner dans un sens mais qui peut le plus peut le moins.
Bha comme je ne savais pas, j'ai prévu les 2 sens de rotation dans le bout de code et je me suis dit que c'était l'occase de donner un exemple d'énumérateur en js (.Right .Left) et ca peut servir à autre chose pour d'autres.

Pour le distributeur que tu vas utiliser, j'imagine que c'est un principe de vis sans fin ou un truc dans le genre ? Si c'est le cas, penses à repasser toutes les sortie à 0 quand le cycle de rotation de la distribution est finie, sinon, tu vas maintenir du courrant sur les bobines du moteur pour rien (dans l'exemple, ce serait là ou j'ai écrit le console log 'fini' dans la fonction rotate).
Oui même si tu n'avais pas fait les 2 sens, j'aurais ajouté pour tester ...
Non ce n'est pas une vis sans fin mais effectivement, il faut éteindre le moteur après une distribution.

Possesseur d'un RPi Zéro WH pour un projet de distributeur de croquettes pour chats


BlackTom
Messages : 45
Enregistré le : jeu. 31 mars 2016 13:21

Re: [TUTO] Application web dynamique

Message par BlackTom » sam. 23 mai 2020 15:25

Bon, j'ai bien testé hier soir mais le résultat n'était pas probant. Beaucoup de bruit et de vibrations mais assez peu de rotation.
Ton programme fonctionne parfaitement, ce n'est pas le problème.
Le problème assez facile à comprendre et à identifier vient de l'ordre d'allumage des bobines (pour faire simple)
Finalement, j'ai trouvé un bon article sur le sujet, j'ai repompé la séquence utilisée dans l'exemple et ça marche bien :

Code : Tout sélectionner

'use strict';

const Gpio = require("pigpio").Gpio;

var Motor = { 

    STEP : function (pin1, pin2, pin3, pin4) { 

        const directions = {Right: 1, Left: 2};
        const step = [
                        [ 1, 0, 1, 0]
                      , [ 0, 1, 1, 0]
                      , [ 0, 1, 0, 1]
                      , [ 1, 0, 0, 1]
                     ];
        const NbSteps=step.length;
        var busy = false;
        var pos = 0;

        var motors = [
            new Gpio(pin1, Gpio.OUTPUT),
            new Gpio(pin2, Gpio.OUTPUT),
            new Gpio(pin3, Gpio.OUTPUT),
            new Gpio(pin4, Gpio.OUTPUT)
        ];

        function rotate (directions, pas, delais) { 
            busy = true;
            let count = 0;
            let t = setInterval (() => {
                count += 1;
                switch (directions) {
                    case 1: pos += 1; pos = pos > NbSteps-1 ? 0 : pos; break;
                    case 2: pos -= 1; pos = pos < 0 ? NbSteps-1 : pos; break;
                }

                for( let i = 0; i < 4; i++ )
                {
                    motors[i].digitalWrite( step[pos][i] );
                    //console.log("motors["+i+"]="+step[pos][i])
                }
                //console.log (pos +" : "+ step[pos]); //=>Set GPIOS step [x]
                if (count == pas) {
                    clearInterval(t);
                    busy = false;
                    for( let i = 0; i < 4; i++ )
                        motors[i].digitalWrite( 0 );
                    console.log("fini");
                }
            }, delais);  
        };

        this.Directions = directions;
        this.Motors = motors;

        this.Rotate = function (direction, pas, delais) {
            if (!busy) {
                rotate(direction, pas, delais);
            }    
        }
    }
};
module.exports = Motor; 

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: [TUTO] Application web dynamique

Message par Bud Spencer » lun. 25 mai 2020 13:18

parfait, ca devient bon.
Pour les séquences, ca dépend des moteurs et aussi du mode de fonctionnement choisi (il y en a plusieurs mais je ne les ais plus en tête).

Ca fait longtemps que je n'ais pas jouer avec des moteurs pas a pas, je vais peut être me commander un truc ou deux en chinoiserie et trouver une idée originale pour les utiliser d'ici que ce soit livré ;)
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

BlackTom
Messages : 45
Enregistré le : jeu. 31 mars 2016 13:21

Re: [TUTO] Application web dynamique

Message par BlackTom » lun. 25 mai 2020 14:26

Bud Spencer a écrit :parfait, ca devient bon.
Pour les séquences, ca dépend des moteurs et aussi du mode de fonctionnement choisi (il y en a plusieurs mais je ne les ais plus en tête).

Ca fait longtemps que je n'ais pas jouer avec des moteurs pas a pas, je vais peut être me commander un truc ou deux en chinoiserie et trouver une idée originale pour les utiliser d'ici que ce soit livré ;)
Oui, là il reste des finitions cosmétiques, comme lancer l'appli au démarrage de la framboise en cas de coupure de courant, ajouter un système authentification, ajouter une interface pour programmer les distributions automatique.
Trois fois rien.

Et il reste à faire tout le bricolage ... Mais là n'est pas le sujet ( plutôt ici : https://forums.framboise314.fr/viewtopic.php?t=5663 )
Encore mille fois merci, Bud !!

Possesseur d'un RPi Zéro WH pour un projet de distributeur de croquettes pour chats


Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: [TUTO] Application web dynamique

Message par Bud Spencer » lun. 25 mai 2020 20:49

BlackTom a écrit :
lun. 25 mai 2020 14:26
Oui, là il reste des finitions cosmétiques, comme lancer l'appli au démarrage de la framboise en cas de coupure de courant, ajouter un système authentification, ajouter une interface pour programmer les distributions automatique.
Trois fois rien.
Oui, au point ou tu en es, on peut parler de 'cosmétiques'. Perso, quand j'ai résolu tous les problèmes techniques lié au fonctionnement fondamental d'un programme, j'appel tout le reste 'broderie' :lol:
BlackTom a écrit :
lun. 25 mai 2020 14:26
Encore mille fois merci, Bud !!
Pas de quoi. Meme si la programmation est une grosse partie de mon gagne pain, c'est aussi une grande passion pour moi et c'est toujours un plaisir de la partager avec d'autres ;)
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

William59
Messages : 4
Enregistré le : jeu. 11 juin 2020 12:40

Re: [TUTO] Application web dynamique

Message par William59 » jeu. 11 juin 2020 15:03

Bonjour,

je trouve votre forum super avec de très bon explication mais voilà,

j'ai un problème avec la leçon 6, je suis sous les versions suivante
pi@raspberrypi:~/myweb $ node -v
v12.18.0
pi@raspberrypi:~/myweb $ npm -v
6.14.5
pi@raspberrypi:~/myweb $
et j'ai l'erreur suivante quand je lance sudo node myweb.js


pi@raspberrypi:~/myweb $ sudo node myweb.js
internal/modules/cjs/loader.js:969
throw err;
^

Error: Cannot find module '../build/Release/wiringPi'
Require stack:
- /home/pi/myweb/node_modules/wiring-pi/lib/exports.js
- /home/pi/myweb/myweb.js
at Function.Module._resolveFilename (internal/modules/cjs/loader.js:966:15)
at Function.Module._load (internal/modules/cjs/loader.js:842:27)
at Module.require (internal/modules/cjs/loader.js:1026:19)
at require (internal/modules/cjs/helpers.js:72:18)
at Object.<anonymous> (/home/pi/myweb/node_modules/wiring-pi/lib/exports.js:1:18)
at Module._compile (internal/modules/cjs/loader.js:1138:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1158:10)
at Module.load (internal/modules/cjs/loader.js:986:32)
at Function.Module._load (internal/modules/cjs/loader.js:879:14)
at Module.require (internal/modules/cjs/loader.js:1026:19) {
code: 'MODULE_NOT_FOUND',
requireStack: [
'/home/pi/myweb/node_modules/wiring-pi/lib/exports.js',
'/home/pi/myweb/myweb.js'
]
}

est-ce que quelqu'un peut me donner un coup de main merci
William

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: [TUTO] Application web dynamique

Message par Bud Spencer » ven. 12 juin 2020 19:22

Haaa la leçon 6 …
Pour cette leçon, j’avais utilisé un wrap de WiringPi. Perso, je n’ai jamais aimé cette librairie, mais comme tout le monde ne jurait que par ça et que le tuto ne m’était pas destiné (forcement …), j’avais été dans le sens de ce qui était le plus demandé. C’est la seule leçon que je n’ai jamais remis à jour, tout simplement parce que la lib WiringPi est techniquement obsolète et n’est plus maintenue. Alors bien sûr, on pourrait toujours faire tourner cette leçon 6 avec WiringPi sur les dernières versions de NodeJs et de Raspbian, mais ça n’aurrait aucun intérêt d’expliquer ça et ce serait de toute façon une mauvaise idée (ce qui est mort ne saurait mourir …). Si tu poursuis ta lecture du tuto, tu verras qu’il y a d’autre ‘npm’ qui permettent d’accéder au GPIO. Je pense notamment à rpio qui est un wrap de l’excellente lib BCM2835 de Mike McCauley (un autre monde comparé à WiringPi) , mais aussi d’autre plus 'facile' (onoff, pigpio …). De mon coté, dès que j’aurais 5 minutes, je ferais une leçon ‘6 NEW’ en utilisant des trucs ‘actuels’
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

William59
Messages : 4
Enregistré le : jeu. 11 juin 2020 12:40

Re: [TUTO] Application web dynamique

Message par William59 » ven. 12 juin 2020 20:14

Bud Spencer a écrit :
ven. 12 juin 2020 19:22
Haaa la leçon 6 …
Pour cette leçon, j’avais utilisé un wrap de WiringPi. Perso, je n’ai jamais aimé cette librairie, mais comme tout le monde ne jurait que par ça et que le tuto ne m’était pas destiné (forcement …), j’avais été dans le sens de ce qui était le plus demandé. C’est la seule leçon que je n’ai jamais remis à jour, tout simplement parce que la lib WiringPi est techniquement obsolète et n’est plus maintenue. Alors bien sûr, on pourrait toujours faire tourner cette leçon 6 avec WiringPi sur les dernières versions de NodeJs et de Raspbian, mais ça n’aurrait aucun intérêt d’expliquer ça et ce serait de toute façon une mauvaise idée (ce qui est mort ne saurait mourir …). Si tu poursuis ta lecture du tuto, tu verras qu’il y a d’autre ‘npm’ qui permettent d’accéder au GPIO. Je pense notamment à rpio qui est un wrap de l’excellente lib BCM2835 de Mike McCauley (un autre monde comparé à WiringPi) , mais aussi d’autre plus 'facile' (onoff, pigpio …). De mon coté, dès que j’aurais 5 minutes, je ferais une leçon ‘6 NEW’ en utilisant des trucs ‘actuels’

Merci beaucoup pour la réponse, c'est vrai que mon but est de récupérer des infos par les gpio comme température pour le contrôle du chauffage et d'autre pour faire de la domotique, j'attend avec impatience de tes nouvelles. Encore merci beaucoup pour ton forum que je trouve super pour les néophytes comme moi.
Bravo pour la simplicité de tes explications.
Est-ce que tu as aussi des infos sur eps8266 pour communication avec un raspberry via du wifi.
Bien à toi. William

Bud Spencer
Raspinaute
Messages : 1089
Enregistré le : lun. 15 août 2016 21:38

Re: [TUTO] Application web dynamique

Message par Bud Spencer » sam. 13 juin 2020 08:09

Il y a à la page 12 du tuto plusieurs exemples de mise en œuvre de sonde dht11 et dht22 (temperature, humidité) dont un ou la sonde est raccordée à un esp (le code est un simple petit script en lua). Toute les x secondes, l’esp transmet les valeurs de la sonde au serveur (pi) et celui-ci les renvois en temps réel a tous ces clients web. Ce qu’il faut retenir de ça, ce sont les méthodes utilisées. On a au centre du projet un serveur web qui est capable de demander ou simplement recevoir des données en provenance de n’importe quel ‘satellite’ (dans l’exemple l'esp avec une sonde dht), de traiter ces données et de les mettre à disposition de ses clients en temps réel.
Si tu as suivi le tuto, tu as peut etre essayé la leçon 4. J’avais mis 2 manomètres graphique dans une page web et le serveur envoyait des valeurs aléatoires pour l’affichage de ces jauges. Quand j’ai fait les exemples avec les DHTxx, j’ai dans un premier temps simplement remplacé la génération de valeurs aléatoires par celles issues de la lecture d’une sonde branchée sur le port GPIO et dans un second temps, j’ai déplacé la sonde sur un esp et remplacé la procedure de lecture de la sonde par un point d'entrée http post.
Le premier ennemi de la connaissance n’est pas l’ignorance, c’est l’illusion de la connaissance (S. Hawking).

William59
Messages : 4
Enregistré le : jeu. 11 juin 2020 12:40

Re: [TUTO] Application web dynamique

Message par William59 » sam. 13 juin 2020 18:01

Bonjour, est-ce que tu as un bon tuto sur la config des esp et leur fonctionnement pour la connection via le raspberry pour récupérer ou envoyer des ordres a un relai. merci d'avance William

Répondre

Retourner vers « Tutoriels »