vendredi 20 janvier 2017

Un autre plagiaire!?!?!?

Il y a quelques jours, j'ai attiré votre attention sur un blogueur sans scrupules qui avait publié deux de mes articles en remplaçant mon nom par le sien.

Je viens d'en trouver un autre: sur le blog intitulé "Amri Mohamed Electronique et Informatique", on retrouve pas moins de 6 articles dont je suis l'auteur.  Bien sûr, mon nom n'y apparaît nulle part, puisqu'il a été remplacé par selui d'Amri Mohamed.

En voici quelques exemples:  cet article expliquant comment contrôler un moteur pas à pas avec un Raspberry Pi, publié le 4 septembre 2015:



Et mon propre article sur le même sujet, publié le 10 décembre 2014:





Un article expliquant comment établir une communication USB entre un Raspberry Pi et un Arduino, publié le 21 juillet 2015:


...et l'article original, publié ici même le 5 mai 2014:



Vous voulez des conseils pour écrire sur une carte SD avec un Arduino?  Amri Mohamed vous l'explique dans "son" article daté du 4 juillet 2015: 



...qui est la copie conforme de mon article du 29 juin 2012:


Qui est ce sympathique Amri Mohamed?  D'après sa page LinkedIn, il serait ingénieur maintenance chez Bio Instruments, diplômé de l'École nationale supérieure d'ingénieur de Tunis.

Un lien vers son blog (dont près de 10% des articles sont de moi), y est fièrement exhibé.




Donc, si je comprends bien, un ingénieur en électronique a plagié le travail d'un amateur dans le but d'impressionner des employeurs potentiels?

Ça fait un peu peur, vous ne trouvez pas?


Yves Pelletier   (TwitterFacebook)

jeudi 19 janvier 2017

Blockly@arduino: programmez votre Arduino par glisser-déposer

Vous pensez que l'Arduino est facile à programmer?  Je suis bien d'accord avec vous, mais il faut quand même admettre qu'il est nécessaire d'apprendre la syntaxe (en anglais), ne pas oublier les points virgules à la fin des lignes, éviter les coquilles typographiques (au fait, c'est digitalread, DigitalRead, Digitalread, ou digitalRead?), etc.

Conçu par Sébastien Canet pour être utilisé en salle de classe, Blockly@rduino a pour objectif de faciliter la programmation d'une carte Arduino.  Pour construire votre programme, il s'agit de d'agencer, au moyen de la souris, des blocs de codes déjà prêts, rédigés en français, à l'intérieur même de votre fureteur web (Chrome ou Firefox).

Pour accéder à Blockly@rduino sur le web, vous pouvez aller sur le site technologiescollege ou encore sur ce miroir québécois.  Vous n'avez pas besoin de vous inscrire, et il n'y a rien à installer sur votre ordinateur.

Vous devriez voir s'afficher cette page:


Vous pouvez faire disparaître le dialogue de bienvenue (bouton "J'ai compris, merci").

Pour sélectionner votre modèle de carte Arduino, vous cliquez sur le petit bouton jaune, en bas à gauche, qui présente la silhouette d'une roue d'engrenage.  Le même dialogue vous permet également de sélectionner la langue d'affichage.


De retour sur la page principale, cliquez sur le bouton jaune, en haut à gauche, intitulé "configurer les blocs".  Dans le dialogue qui apparaît, sélectionnez "TOUT".


À moins d'avoir des besoins très spécifiques, vous pouvez vous contenter des catégories qui sont déjà cochées par défaut.



Vous devriez maintenant voir s'afficher une liste de catégories:  logique, boucles, maths, variables, procédures et fonctions, arduino.


Comme premier exemple, nous allons tenter  le traditionnel clignotement de la LED intégrée à la carte.

Je clique sur la catégorie Arduino:



Parmi les choix proposés, je choisi le bloc "initialisation (setup)/répéter indéfiniment (loop)", qui constitue la base habituelle de tout programme Arduino.   Je vais glisser ce bloc dans l'espace de travail (la moitié droite de la fenêtre).

Je veux d'abord que la LED soit allumée.  Je clique sur la catégorie "sorties":


...dans laquelle je choisis le bloc "mettre la DEL sur la carte à l'état logique 1 (état haut)".  Je fais glisser ce bloc à l'intérieur de ma boucle:

J'aimerais que la LED demeure allumée pendant 1 seconde.  Je vais donc dans la catégorie "temps et durées":



Et cette fois je choisis le bloc "faire une temporisation (en ms) de 1000":

(le nombre 1000 pourrait être remplacé par autre chose, mais je le laisse tel quel, puisqu'il me convient).

Ensuite, je veux que la LED s'éteigne, j'ajoute donc un nouveau bloc tiré de la catégorie "sorties":


...mais je remplace l'état "1 (état haut)" par "0 (état bas)":

Et on ajoute un autre délai d'une seconde:

Je clique sur le bouton "code Arduino", pour voir à quoi ressemble mon sketch:


C'est bien ce que je voulais.  Remarquez que la pin 13 (qui contrôle la LED intégrée à la carte) à été automatiquement déclarée en sortie à l'intérieur de setup.

Il reste à téléverser mon sketch dans la carte.  En principe, il est possible de le faire directement à partir de Blockly@rduino à la condition d'installer le plugin de Codebender.  Je n'ai pas testé cette fonction; je ne sais pas si elle fonctionne encore, suite à la fermeture de Codebender.  Par contre il y a un bouton "sauver le code en INO" qui fonctionne très bien:  votre sketch est enregistré sous la forme d'un fichier .ino que vous pouvez ensuite ouvrir avec l'IDE conventionnel.  Vous pouvez aussi copier le sketch et le coller dans l'IDE.

Maintenant, je tente un deuxième sketch:  une LED (branchée à la pin numéro 4) sera contrôlée par un bouton (branché à la pin numéro 3).  Je commence donc avec la structure générale du programme.



J'ai besoin d'une boucle "si", que je trouve, logiquement, dans la catégorie "logique":




En fait, j'aimerais faire une bouche de type "if...else":  si bouton enfoncé, LED allumée, sinon, LED éteinte.  Pour ajouter cette partie supplémentaire, je clique sur le petit bouton bleu en forme de roue d'engrenage:

et dans le nouveau rectangle qui est apparu, je glisse "sinon" sous "si":

...et je clique à nouveau sur le bouton en forme d'engrenages pour faire disparaître ce rectangle.

J'ajoute maintenant un opérateur d'égalité, trouvé dans la catégorie logique:

...et j'y insère un bloc "'l'état logique de la broche Numérique", trouvé dans la catégorie "entrées":

J'indique le numéro de la broche à laquelle j'ai branché mon bouton:

Et un bloc d'état logique trouvé dans la catégorie "logique":

Dans la catégorie "sorties", je trouve un bloc permettant de modifier l'état d'une sortie numérique:


La LED sera branchée à la broche numéro 4:

Sinon, on éteint la LED:


Un coup d'oeil au sketch (bouton "code Arduino"):


Ça correspond bien à ce que je voulais faire (encore une fois, la pin 3 a été déclarée en entrée et la pin 4 a été déclarée en sortie automatiquement, sans que j'aie à le faire moi-même à partir des blocs).

Il ne me reste plus qu'à enregistrer le fichier .ino afin de l'ouvrir avec l'IDE Arduino.

Voilà, il ne s'agit bien sûr que d'un survol rapide.  Il semble y avoir une grande quantité de blocs spécialement conçu pour utilisation avec des capteurs ou actuateurs spécifiques, permettant de simplifier le code au maximum.

Pour en savoir plus, vous pouvez consulter le wiki, visiter le forum, télécharger les fichiers sur GitHub pour installation locale, visionner une présentation vidéo très détaillée,  voir comment c'est utilisé dans des ateliers de robotique pour enfants, ou lire cet article par Daniel Pers.

Attention de ne pas confondre Blockly@rduino avec d'autres logiciels similaires portant des noms presque identiques:  Blocklyduino est une vieille version qui a servi de départ à Blockly@rduino. Mais Ardublockly n'est pas exactement la même chose.  Puis il y a aussi eu Ardublock...


Yves Pelletier   (TwitterFacebook)

samedi 14 janvier 2017

Pourquoi écrire ses propres textes quand on peut plagier ceux des autres?

Hier soir, en fouinant un peu au hasard sur internet, je suis tombé sur Electronahal, un blog consacré à l'électronique qui m'a semblé, à première vue, assez intéressant.

Un article intitulé "Pinguino: fabrication et utilisation" a particulièrement éveillé mon intérêt. L'auteur, un dénommé Mouhcine Nahal, y raconte, photographies à l'appui, comment il a fabriqué deux modèles de Pinguino. Je dois dire qu'à mon humble avis, c'est un article plutôt réussi.  C'est d'ailleurs pour cette raison que je l'avais publié ici même, dans mon blog, le 30 août 2014...

Car voyez-vous, je suis l'auteur de cet article:  le texte, les photographies, les captures d'écran, le code, sont de moi.  C'est une reproduction fidèle, mot à mot, de mon article, à une exception près...mon nom a été remplacé par celui de Mouhcine Nahal.



Même constatation concernant l'article intitulé "Contrôle d'un moteur pas à pas avec un L293 (Arduino)", encore une fois attribué au même Mouhcine Nahal.  Il est plutôt pas mal, cet article. Mais c'est moi qui l'ai écrit.  Il avait été publié dans mon blog 2 ans avant d'être publié sur le blog de Monsieur Nahal.



On ne parle pas ici d'un blogueur qui se serait fortement inspiré d’un de mes articles, et aurait malencontreusement oublié d’indiquer ses sources (maladresse dont je suis parfois coupable, je dois l'admettre).  Il a repris l’intégralité de mon article, mot à mot, avec les mêmes photographies et les mêmes schémas, mais a remplacé mon nom par le sien!

On trouve de tout sur le blog Electronahal...sauf du contenu original.  D'après Google,  tout ce qu'écrit monsieur Nahal avait déjà été publié ailleurs...sous la signature de quelqu'un d'autre.


Comble de l'ironie:  dans le coin inférieur droit de la page, Mouhcine Nahal se déclare propriétaire des droits d'auteur de chaque article qu'il a plagié...



Il faut que je vous avoue quelque chose:  je suis un peu offusqué.  De tout ce que j’ai publié ici, Monsieur Nahal, seuls deux articles vous ont semblé dignes d’être plagiés?

Mise à jour (17 janvier 2017): Suite à mon signalement, Blogger a supprimé les deux pages qui reprenaient mes articles en version intégrale.  Chaque auteur doit lui-même signaler les violations qui le concernent, malheureusement. 


Mouhcine Nahal

Yves Pelletier   (TwitterFacebook)



vendredi 13 janvier 2017

Notifications par email, SMS ou Twitter avec ESP8266 et Carriots

Il y a quelques années, je vous avais présenté Carriots, un site web auquel vous pouvez envoyer des données issues de vos capteurs, afin de pouvoir les consulter à distance, et d'être averti par email, SMS ou Twitter lorsqu'une situation particulière se produit.

À l'époque, nous avions utilisé une carte Arduino et un Shield ethernet:  notre montage devait donc être relié par câble à un routeur.

Aujourd'hui, nous reprenons l'exercice mais, cette fois, nous programmerons un ESP8266 à l'aide de l'IDE Arduino pour qu'il envoie les données à Carriots par WiFi. (Ironiquement, en plus d'être beaucoup plus pratique, un module ESP8266 coûte beaucoup moins cher que la combinaison Arduino/Shield Ethernet que nous avions utilisé à l'époque.)

Notre dispositif

Nous reprendrons le même dispositif que dans l'article initial:  un capteur analogique (dans les faits:  un simple potentiomètre) est branché à la pin "ADC" de l'ESP8266.  Une LED est branchée à la pin GPIO04.

Aussi longtemps que la tension de la pin ADC (contrôlée par le potentiomètre) demeure en-dessous d'un certain seuil (que nous choisissons), la LED demeure éteinte.  Lorsque la tension de la pin ADC dépasse le seuil, la LED s'allume.  Chaque fois que la LED change d'état, nous envoyons un message à Carriots, qui se charge de nous envoyer un email (ou si vous préférez:  un tweet ou un sms) pour nous alerter.

Bien entendu, le potentiomètre peut être remplacé par n'importe quel autre capteur analogique (une photorésistance, par exemple).  Le notification peut aussi être déclenchée par une entrée numérique (au moyen d'un interrupteur, par exemple), il s'agira de modifier quelques lignes de code.  Si une seule entrée analogique ne vous suffit pas, vous pouvez vous référer à l'article "8 capteurs analogiques sur un même ESP8266".

À partir de là, les applications ne sont limitées que par votre imagination:  une boîte à lettre qui vous envoie un email pour vous aviser du passage du facteur, un système d'alarme qui vous avise par SMS qu'un mouvement a été détecté à l'intérieur de votre domicile, etc.

Le circuit

Puisque j'utilise un signal analogique. il me faut une version de l'ESP8266 qui comporte une entrée ADC, comme par exemple l'ESP-12.  Si vous ne disposez que du modeste ESP-01, qui ne comporte pas d'accès à l'entrée analogique, vous devrez modifier un peu le sketch pour que l'action soit accomplie lors d'un changement d'état d'une entrée numérique.


Le module est branché à un ordinateur par l'entremise d'un convertisseur USB-UART fonctionnant en 3,3 V, mais la forte consommation de l'ESP8266 nous oblige à l'alimenter avec une source externe plutôt qu'à la sortie 3,3 V du convertisseur USB-UART,

La pin GPIO0 doit être reliée au GND pour que le module puisse être programmé, mais il est préférable de la relier à 3,3 V pendant le fonctionnement du sketch.  Un reset est généralement nécessaire avant de téléverser le sketch (on fait un reset en branchant temporairement la pin RST à GND).

Une fois passée la phase de programmation et de débogage, le convertisseur USB-UART peut évidemment être retiré du circuit.

Un aspect agaçant de l'entrée analogique "ADC/TOUT" de l'ESP8266, c'est qu'elle accepte un signal analogique variant entre 0 et 1 V.   Je dois donc ajouter une résistance en série avec mon potentiomètre pour que la valeur maximale de l'entrée analogique soit de 1 V et non de 3,3 V. Pour un potentiomètre de 10 kΩ, une résistance de 23 kΩ fait l'affaire.  La valeur de résistance appropriée devra évidemment être calculée en fonction du capteur que vous utilisez:  assurez-vous que la tension transmise à la pin ADC/TOUT ne dépasse jamais 1 V.

La LED, associée à une résistance de protection, est branchée à la pin GPIO04.

Inscription à Carriots

À moins que ce ne soit déjà fait, le temps est venu d'ouvrir un compte gratuit chez Carriots,  Lorsque c'est fait, deux informations sont nécessaires pour qu'on puisse ensuite les intégrer à notre sketch: votre apikey, ainsi que le numéro d'identification de votre appareil.

Pour connaître votre apikey, vous cliquez sur "SETTINGS" dans le menu de gauche, puis sur "Apikeys".


Votre apikey est une interminable chaîne de caractères.  "Automatic apikey default" fait parfaitement l'affaire.  Un bouton bleu vous permet de la copier.


Vous devez également connaître le nom de votre appareil ("device").  Pour ce faire, accédez à la section "Devices"...


Vous pouvez créer un nouvel appareil, ou utiliser l'appareil par défaut qui a été automatiquement créé lors de votre inscription.  Ce qu'il vous faut, c'est le "id.Developer", qui est de la forme "nomDelappareil@votreNomDUtilisateur".



Le sketch

Je suppose ici que votre IDE Arduino a déjà été configuré pour permettre la programmation de l'ESP8266.  Si ce n'est pas le cas, je vous réfère à cette marche à suivre.

Avant de télécharger le sketch dans votre ESP8266, vous devez impérativement le modifier pour que 4 constantes comportent la bonne valeur:

ssid:  (acronyme de "service set identifier") le nom du réseau sans fil auquel l'ESP8266 se branchera.
password:  le mot de passe qui permettra à l'ESP8266 de se brancher au réseau sans fil
APIKEY:  l'apikey qui vous a été assignée par Carriots
DEVICE:  le nom de votre appareil sur le site de Carriots


Exécution du sketch

Pour vérifier que tout fonctionne normalement, il est préférable d'afficher le moniteur série (attention: vitesse de 115200 bauds).

Si le sketch ne s'exécute pas automatiquement, reliez la pin GPIO 0 à 3,3 V, puis faites un reset (branchez temporairement la pin reset à GND, puis branchez-la à nouveau à 3,3 V).

Si la connexion à votre réseau WiFi s'effectue correctement, vous devriez voir apparaître le message "Connexion au reseau en cours...", puis "Connecte au reseau:  (nom de votre réseau)".


En tournant le potentiomètre, vous devriez pouvoir allumer et éteindre la LED.  Chaque fois que la LED change d'état, vous devriez voir apparaître dans le moniteur série plusieurs lignes de données, qui commencent par "Envoi du Stream à Carriots", et qui se termine par ( "response": "OK").


Dans mon sketch, j'envoie une notification à Carriots à chaque changement d'état de la LED.  Bien entendu, je pourrais modifier mon sketch afin d'envoyer un message uniquement quand la LED s'allume, ou uniquement quand elle s'éteint.

Retournons maintenant sur le site de Carriots, et allons dans la section "Streams":
Vous devriez voir une ligne différente pour chaque message que votre ESP8266 a envoyé à Carriots:


Création d'un listener

La dernière étape, mais non la moindre, consiste à assigner un "listener" à notre appareil. C'est à dire un chien de garde qui s'occupera de nous envoyer une alerte (email, SMS ou tweet), chaque fois que notre ESP8266 enverra un message à Carriots.

Si votre intention est d'envoyer des tweets, vous devez d'abord autoriser Carriots à se connecter à votre compte Twitter.  C'est simple et rapide.



La façon la plus simple de créer un listener est d'utiliser le "Listener Wizard".


Première étape:  vous pouvez laisser les valeurs par défaut (le listener s'appliquera alors à tous vos appareils), ou sélectionner "Device" pour "Entity Type" et le nom de votre appareil pour"Id".


Deuxième étape:  vous choisissez si le listener vous enverra un email, un SMS ou un tweet.  Si vous choisissez "email", vous devez indiquer l'adresse email.  Si vous choisissez "SMS", on vous demande le numéro de téléphone.  Si vous choisissez "tweet", on vous demander le contenu du message à twitter.

Attention:  avec un compte gratuit, vous êtes limité à l'envoi de 5 SMS par jour (alors que vous pouvez envoyer 100 emails).


Dans une dernière étape, vous cliquez sur le bouton "Create Listener".  Vous devriez maintenant être avisé par la méthode choisie chaque fois que la LED change d'état.

Si ça ne fonctionne pas, vérifiez si vous trouvez des messages d'erreur dans la section "Alarms".

Yves Pelletier   (TwitterFacebook)

Related Posts Plugin for WordPress, Blogger...