Communication pi3 arduino bluetooth

Salut tout le monde,

Je travaille sur un projet qui nécessite de dialoguer entre un raspberry et un arduino via bluetooth.
Je commence ce projet et j’apprend en même temps les languages de programmation et me familiarise sur les deux interface.

Donc l’avancement est un peu laborieux!! C’est la raison pour laquelle je sollicite votre aide :slight_smile:

La partie connexion entre les deux cartes est opérationnelle, maintenant je voudrais pouvoir créer une fenêtre de dialogue où je peux rentrer des valeurs à envoyer sur l’arduino et récupérer des infos venant de mes différents capteurs.
Donc si quelqu’un à déjà fait ce genre d’exercice ou connait des bons sites complets avec des bons tutos, ou a des bouquins ou tout autres infos quelle qu’elle soit je suis preneur !! Je continue mes investigations de mon côté en attendant :wink:

Merci par avance A+

Bonjour,
J’ai développé un projet, qui utilise des arduino et un pi3 avec des sondes de température et des commandes d’éclairage le tout via bluetooth entre les ardinos et le pi3, pas de soucis.
Là je suis en vacances mais dès mon retour je peux te transférer les scripts.

Salut,
Oui grave, ca serrait nickel !!
J’attend de tes nouvelles.
Bonnes vacances :wink:
Merci

Salut à toi flo,

Je suis actuellement sur un projet de se type regarde mon post et dit moi si quelques chose t’intéressé.

Les 1ere question qui me vienne à l’esprit c’est déjà qui fait quoi car tu parle d’un RPI3 et d’un Arduino ?
Une fenêtre de dialogue, où. (Sur quel support).

Ton but est de lire des informations sur des capteurs ?
Quel type de capteurs ?

Car là si je comprend bien tu n’as pas de code pour tes capteur encore ?

1 « J'aime »

Bonsoir Flo.
Je débarque aujourd’hui sur Raspbian France que je consulte depuis un moment déjà.
J’en suis à un stade bien moins avancé que Toi, si j’ai bien compris.
En fait, je débute (depuis plusieurs mois, pendant mon temps libre…) et j’en suis maintenant au stade où il faut passer à un projet pour progresser. Je suis comme Toi, j’apprends au fur et à mesure.
J’ai pour « ambition » (toute petite) de concevoir dans un premier temps une station météo, avec au moins 2 points différents de mesure (Intérieur et jardin). Si j’arrive à mes fins, j’en rajouterai certainement d’autres.
J’ai lu pas mal de trucs sur Internet avec différents capteurs (DHT22, DHT11, ESP8266 et DS18B20 transmission Wifi, couple RPi / Arduino, …).
Bref, j’ai l’impression de ne plus rien comprendre :tired_face:. D’autant plus que beaucoup de sites sont en anglais et mon niveau bac ne me permet pas de tout saisir … :thinking:
Mon projet, au départ, doit permettre de piloter des capteurs de température / Humidité via un RPi zéro (en fin de projet), tout cela en mode Wifi et pas en bluetooth, en raison de la portée. Je ne souhaite pas m’embarquer avec une solution Arduino car, d’une part, je ne connais pas ce micro-contrôleur et, d’autre part, je veux éviter de me disperser sur plusieurs systèmes.
Ma question est donc (enfin …) la suivante :sweat_smile:

  • Déjà, as-tu progresser dans ton projet ?
  • Peux-tu, si cela ne t’embête pas, me conseiller dans ma démarche et, éventuellement me communiquer quelques adresses où trouver quelques réponses à mes questions ?
    Merci de m’avoir lu.

Salut mva,

J’ai jeté un coup d’œil à ton post effectivement il y a pas mal de choses qui m’intéresse, mais ca sera plus pour l’étape suivante! :wink:

Pour le moment j’en suis au stade ou je programme la partie opérative de mon système. Et plus précisément la partie interaction avec l’utilisateur.
Je m’explique. En gros je vais avoir une « unité centrale », mon raspberry, qui va envoyer des consignes à mes arduinos,via bluetooth.
Celas vont recevoir des valeurs(temps de cycles,val min/max,infos TOR, marche/arrêt,ect…), renseigné par l’utilisateur, et vont les stocker dans des variables de mon programme(Arduino), qui activeront, si besoin, telle ou telle actionneur (moteurs principalement).
Et en retour, mon Arduino renverra des valeurs style température, infos de fin de cycle, ou plus simplement infos de ce qu’il fait ou a fait.

Aujourd’hui, j’en suis au stade ou, j’ai des bouts de programmes pour faire mes différentes fonctions(coté Arduino), il faut encore que je regroupe tout dans un seul et même programme et que je définisse mes variables. J’ai appairé mes deux cartes, elles se reconnaissent et sont prêtes à envoyer/recevoir des données.

Pour ce fait, je voudrais créer une boite dialogue, qui s’afficherais sur l’écran de mon raspberry, d’ou je pourrais visionner l’état de mes capteurs, et rentrer mes instructions.
Je voudrais créer cette boite de dialogue pour avoir un truc un peu plus sympa et ergonomique que le terminal LX. Quelque chose qui se lancerait directement au démarrage du raspberry et ou je pourrais faire un peu de mise en forme, style userform sur excel mais en un peu plus poussé.(ou en tout cas que je puisse plus tard améliorer l’interface graphique)

Voila, j’espère t’avoir éclairé sur la finalité de ce que je veux faire. Hésite pas à revenir vers moi s’il te faut d’autres infos.
Et si c’est tout bon pour toi et que tu peux m’aiguiller, me pistonner, ou me filer des liens pour faire tout ca, JE PREND !!!

Merci à toi
A+
Flo

Salut B2L,

Oui le projet avance tranquillement. Je fais ca sur mon temps libre comme toi. Donc il faut réussir à trouver le temps entre boulot et vie privé!! ^^

Pour ton capteur, moi je te conseille le DHT22. C’est ce que j’utilise, je le trouve pas mal il est pas très chère et plutôt fin au niveau des mesures.

Moi j’ai utilisé ce lien pour programmer mon capteur (c’est en francais ;)) :
https://www.carnetdumaker.net/articles/utiliser-un-capteur-de-temperature-et-dhumidite-dht11-dht22-avec-une-carte-arduino-genuino/

C’est pour une programmation sur Arduino mais il le compare à son petit frère le DHT11, il donne les caractéristiques, tu as le schéma de câblage, comment tu dois envoyer tes signaux à ton capteur (placer ton port en sorti d’abord, puis en entrée), la synchro est très précise, donc fait gaffe, ect…

Je trouve son programme un peu compliqué, il y a des versions plus simple dans la bibliothèque du capteur.
Après je ne sais pas encore comment ca fonctionne sur raspberry, s’il faut télécharger des bibliothèque comme sur Arduino, etc, mais ca peut te donner une bonne base deja ! :wink:
Par contre tu ne pilotera pas ton capteur! Tu le lira et il va falloir que tu te fasse une carte pour pouvoir envoyer tes infos en wifi vers ton raspberry, le capteur seul ne peut pas le faire, et donc peut être un autre tout petit micro contrôleur (style arduino nano ?! :smiley:)

Voila, j’espère t’avoir un peu aidé, en tout cas n’hésite pas !
A+

Salut,
Tu m’as oublié, ou tu es parti à l’autre bout du monde ?! :smiley:
A+

Bonsoir Flo

Merci de m’avoir répondu et pour les infos transmises.
Je suis déjà allé sur cette page Web (carnetdumaker) et j’ai lu cette intéressante démonstration mais cela ne résout pas mon problème de transmission des données en Wifi.
En revanche, il existe un module (ESP8266), pas cher du tout d’ailleurs (quelques euros semble-t-il), qui permet d’être couplé à un DS18B20 (Capteur de température) pour transmettre des données en WIFI. Ce qui m’intéresse dans le WIFI, c’est la couverture plus large (quoique des fois …)
Voici l’adresse du Blog : Un couple d'enfer : ESP8266 et DS18B20, un petit objet connecté à quelques euros qui mesure la température et la transmet par Wifi - PAB's blog
J’y ai trouvé ce lien aussi (très intéressant) : Quick reference for the ESP8266 — MicroPython latest documentation
Après, il y a une partie programmation ardue. Et, là, il faut mettre les mains dans le cambouis. C’est ce qui est passionnant aussi d’ailleurs. Mais je n’en suis qu’à la phase de découverte.
@+ et bon courage pour ton projet. Publieras-tu l’état d’avancement de celui-ci, de temps en temps ?
B2L (ou Luc plus simplement)

Salut,
oui désolé j’ai oublié.

Bonjour
Voilà la description de mon projet:
Plusieurs Arduino transmettent des données venant de capteurs dht22 en RF433MHz à un Arduino principal, qui lui affiche les données sur un petit écran et communique avec un PI3 en bluetooth, le PI3 commande également de l’éclairage via RF433MHz. Ensuite je peux consulter le PI3 avec VNC via internet depuis n’importe où, pour voir les données et commander l’éclairage. Voilà si cela correspond à ce que tu cherche, je pourrai t’aider.

Salut pierre,

Pas de soucis, ca veut dire que les vacances ont été bonnes :wink:
Super ton projet! Je connaissais pas les transmetteurs RF433Mhz, je me suis renseigné du coup, c’est puissant!!
En ce moment je bute sur le dialogue entre mes deux cartes (arduino/raspberry)… J’arrive à les connecter entre elles, mais impossible d’envoyer et recevoir des infos de l’une ou l’autre… J’ai cherché sur pas mal de sites mais je n’arrive pas à trouver la solution. Peut être une mauvaise bibliothèque, ou une erreur dans mon script. Je cherche encore lol
Je pencherais plus pour un soucis côté raspberry, c’est la carte et le langage que je maîtrise le moins donc plus d’erreurs potentielles.
Je trouve beaucoup d’exemples, ou la com bluetooth des raspberry se fait par un module additionnel…
J’ai commencé à me renseigner (un soir de soulage total) sur les interfaces graphiques pour améliorer le visu de mes commandes et infos sur le PI3. Il y a des choses sympas, mais j’en suis qu’au stade d’approche pour le moment (chaque choses en son temps) et je ne veux pas m’éparpiller!
Donc si tu as des tuyaux pour m’aider à résoudre ces problèmes de communication je suis preneur!
Et dernier truc (pour plus tard) tu parles de VNC, c’est quoi ? un serveur ? tu communiques comment en quel langage ?
Désolé pour la tartoche ^^ j’ai beaucoup de questions !

Merci pour ton aide
A+

Salut B2L,

Et pourquoi pas un module RF433Mhz plutôt?? C’est ce que pierre a utilisé sur son projet. Tu captes à 2 Km. Plus de problème de portée!!
Et oui je publierais l’avancée du projet au fur et à mesure que j’avancerais bien sur !! :wink:

Bonne soirée
A+

Alors……
il me semble qu’il y a beaucoup à faire.
Plusieurs questions:

  • tu communiques comment ave ton PI3
  • tu as quel os sur ton PI3…
  • tu as quel os sur ton ordi.

En premier;
Je te conseille d’installer la dernière version RASPBIAN JESSIE WITH PIXEL, il intègre justement vnc.

VNC te permet avec un " VNC viewer" installé sur ton ordinateur MAC, PC ou LINUX de pouvoir travailler sur ton PI3 dans une fenêtre de ton ordi, super pratique et bien entendu à distance puisque c’est via réseau. Pas besoin d’écran ou de clavier souris sur ton PI3.
Un peu plus de détail sur mon projet.
Dans mon projet je communique entre l’arduino et le PI3 seulement en bluetooth, puisque le PI3 l’intègre pas besoin de carte supplémentaire.
Entre les arduino en RF433, avec une seule librairie <VirtualWire.h> c’est vraiment très simple. Pour les capteurs DHT22 une seule librairie <DHT.h>.
Dans mon salon j’ai un Arduino Mega avec un petit LCD, l’arduino reçoit les infos des autres arduino et les affichent sur le LCD et un même temps il communique en bluetooth avce le PI3. Il pilote également plusieurs éclairages toujours en RF433.
Dans mon PI3 j’ai écrit un petit programme en Python qui va lire en bluetooth les infos du Mega et les affichent. Et transmettre les commandes d’éclairage au Mega qui va lui commander l’éclairage. Facile avec VNC je me connecte depuis ou je veux sur mon PI3 et je peux voir les infos et bien entendu commander l’éclairage.
Cela paraît compliqué, mais tu verras c’est relativement simple. Je te donnerais des scripts.

Salut B2

Regarde les réponse que je fais à Flo. Je vais vous aider, mon projet contient tout ce que vous voulez faire.
A+

Bonsoir Pierre
Merci pour ta réponse et ta proposition
Pour ton info, je possède 3 Rpi :blush:

  • 1 Rpi zéro qui tourne sous Raspbian Jessie Pixel
  • 1 Rpi 2 (1er achat) qui tourne sous Raspbian wheezy
  • 1 Rpi 3 qui tourne sous Raspbian Jessie Pixel
    Je peux accéder à chacun de ces Rpi, soit via SSH, soit par VNC, par liaison ethernet (Rpi 2 et 3) ou Wifi (Rpi zéro). Mon ordinateur maître est un Mac sous OSX Sierra.
    Je souhaite utiliser mon Rpi zéro pour le pilotage de la station météo.
    Voilà où j’en suis
    Merci
    @+
    Luc

Salut pierre,

Alors moi c’est un module HM-10 pour la com bluetooth entre mon arduino et mon Pi3.
J’ai windows 7 Pro sur le PC par contre je ne sais pas comment regarder la version de l’OS sur le raspberry.
Il était deja installé quand on me l’a filé… J’ai mis la version du soft àç jour mais après avoir regardé les applications installées dessus pas de trace de VNC viewer …
Mais j’imagine que je peut l’installer dessus peut importe la version du soft ?

Je bosse sur mon projet cet aprem, je vous tiendrais au courant de l’avancement de la partie communication si j’ai réussi à la débloquer.

A+

Salut les amis,

Petit point sur mes dernières avancées (ou pas…)
Je rame, je rame, je rame… Effectivement je n’arrive pas à communiquer avec mon arduino depuis mon raspberry. :disappointed::disappointed::disappointed:

Ces derniers jours j’ai fait pas mal de recherches sur la fonction rfcomm qui, a priori, permet de gérer les communications bluetooth, mais je n’arrive pas à trouver d’infos claire, avec des exemples d’utilisations, ect sur le paramétrage de cette fonction…
Donc pierre, si tu peux m’éclairer sur le sujet, je t’en serrais éternellement reconnaissant !! :smiley:
Et tu m’avais proposé, à plusieurs reprises, de me partager tes script, je suis preneur, mais je voudrais vraiment réussir à comprendre l’utilité de chaque fonctions.

Et sinon il n’y a pas que du négatif dans tout ca! J’ai essayé VNC comme tu nous l’as conseillé. Et effectivement c’est très pratique pour centraliser toutes les informations sur un seul et même écran! J’ai au moins réussi à faire fonctionner ca !! :stuck_out_tongue:

N’hésitez pas à partager vos expériences aussi si on peut réussir à avancer ensemble c’est deja ca !

Ok Je vais essayer d’être clair. Le script lit une seule sonde « B » les « A » « C » « D » sont pour l’exemple des valeurs fixes.

Script Arduino:
// Arduino -> bluetooth
// Transmet des datas en bluetooth
// Fonctionne avec Pi3
// PR le, 21.10.16

#include <SoftwareSerial.h> //Serial library
#include <DHT.h>
#define DHTPIN 3 //pin connexion capteur température
#define DHTTYPE DHT22 // Type capteur température
/-----------------------------Emetteur RF------------------/
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
#include <VirtualWire.h>
/-----------------------------Emetteur BT------------------/
String HA, HB, HC, HD = « »;// les variables humidités
String TA, TB, TC, TD = « »;// variables températures
String Envoi, btdata;
SoftwareSerial bt (5, 6); //RX, TX (Switched on the Bluetooth – RX -> TX | TX -> RX)
/-----------------------------Variables------------------/
int LEDPin = 13; //LED PIN on Arduino
DHT dht(DHTPIN, DHTTYPE);
unsigned long MillisPrecedent = 0; //stock l’heure de la derniere transmission
const long Duree = 30000;//30 secondes
/======================================================/
void setup() {
Serial.begin(115200);
bt.begin(9600);
dht.begin();
}
/======================================================/
void loop() {
unsigned long MillisActuel = millis();
if (MillisActuel - MillisPrecedent >= Duree) {
Emettre_BT();//transmettre via BT au pi3
MillisPrecedent = MillisActuel;
digitalWrite(LEDPin, LOW);
}
}
/========TRANSMETTRE SONDES A pi3 EN BT================/
void Emettre_BT() {
float hh = getHumid();
float tt = getTemp();
HA = " HA68.60";
TA = " TA-06.50";
/-------------------Salon-----------------/
HB = " HB" + String(hh);
if (hh > 0) {
TB = " TB+" + String(tt);
}
else{
TB = " TB" + String(tt);
}
HC = " HC88.50";
TC = " TC13.60";
HD = " HD45.00";
TD = " TD+24.50";
/-------------------balcon-------------/
Envoi = HA + TA;
bt.print("\n");
bt.print(Envoi);
Serial.println(Envoi);
/-------------------salon-------------/
Envoi = HB + TB;
bt.print("\n");
bt.print(Envoi);
Serial.println(Envoi);
/-------------------cave à vin-------------/
Envoi = HC + TC;
bt.print("\n");
bt.print(Envoi);
Serial.println(Envoi);
/-------------------salle de bains-------------/
Envoi = HD + TD;
bt.print("\n");
bt.print(Envoi);
Serial.println(Envoi);
delay (2000); // 2secondes
}
/==============Sonde B=================================/
float getHumid() {
return (float)dht.readHumidity();
}
/========================sonde B=======================/
float getTemp() {
return (float)dht.readTemperature();
}
/=====================================================/

Désolé la première partie jusqu'à Emetteur BT est mal formatée,
voici la correcte

// Arduino -> bluetooth
// Transmet des datas en bluetooth
// Fonctionne avec Pi3
// PR le, 21.10.16

#include <SoftwareSerial.h> //Serial library
#include <DHT.h>
#define DHTPIN 3  //pin connexion capteur température
#define DHTTYPE DHT22  // Type capteur température
/*-----------------------------Emetteur BT------------------*/