par Anne-Laure DELPECH | 22 Juin 2016 | Cours en ligne
Je décris ici les premiers pas pour un formateur qui voudrait créer son cours en ligne. Dans les deux premiers articles de cette série cours en ligne avec learndash, j’ai validé que LearnDash est adapté pour ce que je veux faire (heureusement puisque j’ai déjà acheté cette extension…). Maintenant je me concentre sur l’utilisation par le formateur. Dans d’autres articles, je retournerai côté web designer pour faire les ajustements nécessaires (styles au moins).
Je précise que LearnDash est une extension payante. Je l’ai achetée voici au moins deux ans, à une époque où l’on payait une fois et on disposait de l’utilisation à vie. Ma licence expire « December 8, 2114 ». C’est même plus qu’à vie !
Installer l’extension LearnDash pour WordPress
J’ai une licence, j’ai donc un accès au site de support technique. Je peux y télécharger la dernière version de LearnDash (indiqué par la flèche orange dans la copie d’écran ci-dessous).

Dans le site cible, choisir ajouter une extension puis choisir « mettre en ligne une extension au format .zip » (flèche orange ci-dessous) :

Choisir le fichier zip puis installer. Activer l’extension.
Faire quelques réglages
Si learndash n’a jamais été installé, il faut aller dans Réglages (settings) et entrer le numéro de licence et l’adresse mail associée.
Dans réglages, choisir l’onglet « custom labels » et donner un nom
| label |
Mon texte |
| Course |
Cours |
| Courses |
Cours |
| Lesson |
Module |
| Lessons |
Modules |
| Topic |
Séquence |
| Topics |
Séquences |
| Quiz |
Quiz |
| Quizzes |
Quiz |
| Take this Course (Button) |
Suivez ce cours |
| Mark Complete (Button) |
J’ai fini |
| Click Here to Continue (Button) |
Cliquez ici pour continuer |
Maintenant mes cours contiennent des modules, eux-mêmes subdivisés en séquences.
Créer un nouveau cours
Dans le tableau de bord WordPress, cliquer sur « add new » cours.
On donne un titre et un contenu comme avec un article WordPress classique. Voici les spécificités :
Choix du type de cours
- Ouvert : le cours est gratuit et en plus il est ouvert à tous, sans inscription préalable.
- Fermé : personne ne peut s’inscrire à ce cours.
- Gratuit : le cours est gratuit mais il n’est accessible qu’aux personnes qui s’y sont inscrites.
- Achat unique : l’accès au cours se paie en une fois.
- Récurrent : l’accès au cours se paie en plusieurs fois.
Pour un premier essai de cours gratuit en ligne accessible aux personnes qui se sont inscrites, je choisis « gratuit ».
Le résumé du cours
Il n’y a pas de champs « extrait » pour les cours. Mais on peut placer du contenu entre [[visitor]] et [[/visitor]] pour qu’il soit visible de tous. On peut ainsi mettre un texte de vente à destination des visiteurs, avec une vidéo par exemple. Si le visiteur s’inscrit, il verra le reste du contenu.
Si on veut un texte spécifique aux personnes inscrites, on le met entre [[student]] et [[/student]].
Où voir la liste des cours
Dans n’importe quelle page, on peut insérer un shortcode [[ld_course_list]] qui affichera la liste des cours.
Ajouter des modules
Dans le support LearnDash, ce sont des « lessons ».
Dans l’onglet « module options » définir dans quel ordre seront présentées les leçons : par date de création, par titre (ordre alphabétique) ou par ordre de menu. Dans ce dernier cas, l’ordre est défini dans le champs « attributs » / « ordre » dans la colonne de droite à côté d’un module en cours d’édition. On met 1 à la première leçon, etc…
Les réglages des modules
- Cours associé : le cours dans lequel s’inscrit ce module
- Sample module : si la case est cochée, ce module est visible de tous, comme un « échantillon » pour des gens qui voudraient essayer avant d’acheter.
- Make module visible X days after sign-up : utile si l’on veut imposer un délai entre deux modules.
- Make module visible on specific date : intéressant pour des formations mélant du présentiel et de la formation à distance.
Ajouter des séquences
On n’est pas obligé de créer des séquences. C’est cependant une bonne idée pour que l’apprenant ait l’impression d’avancer et pour bien structurer chaque module en « capsule » facile à intégrer dans son planning et dans son cerveau.
Créer des quiz
On peut créer des quiz pour des modules ou des séquences. En principe tant que l’apprenant n’a pas atteint le niveau minimum requis il ne peut pas passer à l’étape suivante.
Liens utiles (en anglais…)
Sur les shortcodes de LearnDash : http://support.learndash.com/articles/course-shortcodes/
Note : La traduction en français doit être revue…
par Anne-Laure DELPECH | 19 Juin 2016 | Raspberry Pi
Je veux qu’un Raspberry Pi lise et serve un flux vidéo issu d’une caméra IP (en wifi ou ethernet). J’ai choisi d’installer motion car il me permettra de détecter les mouvements puis de déclencher des alertes. Dans cet article, j’explique seulement comment installer motion puis visualiser le flux vidéo sur une page web, en streaming.
Ce qu’il faut
- un Raspberry Pi (un B+, avec une carte sd qui contient tout ce qui a été créé dans l’article Mise en service d’un Raspberry Pi – ie pour moi avec l’image radio-pi-2016-06-10-8h.img et Raspbian Jessie)
- une caméra web, pour moi connectée par cable ethernet, une Foscam FI8905W, avec une IP fixe).
Changer le nom du Pi et vérifier
regarder l’adresse IP du pi sur le routeur local (pour moi 192.168.1.16)
se connecter au pi en ssh et changer son nom (hostname)
ssh root@192.168.1.16
raspi-config
puis dans 9- advanced options, aller dans A2 hostname et renommer le Pi (pour moi, « nautilus »). Finir et accepter le Reboot
Maintenant je peux me connecter à ce pi avec ssh root@nautilus .
Noter que je me connecte en root, ce qui n’est pas conseillé. Mais ça m’évite de taper « sudo » devant chaque commande !
Installer motion
on installe des utilitaires nécessaires puis motion.
apt-get install -y libjpeg62-turbo libjpeg62-turbo-dev libavformat-dev libavcodec-dev libavutil-dev libc6-dev zlib1g-dev libmysqlclient18 libmysqlclient-dev libpq5
apt-get install motion
apt-get update
apt-get upgrade
Ca prend pas mal de temps (plusieurs minutes).
Pendant ce temps, préparer la page html qui servira à débugger et vérifier.
Préparer une page html de débogage et vérification
Créer un fichier page-test.html sur un PC, qui contient le code suivant :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>premier test d'affichage caméra</title>
<link href="A-style.css" rel="stylesheet" media="all" type="text/css">
</head>
<body>
<H1>Tableau de bord maison</h1>
<section class="streaming">
<h3>streaming caméra IP Foscam FI8905W</h3>
<p>en continu - directement de la caméra (IP fixe 192.168.1.201)</p>
<img name="FoscamCamera" src="https://USER:PWD@192.168.1.201:80/videostream.cgi?user=USER&pwd=PWD" width="600" height="450" alt="Live Feed" style="background-color: #009999" />
</section>
<section class="streaming">
<h3>streaming caméra IP Foscam FI8905W via pi nautilus</h3>
<p>en continu - directement à la caméra</p>
<img src= "http://nautilus:8081/?action=stream" width="640" height="480" title="Camera devant maison"/>
</section>
</body>
</html>
Evidemment, il faut remplacer USER et PWD par les bons codes de la caméra utilisée.
Dans le même répertoire, placer un fichier A-style.css
html, body {
background-color: #d8da3d ;
margin: 0;
padding: 0;
}
body {
padding-left: 11em;
font-family: Georgia, "Times New Roman",
Times, serif;
color: purple;
background-color: #d8da3d
}
h1 {
font-family: Helvetica, Geneva, Arial,
SunSans-Regular, sans-serif }
a:link {
color: blue
}
a:visited {
color: purple
}
Et maintenant, dans l’explorateur de fichiers, cliquer à droite sur page-test.html et choisir ouvrir avec votre navigateur favori (chrome pour moi).
On voit le flux vidéo de la caméra en direct mais évidemment pas celui qui passe par le pi puisqu’on n’a pas encore fini d’installer et de configurer motion.

page web de test et deboguage de motion sur Raspberry Pi
Evidemment, si la première partie de la page n’affiche pas le flux vidéo de la caméra, chercher comment régler la caméra. Pour moi ça fonctionne avec une caméra Foscam FI8905W réglée comme suit :
- adresse IP fixe 192.168.1.201
- un administrateur (il faudrait sans doute que ce soit seulement un visiteur pour limiter les risques) nommé USER avec mot de passe PWD
- firmware version 11.35.2.63
- Device Embeded Web UI Version 2.4.20.11
Il est impératif de vérifier que http://USER:PWD@192.168.1.201:80/videostream.cgi?user=USER&pwd=PWD permet bien la visualisation du flux vidéo provenant de la caméra. Sinon la configuration de motion ne fonctionnera pas !
installer motion comme un « service »
Redémarrer le pi avec init 6 ou reboot .
On veut que motion démarre en même temps que le Pi . Pour cela motion doit être installé comme un service.
Dans /etc/default/motion (attention si vous n’utilisez pas Raspbian Jessie, je crois que c’est un autre répertoire), modifier la ligne suivante (no devient yes) :
start_motion_daemon=yes
Pour donner les bons droits d’accès aux fichiers et répertoires nécessaires à motion (les fichiers et répertoires sont ceux qui sont définis dans motion.conf) :
# /etc/motion/motion.conf et thread_.conf en 775 et propriétaire root/motion
chown -R root:motion /etc/motion/
chmod -R 775 /etc/motion/ #664 will not work when motion runs as a service
# /usr/bin/motion : 755
chmod 755 /usr/bin/motion
#var/run/motion (pour motion.pid)
mkdir /var/run/motion
touch /var/run/motion/motion.pid
chmod 755 /var/run/motion/motion.pid
#/home/al/motion/ en niveau 777 et propriétaire root / motion
# dans /home/al/motion/ créer le fichier motion.log en niveau 777
# thread0.conf (foscam) : /home/jf/motion/log/foscam
# thread1.conf (tablette) : /home/jf/motion/log/galaxy
mkdir /home/jf/motion
mkdir /home/jf/motion/log
mkdir /home/jf/motion/log/galaxy
mkdir /home/jf/motion/log/foscam
touch /home/jf/motion/log/motion-log.log
chown -R root:motion /home/jf/motion/
chmod -R 755 /home/jf/motion/
chmod 777 /home/jf/motion/log/motion-log.log
Redémarrer le pi avec init 6 ou reboot .
Maintenant, on doit voir motion parmi tous les services en cours de fonctionnement, avec un « + » devant :
service --status-all
Une liste de services s’affiche, en ordre alphabétique. Lorsqu’il y a [+] devant le service est démarré, sinon il y a [-] devant.

On voit dans cette copie d’écran que motion est démarré.
et si on veut voir le statut de motion
service motion status –l
Logiquement il y a des lignes en rouge, en particulier [ALR] [VID] vid_v4lx_start: Failed to open video device /dev/video0: . C’est normal puisqu’on n’a pas configuré motion.
Dans ce qui suit, on utilisera les commandes suivantes pour arrêter, démarrer ou redémarrer le service motion :
service motion stop
service motion start
service motion restart
Maintenant, il nous reste à configurer motion.
configurer motion
Nous voulons que motion lise le flux vidéo de la caméra à l’adresse IP 192.168.1.201 et qu’il autorise l’accès par un appareil sur le réseau.
Avant de modifier /etc/motion/motion.conf, en faire une copie qu’on appellera par exemple motion.conf.OLD. motion.conf doit avoir des droits d’accès en 664.
Editer motion.conf et régler les lignes comme suit, dans l’ordre du contenu du fichier (pour moi This config file was generated by motion 3.2.12+git20140228 , ça m’indique la version de motion pour lesquelles cette configuration fonctionne).
Pour mieux comprendre les options de réglages que l’on a, voir le wiki de l’auteur de motion, ici.
daemon on
logfile /home/jf/motion/log/motion-log.log
log_level 6 # on le laisse à ce niveau par défaut pour l'instant
v4l2_palette 8 # 17 ne marche pas correctement
width 640 #320 # lié à la caméra pour moi 640
height 480 # lié à la caméra
framerate 2 #2 image par seconde
# pour netcam_url, remarquer le ';' devant et le supprimer !
netcam_url http://USER:PWD@192.168.1.201:80/videostream.cgi?user=USER&pwd=PWD
; netcam_userpass value # laisser en commentaire avec ; devant
netcam_keepalive on
ffmpeg_output_movies on
; si on ne commente pas, erreur [0] [ALR] [ALL] conf_cmdparse: Unknown config option "sdl_threadnr"
; erreur pas grave mais remplit le fichier log
# sdl_threadnr 0
target_dir /home/jf/motion/log # Target base directory for pictures and films
# on utilise la commande http qui fonctionne en direct dans notre page web de déboguage
stream_port 8081
stream_localhost off # permet l'accès en local
webcontrol_port 8085
webcontrol_localhost off # on bloque l'accès
Ensuite on redémarre motion avec service motion restart . Puis Puis service motion status -l nous indique si tout va bien.

Tout va bien mais erreur Unknown config option « sdl_threadnr ». Je n’ai pas trouvé comment la résoudre et ça ne paraît pas géner le fonctionnement de motion.
Tester le bon fonctionnement
Si le flux de la caméra ne s’affiche pas correctement dans la deuxième partie de notre page de test page-test.html , ouvrir /home/al/tmp/motion.log et identifier l’erreur qui bloque motion.
on peut aussi arrêter le service motion (service motion stop ) et taper seulement motion , qui affiche des indications d’erreurs éventuelles.

Et maintenant ?
Dans l’article suivant de cette série Caméra de surveillance et Raspberry Pi, nous verrons comment configurer motion pour qu’il détecte les mouvements et alerte.
par Anne-Laure DELPECH | 16 Juin 2016 | Raspberry Pi
Je veux transformer mon Pi en serveur web qui mettra à ma disposition des informations issues de divers capteurs dans ma maison. La première étape (après l’installation du Pi décrite dans Mise en service d’un Raspberry Pi ) est d’installer Apache.
Installer Apache
Apache est un serveur de page web sous le protocope http. Pour l’installer, j’ai suivi les instructions ici sur le site officiel du raspberry Pi.
C’est rapide. Ensuite je tape http://nautilus/ (c’est le « hostname » de ce Pi) et je vois la page par défaut d’apache, servie par mon Pi localement.
installer PHP
Selon les mêmes instructions que pour l’installation d’Apache.
J’ai ensuite supprimé /var/www/html/index.html et je l’ai remplacé par /var/www/html/index.php , dans lequel j’avais ajouté le code suivant :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="utf-8">
<title>premier test d'affichage caméra</title>
<link href="A-style.css" rel="stylesheet" media="all" type="text/css">
</head>
<body>
<H1>test Raspberry Pi Web server</h1>
<p>Bonjour ! </p>
</body>
</html>
Et ça fonctionne !
par Anne-Laure DELPECH | 12 Juin 2016 | arduino
J’ai un clavier à 12 touches qui ressemble beaucoup à celui ci, sur amazon.fr. Je fais un essai pour voir si j’arrive à en lire les touches lorsque je le connecte à un arduino Uno.
Identification des broches
le clavier présente 10 connecteurs mais il suffit de souder les 8 du milieu.
Ensuite, avec un multimètre réglé sur 2KΩ, on regarde quels fils se connectent lorsqu’on appuie sur une touche.
Numéroter les broches de 1 à 8 : de droite à gauche lorsqu’on voit le clavier.
Le clavier est matriciel : chaque touche correspond à une colonne et une ligne que j’ai numéroté arbitrairement comme dans ce schéma :

Pour savoir quelle broche est connectée à quelle colonne ou ligne, il faut déterminer quels sont les associations de broches qui entrent en contact lorsqu’on appuie sur une touche. Ainsi si j’appuie sur 1, en voyant quelles broches entrent en contact, je déterminerai que l’une des deux est « row 1 » et l’autre est « col 1 ».
J’ai déterminé que la broche 7 et la broche 4 sont connectées lorsque j’appuie sur la touche 2. J’ai continué jusqu’à ce que j’ai assez d’informations pour identifier le rôle de chaque broche.
| broche |
broche |
touche |
| 7 |
4 |
2 |
| 7 |
3 |
5 |
| 7 |
2 |
8 |
| 7 |
1 |
0 |
| 8 |
1 |
* |
| 6 |
1 |
# |
| 1 |
1 |
D |
J’en ai donc déduit que les broches correspondent à :
| broche |
broche |
| 1 |
Row 4 |
| 2 |
Row 3 |
| 3 |
Row 2 |
| 4 |
Row 1 |
| 5 |
Col 4 |
| 6 |
Col 3 |
| 7 |
Col 2 |
| 8 |
Col 1 |
Connexion à l’Arduino

| broche |
broche |
arduino |
| 1 |
Row 4 |
8 |
| 2 |
Row 3 |
9 |
| 3 |
Row 2 |
10 |
| 4 |
Row 1 |
11 |
| 5 |
Col 4 |
4 |
| 6 |
Col 3 |
5 |
| 7 |
Col 2 |
6 |
| 8 |
Col 1 |
7 |
Sketch
La bibliothèque keypad.h permet de gérer facilement un tel clavier matriciel. Voir cet article sur Arduino Playground.
Ce sketch lit correctement chaque touche appuyée et l’affiche dans la console série :
#include <Keypad.h>
const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads
char keys[ROWS][COLS] = {
{'1', '2', '3', 'A'},
{'4', '5', '6', 'B'},
{'7', '8', '9', 'C'},
{'*', '0', '#', 'D'}
};
byte rowPins[ROWS] = {11, 10, 9, 8}; //rows 1 to 4
byte colPins[COLS] = {7, 6, 5, 4}; //columns 4 to 1
//initialize an instance of class NewKeypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS);
void setup(){
Serial.begin(9600);
Serial.println("Setup done");
}
Si j’appuie sur les touches 1, 2, 3, A, 4, 5, 6, B, 7, 8, 9, C, *, 0, # puis D, j’obtiens l’affichage suivant dans la console série.
Setup done
key : 1
key : 2
key : 3
key : A
key : 4
key : 5
key : 6
key : B
key : 7
key : 8
key : 9
key : C
key : *
key : 0
key : #
key : D
Tout fonctionne donc parfaitement.
Et maintenant ?
Si j’ai besoin d’utiliser un tel clavier sur un arduino, je sais maintenant comment faire !
par Anne-Laure DELPECH | 8 Juin 2016 | arduino
Un collègue du FabLab de Quimper m’a prêté deux afficheurs LCD jamais utilisés. Ils devraient en principe fonctionner avec un arduino. J’essaie donc !
Les trois afficheurs
Deux afficheurs prêtés :
L’un comporte les indications suivantes : CLCD sur le contrôleur et GDM1604B sur l’afficheur. Il ressemble à ce produit de Lextronic (35.15 €), avec une fiche technique (pdf) et un manuel utilisateur chez ComFile.
L’autre : ALCD sur le contrôleur et PMC 2004E-SBLW ou PC-2004E6-2 Rev 1 sur l’afficheur. Il paraît correspondre à cet afficheur 2 x 16 caractères de Lextronic (27.5 €).
Les deux produits semblent conçus par Comfile pour les microcontrôleurs PicBasic. Je ne parviens pas à trouver d’information intéressante sur la façon de les connecter à un arduino et surtout de les commander via les contrôleurs.
Je décide donc d’utiliser un des afficheurs sans son contrôleur pour voir ce que l’on peut en faire.
Afficheurs achetés
J’ai également acheté un jeu de 5 afficheurs LCD très économiques : Ecrans LCD 16×2 HD44780 Controleur Retro-eclairage Bleu, sur amazon.fr, à 7.24 € les 5 (oui, les 5…)
Description d’un afficheur LCD
J’ai déconnecté le contrôleur ALCD de l’afficheur PMC 2004E-SBLW. Je me retrouve avec un afficheur pourvu de 16 broches males, numérotées de 1 à 16.
La page « Arduino – Hello World » indique que de nombreux afficheurs LCD à 16 broches sont compatibles avec le driver Hitachi HD44780 (ce qui est annoncé pour l’afficheur acheté, pas pour les deux prêtés). Un autre article sur codingcolor.com montre en photo les connecteurs.
Et l’afficheur acheté séparément contient aussi 16 broches.
Connexion des 16 broches de l’afficheur LCD
Pendant un bout de temps, les trois afficheurs affichent des carrés foncés mais pas le texte prévu… J’ai fini par me rendre compte que j’avais connecté DB11 à DB14 de l’afficheur sur les broches 4 à 1 de l’arduino et non 5 à 2….
Note : on peut remplacer le potentiomètre par un fil entre GND et la broche 3 de l’afficheur avec une résistance de 1 à 1.5 kΩ. Avec mon afficheur j’ai mis une résistance de 1 KΩ et l’affichage est très bien.
Connexions à l’arduino
| afficheur |
fonction |
arduino |
| 1 |
VSS |
GND |
| 2 |
VDD |
5V |
| 3 |
contraste |
potentiomètre |
| 4 |
RS (register select) |
D12 |
| 5 |
R/W Read / Write |
GND |
| 6 |
H/L enable |
D11 |
| 7 |
DB0 (data 0) |
– |
| 8 |
DB1 (data 1) |
– |
| 9 |
DB2 (data 2) |
– |
| 10 |
DB3 (data 3) |
– |
| 11 |
DB4 (data 4) |
5 |
| 12 |
DB5 (data 5) |
4 |
| 13 |
DB6 (data 6) |
3 |
| 14 |
DB7 (data 7) |
2 |
| 15 |
LED + (5V) rétro-éclairage |
220 Ω puis 5V |
| 16 |
LED – (GND) |
Résistance 220 ohm |
schéma (frietzing)

Sketch arduino (issu d’un exemple) : test-lcd-display-yves.ino
Et le résultat, pour les 3 afficheurs, avec le même sketch. La seule chose qu’il faut régler c’est le contraste avec le potentiomètre.

Et on voit que les deux derniers afficheurs sont faits pour 4 lignes, il faudrait modifier le sketch pour en tirer partie.
Commentaires récents