Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Raspberry Pi Discussion :

Capteurs sur pi


Sujet :

Raspberry Pi

  1. #1
    Membre régulier
    Capteurs sur pi
    Bonsoir,

    J'ai mis à jour la dernière version de Buster, et j'ai vu passer sur l'écran ce qui ressemblerait à des librairies pour capteurs.

    Est-il possible de connaitre la liste des capteurs facilement utilisables pour le pi 4, si possible avec une bibliothèque python ?

  2. #2
    Rédacteur

    Je ne sais pas si une telle liste existe.
    Ensuite tu as indiqué "facilement"!

    Je ne sais pas si c'est la bonne démarche.
    En général, on va dans l'autre sens.
    Par exemple, on est intéressé par développer une application pour vérifier l'humidité, donc on cherchera un capteur d'humidité pour le Raspberry Pi.
    Pas besoin d'indiquer le Raspberry Pi 4: il y aura beaucoup plus d'articles sur d'anciens RPi.
    Le RPi possède des broches GPIO où l'on branche ces capteurs qui sont bien documentés sur le Web avec presque toujours un exemple en Python et sa librairie GPIO.

    Parfois on peut se retrouver avec un capteur analogique.
    Le RPi n'a pas d'entrée analogique et il faudra trouver un convertisseur.

    Certains capteurs digitals, comme le Dallas DS18B20, pour la température, sont assez compliqués. Ils sont traités par un protocole implémenté dans le système d'exploitation. Mais il y a une pléthore d'articles et d'exemple en Python.
    Un des équivalents du DS18B20 en analogique, c'est le lm35. Il est trop facile et retourne juste une tension à convertir en Celsius. Mais il faut un convertisseur.
    Si on veut jouer avec un lm35, sur un RPi, cela ne fait pas vraiment de sens.
    J'ai un convertisseur pour le RPi, mais je ne l'ai pas encore utilisé, car je dépose mes lm35 (ou DS18B20) sur des ESP8266 (vers 10 fois moins chèr qu'un RPi 4), ESP32 ou Arduino WiFi (un peu trop cher).

    Tous les bricoleurs GPIO du RPi devrait aussi visiter https://www.developpez.net/forums/f2094/general-developpement/programmation-systeme/embarque/arduino (où je suis aussi très actif).
    Cela donnera des idées de projet.

    Cordialement

  3. #3
    Membre éclairé
    Citation Envoyé par boijea Voir le message
    ... Certains capteurs digitaux, comme le Dallas DS18B20, pour la température, sont assez compliqués. Ils sont traités par un protocole implémenté dans le système d'exploitation. ...
    Pouvez-vous nous en dire plus ...

    Cordialement.

    Pierre.

  4. #4
    Expert éminent sénior
    Bonjour,

    le composant DS18B20 utilise le protocole de communication 1-Wire ou encore appelé protocole Dallas, du nom du fabricant du composant. C'est un protocole similaire à l'I2C.
    La datasheet du composant indique comment le brancher sur un microcontrôleur et les détails du protocole.
    Voici un tutoriel avec Arduino.

  5. #5
    Rédacteur

    Citation Envoyé par ChPr Voir le message
    Pouvez-vous nous en dire plus ...
    Pour le RPi: https://thepihut.com/blogs/raspberry-pi-tutorials/ds18b20-one-wire-digital-temperature-sensor-and-the-raspberry-pi

    Il n'y a pas d'interface GPIO dans ce cas.
    Il suffit d'identifier où se trouve le fichier w1_slave, dans un sous-répertoire de /sys/bus/w1/devices/, sous-répertoire qu'il faudra identifier après avoir branché le capteur.
    Ensuite on peut lire ce fichier et le traiter pour ressortir la température, avec n'importe quel langage de programmation.

  6. #6
    Membre éclairé
    Merci "boijea" pour ces infos. Je vais essayer de mettre cela en œuvre, puis d'intégrer cela dans un programme écrit en Free-Pascal et Lazarus (pour le visuel).

    @ "Auteur" : j'ai plusieurs fois utilisé le DS18B20 avec un Arduino en utilisant sa bibliothèque écrite en C.

    Cordialement.

    Pierre.

  7. #7
    Responsable Arduino et Systèmes Embarqués

    Bonjour,

    Pour le ds18b20 sur Raspberry Pi, on peut en effet passer par un module Linux chargé à la demande (commande modprobe), voir Utiliser des capteurs avec le port GPIO - Partie 2, Capteur de température 1-Wire.

    Ce capteur communique avec des "1" et des "0" sur une seule broche DATA selon un protocole précis, donc on peut très bien se passer du module Linux et trouver une bibliothèque en C, C++,... qui lit ou écrit ces "1" et "0" sur une entrée/sortie GPIO (comme avec les bibliothèques onewire d'Arduino).

    Autres capteurs amusants pour débuter : Détection de mouvement, télémètre à ultrasons

  8. #8
    Membre éclairé
    Merci pour cette traduction du lien que "boijea" avait donné. Ça m'évitera les erreurs d'interprétation liées à mon super "english" !

    Citation Envoyé par f-leb Voir le message
    trouver une bibliothèque en C, C++,... qui lit ou écrit ces "1" et "0" sur une entrée/sortie GPIO (comme avec les bibliothèques onewire d'Arduino). ...
    Le problème est que, comme je programme en Free-Pascal, il faudrait que je trouve (ou fasse) un Wrapper pour ces fonctions en C ou que je transforme en Free-Pascal ces fonctions (peut-être plus dans mes cordes).

    Cordialement.

    Pierre.

  9. #9
    Rédacteur

    Citation Envoyé par frederic13870 Voir le message
    .... et j'ai vu passer sur l'écran ce qui ressemblerait à des librairies pour capteurs.
    Est-il possible de connaitre la liste des capteurs facilement utilisables pour le pi 4, si possible avec une bibliothèque python ?
    Citation Envoyé par ChPr Voir le message

    Le problème est que, comme je programme en Free-Pascal, il faudrait que je trouve (ou fasse) un Wrapper pour ces fonctions en C ou que je transforme en Free-Pascal ces fonctions (peut-être plus dans mes cordes).
    J'adore cette discussion!
    On touche en fait à tous les questions que je rencontre chaque fois que j'écris un article (juste maintenant sur l'UDP et qui viendra sur developpez.net).

    Je suis d'abord informaticien, donc pour moi, les langages, c'est essentiel.
    Oui, j'ai fait du Pascal, il y a 20 ans, voire plus. Je le connais suffisamment pour pouvoir, disons, le critiquer ou argumenter.

    Si on est sur une plateforme du type Raspberry Pi, qu'on veut jouer avec le GPIO, il n'y a pas photo, c'est Python.
    Si on ne le maîtrise pas trop, comme moi, il faut s'y mettre. Python comme Java ou le C/C++ sont LES langages à montrer dans son CV.

    Maintenant, si on touche à des capteurs sur le RPi, qui n'est pas un "truc" très bon marché, on devrait vite se rendre compte que des solutions ESP8266 ou ESP32 pourrait être plus intéressantes.
    En passant sur des ESP ou Arduino WiFi, on va "tomber" sur des outils comme l'IDE de l'Arduino ou des centaines d'exemples en C/C++ vont nous permettre de passer en C/C++ en quelques minutes avec un bagage Pascal.

    Le titre de la discussion est "capteur sur pi".
    Mais un capteur tout seul ... il faudrait un peu plus, comme un relais par exemple, pour faire quelque chose de concret avec ce qui sort de ce capteur.

    J'ai effectivement fait du Pascal et écrire une belle application en Pascal, bien documenté, cela doit donner autant de plaisir que pour moi en Java, avec de jolies classes.

    Je ne sais pas ce qui existe sur le Raspberry Pi en Pascal.
    Mais un langage comme Pascal devrait pouvoir exécuter un programme écrit en Python et récupérer une température d'un capteur.
    C'est pareil avec d'autres composants comme une caméra sur un RPi pour prendre une photo ou une vidéo.
    Je le fais moi-même en Java: je prends ma photo avec la commande raspistill et je joue avec son résultat.

    Cordialement

  10. #10
    Membre éclairé
    Citation Envoyé par boijea Voir le message
    ... Je ne sais pas ce qui existe sur le Raspberry Pi en Pascal. ...
    Il y a l'EDI "Lazarus" et la bibliothèque "rpi-hal" qui permet de s'interfacer avec les GPIO et les divers bus.

    Ca permet de créer des applications telle que celle que je développe (gestion de GPS, compas électronique et cartographie en OpenGL) sur écran tactile de 7 " :





    Cordialement.

    Pierre.

  11. #11
    Rédacteur

    Cool cette application et la carte. T'es un chef!
    Il faudrait que j'essaie Lazarus. J'ai fait du Delphi à l'époque de Borland!

    Peut-on développer sur Windows, tester sur Windows, cross-compiler sous Windows pour le RPi et transférer le code compilé?
    Si oui: où puis-je trouver de la doc?

    Merci encore pour l'info.

  12. #12
    Membre éclairé
    Citation Envoyé par boijea Voir le message
    ... Peut-on développer sur Windows, tester sur Windows, cross-compiler sous Windows pour le RPi et transférer le code compilé? ...
    Ce que je fais : j'ai installé Lazarus 2.0.6 et les composants nécessaires sur Windows 10. J'ai fait la même installation sur mon Raspberry Pi 3B+ sous Buster (je l'avais aussi fait sous Stretch).

    Je développe sur mon PC (Windows 10), c'est plus facile visuellement (écran 17" contre écran 7"), je compile et j’exécute. Si c'est bon, je transfert tous les fichiers sources (via Filezilla) sur mon Raspberry et je recompile sur mon Raspberry. Je n'ai jamais fait de cross-compilation. Ma méthode me permet de corriger, déboguer sur mon Raspberry au cas où.

    Citation Envoyé par boijea Voir le message
    ... où puis-je trouver de la doc? ...
    Quelle doc ? Lazarus est très proche de Delphi.

    Pour l'aide, le même site, mais le forum Lazarus ; il s'y trouve des cracs .

    Cordialement.

    Pierre.

  13. #13
    Rédacteur

    Merci infiniment.

    Citation Envoyé par ChPr Voir le message

    Quelle doc ? Lazarus est très proche de Delphi.
    Je pensais plus à la partie cross compilation et j'imaginais que l'outil Lazarus sous Windows le faisait et avec le transfert autrement, sans Filezilla ou WinSCP.
    Peut-on recompiler sur un RPi sans écran, en ligne de commande (donc sans IDE)?
    A+

  14. #14
    Membre éclairé
    Citation Envoyé par boijea Voir le message
    ... Je pensais plus à la partie cross compilation et j'imaginais que l'outil Lazarus sous Windows le faisait et avec le transfert autrement, sans Filezilla ou WinSCP.
    Peut-on recompiler sur un RPi sans écran, en ligne de commande (donc sans IDE)?
    A+
    N'ayant jamais fait de cross-compilation, je ne saurais te répondre. Mais tu trouveras certainement réponses sur le forum Lazarus.

    Cordialement.

    Pierre.

  15. #15
    Rédacteur

    Mais ma question principale restait: Peut-on recompiler avec Lazarus sur un RPi sans écran, donc en ligne de commande et sans IDE?

    Sans cross-compilation, ce n'est pas trop important.
    Un Makefile ou équivalent ne me déplairait pas.
    Merci

  16. #16
    Membre éclairé
    Citation Envoyé par boijea Voir le message
    Mais ma question principale restait: Peut-on recompiler avec Lazarus sur un RPi sans écran, donc en ligne de commande et sans IDE? ...
    On peut compiler avec cet utilitaire en ligne de commande.

    Je ne m'en suis jamais servi. Je viens de l'essayer sous Windows et j'ai compilé sans problème un programme (pour WIndows).

    Pour autant, je ne sais pas quels fichiers il utilise (gcc sans doute). Le mieux est de poser la question sur le forum Lazarus.

    Cordialement.

    Pierre.