Aller au contenu

Raspberry Pi : fabriquons des trucs!


Messages recommandés

Contrôler un servomoteur depuis les GPIO du Raspberry PI en utilisant WiringPi et la PWM logicielle.

(...)

Pour verifier si le servo etait pas endomagée j'ai donc fait un petit programme basique avec le meme cablage que je te colle dans le message et pas de soucis le servo tourne bien cela vient donc du programme

#include <stdio.h>#include <wiringpi.h>int main(void){int pin =7;if(wiringPiSetup()==-1){return 0;}pinMode(pin,OUTPUT);while(1){digitalWrite(pin,1);delay(200);digitalWrite(pin,0);delay(1000);}return 0;}
Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 321
  • Créé
  • Dernière réponse

Salut l ancien dans ta commande de servomoteurs avec le softpwm j'ai un soucis le code envoie rien sur la broche gpio ... pas de signal carré avec rapport cyclique variable .

je ne c est pas pourquoi j'ai pris une alimentation extzerne pour le servo .

Comment fait tu pour déterminer valeur angle min

et valeur angle max ?

cdt

Déjà, es tu bien sur d'avoir utilisé le bon GPIO? La numérotation des GPIO dans WiringPi n'est pas celle inscrite sur la carte, et il est facile de se tromper. Le plus simple pour en être sur, c'est

de tester le GPIO avec une LED, pour voir si on parvient à le contrôler.

Si la led s'allume avec un digitalWrite(pin,1); on peut alors essayer le softPwmWrite.

Si tout fonctionne, c'est que le GPIO est utilisable.

Ensuite, du point de vue électronique, le servo s'attend à du +5V sur le câble de signal (la plupart du temps

en tous cas. Il est donc utile de vérifier la doc du servo!)

D'autre part, il faut être sur de bien connecter la masse de l'alimentation externe à la masse du raspberry pi.

Le schéma n'est peut être pas clair la dessus, mais si ce n'est pas le cas, le comportement obtenu sera imprévisible.

Un de mes servos se contentait de tourner tout le temps, quelle que soit la commande. Quand j'ai relié les masses,

ça a fonctionné.

Pour verifier si le servo etait pas endomagée j'ai donc fait un petit programme basique avec le meme cablage que je te colle dans le message et pas de soucis le servo tourne bien cela vient donc du programme

#include <stdio.h>#include <wiringPi.h>int main(void){int pin =7;if(wiringPiSetup()==-1){return 0;}pinMode(pin,OUTPUT);while(1){digitalWrite(pin,1);delay(200);digitalWrite(pin,0);delay(1000);}return 0;}

Pour le code ci dessus, il ne pourra pas contre pas commander le servo, puisque tu envoie cycliquement des signaux toutes les 1.2s (1000ms+200ms), alors que

le servo veut du 50Hz (ou quelquechose du genre).

Donc à priori ton servo tourne, mais ne sera pas contrôlable réellement.

Vérifies les points mentionnés plus haut, et ça devrait aller.

Au passage, tu n'es pas obligé de reciter tout le message à chaque fois :)

Sinon, ça fait des tas de pages à scroller, ce qui rend le sujet moins lisible ;)

Lien vers le commentaire
Partager sur d’autres sites

Yop,

juste pour prévenir, je "profite" de 2 semaines de congés maladie pour bricoler à fond mon raspberry pi et mon arduino uno.

Je suis en train de mettre au point un tuto permettant avec l'arduino, de lire le capteur DS18B20, de l'envoyer à un émetteur 433Mhz au raspberry qui stock l'information en base de donnée.

J'ai encore quelques galères, mais j'espère les corriger dans les deux jours à venir.

Lien vers le commentaire
Partager sur d’autres sites

Yop,

juste pour prévenir, je "profite" de 2 semaines de congés maladie pour bricoler à fond mon raspberry pi et mon arduino uno.

Je suis en train de mettre au point un tuto permettant avec l'arduino, de lire le capteur DS18B20, de l'envoyer à un émetteur 433Mhz au raspberry qui stock l'information en base de donnée.

J'ai encore quelques galères, mais j'espère les corriger dans les deux jours à venir.

J'attends tes tutos avec impatience, le sans fil 433Mhz est un sujet très intéréssant, et la communication pi-arduino également :)

Pour ma part, j'ai reçu du matériel aujourd'hui (accéléromètre, laser, joystick, rotary encoder, LCD ...), mais je ne pourrai pas en faire grand chose avant début mars. En effet, je pars en mission à Nice ce vendredi, donc je prépare mon voyage, je vérifie mon article et ma présentation, etc...

Mais dès mon retour je m'y remets et j'aurai des tutos à proposer ;)

Lien vers le commentaire
Partager sur d’autres sites

Bon Sky99, par ta faute, ou alors, grâce à toi, je viens de me commander un RPI, tes tutos m'impressionne et me permettent déjà d'avoir une meilleurs approche pour apprendre à utiliser cette petite Framboise, merci à toi :chinois:

Pour le moment je vais commencer soft (je ne connais pas du tout Debian and co), histoire de mettre en place un petit serveur web sur ma box, puis le mois prochain, je passe en hard, avec une commande de matos, pour apprendre la prog :yes:

Merci encore

Lien vers le commentaire
Partager sur d’autres sites

Bon Sky99, par ta faute, ou alors, grâce à toi, je viens de me commander un RPI, tes tutos m'impressionne et me permettent déjà d'avoir une meilleurs approche pour apprendre à utiliser cette petite Framboise, merci à toi :chinois:/> Pour le moment je vais commencer soft (je ne connais pas du tout Debian and co), histoire de mettre en place un petit serveur web sur ma box, puis le mois prochain, je passe en hard, avec une commande de matos, pour apprendre la prog :yes:/> Merci encore

Bon courage à toi :)

Pour les usages classiques, n'hésite pas à faire des recherches du genre "how to install apache on raspberry pi", tu trouvera des tutos détaillés et qui fonctionnent. Quand je fais des recherches juste pour linux, je trouve souvent des réponses pour Ubuntu, qui souvent ne fonctionnent pas sous ubuntu car c'est pour une ancienne version, ou ne fonctionnent pas sous un linux normal parcequ'ubuntu s'amuse à modifier tout plein de trucs "classiques" sous linux

(peut être pour des raisons valables et légitimes, mais c'est quand même parfois chiant ^^ )

Sinon, pour le hard, il y a quelquechose d'intéréssant à faire pour un serveur web, c'est tout simplement de connecter une ou deux LED sur des GPIO pour signaler des choses sur le serveur web (par exemple apache en fonction, mysql en fonction, ou alors plus drôle des messages spécifiques au serveur web même, par exemple que ça clignotte quand ça reçoit des requetes, ce qui peut être super pratique pour du ajax par ex :) ) Et tout ça, ça peut se faire avec les câbles des boutons power/reset d'un vieux PC, et une LED blanche (ou bleue, ou toute led prenant du 3V), et 5 minutes de montage/code :)

En tous cas, merci des encouragements, et à la semaine prochaine pour de nouveaux tutos ;)

PS : si vous voulez des tutos spécifiques, demandez, je serai ravi d'essayer des trucs et des machins sur mes pis pour voir si c'est faisable ;)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour, Félicitation pour ces tutos, très interressants pour les personnes n'ayant aucunes connaissances en électronique (et pour les autres aussi peut-être :) )

Je n'ai aucune bases en électroniques, et j'avoue que tes explications donnent envie de s'y mettre.

Je souhaiterais donc mettre en place un ou plusieurs servomoteurs pour, peut-être un jour, réussir à faire des choses bien pratiques (comme tout le monde tu me diras).

Tes explications sont très compréhensibles, par contre je bloque sur la partie alimentation.

Je sais que nous pouvons alimenter le servo par le Raspberry, mais apparement il faut eviter.

Je cherche donc à faire autrement, pour ne pas endommager celui-ci.

J'ai donc fait pas mal de recherches sur le net, afin d'avoir des explications, mais rien qui soit à mon niveau..

C'est surment très simple mais bon... si tu pouvais passer l'info, ça serait sympa de ta part !

(edit:merci pierrot421)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour et tout d'abord Merci merci merci Sky99, c'est vraiment super ce que tu fais (tout bitin la ca ka chiwé).

Bon d'accord mon créole laisse à désirer mais je n'ai vécu qu'un an en Gwada.

Bon, alors voila, je pose mon problème en espérant que cela pourra éclairer les lumières (ou diodes) de beaucoup d'autres.

Etant tout à fait novice, j'ai un petit souci en électronique. Je suis l'heureux acquéreur d'un raspi depuis peu, j'ai aussi acheté chez Gotronic un détecteur de mouvement infrarouge de chez DFRobot ici http://www.gotronic....n0018-19369.htm avec les specifications techniques suivantes :

Alimentation: 3 à 5 Vcc

Consommation: 50 µA

Détection: 110° sur 7 mètres

Sotie: 0,4 V (état bas) et 4V (état haut)

Bon pour l'alimentation pas de problème, c'est pour le retour sur mes GPIO, 4V c'est trop, j'ai cru comprendre qu'il ne fallait pas exceder 3.3V.

Peux tu me donner un exemple de calcul pour ajouter une résistance à mon montage car je ne voudrais pas griller mon raspberry. à priori la loi d'ohm est U=RI est ce que mon intensité de retour est égale à la consommation de 50µA ou non ?

Si je l'alimente avec la broche 3.3V l'état haut sera t il toujours de 4 V (cela me parrait difficile???)

voilà, j'espère ne pas prendre trop de votre temps étant vraiment novice, j'ai trouvé des débuts d'explications mais une demonstration claire me permetra de ne pas y aller à taton et surtout de ne pas me tromper et griller mon précieux jouet. En attente de vous lire, encore merci Sky99, j'espère que beaucoup d'ames innovantes te liront. @+

Lien vers le commentaire
Partager sur d’autres sites

Salut à tous! Je suis à Nice en ce moment, en conférence pour y présenter un papier (très jolie ville au passage, avec plein d'arbres et tout...), donc je ne peux pas me connecter tout le temps pour répondre ces temps ci, ni faire de grandes réponses. Cependant, je reviens dimanche.

Concernant l'alimentation électrique, pour ma part j'utilise soit des piles rechargeables AA "de base", soit avec un régulateur de tension derière.

Cependant, on peut effectivement utiliser un transfo secteur à la tension adaptée!

Attention toutefois à deux points :

Vérifiez toujours 3 fois la polarité de l'alimentation électrique. Sinon c'est le vrai cramage, avec de la fumée qui sort du servo, définitivement inutilisable.

Reliez la masse de toutes les sources d'alimentation! Le - du transfo doit etre relié à la masse du pi. Dans le cas contraire, pas de dommages, mais un comportement incontrôlable...

Je ferai un topo sur l'alimentation électrique des dispositifs en rentrant.

Concernant le lecteur IR, il y a un point important à vérifier à mon avis :

ils disent 4V pour la tension haute, mais si tu fournis un VCC de 3.3V, il y a de grandes chances que la tension de sortie soit du 3.3V.

Certes, on peut imaginer un dispositif avec un step up regulator intégré, mais ça serait coûteux pour rien, et l'habitude dans ces circuits, c'est d'avoir la masse comme signal LOW, et VCC-x comme signal haut.

C'est donc à vérifier. Cependant, il y a une autre solution, qui est tout simplement d'utiliser une diode (ou plusieurs). les diodes provoquent toutes une chute de tension, constante. Du coup en mettant un certain nombre de diodes EN SERIE, on abaisse la tension d'autant... cependant, cela ne fonctionne que pour des communications uni directionnelles (ce qui est le cas ici, puisque le capteur envoie des infos vers le pi).

Enfin, on ne connait pas l'intensité du courant émis par le capteur. Mais si la consommation est de 50mA, c'est que la sortie fait moins, vu que le capteur à besoin de courant pour "faire ses trucs". Vu U=R*I, si on diminue I, on diminue aussi U. Donc a priori, la chute de tension provoquée sera plus petite pour une résistance donnée. Du coup, une idée simple serait peut être de prendre une résistance largement surévaluée, voir si ça fonctionne, et si ce n'est pas le cas, baisser un peu la valeur de la résistance, jusqu'à ce que ça fonctionne...

J'ai cherché sur le net, impossible de trouver une vraie datasheet, du coup je ne sais pas du tout ce qu'il y a dedans. Aurais tu une doc fournie avec? à défaut une photo du dos de la carte, pour qu'on sache quels sont les composants embarqués?

Mais vu le prix, ça me parait extrêmement peu probable qu'il y ait un régulateur de tension intégré, donc à mon avis si tu l'alimentes en 3.3V, ça devrait passer. Le mieux serait de vérifier en mesurant la tension de sortie soit avec un multimètre, soit avec un convertisseur ADC (analogic to digital).

Sinon, il existe également une solution, tant que j'y pense : on peut commander un transistor avec la sortie du capteur. Le signal du capteur irait sur la base, avec sa tension quelconque, et contrôlerait un courant de 3.3V entre le collecteur et l’émetteur (le tout relié au GPIO).

J'ai fait le "symétrique", en contrôlant un signal 5V depuis du 3.3V, mais le contraire devrait être possible avec un transistor NPN.

Au passage, c'est l'un des avantages à utiliser un GPIO expander tel que le MCP23017, car non seulement il est mieux protégé que le pi (je pense bien avoir fait quelques bêtices avec mon MCP23017, au point qu'il soit brûlant au toucher), mais en plus en cas de problème, on grille juste cette puce, et pas un GPIO du Pi ou le Pi lui même.

Lien vers le commentaire
Partager sur d’autres sites

Merci pour ces compléments Sky99, je crois comprendre qu'il est finalement plus simple d'y aller à tatton que de chercher à faire des calculs savants surtout qu'on ne trouve pas facilement les datasheet.

Bon alors pour ceux que ça intéresse, j'ai testé le détecteur de mouvement alimenté par une prise USB (5V) et le retour n'est pas de 4V comme indiqué mais bien 3.3V.

Que du bonheur, j'ai directement branche mon SEN0018 sur les GPIO 5V-Pin 2- (rouge) Gnd-Pin4- (noir) et GPIO17-Pin n°11- (vert) et en testant le GPIO 17 j'ai bien 1 quand il y a du mouvement dessus et 0 sans mouvement. Que du bonheur, il ne me reste plus qu'à développer l'appli pour aller avec et je ferai un topo dans quelques jours... au proogramme, détection de mouvement avec configuration d'un serveur MySQL et compte google Agenda + Api Google Agenda (envoi de SMS sur création d'un évennement) = Alerte intrusion à la maison pour moins de 60 €... Ma pierre à l'édifice. @+

Lien vers le commentaire
Partager sur d’autres sites

Contrôler un servomoteur depuis les GPIO du Raspberry PI en utilisant WiringPi et la PWM logicielle.

(...)

Désolé d'insister mais ayant pas eut de réponse.... je me permet de te redemander comment défini tu la valeur min et la valeur max du servo ?

cdt

Comme je disais dans le post correspondant, j'ai obtenu les valeurs minimales et maximales de façon expérimentale : j'ai utilisé le premier code source, et j'ai essayé.

J'ai vu qu'au dela d'une valeur minimale et d'une valeur maximale on avait plus de différence. Il s'agit donc des valeurs limites...

Merci pour ces compléments Sky99, je crois comprendre qu'il est finalement plus simple d'y aller à tatton que de chercher à faire des calculs savants surtout qu'on ne trouve pas facilement les datasheet.

Bon alors pour ceux que ça intéresse, j'ai testé le détecteur de mouvement alimenté par une prise USB (5V) et le retour n'est pas de 4V comme indiqué mais bien 3.3V.

Que du bonheur, j'ai directement branche mon SEN0018 sur les GPIO 5V-Pin 2- (rouge) Gnd-Pin4- (noir) et GPIO17-Pin n°11- (vert) et en testant le GPIO 17 j'ai bien 1 quand il y a du mouvement dessus et 0 sans mouvement. Que du bonheur, il ne me reste plus qu'à développer l'appli pour aller avec et je ferai un topo dans quelques jours... au proogramme, détection de mouvement avec configuration d'un serveur MySQL et compte google Agenda + Api Google Agenda (envoi de SMS sur création d'un évennement) = Alerte intrusion à la maison pour moins de 60 €... Ma pierre à l'édifice. @+

C'est tout bénef! D'ailleurs, c'était bizarre cette valeur de 4V... 5V ou 3.3V ok, mais pourquoi 4V?

Pour les calculs, je pense qu'on peut faire des calculs précis. Le problème est que si l'on a pas toutes les données, on fait quoi? dans ce cas, si on a des valeurs de référence "safe"; on peut expérimenter....

Mais même dans ce cas, on aurait pu calculer, car il y a moyen de voir ce que laisse passer au maximum la résistance, sans rien d'autre...

Bonjour à tous.

Je te félicite, sky99, tes tutos sont super !

J'ai une petite question, quel est le logiciel que tu utilises pour schématiser les montages ?

Bonne continuation.

Merci :)

Pour les schémas, en fait j'utilise gimp ou paint.net. J'ai trouvé une archive contenant des templates minimaux de certains composants (sinon je les dessine),

ainsi que certains dessins du genre la breadboard, que l'auteur avait publié sous licence creative commons.

Apres je fais un calque avec la breadboard, un calque par dessus avec les composants, un autre avec les fils, et un dernier avec les instructions.

Je garde bien le fichier des calques pour un cas de modifications à effectuer, et ensuite je génère un PNG :)

Je sais qu'il existe des logiciels, mais je n'en ai pas trouvé d'open source et gratuits qui me convienne. Il y a des trucs pour faire des schémas électroniques,

mais réellement électroniques, avec des représentation schématique des éléments (la LED avec le triangle et les flèches, la résistance par les zig-zag, par ex).

Ces types de schémas sont normalisés, mais j'ai préféré une représentation plus "visuelle", car l'idée est qu'un débutant complet doit pouvoir faire un montage

du thread s'il a les composants, et utiliser son bidule avec le code fourni sans autre savoirs pré-requis. Et en plus, si on a une breadboard, souvent, avec

un schéma comme ceux de ce thread, on peut se passer des explications si on est très pressé et faire le montage directement :)

Sinon, je suis maintenant de retour chez moi, donc je vais pouvoir reprendre les tutos :)

Lien vers le commentaire
Partager sur d’autres sites

Hop, un petit tuto en plus dont l'original est disponible chez ouam.

Lire une sonde avec l'Arduino et communiquer avec le Raspberry Pi

Je continue mes travaux sur le Raspberry Pi et l'Arduino afin de créer un système domotique complet (HomePi). Aujourd'hui, nous allons voir comment lire avec l'Arduino une sonde de température DS18B20 (voir le tutoriel pour la lire avec le Raspi ici), puis de l'envoyer via un émetteur radio de 433Mhz vers le Raspberry Pi doté lui d'un récepteur radio de 433Mhz.

Ce tutoriel risque d'être un peu long, mais je vais essayer de détailler chaque étape autant que possible (mais n'hésitez pas si vous avez des questions). Ce tutoriel est inspiré et basé sur les tutoriels d'Idleman, donc n'hésitez pas à y faire un tour.

Les buts de ce tutoriel sont les suivants :

  • Commencer à prendre en main l'arduino (reçu il y a peu)
  • Étudier la communication radio entre les 2 deux appareils
  • Étudier la faisabilité de mon projet (HomePi), notamment la partie communication avec les nœuds.

Pour ce tutoriel, il vous faudra le matériel suivant :

Bon, il est désormais temps de mettre les mains dans le cambouis et dans les câbles.

Étape 0 : pré-requis

Afin de comprendre pleinement ce tutoriel, il est conseillé :

  • d'avoir déjà pris en main votre raspberry pi, je conseille pour cela les tutoriels d'Idleman
  • d'avoir fait quelques tutos du site arduino.cc pour comprendre le fonctionnement de l'Arduino.
  • Avoir installé sur votre Raspberry Pi la bibliothéque WiringPi
  • Quelques notions de C/C++
  • Quelques notions d'onde radio (non obligatoire, mais il est toujours intéressant de savoir de quoi on parle).

Vous pouvez bien évidemment attaquer direct dans le dur, mais il est tout de même préférable d'avoir ces pré-requis afin de bien comprendre le tutoriel et de ne pas recopier bêtement.

Étape 1 : Lire la température avec l'Arduino

On utilise bien évidemment une sonde DS18B20 (voir le lien donné plus haut pour vous la procurer pour pas cher).

Cette première partie du tutoriel suppose que vous avez déjà un peu pris en main votre Arduino. Si ce n'est pas le cas, je vous conseille de commencer par les divers tutos proposés par le site arduino.cc, cela vous aidera et c'est plutôt rapide à faire au final.

Voici le montage a effectuer :

Arduino-et-DS18B20_bb-300x124.jpgSchéma du montage (cliquez pour agrandir)

Le principe est simple. Referez vous au schéma du capteur (clic), ainsi qu'au tuto pour le lire avec le raspberry pi.

On branche la borne 1 sur le Ground de l'arduino, la branche 2 sur le port 10 de l'Arduino et la 3 sur l'alimentation 3V3. Entre les broches 2 et 3, on ajoute une résistance de 4700 Hmz. Voila pour les branchement, ce n'est pas plus compliqué que cela.

Question code, on s'en sort aussi plutôt bien puisque le travail est déjà fait par d'autre. Vous trouverez notamment un tuto sur le playground d'Arduino qui vous détail l'ensemble du fonctionnement. Leur code est basé sur une bibliothèque C++ : OneWire.h qui gère plusieurs types de capteurs (dont le DS18B20).

Voici la portion de code qui lit la température sur le capteur :

// Fonction récupérant la température depuis le DS18B20// Retourne true si tout va bien, ou false en cas d'erreurboolean getTemperature(float *temp){byte data[9], addr[8];// data : Données lues depuis le scratchpad// addr : adresse du module 1-Wire détectéif (!ds.search(addr)) { // Recherche un module 1-Wireds.reset_search();	// Réinitialise la recherche de modulereturn false;		 // Retourne une erreur}if (OneWire::crc8(addr, 7) != addr[7]) // Vérifie que l'adresse a été correctement reçuereturn false;						// Si le message est corrompu on retourne une erreurif (addr[0] != DS18B20) // Vérifie qu'il s'agit bien d'un DS18B20return false;		 // Si ce n'est pas le cas on retourne une erreurds.reset();			 // On reset le bus 1-Wireds.select(addr);		// On sélectionne le DS18B20ds.write(0x44, 1);	  // On lance une prise de mesure de températuredelay(800);			 // Et on attend la fin de la mesureds.reset();			 // On reset le bus 1-Wireds.select(addr);		// On sélectionne le DS18B20ds.write(0xBE);		 // On envoie une demande de lecture du scratchpadfor (byte i = 0; i < 9; i++) // On lit le scratchpaddata[i] = ds.read();	   // Et on stock les octets reçus// Calcul de la température en degré Celsius*temp = ((data[1] << 8)/> | data[0]) * 0.0625;// Pas d'erreurreturn true;}

La fonction retourne un boolean et renseigne un pointeur qui contient notre température.

Voila pour la partie lecture. Jusque là, rien de bien compliqué, les sources sont sur le net et il y a de nombreux exemples. On va maintenant entamer la partie funkie de ce tutoriel : l'envoi des données depuis l'Arduino vers le Raspberry Pi par les ondes (on utilise pour cela la fréquence de 433,92 Mhz, souvent utilisée en domotique.

Étape 2 : Construction de notre signal radio

Afin de pouvoir communiquer entre l'émetteur et le récepteur, il nous faut créer un protocole radio spécifique. Nous allons donc le créer ce fameux signal, en nous basant sur les conseils donnés sur le blog d'idleman. Pour reprendre, on va construire une schéma précis de bit qui va être notre signal, on va ensuite l'encoder pour le protéger des parasites éventuels via un codage de manchester. Dans ce signal, nous allons faire passer plusieurs informations :

  • Un identifiant du kit (4 chiffres codés sur 14 bits)
  • Le type de transmission (2 chiffres codés sur 4 bits)
  • Un bit de signe
  • Les données (4 chiffres codés sur 14 bits)

Si on prend alors comme code de kit 1000 (pour l'arduino), 10 comme type de transmission et une température de +20,25 degrés.

On a alors 10001011960

Une fois passé en binaire on a alors : 000011111010001010100011111011100

On applique ensuite le codage de manchester qui consiste à transformer un 0 en 01 et un 1 en 10 afin de sécuriser les échanges de données un minimum et de contrôler l'apparition de parasites (ce qui est fréquent avec les ondes radio, surtout à des fréquences aussi utilisées que 433Mhz).

On arrive donc à un signal final : 010101011010101010011001010110011001100101011010101010011010100101

Et voila !

Reste ensuite à isoler notre signal du reste des interférences et des signaux environnants. Pour isoler un signal, on utilise en général un système de verrous, qui permet de délimiter le signal. Nos verrous seront donc les suivants :

  1. Un bit de bruit pour remettre à 0 la communication
  2. Un verrou de 9900µs
  3. Un verrou 2500µs
  4. Notre signal
  5. Un bit de bruit pour remettre à 0 la communication

Ainsi, notre signal est bien délimité, et le récepteur saura que si il trouve les verrous 1 et 2, alors ce qui suit sera le signal envoyé.

Étape 3 : les branchements !

Nous avons vu quel signal envoyé et comment il sera encodé, reste donc à savoir comment le transmettre :)

Ci dessous, voici les photos des montages de l'émetteur et du récepteur.

emetteur-300x279.jpg Branchements pour l'émetteur 433 Mhz

Branchement de l'émetteur sur l'Arduino :

  • La broche 1 (data) va sur le pin 12 de l'Arduino,
  • La broche 2 (VCC) va sur le pin d'alimentation 3v3 de l'Arduino,
  • La broche 3 (GRDà va sur le pin Ground de l'Arduino.
  • On rajoute sur l'entrée ANT une antenne (le must étant une antenne de 17,3 cm pour maximiser la performance).

Rien de bien compliqué n'est ce pas ?

Passons maintenant aux branchements du récepteur sur le Raspberry Pi, vous allez voir, c'est encore une fois très très compliqué !

recepteur-300x279.jpg Branchement du récepteur 433 Mhz

Le récepteur possède cette fois ci 4 broches (dont deux pour les data, mais nous n'allons n'en utiliser qu'une seule).

  • La broche 1 se branche sur le 3v3 de l'Arduino,
  • La broche 2 (c'est du data mais on ne va pas s'en servir)
  • La broche 3 (data) se branche sur le pin wiringPi numéro 2 du Raspberry Pi
  • La broche 4 se branche sur le ground du Raspberry Pi
  • On rajoute une antenne de 17,3 cm pour optimiser les performances.

Voila. Dur encore n'est ce pas ?

Étape 4 : Code pour l'Arduino

On a vu comment relever la température fournie par le capteur DS18B20, il faut maintenant l'envoyer et donc construire le signal qui sera fourni à l'émetteur et transmis au récepteur sur le Raspberry Pi.

Cliquez ICI pour télécharger le script à téléverser sur l'Arduino (ou sur la puce atmega si vous n'utilisez qu'une puce atmega).

Vous retrouvez dans le code les fonctions suivantes :

  • getTemperature : C'est la fonction documentée plus haut, qui sert à relever la température sur la sonde DS18B2O
  • itob et itobTemperature qui servent à transformer des données numériques en tableaux de bits
  • buildSignal qui va construire les différentes parties du signal
  • sendPair et sendBit qui servent à envoyer via l'Arduino les bits de notre signal, sendPair sert au passage d'encodeur de Manchester puisqu'il envoi non pas 1 bit mais 2 bits.
  • transmit qui permet d'envoyer le signal en recevant en paramètre une température
  • Les fonctions obligatoires setup et loop

Au final le fonctionnement est plutôt simple : dans la fonction setup, on initialise le signal, puis la fonction loop (qui comme son nom l'indique est une boucle perpétuellement appelée par la puce) qui toutes les X secondes relève la température via la fonction getTemperature et envoie le signal via la fonction transmit.

Et voila. Notre température est lue régulièrement et le signal est envoyé. Il ne nous reste plus qu'à le recevoir et en faire ce que l'on souhaite :)

Vous pouvez contrôler les logs de ce qu'il se passe quand l'Arduino est connecté via le logiciel qui vous a servi à téléverser le code dans la puce atmega.

Étape 5 : Code pour le Raspberry Pi

On va cette fois passer par un peu de code C++ coté Raspberry Pi pour lire le signal radio reçu, puis par un peu de code PHP pour l'enregistrer en base de données. Il est bien sur tout à fait possible de faire l'enregistrement en BdD directement via le C++, mais par confort et par habitude, je suis resté sur du PHP. Une bonne partie du code est honteusement repompée sur le code fournit par idleman dans ses tutos, que j'ai adapté.

Vous pouvez récupérer le code ICI. Ce fichier zip contient les fichiers suivants :

  • common.php : sécurisation des super-variables
  • db.php : connexion à la base de donnée mysql, pensez à y changer vos identifiants !
  • Functions.class.php : quelques fonctions php utiles
  • node : l'exécutable qui va lire le signal radio
  • node.cpp : le code source C++ qui permet de générer l'exécutable
  • node.php : le code php qui enregistre en base de donnée la température
  • olga.php (optionnel) : le code PHP utilisé par mon interface vocale SARAH

Si vous modifiez le code C++, vous pouvez ensuite recompiler le code via la ligne de commande suivante :

g++ node.cpp -o node -lwiringPi

Pour exécuter le fichier exécutable, utiliser le code suivant :

./node /var/www/node/node.php  7

Et hop, le tour est joué ! Voici le type d'affichage que l'on obtient.

screen_commande_radio-300x279.jpg Capture d'écran de l'exécution du script

Voila, on arrive donc à la fin de la partie globale de ce tutoriel, j'espère qu'il vous a été utile. Les 2 chapitres suivants sont optionnels, même si évidemment, je vous invite à les lire :)

Étape 6 : Améliorations envisagées

Dans un premier temps, le code qui est actuellement d'une qualité plus que passable et qui n'est pas ultra optimisée, nécessite un peu de travaille. Car l'optimisation du code va être une clé essentielle pour la rapidité du système et l'économie d'énergie

Gestion de l'alimentation.

C'est sans doute LE point le plus important à travailler sur ce montage. Pour le moment l'Arduino est alimenté via l'usb connecté à l'ordinateur, c'est surtout une solution de facilité. Pour rendre le nœud indépendant, il faut donc fournir une alimentation autonome au système.

Les émetteurs et récepteurs 433 Mhz sont aussi grandement influencés par le fait d'avoir une alimentation indépendante ou non. Coté nœud, l'alimentation qui fournit l'Arduino servira donc aussi à alimenter l'émetteur / récepteur de manière indépendante. Je n'ai pas encore fait le test moi même, mais il semble apparemment que les performances du signal radio s'en retrouvent grandement accrues. Dans un système comportant plusieurs nœuds, il sera donc rapidement nécessaire d'optimiser au maximum l'alimentation pour augmenter les performances des signaux.

Coté Raspberry Pi, si il possède sa propre alimentation, il peut s'avérer intéressant aussi de fournir à l'émetteur / récepteur 433 Mhz sa propre source d'alimentation pour optimiser la communication radio.

Kit radio complet.

Dans le montage présenté par ce tutoriel, l'émetteur est situé sur le nœud Arduino et le récepteur est connecté au Raspberry Pi. Il faudra améliorer le tout en fournissant à chaque nœud un kit émetteur ET récepteur et faire la même chose pour le Raspberry Pi. Une des idées principales de mon projet homepi, c'est que le Raspberry Pi a un rôle centrale et que c'est lui qui interroge les nœuds disséminés dans votre maison. C'est donc un peu plus compliqué que ce que j'ai pu faire dans ce tutoriel.

Je pense que le prochain tutoriel sera consacré à faire évoluer le présent tutoriel pour ajouter cette logique de question / réponse radio commandée par le Raspberry Pi.

Se passer de l'Arduino

Si dans cette démonstration, j'utilise un Arduino complet, au final, on est bien loin d'en avoir besoin. On n'utilise que quelques ports, donc, pour des questions d'optimisation de la place mais surtout de la consommation électrique, il est tout à fait possible de se contenter d'utiliser soit la puce atmega328 de l'arduino, soit des puces ATtiny, comportant moins de pattes. Je vais sans doute tester plusieurs puces pour voir laquelle est la plus adaptée à mon projet. Ou alors créer plusieurs types de noeud en utilisant plusieurs puces. Bref, vous aurez sans doute droit à un tuto pour expliquer comment la programmer via l'arduino.

Étape 7 : Et si on couplait ça à SARAH ?

En suivant le blog d'Idleman, j'avais eut la chance de tomber sur ce formidable outil que représente SARAH.

Kézako ?

S.A.R.A.H. est une interface TextToSpeech développée par un français et qui repose sur les bibliothèques vocales de Windows (mouarf).

Le principe est assez simple : On lance un exécutable qui se chargera d'analyser ce que le micro capte, pour y déceler des phrases clés que vous aurez définis via un ensemble de fichier XML. Le must ? il est possible de configurer comme réponses à une phrase clé, l'envoi d'une requête HTTP (ou autre) vers votre cher Raspberry Pi, qui se chargera lui, de renvoyer une phrase qui sera lue par votre interface vocale.

Exemple ?

Moi : SARAH, quelle est la température dans le salon ?

Sarah : Il fait 20,12 degrés dans le salon.

Grâce à la configuration de mes fichiers XML, j'arrive à découper la phrase de la manière suivante : SARAH, quelle est la température dans le salon ? SARAH sait qu'on lui parle, qu'on lui demande une information (la température) pour une pièce donnée (le salon). Elle envoie alors une requête HTTP au Raspberry Pi en passant en paramètre ces 2 points de configuration, le Raspberry Pi traite la demande et renvoie une phrase qui sera lue par l'interface vocale, après avoir interrogé sa base de données.

Magique non ?

J'ai commencé à mettre en place une démo de SARAH couplée au Raspberry Pi et au montage décrit dans ce tutoriel, n'hésitez pas à me le demander, dans ce cas je l'ajouterais ici pour compléter.

Conclusion

Voila, ce tutoriel est désormais terminé. On a pu voir comment utiliser ces deux magnifiques bestioles que sont l'Arduino et le Raspberry Pi, et qui vous nous servir comme base pour notre projet domotique maison HomePi.

Après ce premier test, je suis désormais convaincu que c'est cette solution technologique que je vais adopter, même si il va falloir améliorer la communication radio, notamment par l'adjonction d'une source d'électricité indépendante, pour être à même de couvrir une grande maison sans trop d'emmerdes. Le prochain tutoriel aura surement pour but d'améliorer la communication et d'enrichir la dite communication par une logique de questions - réponses entre le Raspberry Pi master et ses noeuds esclaves basés sur des puces d'Arduino.

Si vous avez la moindre question n'hésitez pas. De même, étant particulièrement novice, si vous constatez des erreurs, merci de me les signaler. Cela me permettra de corriger plus rapidement.

Lien vers le commentaire
Partager sur d’autres sites

R.Cerda, un robot Raspberry Pi à conduite différentielle.

Bonjour à tous! Dans ce post, je voudrais vous présenter mon second robot "officiel", cad qui a dépassé le niveau de prototype

de tests. Le précédent était basé sur un Arduino Uno, et m'a permis de comprendre les bases. Maintenant, celui ci est basé

sur un Raspberry Pi, et est une base qui permettra de faire bien plus.

Une petite démo du robot :

[media]

[/media]

Ce robot utilise deux moteurs DC commandés par des L293D interfacés

au Pi par un MCP23017. Un MCP3008 permet de lire les entrées d'un capteur ultrasonique Maxbotix LV-EZ4.

Le principe général

Ce robot possède deux roues parallèles, entraînées chacune par un moteur électrique DC. On utilise deux puces L293D en parallèle pour commander individuellement les deux moteurs. Le MCP3008 ajoute un convertisseur analogique au Raspberry pi, et grâce à cela, nous pouvons détecter la distance aux obstacles frontaux en utilisant un capteur ultrasonique ou infrarouge. Il y a un MCP23017 pour ajouter des GPIO.

Un ball caster sert de troisième point de contact, et le robot peut ainsi se déplacer, tout en étant stable, avec un minimum de friction.

Il y a 5 batteries dans un compartiment pouvant en accepter 6. Cela sert à avoir une tension de 5 à 6V, qui alimente directement les moteurs.

Dans le même temps, le courant qui sort des batteries est régulé par un petit composant qui s'assure ainsi de fournir du 5V en sorte, de façon stable.

Cette tension est alors fournie au Raspberry Pi, qui peut alors commander les puces et les moteurs. On pourrait envisager deux sources d'alimentation,

une pour le pi, et l'autre pour les moteurs, mais c'est plus simple avec une seule. Le régulateur de tension que j'ai utilisé est très efficace, et ne gaspille donc que très peu d’énergie.

Le capteur ultrasonique est placé sur la face avant du robot, et indique la distance aux obstacles se situant dans l'arc frontal. Ainsi, le robot peut tourner pour les éviter.

Liste du matériel

En pratique, on s'en sort pour 80 à 120€, selon les options, si l'on a déjà des batteries, etc.

Voici une photo de l'ensemble du robot, le module de commande n'étant pas fixé sur le module de propulsion:

img_1489-300x225.jpg

Contrôle des moteurs

Les moteurs sont contrôlés par deux puces L293D. Les deux sont en parallèle, car elles peuvent fournir 600mA au maximum par canal, alors que les moteurs en demandent 800. J'ai donc connecté les deux puces en parallèle, elles peuvent ainsi fournir jusqu'à 1200mA par canal, ce qui est largement suffisant. Le Raspberry Pi est connecté à un MCP23017, qui ajoute 16GPIO, et le MCP23017 est connecté aux L293D. Dans l'absolu, on peut se passer du MCP23017, et connecter directement les L293D aux GPIO du Raspberry, mais j'ai choisi d'utiliser cette puce, car j'en ai au moins une pour chacun de mes Pi, et que cela permet d'envisager des extensions ultérieures, en ajoutant par exemples des boutons sur les coins pour détecter d'éventuels contacts.

On peut voir le montage ci dessous :

img_1485-300x225.jpg

Capteurs et détection des obstacles

Le principe du fonctionnement est donc d'éviter les obstacles détectés. Pour cela, j'utilise un Maxbotix LV-EZ4, qui détecte les objets grâce à un faisceau à ultrasons entre 6 pouces et 6 mètres. Le Pi est connecté à un convertisseur analogique vers numérique (un MCP3008), qui permettra de récupérer les données analogiques du capteur de distance. Le capteur ayant une sortie linéaire, la mesure est directement proportionnelle à la distance.

La puce de gauche sur la photo du dessus est le MCP3008, et on peut voir le capteur de distance à ultrasons sur la photo suivante, à l'avant du robot:

img_1492-225x300.jpg

A noter que le gros oeil rouge ne fait pas partie du robot, c'est simplement un autre Raspberry pi.

Alimentation électrique et autonomie

Dans un précédent post, je vous avais parlé de l'autonomie d'un Pi alimenté par des batteries AA et streamant un flux webcam en wifi. On obtenait 3-4 heures d'autonomie. Ici, si on garde la clé Wifi, la consommation devrait être approximativement la même, environ 800mA. La consommation maximale de chaque moteur est de 800mA, ce qui fait qu'en théorie, si les moteurs forcent au maximum en permanence, nous diviserons l'autonomie par 3, soit environ 1h à 1h20.

En pratique, on peut s'attendre à ce que les moteurs ne forcent pas à fond en permanence, donc en étant conservateurs, disons qu'ils seront à 50%.

Cela signifie que nous aurons donc 800mA de consommation pour les deux moteurs, donc un total de 1600mA. Les batteries étant données pour 2700mAh,

on obtient donc théoriquement 2700/1600=1h36minutes. En pratique, si on divise par 2 l'autonomie du pi tout seul, on obtient 1h30 à 2h d'autonomie théorique, donc ça colle assez bien.

Ici, je parle d'un scénario ou le robot roulerait en permanence... En pratique, on peut également s'attendre à ce qu'il ne se déplace pas tout le temps, s'il fait des tâches diverses. Dans ce cas, on gagnerait encore en autonomie. Mais on a une estimation de l'autonomie minimale ;)

Vous pouvez voir sur les images suivantes (cliquables pour une version HD) les batteries et le convertisseur :

img_1486-300x225.jpg img_1490-300x225.jpg

Le programme

Le programme du robot est alors assez simple, puisqu'il s'agit de l'algo suivant :

boucle infinie :  distanceObstacle=lireDistanceCapteurUltrasons();  Si (distanceObstacle<8pouces) reculer;  Sinon Si (distanceObstacle<12pouces) tourner à gauche;  Sinon avancer;  Attendre(5ms);

Le code est fait en python, et le robot évalue les données toutes les 5ms.

L’étroitesse du faisceau cause quelques problèmes, il faudra sans doute adapter

les distances, ou monter le détecteur sur un servomoteur pour l'orienter.

Voici les liens vers les tutoriels déjà écrits pour la réalisation de ce robot :

Le choix du matériel, et les endroits ou se le procurer, ainsi que des explications sur le principe du robot.

Le schéma de fonctionnement, le schéma de montage et les instructions de montage;

Lien vers le commentaire
Partager sur d’autres sites

Excellent Tuto, on a :

-l'interface Pi-Arduino

-Les communications sans fil

-La commande vocale

-De multiples autres informations très intéressantes!

Et je noterais également qu'en dehors du fond la forme est très soignée, :dix:

Juste une petite remarque, dans le tuto tu dis "Une résistance 4700 Hmz", je suppose que tu veux dire 4700Ohms?

SInon c'est intéressant de voir qu'on suit la même voie, après avoir joué d'un coté avec le pi, de l'autre avec le Arduino,

je m'oriente également vers l'utilisation de puces Arduino seules, ou de ATtiny quand j'en aurai sous la main :)

Vu que tu parles de conso, je signale au passage qu'avec un ATTiny8 (celui qui a 8 pattes, il en existe une variété

dans ce package, dont certains avec plus d'entrées analogiques, ou d'autres plus de numériques, plus de PWM...

bref, en gardant 8 pattes, on peut trouver pas mal de variantes adaptées à notre usage. J'imagine que la situation

est la même pour les autres ATtiny. Mais si tu veux lire une sonde de température toute seule et envoyer

la réponse par radio, ce modèle suffira, j'imagine!), en se passant de résonateur/crystal externe, on se limite a 8Mhz,

et de toutes façons la consommation devient réellement minime. J'ai vu des tests dessus, le type parlait de conso

en microWatts... Du coup la puce radio ne consommant probablement pas beaucoup en réception, si l’émission est

courte, et espacée dans le temps, je pense qu'avec une source de courant faible, tu peux avoir une autonomie énorme.

On trouve des convertisseurs de type step up, qui peuvent prendre une tension à partir de 0.8V pour en faire du 5V, ou du 3.3V.

Si je ne m'abuse le Atmega328P peut fonctionner en 3.3V, et ainsi encore réduire la conso, ça doit être la même chose pour

les ATTiny...

Bref, tout ça pour dire qu'a mon avis, en optimisant, il doit y avoir moyen de tenir plusieurs mois avec une ou deux piles

AA rechargeables. Si le paramètre monitoré est la température, du fait de l'inertie thermique, celle ci ne change pas vite,

on doit avoir une granularité de l'ordre de la minute pour une pièce, donc du coup l'émission peut être peu fréquente...

En tous cas, c'est un projet passionnant, et au passage le site est super bien fait :)

On attend la suite avec impatience! Et comme d'habitude, je te linke dans le sommaire ;)

Lien vers le commentaire
Partager sur d’autres sites

Héhé merci :)

Bon mon site est down, mais j'ai quelques problèmes avec d'autres sites, donc je penses que c'est un problème plus général, un provider qui doit merder quelques part.

Pour ce qui est de l'alimentation, c'est à mon avis, mon plus gros chantier à venir. Je vais tacher de commencer à tester avec une alim à la con, mais je dois me commander rapidement 5/6 blocs de piles pour alimenter mes circuits, dans un premier temps sans utiliser de step up.

J'ai reçu 4 autres kits émetteurs / récepteurs, donc du coup, je vais surtout améliorer mon montage actuel :

- utiliser une puce attiny 85 (j'ai des attiny13, mais ça à l'air galère à programmer ....) ou atmega328 à la place de l'arduino

- Introduire une logique de question / réponse dirigée par le Raspberry Pi, en donnant au Pi et à chaque noeud, un kit émetteur ET récepteur

- Améliorer l'alimentation, notamment pour maximiser les performances radio

Merci pour tes retours, ça fait plaisir :)

Sache aussi qu'à cause de toi, je suis de plus en plus tenté de me créer un petit robot. Je te maudis :p

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

Mes connaissances sont extrêmement limitées en info, et plus en encore en électronique. C'est vous dire si je pars de loin.

Mais, même ignorant, un geek reste un geek et voici pas mal de temps que je lorgne sur le Raspberry, cherchant quelle(s) application(s) pourrai(en)t en justifier l'achat.

Je découvre ici qu'il y a largement de quoi s'amuser avec un budget de moins de 200€ et cela m'encourage à sauter le pas.

Sincères félicitations pour la qualité de ces tutoriels.

Merci.

:yes:

Lien vers le commentaire
Partager sur d’autres sites

Héhé merci :)

Bon mon site est down, mais j'ai quelques problèmes avec d'autres sites, donc je penses que c'est un problème plus général, un provider qui doit merder quelques part.

Pour ce qui est de l'alimentation, c'est à mon avis, mon plus gros chantier à venir. Je vais tacher de commencer à tester avec une alim à la con, mais je dois me commander rapidement 5/6 blocs de piles pour alimenter mes circuits, dans un premier temps sans utiliser de step up.

J'ai reçu 4 autres kits émetteurs / récepteurs, donc du coup, je vais surtout améliorer mon montage actuel :

- utiliser une puce attiny 85 (j'ai des attiny13, mais ça à l'air galère à programmer ....) ou atmega328 à la place de l'arduino

- Introduire une logique de question / réponse dirigée par le Raspberry Pi, en donnant au Pi et à chaque noeud, un kit émetteur ET récepteur

- Améliorer l'alimentation, notamment pour maximiser les performances radio

Merci pour tes retours, ça fait plaisir :)

Sache aussi qu'à cause de toi, je suis de plus en plus tenté de me créer un petit robot. Je te maudis :p

Et moi j'ai commandé une paire d'émetteurs/recepteurs 433Mhz ^^

Je n'en ai aucun usage pour l'instant mais tu as attisé mon intérêt :)

Au passage, je sais que dans le monde des radiofréquences, on peut, sans augmenter la puissance d'émission, améliorer le rendement avec une plus grande antenne et/ou une antenne directionnelle.

Penses tu qu'il soit possible de faire une antenne type pringles/cantenna pour ces modules? Sinon, le fil d'antenne, c'est juste un fil metallique, donc si à la place j'en soude

un autre bien plus grand, ça pourrait peut être le faire non? Malheureusement, je crois que mes modules ne disposent pas du fil (j'ai pris celui ci, sur snootlab)

Pour les ATTiny, j'ai lu qu'il y a un moyen de les programmer en les pluggant dans le Arduino, sur les bon pins. D'ailleurs ils apparaissent dans les menu du IDE arduino!

En tous cas, je trouve super motivant de travailler avec ce genre de puces, et de commencer à designer des circuits... Et le point génial à mon sens, c'est qu'une fois

l'investissement initial fait pour avoir le arduino, et quelques éléments nécéssaires, le cout des systèmes additionnels baisse énormément!

Pour le régulateur, voici celui que j'utilise :

http://www.pololu.com/catalog/product/2119

Mais dans la même section tu verra qu'il y en a plein d'autres, dont certains uniquement step-up ou step-down, parfois produisant moins de courant, mais aussi parfois moins chers.

Pour moi, l'intérêt de celui la est double : il produit 1A en 5V en step-down, et il a une efficacité donnée pour 90%, contre une énorme perte d’énergie pour les régulateurs de base

tels que les LM7805. D'autre part, si on considère le coût de l'ensemble, ce genre de régulateurs vaut environ une ou deux piles AA rechargeables selon le modèle, et donc si on

peut utiliser moins de piles on s'y retrouve ^^ Bien sur on perd du coup en capacité, mais si le circuit consomme très peu...

Par contre, quand tu dis que tu vas alimenter tes circuits sans step-up, tu veux dire quand même avec un régulateur non? Parceque je me demande comment

les microcontroleurs acceptent les variations de tension! Si je ne m'abuse le Atmega peut fonctionner entre 3 et 5V, donc peut être que ça ne lui pose pas de problème...

Maintenant quid des capteurs/autres puces interfacées? Pour ma part, je pense que je travaillerai en 3.3V.

Bonjour,

Mes connaissances sont extrêmement limitées en info, et plus en encore en électronique. C'est vous dire si je pars de loin.

Mais, même ignorant, un geek reste un geek et voici pas mal de temps que je lorgne sur le Raspberry, cherchant quelle(s) application(s) pourrai(en)t en justifier l'achat.

Je découvre ici qu'il y a largement de quoi s'amuser avec un budget de moins de 200€ et cela m'encourage à sauter le pas.

Sincères félicitations pour la qualité de ces tutoriels.

Merci.

:yes:

Merci pour tes encouragements :)

Pour info, avant de me lancer il y a quelques mois (et vraiment pas longtemps, j'ai du commander en décembre 2012), mon niveau d'electronique était celui d'un

collégien : souder une LED, une résistance et brancher le tout sur une pile. J'ignorais l'utilité des condensateurs, je ne savais pas utiliser de transistors,

et la seule fois ou j'avais essayé d'utiliser un circuit intégré, je ne sais pas si j'ai grillé la puce ou quoi, car il ne s'est simplement rien passé.

Le truc, c'est que grâce au Arduino/Raspberry, on a des montages à essayer pour apprendre à utiliser tel ou tel composant, et on peut avoir des résultats

parlants, alors que si on part sur des bases d’électronique simple avec des composants ordinaires, on arrive vite à un pallier ou tout ce qu'on

peut faire, ce sont de petits montages qui allument des led, les font clignotter, etc... Or, le clignottement de LED c'est le premier tuto Arduino par exemple.

De plus la ou c'est réellement intéressant, c'est que du point de vue informaticien, on peut programmer le tout, en tapant du code, sans avoir à faire

des "trucs d'électroniciens". En fait on le fait pour le Arduino, mais avec leur IDE, on ne s'en rend pas compte, on clique, et hop le microcode est envoyé

à la puce... Bref, à mon sens le grand plus de toutes ces plateformes, c'est qu'elles masquent une grande partie de la complexité de l'ensemble, en

nous permettant de nous concentrer sur la partie intéressante et amusante. Mais le plus génial, c'est que tout ce qui est "sous le capot" reste accessible,

et au bout d'un moment, si on y trouve un intérêt, on peut alors s'y plonger, et pour donner un exemple, plutôt que d'utiliser un Arduino entier qui vaut entre

20 et 30€, on peut décider d'acheter une puce avec microcontroleur, et faire son propre circuit (ce qui n'est pas si compliqué, dans certains cas c'est même

l'affaire de15 minutes!) adapté à nos besoins, et pour 1 a 6€ selon le microcontroleur choisi (à 6€ on a la puce du Arduino. Donc si vous avez déjà

un Arduino, il est possible de vous en faire d'autre pour peut etre 7-8€... avec toutes la puissance du Arduino classique!)

Pour le budget, attention toutefois, pour ma part depuis que j'ai commencé, je n'arrête pas d'acheter des trucs et des bidules à droite et à gauche :D

Mais plus sérieusement, en effet, on peut commencer à s'amuser pour un budget largement sous les 200€, à mon sens avec 100€ on peut faire un robot,

ou une station météo avec LCD, une caméra motorisée, ou deux modules communiquant sans fil, etc...

Selon les projets, on peut même se débrouiller pour avoir une base amusante à 50€. Mais pour un premier achat, il me semble qu'il est plus intéréssant

de prendre environ 100€ de matos (pourquoi cette somme? en pratique, je me suis rendu compte que certains composants pouvaient servir à

presque tous les projets qu'on peut imaginer, et sont intéressants à "avoir sous la main". Du coup en prenant environ 100€ de matos, on a une base

permettant de faire à peu près ce qu'on veut, moyennant quelques ajouts légers, par exemple avec cette base, on pourra acheter plein de capteurs

pour pas trop cher (20-50€) et faire une station météo, acheter des roues/moteurs pour 20€ et faire un robot, acheter des servomoteurs et deux trois bricoles

pour faire une tourelle orientable (utilisation évidente, la caméra motorisée, mais pourquoi pas une antenne radio -wifi ou n'importe quelle fréquence- qui est

orientée en balayant une zone pour trouver la meilleure réception?) pour a peine 20-30€, ou encore un "car PC" capable de faire tout plein de choses dans la voiture

pour moins de 50€, écran LCD compris...

Bref, tout ça pour dire qu'à 200€, tu as largement de quoi avoir le matériel pour PLUSIEURS projets, ou alors un assez gros projet, assez sophistiqué :)

Et un petit exemple général, pour le robot que j'ai, maintenant, si j'ajoute une webcam (10-20€ selon le modèle), et un petit joystick sur un autre pi,

ou même sans, par une interface web, je peux contrôler le tout depuis un PC. Pourquoi pas, depuis un smartphone avec l'accéléromètre?

En tous cas, l'idée serait d'avoir un véhicule commandé à distance, mais qu'au lieu de le regarder au loin, je regarde depuis le flux webcam,

par les yeux du "pilote", en vue cockpit :) Et je ne sais pas pour vous, mais pour moi c'était un rêve d'enfant, de voir la vue de la voiture

télécommandée :)

Lien vers le commentaire
Partager sur d’autres sites

Et moi j'ai commandé une paire d'émetteurs/recepteurs 433Mhz ^^

Je n'en ai aucun usage pour l'instant mais tu as attisé mon intérêt :)

Au passage, je sais que dans le monde des radiofréquences, on peut, sans augmenter la puissance d'émission, améliorer le rendement avec une plus grande antenne et/ou une antenne directionnelle.

Penses tu qu'il soit possible de faire une antenne type pringles/cantenna pour ces modules? Sinon, le fil d'antenne, c'est juste un fil metallique, donc si à la place j'en soude

un autre bien plus grand, ça pourrait peut être le faire non? Malheureusement, je crois que mes modules ne disposent pas du fil (j'ai pris celui ci, sur snootlab)

Pour une fréquence de 433 Mhz, la longueur de l'antenne doit être de 17.3 cm (calculs dispos facilement sur internet).

Pour le moment, je me contente de mettre un fil quelconque compris entre 15 et 20 cm, mais il va falloir que je me bricole des antennes de cette longueur, pour optimiser au maximum le signal.

Pour les ATTiny, j'ai lu qu'il y a un moyen de les programmer en les pluggant dans le Arduino, sur les bon pins. D'ailleurs ils apparaissent dans les menu du IDE arduino!

En tous cas, je trouve super motivant de travailler avec ce genre de puces, et de commencer à designer des circuits... Et le point génial à mon sens, c'est qu'une fois

l'investissement initial fait pour avoir le arduino, et quelques éléments nécéssaires, le cout des systèmes additionnels baisse énormément!

Yeap, pour les Attiny85, pas trop de soucis, c'est pris en natif je crois (je vais tester ce week end).

Par contre pour les Attiny13, il faut faire un tas de bidouille, et du coup, ça me gave :D j'ai plus ou moins trouvé ce qu'il faut faire, mais du coup, pour le moment, je laisse de coté.

Par contre, quand tu dis que tu vas alimenter tes circuits sans step-up, tu veux dire quand même avec un régulateur non? Parceque je me demande comment

les microcontroleurs acceptent les variations de tension! Si je ne m'abuse le Atmega peut fonctionner entre 3 et 5V, donc peut être que ça ne lui pose pas de problème...

Maintenant quid des capteurs/autres puces interfacées? Pour ma part, je pense que je travaillerai en 3.3V.

Pour ce qui est des alims, je vais mettre un régulateur en effet. Pour le moment tout viens de l'arduino ou du RasPi, mais dès qu'il va s'agir de séparer l'alim, un régulateur va être utile.

Pour le moment j'ai reçu 2 régulateurs d'alim dans ce genre : http://cgi.ebay.fr/ws/eBayISAPI.dll?ViewItem&item=150826749191&ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649

Pratique pour les prototypage, moins pour une utilisation réelle.

Lien vers le commentaire
Partager sur d’autres sites

Un boitier "HAL3000" pour un de mes Raspberry Pi.

Hello! Aujourd'hui ce n'est pas réellement un tutoriel, mais une petite démo d'une réalisation.

j'ai fait un boitier inspiré du design de HAL9000 pour mon raspberry pi :

img_1474-150x150.jpg img_1477-150x150.jpg

Les images sont cliquables pour les avoir en HD et à l'endroit.

J'ai fait un sujet dessus dans la section Tuning :

HAL3000, un mini-ordinateur à base de Raspberry Pi.

Si la façon de réaliser ce boitier vous intéresse, elle est détaillée là bas.

Il y a également davantage de photos dans le topic dédié.

Voici par contre quelque chose qui donnera lieu à un tutoriel :

j'ai utilisé une puce Arduino pour faire "respirer" l'oeil de HAL,

et cette puce sera interfacée au PI:

Dans la vidéo on peut aussi voir R.Cerda, ainsi qu'un autre

Raspberry, et un Arduino "home made" qui alimente un laser.

Autant de projets qui donneront à terme des tutos. (un peu

de tutos Arduino malgré tout, car nous pourrons nous servir

des Arduinos pour compléter les fonctionnalités du Pi.)

Lien vers le commentaire
Partager sur d’autres sites

Salut Sky.

Mon projet domotique se développe pas mal, on s'est d'ailleurs mit à 2 pour standardiser le concept et le mener à bien.

Du coup, en plus de mon projet domotique, j'ai quand même envie de me mettre à la robotique un peu.

Tu auras réussi à me donner envie sagouin !

Donc, j'aurais besoin de quelques conseils.

Je pense que dans un premier temps, histoire de prendre en main les principes de base de la robotique, je souhaite faire un petit robot sans fil avec batterie qui obéit à des ordres simple : avance, recule, tourne à gauche, tourne à droite et stop. C'est à mon avis, largement suffisant pour commencer.

Tu aurais des conseils ?

Quel matériel utiliser sachant qu'il ne s'agit que d'un robot d'apprentissage, qui n'a pas vocation à survivre bien longtemps :)

D'avance, merci

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.


×
×
  • Créer...