was successfully added to your cart.
All Posts By

Fabien Aubret

SimpleDuino à la MakerFaire Paris 2017

SimpleDuino à la Maker Faire Paris 2017

By | Non classé | No Comments

Cette année encore, l’édition 2017 de la MakerFaire Paris s’annonce prometteuse. Cette fois-ci, les équipes MakerFaire Paris ont choisi de faire de cet évènement un grand rendez-vous des Maker en rassemblant une plus grande quantité de Maker à la cité des sciences où le bâtiment entier sera réservé à l’exposition de projets en tout genre.

Bien sûr, nous avons envoyé un dossier de participation aux organisateurs et nous avons reçu rapidement la confirmation de notre présence à l’édition 2017 de MakerFaire Paris. Au programme, nous présenterons notre projet de drone autonome, « Autonomous Drone System (AES) » mais aussi notre projet domotique SimpleDomo dont vous pouvez déjà découvrir les grandes lignes sur le site « simpledomo.simple-duino.com ». Enfin, nous devrions présenter en avant-première un projet inédit dont une présentation sur notre site sera publiée lors de l’été 2017.

MakerFaire Paris se déroulera du 9 au 11 Juin à la Cité des sciences de Paris. L’évènement sera ouvert au public durant les trois journées.

Alors, n’hésitez pas, venez découvrir notre équipe, certe diminuée à cause des horaires que nos études imposent, mais nous ferons de notre mieux pour assurer une présence continue. Ce sera d’ailleurs vraisemblablement le cas avec la présence de Thomas Aubret le vendredi 9 juin qui sera rejoint par Fabien Aubret le 10 juin aux alentours de midi. Vous pourrez, en plus, découvrir le projet Raybot où Alexis Thézier, son fondateur, et Grégoire Aubret, co-fondateur Raybot et SimpleDuino, prendrons plaisir à discuter avec vous de ce projet.

En espérant vous rencontrer lors de l’édition 2017 de MakerFaire Paris, l’équipe SimpleDuino entière vous souhaite une réussite pour vos projets et vos examens / concours si vous êtes encore étudiant. (Un peu de solidarité n’a jamais fait de mal)

 

A bientôt 😉

Illustration de l'article "Electronique, approche théorique"

Electronique, approche théorique

By | Intermédiaire Arduino, Intermédiaire Raspberry Pi | No Comments

I- Introduction

Ne vous êtes-vous jamais posé la question de savoir comment ou pourquoi le circuit que vous avez devant les yeux exécute réellement ce que vous lui demandez ? Non ? Parce que nous oui !
En fait, pour comprendre cette science de la théorie, il faut s’intéresser aux phénomènes physiques en jeu et, malheureusement (ou avec joie pour d’autre), il faudra s’intéresser aux outils mathématiques afin de comprendre pleinement ce à quoi nous sommes confrontés.
Si ce tutoriel présentera certaines lois classiques d’électronique comme les lois de Kirchhoff, nous nous intéresserons aussi en détail à l’analyse de l’évolution d’une tension dans un circuit RC (Résistance / Condensateur).
Bien sûr, dans ce tutoriel, finies les contraintes de la vraie vie, nous vivrons dans un monde sans pertes, sans dissipation, bref un monde idéal. En mathématiques ou en physique, on appelle ça un modèle et croyez nous, il vaut mieux pour que nous restions dans ce cadre…
Certaines notions abordées sont étudiées en classes préparatoires scientifiques (maths sup/ maths spé). Nous essaierons de vulgariser au maximum. C’est l’objet de ce tutoriel et nous ferons en sorte que le plus grand nombre puisse comprendre ce que nous expliquons. N’hésitez pas à poser des questions complémentaires en commentaire, ou à nous corriger si des coquilles se glissent dans nos présentations !

II- Lois de Kirchhoff

Avant d’aller plus loin, il nous sera nécessaire de nous baser sur deux principes « fondamentaux » en électronique et sur un principe qui, pour le coup, est considéré comme fondamental pour la physique toute entière. Le premier, c’est celui de la conservation de la charge, il caractérise le fait que dans un système fermé (sans transfert de matière avec l’extérieur), la charge se conserve dans l’ensemble du circuit.
Partant de cette constatation, Kirchhoff, physicien allemand, a établi deux lois majeures en électronique, la loi des nœuds et la loi des mailles.

Loi des noeuds

 

Loi des mailles

III- Quelques formules

Il nous faudra admettre quelques formules pour étudier un système électronique. Je vous propose d’étudier ici les caractéristiques d’un condensateur et d’une résistance (circuit RC). Voyons ensemble quelques formules qui pourraient bien nous être utiles:
  

Pour le condensateur:

q=\frac{di(t)}{dt}
q est la charge du condensateur, i(t) est l’intensité du courant qui le traverse à l’instant t

q=C.u(t)
q est encore la charge du condensateur, C est sa capacité en farad, u(t) la tension à ses bornes à l’instant t

  

Pour la résistance:

u(t)=R.i(t)
u(t) est la tension aux bornes de la résistance à l’instant t, R sa résistance en ohm et i le courant qui la traverse à l’instant t

  

Notion de dérivation mathématiques:

Un outil important qui nous servira tout au long de notre étude est l’utilisation des dérivées en mathématiques. Pour faire simple, c’est un outil qui nous permet d’étudier les variations d’une fonction. En fait, c’est un outil extrêmement puissant dont nous aurions du mal à nous passer en physique comme en mathématiques. Dans nos exemples, nous étudierons l’évolution de la tension aux bornes d’un dipôle et nous devrons donc faire appel aux dérivées. Si nous ne verrons pas vraiment ensemble comment dériver telle ou telle fonction, nous vous donnerons les dérivées dont nous aurons besoin. En réalité, il est nécessaire de connaitre un certain nombre de dérivées de fonctions usuelles et de fonctions composées lorsqu’on travaille dans le monde mathématico-physique. D’un point de vu des notations uniquement, vous devez savoir que les trois notations suivantes sont équivalentes:
\frac{dx}{dt} = \dot{x} = (x)'

Attention cependant, la dernière notation n’est absolument pas rigoureuse dans ce cadre, on symbolise plus régulièrement la dérivation d’une fonction de la manière suivante:
f'(x)

Nous utiliserons très régulièrement à première et la seconde notation, bien moins la dernière, plus utilisées en mathématiques cependant.
Posons donc les bases de notre étude, un petit schéma électronique…

IV- Présentation de l’étude

Présentation de l'étude mathématiques

Schéma du circuit RC étudié par l’approche mathématiques de l’électronique


Le condensateur, est initialement chargé d’une tension u_0

V- Début de l’étude

On a placé nos dipôles en convention générateur. On est face à un circuit RC-Série, le courant dans le circuit est donc constant et on peut écrire, grâce à la loi des mailles:
u_r(t) + u_c(t) = 0
Or, la loi d’Ohm nous donne:
u_r(t) = R.i(t)
Et les formules précédentes sur le condensateur donnent :
u_c(t) = \frac{q(t)}{C}
Alors, finalement il vient:
R.i(t) + \frac{q(t)}{C} = 0
\leftrightarrow \frac{dq}{dt} + \frac{1}{RC}.q(t) = 0

On pose arbitrairement
\tau = R.C
On obtient alors:
\frac{dq}{dt} + \frac{1}{\tau}.q = 0
Autrement dit:
\dot{q}+\frac{1}{\tau}.q = 0  (E)

Cette équation est qualifiée d’équation différentielle du premier ordre, linéaire, sans second membre (donc homogène) et à coefficients constants.
Ouhlaaaa, une grande et vaste notion vient d’être abordée, celle des équations différentielles. Lançons-nous dans la résolution de celle que nous avons ci-dessus. Pour simplifier, une équation différentielle est une équation qui, à la différence d’une équation « algébrique », admettra une solution sous la forme d’une fonction. Si vous n’avez jamais eu de formation scientifique sur ce point, la résolution que nous allons détailler ci-dessous pourra vous sembler un peu complexe. Nous allons essayer d’expliquer chaque point et de détailler chacune des décisions que nous prendrons pour arriver à la résolution. Heureusement pour nous, cette équation est dite homogène, c’est-à-dire que son second membre est nul, et vous ne le savez peut-être pas encore mais cela va largement nous simplifier le travail puisque la solution est simplement une formule, là encore à connaitre par cœur lorsque l’on est en étude scientifique…
En fait, les équations différentielles ne sont pas toutes aussi simples, on a parfois des membres doublements dérivés (équations différentielles du second ordre), avec second membres, ou mêmes les deux à la fois.

VI- Résolution de l’équation différentielle

Rappelons (E):
\dot{q}+\frac{1}{\tau}.q = 0  (E)
Comme nous l’avons vu, cette équation différentielle est plus simple à résoudre. C’est une équation dite « homogène » qui se résout par la simple application d’une formule à connaître si l’on souhaite pouvoir en résoudre soi-même plus tard. Cette formule implique l’utilisation de la fonction exponentielle, nul doute que vous ayez déjà entendu ce mot puisqu’il est largement utilisé pour caractériser une évolution rapide d’un paramètre quelconque. En effet, la courbe caractéristique de la fonction exponentielle est la suivante:

Représentation de la fonction exponentielle

Représentation graphique de la fonction exponentielle tracée à l’aide du logiciel GeoGebra


On comprend alors cette augmentation rapide. Je n’entrerai pas en détail dans l’étude de cette fonction, c’est une fonction très utile, qui est caractérisée par deux points:
\frac{d}{dx}(e^x) = e^x
e^0 = 1
Bien, il est temps de revenir à notre équation différentielle. Cette dernière admet donc comme solutions les fonctions de la forme:
q(t) = A.e^{\frac{-t}{\tau}} , A \in \mathbb{R}

q(t)=Ae^((-t)/τ) ,A∈R
Nous avons bien dit les fonctions car il y en a une infinité en théorie grâce à la constante « A ». Bien sûr, nous allons devoir définir cette constante afin qu’elle caractérise exactement le circuit que nous avons choisi au départ. Pour cela, je vous propose de réinjecter notre solution dans u_c(t). Souvenons-nous d’abord de l’expression de &latex u_c(t)&s=1&bg=f8f8f8$:
q = C.u(t)
\leftrightarrow u_c(t) = \frac{q}{C}
On remplace alors « q » par la solution déterminée ci-dessus, on a alors:
u_c(t) = \frac{A.e^{\frac{-t}{\tau}}}{C}
Maintenant, il faut déterminer « A », pour cela on va utiliser les conditions initiales, en effet, on avait spécifié qu’à t = 0, u_c(t) = u_0, on a alors:
u_c(t=0)=\frac{A}{C}
\leftrightarrow A = C.u_0
Voilà notre constante exprimée, remplaçons « A » dans la solution par cette valeur:
q(t) = C.u_0.e^{-\frac{t}{\tau}}
Voilà, on a désormais l’équation qui régit la variation de la charge dans notre circuit. Mais pour nous, le plus intéressant serait de connaître l’évolution de la tension aux bornes du condensateur. Pour cela, on reprend notre formule de la tension du condensateur:
u_c(t) = \frac{q}{C}
Et on injecte cette fois-ci notre solution finale de l’équation différentielle, on a alors:
u_c(t) = \frac{C.u_0.e^{-\frac{t}{\tau}}}{C}
En simplifiant, il vient:
u_c(t) = u_0.e^{-\frac{t}{\tau}} avec \tau = R.C

Ensuite, on peut rentrer cette formule dans un logiciel qui permet de tracer des courbes, comme Geogebra ou Excel et observer l’effet d’une résistance ou d’une capacité différente.
Pour notre part, avec une résistance de 850 ohms, une capacité de 0,04 Farads et une tension u_0 = 4V, on obtient la courbe suivante:

Evolution de la tension dans un circuit RC

Représentation graphique de l’évolution de la tension aux bornes d’un condensateur dans un circuit RC obtenue à l’aide du logiciel GeoGebra


Le temps, en secondes, est en abscisse et la tension aux bornes du condensateur, en volts, est en ordonnée.

VII- Conclusion

Si vous avez eu le courage de lire en intégralité ce tutoriel, félicitation !
Vous devriez maintenant être en mesure d’étudier d’une manière plus mathématique un circuit électronique relativement simple. Relisez le tutoriel, comprenez chaque étape, posez vos questions et entraînez-vous avec des circuits un poil plus complexe avec deux résistances ou deux condensateurs. Evidemment, dans ce cas, il faudra utiliser les formules pour retrouver la résistance équivalente de deux résistances en série ou de deux condensateurs en série.

Ce tutoriel a été écrit par Fabien Aubret, relu et vulgarisé par Thomas Aubret et Grégoire Aubret.
Une relecture a été effectuée par un professeur de physique diplômé de l’Ecole Normale Supérieure (ENS), un grand merci à lui.

Arduino et radiofréquence

Découvrez la radiofréquence avec Arduino

By | Débutant Arduino | No Comments

1- Introduction au concept de Radiofréquence

Lorsque, pour un projet quelconque, on a besoin de faire communiquer deux Arduinos sans utiliser un seul fil les liants l’un à l’autre, on se retrouve souvent confronté au choix plus ou moins difficile du type de communication à mettre en place. Alors, on pourrait penser au bluetooth, au wifi ou encore à la radiofréquence. Si les deux premières options semblent intéressantes à première vue, ces technologies nécessitent une certaine prise en main avant d’être en mesure d’en utiliser toutes les possibilités. Cependant, ce n’est pas le cas de la radiofréquence qui se détache alors rapidement de ses deux « concurrents ». En effet, la radiofréquence constitue sans doute l’un des moyens les plus simples et rapide de faire communiquer deux Arduinos ensemble. Au travers de ce tutoriel, je vous propose d’avancer pas à pas afin de comprendre en détail le fonctionnement puis l’utilisation de tels modules.

2- Fonctionnement des modules Radiofréquence

Tout d’abord, et avant d’aller plus loin dans ce tutoriel, il est nécessaire de faire un point sur le matériel que nous avons entre nos mains. Pour ma part, j’avais un kit émetteur/récepteur FS1000A comme celui-ci :

Photographie émetteur/récepteur RF

Photographie d’un kit émetteur / récepteur radiofréquence de type FS1000A

Qui trainait dans un tiroir, je baserai donc mon tutoriel sur ce kit. En plus de cela, j’ai simplement eu besoin d’un Arduino, de quelques fils et d’une résistance de 10kohms (qui n’est pas forcément utile, nous verrons plus tard)
Bien, si vous avez les même que moi, vous devriez alors avoir, au-dessus des pins, une sérigraphie qui indique GND, Vcc et Data. Détaillons d’abord ce que signifient ces indications. Pour le GND, c’est évident, cela signifie « Ground », « Masse » en anglais. Pour Vcc, c’est la valeur de niveau logique haut. Pour faire simple, puisque notre Arduino fonctionne en niveau logique 5v, on va connecter la broche Vcc du module au 5v et il saura donc que lorsqu’il reçoit 0v, cela correspond au niveau logique 0 et lorsqu’il reçoit 5v, cela correspond au niveau logique 1. Quant au Data, justement, c’est là que nous allons appliquer un niveau logique 1 ou 0 sur l’émetteur et que nous lirons un niveau logique 1 ou 0 sur le récepteur.
Pour la partie théorique seulement, le principe de fonctionnement d’un émetteur/récepteur radiofréquence est relativement simple à appréhender. En effet, lorsqu’on applique un niveau logique haut (je dirai 1 dans la suite du tutoriel) sur l’émetteur, le récepteur lira ce même niveau logique 1. Idem pour le niveau logique 0. Ainsi, on comprend la force des modules radiofréquence. Puisqu’ils transmettent directement les niveaux logiques auxquels ils sont soumis, on peut imaginer les utiliser pour faire de la transmission d’informations via la liaison Série et tout cela sans fil. Si cette notion vous semble encore floue, sachez qu’elle n’est de toute manière pas forcément très fiable. Vous découvrirez dans la suite du tutoriel qu’un signal émis par radiofréquence est perturbé pour un rien et même, que dans votre maison, vous devriez recevoir de nombreuses perturbations à la lecture des signaux, cela est notamment dû aux nombreuses ondes électromagnétiques qui nous entourent.
Pour résumer, on ne peut envoyer que des 1 ou des 0 via la radiofréquence. Lors d’un envoie, si on « donne » 1 sur le Data de l’émetteur, le Data du récepteur « Donnera » un 1, idem pour 0. Ce type d’échange permet d’envisager l’utilisation de protocoles plus complexes par radiofréquence mais ce n’est pas le sujet de ce tutoriel.

3- Premier script: Gestion du récepteur

Si vous avez, jusqu’ici, été en mesure de comprendre l’intégralité du tutoriel, alors vous devriez avoir compris que nous pouvons gérer l’émetteur « à la main », sans Arduino dans un premier temps. Ainsi, dans ce premier script concernant l’utilisation de la radiofréquence, je vous propose de nous concentrer sur l’utilisation du récepteur. Comme nous l’avons vu, ce dernier ne peut recevoir que des 0 ou des 1 et nous allons donc le câbler sur une entrée numérique, digitale donc, de notre Arduino.
Ainsi, je vous propose le câblage suivant:

ArduinoRécepteur

5v Vcc
GND GND
D2 Data

Schématiquement, cela donne le câblage suivant:

Câblage du récepteur RF sur l'Arduino

Capture d’écran du câblage entre le récepteur radiofréquence et l’Arduino effectué sur le logiciel Fritzing

Pour le script, je vous propose le code suivant que j’ai intégralement commenté:

void setup() {
  Serial.begin(9600);        // On initie la communication série sur le débit de 9600 bauds
  pinMode(2, INPUT);         // On déclare la broche D2 comme étant une entrée
}

void loop() {
  Serial.println(digitalRead(2));          // On affiche la valeur de la broche D2 dans le port série (et on saute une ligne à chaque affichage)
  delay(50);                               // On attend 50ms, cela diminue les erreurs de lecture
}

Ensuite, vous pourrez brancher votre émetteur de la manière suivante:

ArduinoEmetteur

5v Vcc
GND GND
————————— Data

Cette fois ci, schématiquement on a le câblage suivant:

Câblage de l'émetteur RF en contrôle manuel

Capture d’écran du câblage entre l’émetteur radiofréquence et son contrôle par bouton poussoir sur le logiciel Fritzing

Dans le tableau, vous remarquez que je n’ai rien spécifier pour la connexion de la broche Data de l’émetteur. C’est normal, je vous propose de brancher un fil « volant » sur le Data de l’émetteur et de simplement le relier manuellement au 5v lorsque vous souhaiterez simuler l’envoie d’un bit par radiofréquence.
Vous remarquerez que nous observons des « impulsions » sur le port série du récepteur. C’est-à-dire qu’il ne reçoit 1 que lorsque l’on connecte manuellement le Data de l’émetteur au 5v. Si on laisse connecté le Data au 5v, le récepteur ne recevra plus de données particulières et affichera donc 0. Vous comprenez alors à cet instant que nous allons travailler avec des signaux carrés. Si cette dénomination vous semble barbare, pas de panique ! Nous n’allons pas générer des signaux complexes. Un signal carré, c’est un simple passage de l’état 0 à l’état 1 puis de l’état 1 à l’état 0. En somme, c’est ce que vous venez de faire manuellement en connectant la broche Data de l’émetteur au 5v !

Vous noterez que sans aucune intervention de votre part, il est possible que vous visualisiez des valeurs de 1 sur le récepteur. C’est la manifestation des perturbations dont je vous parlais tout à l’heure.

4- Utilisation de l’émetteur et du récepteur par Arduino

Finalement, on arrive enfin à votre objectif depuis le début de ce tutoriel: Gérer l’émission et la réception d’un signal radiofréquence via Arduino. Si vous avez bien compris la partie précédente, vous devriez être en mesure d’écrire vous-même le code de cette partie.
Dans cette partie du tutoriel, nous vous proposons de réutiliser les câblages précédents ainsi que le script. Cependant, nous allons utiliser un second Arduino et y connecter notre émetteur sur D3 afin d’être en mesure de transmettre des données au récepteur. Nous procédons de la même manière que dans la partie précédente en commentant intégralement le script.

On a donc le câblage suivant:

Câblage de l'émetteur RF sur l'Arduino

Capture d’écran du câblage entre l’émetteur radiofréquence et l’Arduino sur le logiciel Fritzing

Avec le script suivant:

 

void setup()
{
	pinMode(3, OUTPUT); //On déclare la broche D3 de l'Arduino comme une sortie
}

void loop()
{
	digitalWrite(3, HIGH); //On passe la sortie D3 à l'état haut pour que l'émetteur transmette un "1" au recepteur 
	delay(250); //On attend un peu (250ms)
	digitalWrite(3, LOW); //On passe la sortie D3 à l'état bas pour que l'émetteur transmette un "0" au recepteur 
	delay(500); //On attend un peu (500ms)
}

Là, il n’y a pas grand-chose à rajouter. En mettant simultanément en route le montage émetteur et le montage récepteur, vous devriez observer des séries de 0 et de 1 plus ou moins régulières. N’oubliez pas les perturbations, elles sont omniprésentes autour de vous et peuvent perturber le signal reçu d’une manière plus ou moins prononcée. D’ailleurs, pour en éliminer une partie, on peut rajouter une résistance de 10kOhms entre le Data du récepteur et le GND de l’Arduino.

5- Conclusion

Dans ce tutoriel, nous avons eu l’occasion de voir ensemble que la communication par radiofréquence n’était pas si complexe qu’elle le semblait. Elle constitue une réelle alternative low-cost au bluetooth ou au wifi. Il faut cependant tenir compte de deux paramètres: La perturbation du signal et la sécurité de la transmission. Pour le premier paramètre, vous avez eu l’occasion de la découvrir par vous-même, les perturbations sont omniprésentes et l’une des solutions pour contrer cela constitue en la conception d’un réel protocole d’échange en radiofréquence avec des bits de début et de fin par exemple. Pour le second paramètre, celui de la sécurité, il n’est pas forcément évident d’y remédier. L’une des solution consisterait encore une fois en la création d’un protocole d’échange. Une autre solution pourrait être de modifier la plage de fréquence utilisée pour la transmission, certaines plages de fréquences sont moins sensibles aux perturbations. Attention cependant, la réglementation est assez stricte sur les plages autorisées et sur la puissance d’émission.
Un dernier point, dans ce tutoriel, nous avons proposé l’utilisation de modules radiofréquence via l’Arduino. Pourtant, et comme vous l’aurez sans doute imaginé, l’Arduino n’est absolument pas obligatoire. C’est justement pour cela que nous vous avons proposé de travailler manuellement sur le premier exemple de ce tutoriel. Si vous pouvez contrôler manuellement la transmission via un simple bouton poussoir, il n’y a aucun doute que vous pouvez faire de même avec un circuit intégré tel Attiny ou grâce à des portes logiques directement.

Le kit presse de cet article est disponible en cliquant sur ce lien

SimpleDuino à la MFP16

Simple-Duino à la Maker Faire Paris 2016

By | Non classé | No Comments

Bonjour à tous,

Il y a maintenant près d’un mois, l’équipe Simple-Duino a soumis sa candidature de participation à la Maker Faire Paris 2016. Si notre dossier a été retenu relativement rapidement, nous avons pris le temps de préparer l’ensemble des projets que nous apporterons là-bas, d’imprimer des flyers, des banderoles, etc… Afin que vous puissiez retrouver notre stand aisément. Alors, aujourd’hui, nous vous annonçons que nous serons présents le week-end du 30 avril / 1er mai. Vous pourrez retrouver notamment notre projet domotique, l’imprimante 3D prusa i2 dont vous suivez la construction depuis quelques semaines sur le forum ainsi que notre drone, entièrement imprimé en 3D. Nous apporterons du matériel supplémentaire afin de réaliser de petits projets devant vous et d’initier les nouveaux dans le monde de l’électronique.

N’hésitez pas à nous dire, si vous venez nous voir, que vous êtes inscrit sur le forum ou sur le site. Mettre un visage sur un pseudo c’est toujours agréable. N’ayez pas peur de nous, nous avons tout autant que vous envie de partager notre passion. Nous amenons du matériel pour montrer ce que l’Arduino et le Raspberry Pi nous permet de faire, à ce propos, nous aurons une large gamme de Raspberry, du 1 B au Pi 3, que vous pourrez observer sous toutes les coutures si vous n’avez pas eu la chance de commander avant les ruptures de stock.

Alors, nous n’avons qu’un mot à dire, Stay Tuned, you’ll be welcome…

La Maker Faire aura donc lieu le 30 avril / 1er mai à Paris Expo Porte de Versailles.

Au passage, si vous souhaitez nous proposer des projets que nous pourrions exposer sur le stand, n’hésitez pas à envoyer un mail à l’adresse de contact de Simple-Duino :

[email protected]

L’équipe Simple-Duino

Image de une présentation du Raspberry Pi 3

Sortie du Raspberry Pi 3

By | Non classé | No Comments

Hello world !

Si vous suivez un peu l’actu sur le site de l’organisation Raspberry Pi (http://raspberrypi.org) , alors vous êtes sans doute au courant qu’un nouveau Raspberry Pi a pointé le bout de son nez dans le froid de l’hiver le 29 février dernier. De notre côté, nous avons suivi cet evenement avec engouement puisque quelques fuites avaient déjà laissé présager de grands changements sur le nouveau Raspberry. Alors, lorsqu’il est sorti, nous nous sommes empréssé d’en commander un (en fait deux) le jour même. La bonne nouvelle, c’est qu’en écrivant ces lignes, j’en tient un exemplaire devant mes yeux. Des changements ?

Raspberry Pi 3 de dessus

Photographie du Raspberry Pi 3 vu de dessus

Raspberry Pi 3 de dessous

Photographie du Raspberry Pi 3 vu de dessous

Visuellement, assez peu. Le format est toujours le même, la position n’a pas changé et les boitiers du 2 B+ s’adapte donc parfaitement dessus. La position des composants n’a pas changé, à par peut être l’apparition de ce composant :

Zoom sur la puce wifi du Pi 3

Zoom effectué sur le principal nouveau composant du Rasbperry Pi 3: La puce Wifi/Bluetooth

Et oui, ce composant, c’est la principale nouveauté du Raspberry Pi 3… L’apparition du Wifi et Bluetooth L.E. (Low Energy) de série sur les cartes, un rêve pour tout bidouilleur. Et parce qu’ajouter tant de connectivité ne suffisait pas à Eben Upton, le Raspberry Pi bascule sur un processeur 64 bits cadencé à 1.2GHz (BCM2837). L’alimentation quant à elle n’a pas été oubliée, le Raspberry Pi tolère désormais 2.4A en alimentation (toujours 5V), ce qui permet d’y brancher des périphériques USB plus puissants, un disque dur externe par exemple. D’ailleurs, cette intensité est conseillée pour l’alimentation du Pi 3 puisqu’il faut aussi alimenter l’interface Wifi. On note trois détails moins importants sans doute, Le changement de connecteur MicroSD, plus besoin de « clipser » la carte, elle tient désormais simplement par friction. Les deux bornes RUN ont aussi été déplacé et enfin, la position des leds d’indication a aussi été modifiée.

Modifications Raspberry Pi 3 dessus

Photographie avec indications des modifications apportées sur le dessus du Raspberry Pi 3

Modifications Raspberry Pi 3 dessous

Photographie avec indications des modifications apportées sur le dessous du Raspberry Pi 3

Pour résumer, voici donc les nouvelles caractéristiques de la bête :

  • Processeur Broadcom BCM2837, 4 cœurs, 64 bits
  • Processeur cadencé à 1.2GHz
  • Toujours un port Ethernet
  • Wifi 802.11 b/g/n
  • Bluetooth Low Energy
  • Toujours le classique HDMI
  • Consommation de 2.5A
  • 1Go de RAM

Pour la mise en route, la dernière version de Raspbian datant du 26 février, les développeurs ont tout de même intégré la prise en charge du Pi 3 avec le Wifi et Bluetooth. Cependant, il devrait sans doute y avoir une version 64 bits de Raspbian qui correspondrait alors bien mieux au Raspberry Pi 3…

Je saute ici toute la partie installation de Raspbian, configuration initiale, etc… Ce n’est pas le sujet de cet article, vous retrouverez les principales étapes ici : http://simple-duino.com/bien-debuter-avec-le-raspberry-pi/

Notre objectif, c’est surtout de lancer notre Raspberry Pi 3 et de tenter ensuite de le configurer en wifi proprement… Allons y

En premier lieu, pour confirmer la présence d’une puce Wifi, j’ai lancé un ifconfig et j’ai obtenu le résultat suivant :

Visualisation du chipset wifi

Visualisation de la présence d’un chipset Wifi sur le Pi 3

 

A ce moment la, j’étais connecté en direct ethernet au Raspberry Pi 3. J’ai ensuite décidé de configurer le wifi pour qu’il se connecte à ma box, j’ai donc modifié le fichier /etc/network/interfaces de la manière suivante :

 

Aperçu du fichier interface

Aperçu du fichier interfaces du Raspberry Pi 3 après configuration Wifi

 

Un petit reboot et hop ! J’ai réussi à me reconnecter en ssh via wifi et à pinger les serveurs google :

 

Aperçu de la requête Ping

Aperçu de la requête Ping vers les serveurs Google lorsque le Pi 3 est connecté en Wifi

 

Le top du top sur ce nouveau modèle, c’est surtout que son prix n’augmente pas et reste aux alentours de 40€. Pour résumer, le Raspberry Pi 3 représente un tournant dans la gamme de produits Raspberry. Enfin, on intègre le Bluetooth et le Wifi directement sur la carte, gagnant ainsi en prix et en configuration. Le Raspberry Pi 3 permet de développer plus rapidement des projets IoT ou de coupler d’une manière relativement simple cet équipement à une application développée sur android par exemple.

Fabien A.

Une Communication wifi Low-Cost

Découvrez la communication wifi low-cost avec Arduino

By | Expert Arduino | No Comments

1- Introduction

Qui n’a jamais rêvé de pouvoir utiliser la communication sans-fil, et notamment, wifi avec son Arduino ? Il y a quelques mois, nous vous aurions dit que cela coutait chère, que le shield officiel Arduino n’était pas forcément la meilleure solution, mais aujourd’hui c’est différent.
En effet, le monde de l’électronique évolue rapidement, la miniaturisation et la réduction des coûts a notamment joué un rôle essentiel puisque aujourd’hui, relier un système quelconque à un réseau wifi pour 3,50€ et ce, grâce aux fameux modules ESP8266.
Si vous vous êtes récemment intéressé à la domotique ou à d’autres formes d’objets connectés, vous n’avez certainement pas pu passer à côté de ces petits modules. Les modules ESP8266 utilisent des commandes AT via le port série pour recevoir des ordres qui sont ensuite interprétés.
L’essentiel pour nous, c’est de savoir que ces modules ont deux fonctions extrêmement intéressantes. La première, c’est la possibilité de mettre en place dessus un mini serveur de données. La seconde, c’est celle de relier le module à un réseau existant (celui de votre box par exemple) et donc, de lier votre système à internet en moins de 30 secondes. De plus, votre module peut suivre deux comportements différents selon votre souhait, soit il agira comme un périphérique supplémentaire connecté à un réseau, soit comme un « Access Point », point d’accès, sans forcément être un serveur pour autant.

2- Spécifications techniques

Avant de débuter dans l’utilisation de votre module ESP8266, nous devons aborder ensemble certains points clés des spécifications techniques de ces modules.
Ce que vous devez savoir en tout premier lieu, c’est que les modules ESP8266 fonctionnent en 3.3V. Là, vous devez instantanément faire le lien avec les niveaux logiques 5V de l’Arduino, et donc vous occuper de ce premier problème. En effet, même si les chipset des ESP8266 tolèrent du 5V en niveau logique, il est toujours préférable d’adapter le niveau logique de votre port série grâce un adaptateur spécifique. Pour ma part, j’utilise des adaptateurs achetés sur E-bay semblables à ceux-ci:
https://www.sparkfun.com/products/12009
Nous vous conseillons très fortement d’utiliser des adaptateurs de niveaux logiques avec votre module wifi.
Autre spécification qui a son importance, de base, lors de la réception, le débit série par défaut sera définie, dans la plupart des cas, sur 115200 bauds. Si la version du firmware présente dans le module le permet, vous pourrez modifier ce débit. Dans le cas inverse, nous verrons bien plus tard comment mettre à jour le firmware de votre module.
Pour résumer, notre ESP8266 fonctionne en niveau logique 3.3V avec un débit série de 115200 bauds. Il nécessite donc un adaptateur de niveau logique 3.3V –> 5V pour être utilisé avec l’Arduino ainsi qu’une bonne configuration de notre terminal série.
La liste du matériel nécessaire à ce tutoriel se résume donc à:
– Un Arduino
– Un ESP8266
– Un convertisseur de niveau logique bidirectionnel
– Quelques fils
– Une plaque de connexion sans soudure (breadboard)

3- Mise en œuvre

D’un point de vue montage pur, l’ensemble reste relativement simple et ce, malgré le nombre important de fils utilisés et les composants que vous ne connaissez pas forcément. Nous vous proposons ainsi le montage détaillé autour du convertisseur de niveau logique ainsi qu’un vue générale de l’ensemble des laisons entre le module wifi, le convertisseur de niveau logique et l’Arduino.
Nous avons symbolisé les broches du module ESP8266 au moyen « d’étiquettes », vous retrouvez la position de chaque broche sur cette image (Notez que le module est vu de dessus):

Brochage esp8266

Position des broches d’entrées / sorties sur le module ESP8266

 

Montage complet

Montage complet du module ESP8266 avec son convertisseur de niveaux logiques

 

Vue détaillée autour du convertisseur de niveaux logiques

Vue détaillée des liaisons entre le convertisseur de niveaux logiques et l’Arduino


Désormais, vous devez donc avoir connecté l’ensemble des composants entre eux et donc, à l’Arduino aussi. De notre côté, nous arrivons à ce résultat:

Voilà pour la mise en œuvre du tutoriel, nous allons désormais passer à l’utilisation du circuit que nous venons de concevoir. C’est la dernière étape de notre tutoriel avant de conclure.

4- Application et utilisation du système conçu

Désormais, nous sommes en mesure d’utiliser notre module wifi esp8266 avec notre Arduino. Vous pouvez tout d’abord uploader le script « blink » sur votre Arduino et ouvrir une console série. L’intérêt, c’est que vous allez pouvoir utiliser votre Arduino comme un simple adaptateur série USB grâce à la console série intégrée à l’IDE Arduino. Lorsque vous aurez ouvert cette console, vous pouvez la paramétrez sur 115200 bauds avec CR et NR:

Réglages du port série

Réglages à effectuer afin de pouvoir communiquer avec notre module ESP8266

Ensuite, vous pourrez, en théorie, écrire « AT » dans la console et envoyez cette chaine de caractère. Vous devriez alors obtenir un retour « OK ». Là, je vous propose de tester la version de votre firmware, simplement comme information en envoyant la commande suivante au module: « AT+GMR ». Vous devriez obtenir un retour semblable à celui-ci:

Retour du AT+GMR

Retour d’affichage de la commande AT+GMR sur l’ESP8266

En regardant dans la liste de vos réseaux wifi disponibles sur votre ordinateur, vous devriez détecter le module ESP8266. Je vous propose dès à présent de modifier le nom du réseau ainsi que son mot de passe de sécurité en exécutant la commande suivante: « AT+CWSAP= »nom_du_reseau », »mot_de_passe »,1,2″
Le mot de passe doit impérativement être composé de chiffres et de lettres. Après avoir exécuté cette commande, vous devriez obtenir le retour suivant:

Retour du AT+CWSAP

Retour d’affichage de la commande AT+CWSAP sur l’ESP8266

Désormais, nous pouvons enfin créer notre mini serveur sur notre module wifi. Pour cela, nous devons tout d’abord autoriser la gestion des connexions multiples sur le module à l’aide de la commande « AT+CIPMUX=1 » (« AT+CIPMUX=0 » pour désactiver cette fonctionnalité). Le retour obtenu sera donc le suivant:

Retour du AT+CIPMUX

Retour d’affichage de la commande AT+CIPMUX sur l’ESP8266

Enfin, nous pouvons finalement ouvrir notre serveur en tant que tel grâce à la commande « AT+CIPSERVER=1,port » (« AT+CIPSERVER=0 » pour éteindre le serveur) Dans mon cas, le port sera 80. Vous devriez avoir le retour suivant:

Retour du AT+CIPSERVER

Retour d’affichage de la commande AT+CIPSERVER sur l’ESP8266

Ajoutons une commande qui peut se révéler bien utile, celle qui permet d’effectuer un reset du module: « AT+RST ». Le retour obtenu est ici bien plus long et devrait ressembler à ceci:

Retour d'affichage de la commande AT+RST sur l'ESP8266

Retour d’affichage de la commande AT+RST sur l’ESP8266

5- Conclusion

Voilà tout pour aujourd’hui. Vous êtes désormais capable de connecter un système quelconque à internet grâce à des modules wifi low-cost de types ESP8266. De plus, vous avez désormais la possibilité de créer des mini-serveurs à l’aide de ces modules, ce qui vous permettra de découvrir de nouveaux moyens d’interagir avec vos systèmes. N’oubliez pas que les modules ESP8266 constituent une solution fiable et low-cost lorsque la nécessité d’ajouter une connexion wifi à votre circuit est omniprésente.

Merci d’avoir suivi ce tutoriel, bon bidouillage à tous !

Fabien A.

Image de une de la présentation du module GeoThings

Un outil pour vos projets connectés, GeoThings sur KickStarter

By | Projets | No Comments

Introduction

Vous avez souvent l’habitude sur notre site de voir aborder des notions de domotique. En effet, si notre projet SimpleDomo existe toujours et subit des améliorations quasi-mensuelles, on observe sur les sites de crowdfounding des produits toujours plus innovants et créatifs. Celui que nous vous présentons aujourd’hui dans cette article se révèle intéressant à nos yeux puisque le concepteur est parti d’un problème simple que nous connaissons sans doute tous: La nécessité d’utiliser plusieurs shield (parfois 4 ou 5) sur des projets connectés. En effet, on utilise, pour les projets les plus complexes, une batterie, un shield GSM, GPS et une carte SD. Là justement, le système GeoThings permet d’effectuer une concaténation de tous ces éléments en un seul bien plus petit et intéressant. Il permet en plus de connecter un panneau solaire, le concepteur insiste bien sur ce fait.
Pour résumer, GeoThings regroupe l’ensemble des outils permettant de lier votre systèmes à Internet et plus précisément, à une application smartphone dédiée. Vous avez simplement à relier votre module capteur à votre GeoThings et le reste se fait d’une simplicité déconcertante selon l’auteur. Bien entendu, nous n’avons pas eu (encore) l’occasion de tester ce système mais il semble vraiment prometteur.

Le concepteur de ce module GeoThings rassure les contributeurs au projet: Son module est bel est bien compatible avec le langage Arduino, vous pouvez donc recoder tout ou partie pour l’adapter exactement à vos besoins et ce, sans avoir à réapprendre un nouveau langage. Le firmware embarqué correspond à 100% à celui des Arduino Duemilanove.

 

Module GeoThings et son panneau solaire

On observe sur la gauche le module GeoThings en lui-même et à droite, le panneau solaire inclut dans tous les packs GeoThings.

 

Caractéristiques techniques

Concernant l’aspect technique, la taille du module est de 40x45x9mm avec un poids de 19 grammes environ. Petit et léger, ce sera sans doute un outil vraiment intéressant pour un projet d’engin volant par exemple. Le « processeur » embarqué est un atmega328P cadencé à 16MHz, tout comme l’Arduino. GeoThings dispose en plus « d’au moins » 4 entrées/sorties digitales et 5 analogiques. Les sorties 5V et 3.3V étant toujours disponible. D’un point de vu logiciel, l’API GeoApp et les outils de développement GeoApp sont gratuits, un point de plus donc. Le GPS est une puce intégrée au circuit et la technologie de liaison GSM est disponible aussi bien en 2G qu’en 3G, il n’est pas nécessaire d’utiliser une antenne externe puisqu’elle est intégrée au circuit. Le module gère la recharge de la batterie via un panneau solaire, il est fourni avec un boitier étanche et un panneau solaire. La batterie de 1000mAh lithium-ion rechargeable est également fournie.

Et le prix alors ? Le financement sur kickstarter est toujours en cours au jour d’aujourd’hui et le GeoThings 2G y est affiché au prix de 70$, il faut bien entendu comparer ce prix à un ensemble Arduino + tous les shields que rassemblent cette carte bien utile, le prix devrait donc être interessant. Le projet est financé à hauteur de 2% pour l’instant et il reste 28 jours pour que le montant attendu (190 000$) soit récolté.

 

Comment lire les datasheets et utiliser le module SM130

Utilisez les datasheets et découvrez le module SM130

By | Intermédiaire Arduino | No Comments

Bonjour à tous,
Aujourd’hui, nous allons voir ensemble comment lire, comprendre et utiliser la datasheet d’un module que nous venons de recevoir. En fait, la lecture de la datasheet, qui regroupe toutes les données utiles liées à l’utilisation d’un circuit, d’un capteur ou d’un actionneur, doit être la première chose à faire lorsque vous ne réussissez pas à utiliser le matériel que vous venez de recevoir. Il est aussi très intéressant de la consulter lorsque vous utilisez une librairie depuis un certain nombre de temps et que vous souhaitez finalement pouvoir profiter pleinement de toutes les capacités offertes par le matériel que vous venez d’acheter.
La lecture d’une datasheet n’est pas forcément une chose simple. Sa compréhension peut se révéler difficile puisqu’elle contient de nombreux détails qui ne vous seront pas forcément utiles. Cependant, elle est indispensable puisqu’elle permettra, dans de nombreux cas, d’étalonner un capteur ou de comprendre le protocole utilisé par le matériel par exemple.
Dans ce tutoriel, j’aurai pu aborder l’utilisation des datasheets pour l’étalonnage d’un capteur de température mais je préfère aborder une notion plus complexe et sans doute, plus utile, découvrir de A à Z comment communiquer avec un module SM130. Le matériel utilisé dans cet article n’est pas un matériel onéreux, en voici la liste:

Matériel:

  • 1 Arduino UNO
  • Un module SM130 disponible chez Sparkfun
  • Un shield d’évaluation RFID optionnel mais j’en utiliserai un, il est disponible chez Sparkfun
  • 4 câbles M/F

 

Shield Evaluation RFID et module SM130

Ensemble Shield Evaluation RFID Sparkfun et module SM130 soudé

 

Tags RFID

Tags RFID de forme « Jeton »

Puisque nous allons aborder l’utilisation de la datasheet, voici deux liens qui nous seront utiles lors de notre progression:

Bien, nous sommes désormais prêts à comprendre le protocole de communication de notre module.

Dans un premier temps, il va falloir identifier la méthode de communication utilisée par le matériel, c’est-à-dire s’il utilise la liaison Série, I2C, One-Wire ou autre. Sur la première page de la datasheet du module SM130, nous pouvons lire « UART Interface – up to 115200bps ». UART signifie  » Universal Asynchronous Receiver Transmitter » mais est aussi synonyme d’une liaison série. Si on lit la ligne suivante, on observe que le module peut aussi être utilisé via la liaison I2C. Dans cet article, j’utiliserai la liaison Série pour faciliter son utilisation avec l’Arduino.
La seconde étape consiste à identifier la position des pins VCC, GND, Rx et Tx. Pour cela, nous avons une manière simple de procéder pour le SM130 puisqu’à la page 4, nous avons le plan des pinouts du SM130. On note la position de VCC, RFVCC, GND, RFGND, UART RX et UART TX. Pour ceux qui comme moi, auront choisi d’utiliser le shield RFID Evaluation, nous pouvons consulter sa datasheet et remarquer sur le schéma du shield que le Rx du SM130 est relié à la broche D7 et son Tx à la broche D8. VCC et GND sont respectivement liées à +5V et GND.
Pour ceux d’entre vous qui utilisent le module SM130 seul, vous devez relier les pins VCC et RFVCC à la sortie 5V de l’Arduino, les pins GND et RFGND à une masse de l’Arduino (GND). Ensuite, que vous utilisez le module avec ou sans shield, vous devez relier le UART RX à la broche D7 de l’Arduino et le UART TX à la broche D8.

Montage module SM130 et Arduino UNO

Montage du module SM130 relié à un Arduino UNO au moyen de 4 câbles et d’un shield Evaluation RFID

Maintenant, notre module est branché sur notre Arduino et nous n’avons, jusqu’ici, encore eu besoin d’aucune aide extérieur.

Le plus difficile arrive maintenant. Nous ne travaillerons désormais qu’avec la datasheet du module SM130 pour la suite de l’article. Je vous propose d’aller à la page 7/8 de cette datasheet. A la page 7, vous retrouvez l’ensemble des commandes que nous pouvons utiliser sur notre module. Dans la colonne de gauche, vous avez la commande hexadécimale correspondante à la commande du module présentée dans les deux colonnes de droite.
Mais la page 8 est bien intéréssante pour nous, nous allons trouver de nombreuses informations dedans. Tout d’abord, dans le premier paragraphe, nous retrouvons tous les débits Série disponible pour notre module mais il est bien spécifié que le débit par défaut est 19200bps, N, 8, 1 c’est-à-dire une vitesse de 19200bps avec aucun bit de parité, 8 bits de données et 1 bit de stop. Ne tenez pas compte des 3 paramètres N, 8, 1 ils ne sont pas intéressant dans notre cas, notez simplement la vitesse de 19200bps.
Le premier tableau présent sur cette page de la datasheet:

Header Reserved Length Command Data CSUM
1 Byte 1 Byte 1 Byte 1 Byte N Bytes 1 Byte

Nous permet de réellement comprendre le protocole de communication du module. Nous avons ensuite le détail du contenu de chaque bit que je vais rappeler ici:

  • Header: Toujours à 0xFF, il permet d’avertir le module que nous allons lui envoyer des données
  • Reserved: Toujours à 0x00, il est réservé à une utilisation future que le fabricant pourrait en faire
  • Length: C’est une variable qui prend pour valeur le nombre de bit transmis (Command + Data)
  • Command: C’est une variable qui prend pour valeur l’une des commandes présentes sur la page 7
  • Data: C’est une variable qui prend pour valeur les données que l’on souhaite transmettre liées à la commande
  • CSUM: c’est le « checksum », la clé de salage, elle prend pour valeur la somme de tous les bits, sauf de Header

Un retour sur la page 7 nous permet de retrouver le code correspondant à la commande que nous souhaitons. En effet, pour vérifier en permanence la présence d’un tag RFID sur l’antenne du module, nous pouvons utiliser la commande correspondante au code « 0x82 » qui ne prend pas d’argument (Data = 0).

A ce stade du tutoriel, nous sommes capables de formuler notre commande permettant, par exemple, d’attendre la présence d’un module. Ainsi, l’information à envoyer au module se découpe en trois 6 parties:

  • 0xFF = Header
  • 0x00 = Reserved
  • 0x01 = Nombre de bit Commande + Data
  • 0x82 = Command
  • 0x00 = Data
  • 0x83 = CSUM

Nous pouvons donc désormais écrire notre programme. Pour gérer deux liaisons séries via l’Arduino UNO, nous allons utiliser la librairie SoftwareSerial. Voici donc notre script à ce moment du tutoriel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include 
 
SoftwareSerial rfid(7, 8);
 
String readed;
 
void setup() {
  Serial.begin(9600);
  rfid.begin(19200);
 
}
 
void loop() {
  rfid.write((uint8_t)0xFF);
  rfid.write((uint8_t)0x00);
  rfid.write((uint8_t)0x01);
  rfid.write((uint8_t)0x82);
  rfid.write((uint8_t)0x83);
 
  delay(500);
}

Ce script a pour effet de vérifier la présence d’un tag RFID autour de l’antenne du module SM130. J’ai placé un delay(500) afin que le module ait le temps de formuler sa réponse pour la suite du tutoriel.
Ce qui nous intéresse, bien entendu, est d’être en mesure de lire la valeur du tag. Pour cela, je vous propose d’aller à la page 13 de la datasheet du module. Là, nous pouvons voir la nature du message retourné par le module lorsque la présence d’un tag RFID est constatée. Dans le cas où aucun tag n’est présent, nous aurons en retour le message suivant: « ff02824cd0 ». Pour information, j’ai déterminé ce message en ajouter une vérification du retour d’un message à l’aide de rfid.available() puis un Serial.println(String(rfid.read(), HEX)); après le delay(500); du script précédent. J’ai ainsi pu observer la forme de la réponse lors de la présence d’un tag RFID et lorsqu’il n’y en avait pas.
La forme de la réponse est donc:

  • Header, Reserved, Length, Command, Data

Attention, souvenez-vous que Reserved vaut 0x00 et qu’il n’apparaitra donc par dans la trame de données renvoyées. Il est important d’avoir connaissance aussi du fait que notre module renverra une trame de données contenant le retour pour l’exécution de la commande + le retour des données du tag présent lorsqu’il y en aura un, cela sur une seule trame.
Cela signifie que si nous voulons identifier la valeur du tag RFID de notre carte RFID par exemple, nous devrons sélectionner la chaine de caractère débutant au 17ème caractère de la trame jusqu’au 25ème, le 26/27ème correspondant au bit MSB.
En effet, la trame reçue, par exemple, pourrait ressembler à celle-ci:
« ff02924cd0ff0682210fe4e846a », trame dans laquelle on retrouve le tag de la carte, « 10fe4e84 », « 6a » correspondant au bit MSB.

Voilà donc notre script final:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include 
 
SoftwareSerial rfid(7, 8);
 
String readed;
 
void setup() {
  Serial.begin(9600);
  rfid.begin(19200);
 
}
 
void loop() {
  rfid.write((uint8_t)0xFF);
  rfid.write((uint8_t)0x00);
  rfid.write((uint8_t)0x01);
  rfid.write((uint8_t)0x82);
  rfid.write((uint8_t)0x83);
 
  delay(500);
 
  while(rfid.available() > 0){
    readed += String(rfid.read(), HEX);
  }
  if(readed != "ff02824cd0"){
    Serial.println(readed);
    Serial.println(readed.substring(17, 25));
  }
  readed = "";
 
}

Vous êtes désormais capable d’utiliser votre module SM130, en plus d’être capable de lire et de comprendre une datasheet.
A bientôt pour un prochain tutoriel sur Simple-Duino.

Fabien A.

Illustration du premier tutoriel C#

[Tuto 1]Découvrez le C# et la création d’apps Windows

By | Informatique | 2 Comments
    • I. Introduction

      Cela fait un petit bout de temps que l’idée mûrit dans ma tête. Etant fervent utilisateur de Windows, possédant un téléphone sous Windows Phone et voyant l’arrivée de Windows 10 avec les applications universelles pour les versions de Windows Bureau, Tablette et Phone comme une opportunité pour développer et répandre les applications, je me suis lancé dans l’apprentissage du langage C# prononcé « Cé-charpe ».
      Cela permettra de continuer le projet SimpleDomo sur cette plateforme.

 

    • II. Quel logiciel pour développer ?

      Afin de développer en C# il vous faudra un éditeur de code ainsi que d’un compilateur.
      Je vous conseille d’utiliser, à l’heure actuelle Visual Studio Express 2013 ou Visual Studio Community 2013.
      Vous pouvez dès à présent télécharger Visual Studio Community 2015 ICI et l’installer.
      Une fois installé, vous pouvez créer un nouveau projet en cliquant sur « File » puis sur « new » et « new project ». Une fenêtre comme suit va s’ouvrir:

      Fenetre Création de projet Visual Studio 2015

      Capture d’écran de la fenêtre de création de projet sous visual studio 2015 (community)

      Nous allons dans un premier temps apprendre à développer en C# à l’aide d’application console. Grâce à ses applications vous allez acquérir les bases nécessaires pour la réalisation de vos futures applications.
      Sélectionnez « Console Application » ( 3 ) puis nommez votre projet au ( 4 ).

 

    • III. Les bases

      Comme je l’ai expliqué précédemment, nous allons découvrir le C# à travers le programme console.
      A quoi ressemble une console ? En voici un bref aperçu :

      Console Windows

      Aperçu de la console Windows lancée via Visual Studio 2015 (community)

      Remarque: Vous pouvez commenter vos lignes de codes en faisant « // » suivi de votre commentaire sur une ligne de code, ou alors vous pouvez commenter un bloc de code en suivant la syntaxe suivante

      1
      2
      3
      4
      
      /* Bonjour
      * je commente
      * sur plusieurs lignes
      */
      Capture d'écran des commentaires en C#

      Capture d’écran d’un script d’exemple contenant des commentaires en C# sous Visual Studio 2015 (community)

 

    • 1. Nos premières lignes de code

      En C# comme dans d’autres langages, toutes les instructions de terminent par un point-virgule « ; ». Sans ce point-virgule, le programme ne se compilera pas.
      Prenez donc le réflexe de toujours mettre un point-virgule après vos instructions.
      Pour ajouter du texte sur la console, il suffit d’écrire l’instruction :

      1
      
      Console.WriteLine(« Hello World ! »);

       

      Premier programme C# executé

      Aperçu du premier programme créé C# après exécution via Visual Studio 2015 (community)

      Vous pouvez remarquer que j’ai ajouté l’instruction :

      1
      
      Console.ReadLine();

       

      A la ligne 14 afin de laisser la console ouverte après exécution. En effet, si vous ne mettez pas cette instruction vous n’aurez le temps de voir votre message car le temps de compilation est dans ce cas de l’ordre de quelques millisecondes.

 

    • 2. Les variables

      Oui, le C#, comme tous les langages de programmations possèdent des variables susceptibles de sauvegarder des données. Ce sont en quelque sorte un « espace de stockage » qui peut contenir des nombres, des dates, des chaînes de caractères, des tableaux…
      Il existe pour cela différents types de variables. Je vous résume les plus utilisées dans le tableau ci-dessous.

      Type Description
      byte Entier de 0 à 255
      short Entier de -32768 à 32767
      int Entier de -2147483648 à 2147483647
      long Entier de -9223372036854775808 à 9223372036854775807
      float Nombre simple, précision de -3,402823e38 à 3,402823e38
      double Nombre simple, précision de -1,79769313486232e308 à 1,79769313486232e308
      decimal Nombre décimal
      char Représente un caractère
      string Représente une chaine de caractère
      bool Représente une valeur booléenne (true or false)

      Pour définir des variables, il suffit de spécifier le type, puis le nom de la variable puis sa valeur.
      Exemple :

      1
      2
      
      String nom = « Thomas »; //un String se définit toujours avec des guillemets)
      int age = 21;

 

    • 3. Ecrire dans la console

      Nous avons déjà vu un peu plus tôt comment écrire dans la console grâce à l’instruction Console.WriteLine(« Hello World ! ») ;
      Vous pouvez aussi afficher des variables dans la console. Pour cela, il suffit d’écrire par exemple :

      1
      2
      
      String nom = "Thomas";
      Console.WriteLine("Bonjour je m’appelle" + nom);

      Vous allez obtenir le résultat suivant:

      Exemple affichage de texte dans la console

      Exécution du programme d’exemple expliquant la méthode pour afficher du texte dans la console Windows

 

    • 4. Interaction avec la console

      Que serait un programme sans pouvoir interagir avec ?
      Il est temps d’utiliser l’instruction Console.ReadLine() ;
      Pour récupérer les commandes tapées dans la console par votre clavier il faut utiliser la fonction Console.ReadLine().

      1
      
      String age = Console.ReadLine();
      Exécution d'un programme d'exemple d'input console

      Exécution d’un programme permettant la récupération d’un chaine de caractère saisie par l’utilisateur

Voilà pour le tutoriel de programmation du week-end !
Nous espérons que vous prenez autant de plaisir à la lecture de nos articles que celui que nous ressentons lors de leurs écritures.
A bientôt !

Thomas A.

Illustration Bien débuter avec le Raspberry Pi

Bien débuter avec le Raspberry Pi

By | Débutant Raspberry Pi | No Comments
  • Installation d’un système d’exploitation (OS : « Operating System » en anglais)

Je considère que vous avez déjà acheté une carte micro SD d’une capacité suffisante (4 Go minimum).
Rendez-vous sur le site de la fondation Raspberry afin de télécharger la version que vous souhaitez. Je vais faire le tutoriel en ayant téléchargé la version de RASPBIAN datant du 31/01/2015.
Téléchargez l’utilitaire win32diskimager à l’adresse suivante: Win32 Disk Imager.
Insérez la carte micro SD dans l’ordinateur, lancer le l’utilitaire Win32 Disk Imager, puis sélectionner l’image de RASPBIAN. Cliquez sur « write » et patientez quelques minutes.
Insérez la carte dans le Raspberry et branchez-le. Branchez également le câble ethernet.

Nous allons apprendre à nous servir du Raspberry sans avoir d’interface graphique, pour cela, nous allons devoir utiliser le logiciel « PuTTy » que vous pouvez télécharger ici.
Lancez PuTTy et entrez y l’adresse IP de votre Raspberry, cliquez ensuite sur « open ».
Une fenêtre devrait apparaître vous demandant vos login.
Pour la première utilisation, entrez :

1
2
login as : pi
password : raspberry

Vous voilà sur votre Raspberry. Sur PuTTy, il n’y a aucune interface graphique, c’est pourquoi il est nécessaire de connaitre un certain nombre de commandes permettant de parcourir les fichiers, créer des dossiers, ou simplement regarder les dossiers et fichiers contenus dans un dossier.
Vous allez voir, que ce n’est pas très difficile surtout que vous allez utiliser ces commandes tout le temps. Vous allez vite les apprivoiser sans vous en rendre compte.

  • Commandes basiques de gestion du répertoire

Le tableau ci-dessous reprend les principales commandes nécessaires au débutant sous un environnement Raspberry (qui sont aussi valable sur Linux).

Commande Description Exemple
mkdir Permet de créer un répertoire mkdir siteweb
Permet de créer un répertoire appelé « siteweb1 » dans le dossier « siteweb » mkdir siteweb/siteweb1
-m Permet de spécifier des droits à la création du répertoire mkdir –m 777 siteweb
-p Permet de créer des répertoires parents mkdir –p siteweb/siteweb1
cd Permet de se déplacer dans un dossier cd siteweb
cd .. Permet de se déplacer dans un dossier précédent
rmdir Permet de supprimer un dossier vide rmdir siteweb
rm -r Permet de supprimer un dossier non vide rm –r dossier
ls Permet de lister le contenu d’un répertoire ls
cp Permet de copier un fichier1 en un fichier nommé fichier2 cp fichier1 fichier2
mv Permet de renommer le fichier1 en fichier2 mv fichier1 fichier2

Désormais, vous connaissez les bases pour parcourir les dossiers de votre Raspberry.

 

  • Mise en place du profil « root »

Le profil « root » et l’équivalent du « super admninistrateur » sous windows.
Il va vous permettre de parcourir les fichiers cachés pour les utilisateurs ordinaires.

Connectez-vous sur votre raspberry :

1
2
login as : pi
password : raspberry

Ensuite entrez la commande suivante :

1
sudo passwd root

Suivez les instructions. Il faut taper un mot de passe.

Au prochain redémarrage de votre raspberry, lors de l’ouverture de la session sous puTTy, mettez :

1
2
login as : root
password : "votre mot de passe"

 

  • Accès au Raspberry direct ethernet / PC

Vous vous êtes surement demandé comment se connecter à son raspberry sans que ce dernier soit connecté au réseau de votre habitation.

Pour cela, il va valoir utiliser votre PC en serveur DHCP. Rien de très compliqué, il vous suffit de télécharger le logiciel Xming et de le lancer.

Ensuite, éjectez la carte SD de votre raspberry pour la mettre sur l’ordinateur. Vous devriez avoir un fichier nommé « cmdline.txt ». Ouvrez le, et modifiez le de la manière suivante :

Vous passez de :

1
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait

en :

1
dwc_otg.lpm_enable=0 console=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait IP=169.254.XXX.XXX

ATTENTION : Ne sautez pas de ligne, et mettez le “IP=169.254.XXX.XXX” à la suite de “rootwait”

Remplacez bien sûr, les « XXX » par l’adresse IP que vous souhaitez attribuer à votre Raspberry Pi.

Une fois ce changement fait, sauvegardez, et remettez la carte SD dans le raspberry. Branchez le raspberry au PC via ethernet.
Ouvrez puTTy, cliquez sur X11, puis cocher « Enable X11 forwarding »

Configuration X11 Putty

Capture d’écran de Putty lors de la configuration du « X11 forwarding »

Retournez ensuite dans « Session » et entrez l’adresse IP que vous avez entré dans le fichier « cmdline.txt ».
Vous pouvez dès à présent, vous connecter sur votre raspberry depuis votre PC.

ATTENTION Configuré tel quel, votre Raspberry Pi ne pourra plus être utilisé sur un réseau « classique ». Pour revenir en arrière, il suffit d’effacer le « IP=169.254.XXX.XXX » que vous avez précédemment ajouté. Cela est lié à l’attribution d’une adresse IP « LAN » (169.254) au périphérique. Si vous souhaitez donner une IP fixe au Raspberry Pi directement relié à votre box, vous pouvez remplacer « 169.254.XXX.XXX » par « 192.168.XXX.XXX »

 

Grégoire A.