Objectifs :
Les boucles, boucles imbriquées
Découverte des fonctions graphiques suite.
Serveurduke rubrique ISN puis PROCESSING
Objectifs :
Les boucles, boucles imbriquées
Découverte des fonctions graphiques suite.
Serveurduke rubrique ISN puis PROCESSING
Objectifs :
Découvrir l’interface de Processing
Les fonctions graphiques élémentaires
Les fonctions setup et draw
Les conditions
Les opérateurs logiques
C’est déjà pas mal pour un 1er « cours ».
Serveurduke rubrique ISN puis PROCESSING
Quelques idées piquées lors du stage Isn de bordeaux.
Cet EPI se place au niveau 3ème, il associe 3 disciplines Techno en matière support, Sciences physiques et Anglais.
Les fichiers sur serveurduke rubrique EPI. Certains fichiers sont protégés par mot de passe.
Me demander sur : blogtechno (chez) serveurduke.fr
VIDEO 1 : seultracker
VIDEO 2 : videogroupetracker
Je n’aime pas les langages « block » ou graphiques mais il faut avouer que Mblock est très bien fait.
Mais surtout il permet de visualiser le code créé et le télécharger dans l’arduino !
Donc pleinement exploitable en classe.
C’est ici pour Mac et Windows.
Un super Wiki : ici
Un point d’accès avec code wpa2 tournant!
Quoi qu’est-ce ?
C’est une carte Arduino doublée d’un Linux, d’un module Ethernet et Wifi… besoin de rien d’autre !!!
Et on peut faire quoi avec ça ? Beaucoup de choses moi j’ai créée un point accès wifi temporaire.
Branché sur le réseau Ethernet de l’établissement, le boitier génère automatiquement une nouvelle clé Wifi toute les heures la clé s’affiche sur un écran lcd. Idéale pour le CDI ou bien en ISN ou TPE pour permettre un accès au wifi aux élèves.
La clé wifi change automatiquement toute les heures.
Cliquer advanced configuration panel
Puis de configurer en Bridge. PENSEZ A SAUVER
On suppose un DCHP sur le réseau sinon il faudra régler les ip.
Les 2 boutons poussoir peuvent fonctionner sans résistance pull-up,
on active celle intégré dans l’arduino grace à cette ligne de commande : digitalWrite(5,HIGH);
L’afficheur LDC est alimenté en 5v.
L’alimentation peut se faire par le cordon micro USB
Prendre un afficheur I2C il suffit ainsi de connecter SDA et SCL.
SCHEMA DE CABLAGE
Il faut le dernier IDE c’est mieux, et les 2 librairies ci-dessous à copier dans le dossier Arduino/librairies.
IDE ARDUINO :
Arduino Software
Bibliothéques :
LiquidCrystal
Process.h
Voici le code :
//————code Eric KELNER . AEFE Lycée FRANCAIS BAMAKO——————
//———- Thomas CASTANET. AEFE Lycée FRANCAIS BAMAKO——————
#include <LiquidCrystal_I2C.h>
#include <Process.h>
LiquidCrystal_I2C lcd(0x3F, 16, 2); // VERIFIEZ L ADRESSE DE VOTRE LCD 0X3F OU 0X27 OU AUTRE….
const int buttonChangeclef = 6; // reinitialise la clé
const int boutonAjoutTemps=5; // ajoute du temps
//int etatButtonChangeclef = 0; // état des boutons/
//int etatBoutonAjoutTemps = 0;
int firstStart=1;
String uciClef= » »;
String prefixeClef= »klnr »; // 4 lettres en prefixe de la clé wifi
String ssid= »klnrWifi »; // nom du wifi, a personnaliser
String clef= » »;
String xClef= » »;
uint16_t start = millis();
uint16_t previousMillis=0;
static int tempsParDefaut=61; // on part sur 60mn par defaut MOINS1 MN le temps de boot
long time1Hz = 0;
extern volatile unsigned long timer0_millis;
//================================= SETUP ================
void setup() {
pinMode(buttonChangeclef, INPUT); // bouton reinitialise la clé
digitalWrite(buttonChangeclef,HIGH); // POUR ACTIVER PULL UP INTERNE
pinMode(boutonAjoutTemps,INPUT); // bouton ajoute du temps
digitalWrite(boutonAjoutTemps,HIGH); // POUR ACTIVER PULL UP INTERNE
lcd.begin();lcd.blink();
lcd.setCursor(2,0); lcd.print(« DEMARRAGE »); delay(1000);
lcd.setCursor(2,1);lcd.print(« PATIENTEZ »); delay(1000);
Bridge.begin();
Serial.begin(9600);
}
//================================= LOOP ================
void loop() {
int nbClients=0;
String test,chaine;
Process p;
p.runShellCommand(« /etc/config/testclients2.sh »);
while (p.running());
while (p.available()) {
char c = p.read();
test=c;
// if(test.equals(« \n »)) nbClients++;
if(!test.equals( » « )) if(c==’\n’) nbClients++;
chaine=chaine+c;
SerialUSB.print(c); // print the number as well
}
SerialUSB.println(« AFFFICHAGE DE LA CHAINE »);
SerialUSB.print(test);
SerialUSB.print(« ————-« );
//for (int =0;chaine.lenght;i++)
//SerialUSB.print(c); // print the number as well
// CALCUL DU TEMPS ECOULE
int m,s;
unsigned long over,elapsed,currentMillis = millis();
elapsed=(currentMillis-previousMillis)-start;
over=elapsed%3600000;
m=int(over/60000);
over=over%60000;
s=int(over/1000);
//LIGNE 1 LCD
lcd.setCursor(0,0);lcd.print(« CLEF: »); lcd.print(clef); // ON AFFICHE LA CLE WIFI
//LIGNE 2 LCD // TOUTES LES 2 SECONDE ON AFFICHE LE TEMPS OU LE SSID
SerialUSB.println(currentMillis – time1Hz);
if ((currentMillis – time1Hz) <3000 ) { lcd.setCursor(0,1); lcd.print(« CONNECTES: « ); lcd.print(nbClients); }
if ((currentMillis – time1Hz) >= 3000 && (currentMillis – time1Hz) < 6000 )
{
lcd.setCursor(0,1); lcd.print(« WIFI: »);lcd.print(ssid);
}
//if ((currentMillis – time1Hz) >= 4000 || digitalRead(boutonAjoutTemps)==1)
if ((currentMillis – time1Hz) >= 6000 )
{ lcd.setCursor(0,1); lcd.print(« Tps : »);
lcd.print(tempsParDefaut-m);lcd.print(« mn »);lcd.print(60-s);lcd.print(« s « );
time1Hz = currentMillis;
SerialUSB.print(« je rentre je remets a ZERO »);
}
//lcd.scrollDisplayLeft();
// LECTURE DE L ETAT DES BOUTONS
if(digitalRead(boutonAjoutTemps)==0) {tempsParDefaut=tempsParDefaut+2;} // On rajoute 2mn lors de l appui sur le bouton
if(tempsParDefaut-m<1) { // si le temps est eecoulé on reinitialise l horloge
firstStart=1;
noInterrupts ();
timer0_millis = 0;
interrupts ();
start = millis();
}
if (digitalRead(buttonChangeclef) == LOW || firstStart==1) // SI LE TEMPS EST ECOULE OU APPUI SUR LE BOUTON
{
tempsParDefaut=60; // on repart pour 60mn
firstStart=0;
lcd.clear(); lcd.noBlink(); lcd.setCursor(0,0); lcd.print(« CREATION CLE »);
randomSeed(analogRead(0));
xClef=(int)random(1000,9999); // cle entre 1000 et 9999
uciClef= »wireless.@wifi-iface[0].key= »;
uciClef=uciClef+prefixeClef+String(xClef); // on construit la chaine
clef=prefixeClef+String(xClef);
lcd.setCursor(0,0); lcd.print(« CONFIGURATION « );
delay(1000);
// command UCI parametrage de la carte
p.runShellCommand(« uci set wireless.@wifi-iface[0].ssid=klnrWifi »); // possible de changer
p.runShellCommand(« uci set wireless.@wifi-iface[0].mode=ap »); // point acces
p.runShellCommand(« uci set wireless.@wifi-iface[0].encryption=psk-mixed »); // wpa/wpa2
p.runShellCommand(« uci set wireless.@wifi-iface[0].country=FR »);
// reglage clef;
p.begin(« uci »);
p.addParameter(« set »);
p.addParameter(uciClef);
p.run();
// validation des parametres
p.runShellCommand(« uci commit wireless »);
// on relance le reseau
p.runShellCommand(« uci /etc/init.d/network restart »);
p.runShellCommand(« wifi »);
}
}
C’est terminé !.
il faut copier le fichier testclients2.sh dans etc/config.
cela permet d’afficher sur le lcd le nombre de clients connectés au point d’accès.
Lors du téléchargement du code dans la carte arduino YUN elle ne redemarre pas ….
Il faut alors Débrancher et rebrancher son alim….
Le matériel de base :
Il faut une carte arduino UNO R3 avec gros port USB (moins fragile).
Un breadboard shield. En plus d’avoir une plaque de prototype on trouve directement 5 broches +5v et 5 broches GND.
Le shields permet de se fixer directement sur le UNO. (pas de fils qui se trimbalent)
Un afficheur lcd (bus I2C) cela permet de diminuer le nombre de fils à 4. Deux pour l’alimentation 2 pour à brancher surSDA/SCL broches A4/A5. La bibliothèque est là : liquidcrystal-i2c-library-master (à copier dans arduino/libraries).
ATTENTION l’adresse des composants I2C peut changer d’un fabriquant à l’autre. Je vous conseille le programme suivant qui permet de retrouver l’adresse du comptant branché sur le port I2C. scan_i2c
Et des câbles de connexion
Voilà il ne vous reste qu’à choisir vos capteurs selon le projet souhaité.
Je commande mon matériel chez Gotronic, lightinthebox ou amazon…
Sinon, on peut commencer avec un starter kit. (Voir ça)
Actuellement la carte de base est la UNO R3. Mais il existe de nombreuses déclinaisons.
Pour programmer il faut l’IDE arduino: et Voici la Référence du langage Arduino en français ici
et pour macOS les bons drivers: ch34x_install_v1
On a des entrées analogiques (A0-A5) : val = analogRead (analogPin); (la valeur lue sera entre 0-1023) (0-5v)
avec pinMode on déclare la broche en tirée ou sortie.
On a des entrées numériques (1-13 mais aussi A0-A5) : val = digitalRead (Pin);
Des sorties digitale (1-13) : digitalWrite(pin,état): Etat (LOW ou HIGH);
Des sorties digitales modulables ( 3 5 6 9 10 11 ) : analogWrite(pin, val) avec val entre 0-255 (Attention vous ne devez pas appeler pinMode () pour définir la broche comme sortie avant d’appeler analogWrite ())
Un tableau intéressant (source)
Les pièges :
les broches 0 et 1 qui ont une double fonction à éviter d’utiliser au début.
Les broches A4/A5 utilisables pour le bus I2C.
Les broches 3 5 6 9 10 11 qui ont la particularité d’être PWM c’est a dire il est possible de faire varier la tension moyenne.
Attention quand la carte est alimentée par le connecteur externe(9v) le port 5V de la carte arduino ne fonctionne pas !