Tous les capteurs reliés au RPI par Wifi avec module ESP8266

Parce que les applications du Raspberry Pi sont illimités...

Modérateur : Francois

Répondre
philippe_PMA
Messages : 13
Enregistré le : lun. 22 sept. 2014 09:42

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Message par philippe_PMA » jeu. 26 févr. 2015 14:06

Veloce a écrit :
Jean-Marie a écrit :Dans ma lecture sur les sockets, je n'en suis qu'à la page 13 (sur 95). Je suis empêtré dans des structures incluses dans d'autres structures, faisant à nouveau partie de structures. Pour couronner tout cela, on peut faire par endroit du typecasting. Autant dire que pour un débutant en C, c'est pas du gâteau !!! Mais j'ignore si les choses seraient plus simples en Lua.
Je suis à l'écoute des avis.
Bah moi j'en suis à la page 23, mais sur 104 : tu parles bien du bouquin de Beej ? C'est un peu un millefeuille ces sockets, mais si on suit les exemples étape par étape ça se comprend à peu près. Ce que je n'ai pas pigé c'est ce qui se passe pendant qu'on attend la réponse du serveur en face: est-ce que le programme reste bloqué sur recv et attend indéfiniment, ou quoi. Enfin il me reste 81 pages à lire et je passe ma vie dans les transports en commun... :?
...
Je ne lis pas Beej, mais je connais suffisamment les sockets en C.

Quelques infos :
- Par défaut les recv sont bloquants.
- Mais on peux passer en non bloquant.
- Il y a la fonction select ou la fonction poll qui permettent de savoir s'il y a quelque chose à lire. Du coup, ça permet de ne pas rester bloquer sur le read même s'il est bloquant ...

Un lien http://broux.developpez.com/articles/c/sockets/. Allez voir la partie avancées pour le select.

Sinon la bible en anglais c'est les Richard Stevens http://www.amazon.fr/Unix-Network-Progr ... 1Y3ZZ8HTZS.
Et en french c'est Christophe Blaess http://www.amazon.fr/D%C3%A9veloppement ... phe+Blaess.
Christophe Blaess a aussi un site dont une page qui explique le select avec les tubes : http://www.blaess.fr/christophe/2013/12 ... de-select/.
Et là une page où vous pouvez trouver les codes sources du bouquin ... http://www.blaess.fr/christophe/livres/ ... ous-linux/.

Avatar du membre
Jean-Marie
Raspinaute
Messages : 240
Enregistré le : sam. 24 janv. 2015 18:01
Localisation : Arlon, Belgique
Contact :

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Message par Jean-Marie » jeu. 26 févr. 2015 15:01

Merci à vous pour vos explications. Malheureusement, beaucoup m'échappe car je n'ai pas le niveau de background requis. Ce n'est pas seulement une question de langage de programmation. Je manque cruellement de connaissances de base sur les réseaux et leurs protocoles.

Malgré tout, j'essaye de me frayer un chemin à mon niveau .
Dans ce forum, je vois qu'un autre se pose le même genre de question que moi:

Code : Tout sélectionner

RE: PRIVATE COMMUNICATION BETWEEN MODULES#782
By elektronika_ba -  Sat Sep 20, 2014 6:58 am

I wonder what is spit out on uart when module receives some data from another module... If you know what I mean... I know how socket connection works but I haven't seen it in this configuration.
Mais la question reste sans réponse.

Là, je viens tout juste de me rendre compte qu'une série de messages ont été ajoutés par SMBA38, Veloce et philippe_PMA. Cela va me demander du temps de décortiquer tout cela. Infiniment merci. Mais en attendant, je continue mon message sur sa lancée.

Une petite représentation graphique vaut mieux qu'une explication:
Montage de base2.jpg
Montage de base2.jpg (77.6 Kio) Vu 2933 fois
A gauche on a un PC, un RPI ou même un Arduino servant d'ordinateur central dans un réseau de domotique. Cet ordinateur est relié par liaison série à un ESP8266 (éventuellement par l'intermédiaire d'un convertisseur USB-Série). A droite, on voit l'un des périphérique avec son capteur, un Arduino et un module ESP8266.
Toutes les 15 minutes, l'Arduino périphérique veut envoyer une mesure à la centrale. Il réveille le module et lui commande de se connecter à l'ESP central grâce à des commandes AT. Une fois la connexion établie, il se sert de la commande AT+CIPSEND pour envoyer la mesure.
473.JPG
473.JPG (144.45 Kio) Vu 2933 fois
Entre parenthèses, quelqu'un sait-il ce que veut dire "Enters unvarnished transmission" ?
J'imagine qu'après la commande AT+CIPSEND, l'arduino périphérique envoit la mesure, mettons sous forme de 6 caractères "19.8°C".

Passons du côté de la centrale.
Je suppose que le module ESP central va recevoir les 6 caractères qui lui sont envoyés et avec un peu de chance, il va les transmettre au PC via la liaison série.
Mais à quoi sert la commande de réception suivante :
474.jpg
474.jpg (55.47 Kio) Vu 2933 fois
Les 6 caractères vont-ils être précédés ?
Quelque chose du genre: "+IPD,6,19.8°C" ???

Comme j'ai un deuxième module, et afin de ne pas remuer des hypothèses et des incertitudes plus longtemps, je vais le monter sur un deuxième petit circuit imprimé pour pouvoir essayer en vrai le montage.

smba38
Modérateur
Messages : 193
Enregistré le : mar. 24 févr. 2015 09:28
Localisation : Bourgoin

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Message par smba38 » jeu. 26 févr. 2015 16:15

Coucou Jean Marie.

Pour répondre à ta question sur les commandes AT -> http://www.rei-labs.net/esp8266-wifi-module/
Cliquer sur les images des écrans DOS pour voir les ordres.
D'après le traducteur Google "Enters unvarnished transmission" semble vouloir dire "transmission sans fard"
ça doit vouloir dire transmission basique de chez basique.

Je trouve que ta solution est compliquée au niveau matériel.

Pour ma part je n'utiliserais qu'un seul module esp8266 par capteur et un programme maitre écrit en python tournant sur un PC ou Raspberry .
Les données lues sur les capteurs peuvent être directement traitées par l'esp8266 avec le langage lua.
Les esp8266 se connectent en mode STATION au routeur pour pouvoir accéder en WIFI au programme maitre.
ON fait l'économie d'un Arduino par capteur et on dispose de la puissance d'un Raspberry.

Deux cas possibles:
1) C'est les modules avec capteurs qui prennent l'initiative d'envoyer les données à périodes régulières.
Dans ce cas, il faut gérer les conflits en cas d'envoi simultané.
Les données sont envoyées directement sur le maitre à une adresse IP fixe.
L'esp8266 joue le rôle du client Telnet et le maitre celui de serveur Telnet.
Il faut modifier le programme que j'ai mis en exemple pour le transformer en serveur Telnet.
On peut également à la place du protocole Telnet utiliser directement des sockets.

2)Plus simple, c'est le programme maitre qui interroge les modules.
Ces modules sont configurés en serveur Telnet (comme dans mon exemple).
Sur le maitre Il faut transformer le programme client_telnet que j'ai mis en exemple en sous programme.
Le programme maitre appelle ce sous programme en lui passant en paramètre l'adresse IP d'un module et l'ordre LUA à envoyer.
Il récupère en retour la valeur du capteur et il la traite, ensuite, il passe au module suivant.
Sur les esp8266 il faut juste écrie en LUA la lecture du capteur.
Je peux t'aider pour écrire ce programme maitre, je connais pas trop mal python.

A+
SMBA38

Avatar du membre
Jean-Marie
Raspinaute
Messages : 240
Enregistré le : sam. 24 janv. 2015 18:01
Localisation : Arlon, Belgique
Contact :

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Message par Jean-Marie » jeu. 26 févr. 2015 16:52

Hello SMBA38,

C'est très gentil de bien vouloir m'aider pour le code Python (et LUA). La seule chose que je connais de ces deux languages, c'est leur nom !!!

Ta deuxième solution est peut-être plus simple à programmer. Mais si c'est le programme maître qui interroge les modules, ceux-ci ne doivent-ils pas rester tout le temps à l'écoute, ce qui est incompatible avec des modules sur pile ?
A moins que le programme maître ne soit capable de mettre les modules en sleep et de les réveiller.

C'est vrai que ce que je propose demande plus de matériel. Par contre, les modules de base et les Attiny sont très bon marchés, par rapport à ton module qui fait quand même 10€. Ceci dit, Peut-être qu'il y a moyen de flasher les modules de base avec NodeMCU.

Toujours est-il que pendant que tu écrivais ton message, je gravais le circuit imprimé d'adaptation :
P1120002.JPG
P1120002.JPG (57.17 Kio) Vu 2926 fois
Au point ou j'en suis, je ne risque pas grand chose à essayer la solution d'un ESP8266 de chaque côté du wifi.
Je tiens le forum au courant de la suite, évidemment.

Veloce
Messages : 79
Enregistré le : sam. 24 janv. 2015 20:12

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Message par Veloce » jeu. 26 févr. 2015 17:32

philippe_PMA a écrit : Je ne lis pas Beej, mais je connais suffisamment les sockets en C.

Quelques infos :
- Par défaut les recv sont bloquants.
- Mais on peux passer en non bloquant.
- Il y a la fonction select ou la fonction poll qui permettent de savoir s'il y a quelque chose à lire. Du coup, ça permet de ne pas rester bloquer sur le read même s'il est bloquant ...

Un lien http://broux.developpez.com/articles/c/sockets/. Allez voir la partie avancées pour le select.

Sinon la bible en anglais c'est les Richard Stevens http://www.amazon.fr/Unix-Network-Progr ... 1Y3ZZ8HTZS.
Et en french c'est Christophe Blaess http://www.amazon.fr/D%C3%A9veloppement ... phe+Blaess.
Christophe Blaess a aussi un site dont une page qui explique le select avec les tubes : http://www.blaess.fr/christophe/2013/12 ... de-select/.
Et là une page où vous pouvez trouver les codes sources du bouquin ... http://www.blaess.fr/christophe/livres/ ... ous-linux/.
Houlà, oui c'est même l'intégrale, avec l'ancien et le nouveau testament !
Merci pour les références, je les garde pour plus tard mais c'est peut-être un peu trop compliqué pour ce que j'ai à en faire.

Par contre, la page sur select, c'est exactement ça. Je veux recevoir des données qui arrivent quand elles veulent, mais sans tout bloquer.

Génial, merci Philippe.

Veloce

Avatar du membre
Jean-Marie
Raspinaute
Messages : 240
Enregistré le : sam. 24 janv. 2015 18:01
Localisation : Arlon, Belgique
Contact :

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Message par Jean-Marie » ven. 27 févr. 2015 14:20

Hello les amis,

Jusqu'ici, je n'utilisais que mon PC de bureau fonctionnant avec Windows XP Pro SP3. (Oui, je sais, c'est périmé mais ça marche bien).

Pour mettre en oeuvre mon projet, j'ai sorti mon portable avec Windows 8.1 et j'ai réalisé le montage suivant :
Montage de base3.jpg
Montage de base3.jpg (67.28 Kio) Vu 2913 fois
Et bien, j'ai des problèmes. Mon portable me crée bien un Port COM3 avec mon convertisseur USB-Série et je peux y connecter l'ESP8266, mais au moment où je connecte CH_PD au 3.3V, le Port série virtuel disparaît !

J'ai d'abord pensé que le module ESP avait des problèmes mais lorsque je le monte avec le PC Win XP, tout fonctionne normalement.

J'ai ensuite cru que la faute venait du convertisseur USB-Série, mais là aussi, en invertissant les convertisseurs, l'erreur continue à se produire du côté du portable.

Dans une dernière tentative, j'ai remplacé le driver du CP210x par la toute dernière version de Silicon Labs. Rien à faire, la connexion de CH_PD fait toujours disparaître le Port virtuel.

Conclusion : l'anomalie vient soit du portable (Compaq), soit de Windows 8.1

Il ne me reste plus qu'une solution : ranger mon portable et ressortir un vieux PC qui tourne encore sous Win XP.

J'essaye ça (après les courses).

Avatar du membre
Jean-Marie
Raspinaute
Messages : 240
Enregistré le : sam. 24 janv. 2015 18:01
Localisation : Arlon, Belgique
Contact :

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Message par Jean-Marie » ven. 27 févr. 2015 18:57

J'ai ressorti mon vieil ordinateur (Win XP).
Le temps de chercher un écran, un clavier, une souris, un dongle USB-Wifi et d'installer un driver pour le convertisseur USB-Série de Silicon Labs ...

Tout fonctionne, sauf que ........ lorsque je connecte CH_PD au 3.3V, le port série virtuel disparaît !!!!!

C'est à n'y rien comprendre.
Ce sera tout pour cette semaine car je m'absente le week-end.
Si entre-temps, quelqu'un a une idée, elle est la bienvenue.

philippe_PMA
Messages : 13
Enregistré le : lun. 22 sept. 2014 09:42

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Message par philippe_PMA » ven. 27 févr. 2015 22:03

Veloce a écrit :
philippe_PMA a écrit : ...
Par contre, la page sur select, c'est exactement ça. Je veux recevoir des données qui arrivent quand elles veulent, mais sans tout bloquer.
...
Je ne pense pas que tu en auras besoin, mais on peut aussi demander à recevoir un signal (SIGIO/SIGPOLL) quand il y a quelque chose à lire sur la socket ...
Du coup, si on était bloqué dans une fonction bloquante, à la réception du signal on est débloqué de cette fonction. On peut alors aller vérifier avec le select s'il n'y a pas quelque chose à lire sur la socket. Mais en même temps ça complexifi beaucoup la programmation car il faut alors tenir compte de cette reception de signal possible sur toutes les fonctions bloquantes.

Veloce
Messages : 79
Enregistré le : sam. 24 janv. 2015 20:12

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Message par Veloce » dim. 1 mars 2015 22:00

Hello, moi j'ai un peu bricolé ce WE.

Mon serveur web n'est pas fini, mais ça avance.
En deux mots le principe c'est que je communique avec mon ESP8266 en SoftwareSerial, tandis que le port série du Uno envoie les questions et les réponses au PC. Ce qui me permet de comprendre ce qui se passe quand je me connecte au serveur web avec un navigateur. Bizarrement, ce qui marchait bien en utilisant mon Uno comme simple interface série ne marche plus en SoftwareSerial. Après une longue recherche, les caractères incohérents que je recevais étaient dus à une alimentation un peu trop faible (3,1 V au lieu de 3,3). Du coup j'ai changé les valeurs des résistances, et avec 3,45V c'est plus fiable.
Promis, j'envoie le schéma et les sources dès que ça fonctionne.
Jean-Marie a écrit :J'ai ressorti mon vieil ordinateur (Win XP).
Le temps de chercher un écran, un clavier, une souris, un dongle USB-Wifi et d'installer un driver pour le convertisseur USB-Série de Silicon Labs ...

Tout fonctionne, sauf que ........ lorsque je connecte CH_PD au 3.3V, le port série virtuel disparaît !!!!!

C'est à n'y rien comprendre.
Ce sera tout pour cette semaine car je m'absente le week-end.
Si entre-temps, quelqu'un a une idée, elle est la bienvenue.
Concernant ton montage, en toute amitié il faut te dire que tu te compliques la vie. Deux ESP8266 qui discutent ensemble, c'est deux sources de pannes (ou 2 au carré, je ne sais pas). Essaye déjà d'en faire fonctionner un, et de discuter avec lui en telnet ou en web, et si ça marche bien tu pourras remplacer le navigateur ou le terminal par un petit programme à toi. Mais surtout côté PC garde un matériel dont tu sais qu'il fonctionne.

Allez, tu y es presque !

Veloce ;)

Veloce
Messages : 79
Enregistré le : sam. 24 janv. 2015 20:12

Re: Tous les capteurs reliés au RPI par Wifi avec module ESP

Message par Veloce » dim. 1 mars 2015 22:04

Euh, sinon ton ESP8266 est alimenté comment, côté PC ?
C'est que ça consomme ces petites bêtes, jusqu'à 215mA !
Si tu prends l'alim sur ton interface TTL, elle n'est pas assez puissante et c'est pour ça que le port série disparaît.

Enfin peut-être.

Veloce :|

Répondre

Retourner vers « Et tout le reste »