User Tools

Site Tools


nomades:arduino
no way to compare when less than two revisions

Differences

This shows you the differences between two versions of the page.


nomades:arduino [2019/12/18 17:29] (current) – created - external edit 127.0.0.1
Line 1: Line 1:
 +====== Workshop Arduino & Systéme interactif ======
 +
 +===== 1- achat Arduino uno (jan2016) et plus =====
 +
 +
 +-un systéme complet pour commencer - http://kits-modules.e44.com/arduino/kit-uno-composants-plaque-montage-cavaliers-moteurs-relais-pastilles-piezo-poussoirs-....-ARDUINO-KIT.html#!prettyPhotos[productImages]/0/
 +
 +-la carte uno de base - http://kits-modules.e44.com/arduino/arduino-uno-ARDUINO-66.html
 +
 +-shield moteur - http://kits-modules.e44.com/arduino/motor-power-shield-arduino-KA03.html
 +
 +-lylipad (pour textile) - http://kits-modules.e44.com/arduino/arduino-lilypad-usb-atmega32u4-ARDUINO-E17.html
 +
 +-proto-shield - http://kits-modules.e44.com/arduino/arduino-proto-shield-headers-ARDUINO-77.html
 +
 +-explication de base : http://www.mon-club-elec.fr/pmwiki_reference_arduino/pmwiki.php?n=Main.MaterielUno
 +
 +
 +
 +===== 2-premier pas dans l'univers d'arduino =====
 +
 +
 +-branchement de la carte arduino uno en usb sur votre ordinateur
 +
 +-téléchargement logiciel Arduino-Ide pour charger les firmware et programmer votre arduino :
 +https://www.arduino.cc/en/Main/Software
 +
 +**-test classique pour voir si tout marche bien : jouer avec une LED**
 +utilisé l'exemple BlinkWithoutDelay (exemples - delay) - changer l'interval : long interval = 100; / uploader à chaque changement du programme.
 +
 +{{:nomades:ledarduino.jpg?300|}}
 +
 +
 +**-utiliser un exemple plus complexe - thérémin controllé avec photorésistance**
 +
 +utiliser un breadboard
 +petit cable
 +croco
 +resistance 10Kohms
 +photoresistance
 +
 +script dans example - StarterKit
 +
 +connecter le circuit & uploader le script
 +
 +{{:nomades:lightthereminarduino_06-03.png?500|}}
 +
 +{{:nomades:thereminbasic.jpg?300|}}
 +
 +===== 2-les capteurs =====
 +
 +
 +**-le potentiométre** - connecté comme suit : https://www.arduino.cc/en/Tutorial/AnalogInput
 +
 +**-la photorésistance :**
 +
 +{{:nomades:photoresistance_pd_arduino.jpg?500|}}
 +
 +la résistance est de 10kohm - (marron/noir/orange/or)
 +
 +{{:nomades:1capteur.jpg?500|}}
 +
 +-le capteur de température
 +
 +**-le capteur de pression**
 +
 +{{:nomades:capteurforce_pd_arduino.jpg?500|}}
 +
 +la résistance est de 10kohm - (marron/noir/orange/or)
 +
 +
 +
 +-le switch
 +
 +-le bouton pressoire, hardware : 
 +
 +{{:nomades:button_bb.jpg?500|}}
 +
 +- Le slider, hardware :
 +
 + {{:nomades:slider_bb.jpg?500|}}
 +
 +**-Plusieurs capteurs ensemble :**
 +
 +{{:nomades:multi_capteurbreadboard_pdarduino.jpg?500|}}
 +
 +{{:nomades:plusieurscapteurs.jpg?500|}}
 +
 +===== 3-oscillateur interne + interaction =====
 +
 +On essaye de faire un oscillateur simple controllé par potentiométre
 +
 +on entre et upload le code (plus bas)
 +
 +puis on suit le schéma ci-joint
 +
 +{{:nomades:tonepotentiometerbasic_bb.jpg?500|}}
 +
 +pour faire ce schéma j'ai utilisé : Fritzing - téléchargement ici : http://fritzing.org/download
 +
 +<code>
 +/*
 +  Pitch follower
 + 
 + Plays a pitch that changes based on a changing analog input
 + 
 + circuit:
 + * 8-ohm speaker on digital pin 9
 + * potentiometer (10Kohms) on analog 3,3V and analog IN 0
 + 
 + created 21 Jan 2010
 + modified 23 Jan 2016
 + by TheNoiser based on Tom Igoe, with suggestion from Michael Flynn
 +
 +This example code is in the public domain.
 + 
 + http://arduino.cc/en/Tutorial/Tone2
 + 
 + */
 +
 +
 +void setup() {
 +  // initialize serial communications (for debugging only):
 +  Serial.begin(9600);
 +}
 +
 +void loop() {
 +  // read the sensor:
 +  int sensorReading = analogRead(A0);
 +  // print the sensor reading so you know its range
 +  Serial.println(sensorReading);
 +  // map the analog input range (in this case, 400 - 1000 from the photoresistor)
 +  // to the output pitch range (120 - 1500Hz)
 +  // change the minimum and maximum input numbers below
 +  // depending on the range your sensor's giving:
 +  int thisPitch = map(sensorReading, 400, 1000, 120, 1500);
 +
 +  // play the pitch:
 +  tone(9, thisPitch, 10);
 +  delay(1);        // delay in between reads for stability
 +}
 +</code>
 +
 +{{:nomades:potardbase.jpg?500|}}
 +
 +
 +
 +,
 + ===== 4-les moteurs =====
 +
 +
 +- ServoMoteurs
 +  
 +Arduino permet de controler directement des moteurs, les premiers sur lesquels nous allons nous pencher sont les servomoteurs, avec une possibilité de rotation de 90, 180 voir 360 degrés selon les modèles. 0 et 1 sont les deux extrêmes. Par exemple, sur un moteur qui tourne a 180°, 0 correspondra à 0°, 0.5 à 90° et 1 à 180°. La vitesse n'est pas changeable. 
 +
 +Hardware :
 +
 +{{:nomades:unseulservo_bb.jpg?500|}}
 +
 +Il suffit d'alimenter le servo en 5v, de relier sa masse et de le brancher sur une sortie Pwm.
 +
 +
 +<Code> 
 +
 +/ Sweep
 +// by BARRAGAN <http://barraganstudio.com> 
 +// This example code is in the public domain.
 +
 +
 +#include <Servo.h> 
 + 
 +Servo myservo;  // create servo object to control a servo 
 +                // a maximum of eight servo objects can be created 
 + 
 +int pos = 0;    // variable to store the servo position 
 + 
 +void setup() 
 +
 +  myservo.attach(6);  // attaches the servo on pin 9 to the servo object 
 +
 + 
 + 
 +void loop() 
 +
 +  for(pos = 0; pos < 180; pos += 1)  // goes from 0 degrees to 180 degrees 
 +  {                                  // in steps of 1 degree 
 +    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
 +    delay(15);                       // waits 15ms for the servo to reach the position 
 +  } 
 +  for(pos = 180; pos>=1; pos-=1)     // goes from 180 degrees to 0 degrees 
 +  {                                
 +    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
 +    delay(15);                       // waits 15ms for the servo to reach the position 
 +  } 
 +
 +
 +</Code> 
 +
 +Il est possible d'utilliser une seule carte Arduino pour contrôler plusieurs moteurs (jusqu'à 3, après il faut une alimentation externe, celle de la carte ne suffit plus).
 +
 +Hardware :{{:nomades:3servos_bb.jpg?500|}}
 +
 +Si l'on veut contrôler plus de moteurs à la fois, il suffit de remplacer l'alimentation de l'arduino par une alimentation 5v plus puissante, l'arduino ne sera plus connectée aux servos que par les ports pwm.
 +
 +
 +
 +
 +
 +
 +Moteurs Courant continu (avec carte MotorShield Arduino)
 +
 +Hardware 
 +
 +:{{:nomades:moteurcc_bb.jpg?500|}}
 +
 +Code : voir en bas du lien http://www.mon-club-elec.fr/pmwiki_mon_club_elec/pmwiki.php?n=MAIN.MATERIELArduinoShieldArduinoMotroShieldV3L298
 +
 +
 +===== 5-arduino et PD =====
 +
 +==== prise en main - étape de départ ====
 +
 +-uploader le firmata pour pouvoir utiliser les entrées et les sorties arduino dans PD
 +
 +<code>
 +#include <Firmata.h>
 +
 +byte analogPin;
 +
 +void analogWriteCallback(byte pin, int value)
 +{
 +  pinMode(pin, OUTPUT);
 +  analogWrite(pin, value);
 +}
 +
 +void setup()
 +{
 +  Firmata.setFirmwareVersion(FIRMATA_MAJOR_VERSION, FIRMATA_MINOR_VERSION);
 +  Firmata.attach(ANALOG_MESSAGE, analogWriteCallback);
 +  Firmata.begin();
 +}
 +
 +void loop()
 +{
 +  while (Firmata.available()) {
 +    Firmata.processInput();
 +  }
 +  for (analogPin = 0; analogPin < TOTAL_ANALOG_PINS; analogPin++) {
 +    Firmata.sendAnalog(analogPin, analogRead(analogPin));
 +  }
 +}
 +</code>
 +
 +
 +
 +{{:nomades:firmatapduino.jpg?500|}}
 +
 +-puis télécharger et utiliser  pd-extended 
 +
 +-ouvrir objet PDUINO dans les exemples
 +
 +-cliquez sur devices pour avoir le port de votre arduino (comport - visible sur le retour d'info PD fenêtre principale
 +
 +-activez le port (example cliquez serial port correpondant sur le port de votre arduino) puis visualisation dans les display plus bas dans le patch
 +
 +-pour la partie connections des capteurs :
 +
 +=== Entrées Entrées Analogiques ===
 +
 +
 +
 +{{:nomades:simpleinteractpd_bb.jpg?500|}}
 +
 +{{:nomades:combinaisonphtovolandpotentio.jpg?300|}}
 +
 +
 +
 +=== Entrées Numériques ===
 +
 +Les entrées numériques se configurent de la même façon, en utilisant [pinMode digital n< pour les ouvrir. 
 +
 +
 +=== les entrées sont instables - comment faire? ===
 +
 +Si les autres entrées "flottent" et sont influencées par l'une d'elles, c'est qu'elles ne sont pas reliées à une source de tension possédant une impédance de sortie suffisamment faible (moins de 100kOhms, moins c'est mieux). Par exemple elles ne sont reliées à rien... Ou alors à une photorésistance qui serait dans l'obscurité (et qui présente alors une résistance de plusieurs MOhms).
 +
 +Donc :
 +
 +- soit tu ne te sers pas des autres entrées, dans ce cas, ou tu les passes en mode "sortie", ou tu les relies à la masse  (attention pas les deux à la fois !). Tu peux aussi les relier à la masse chacune par une résistance de 1kOhm, ce qui sera suffisant pour imposer un "zéro", mais qui évitera de cramer l'étage de sortie si par mégarde tu l'activais...
 +
 +- soit tu te sers de ces sorties mais la source de tension que tu mesures n'a pas assez de "pêche", c-a-d a une impédance de sortie trop élevée (cas d'une photo résistance). Dans ce cas : soit tu ajoute avant chaque entrée un ampli-op monté en suiveur de tension ("buffer"), soit tu ajoute une résistance entre l'entrée et la masse ou le 5V, mais ça perturbera ta mesure ; essaye différentes valeurs (commence par 100kOhms). La solution ampli-op est la meilleure, mais demande un plus de soudures...
 +
 +
 +
 +
 +=== Contrôle des moteurs avec Firmata ===
 +
 +{{:nomades:moteurccfirmata.png?400|}}
 +
 +Prendre l'objet "arduino", et lui envoyer les commandes nécessaires (ouverture port, déclaration entrées / sorties, puis envoi frein, direction et vitesse)
 +
 +__un exemple concret :__
 +
 +**Arduino + motorShieldV3 + moteurVitesseContinu**
 +
 +|number| --> |/ 100|-->|pwm 3 $1(msg)|-->|send $0-arduino(msg)|
 +
 +
 +{{:nomades:20160207_193733.jpg?400 |}}{{:nomades:20160207_193747.jpg?400|}}
 +
 +
 +
 +Moteur pas à pas (stepper)
 +
 +Si on ne veut pas une vitesse de rotation très rapide ni un couple trop important, on peut utiliser le stepper directement sur la carte Arduino : 
 +
 +{{:nomades:stepperdirect_bb.jpg?200|}}
 +
 +Il suffit de déclarer les pins utilisées en sorties (pinModeX output) et d'envoyer une succestion de 0 et de 1. 
 +
 +=== des patchsPD - Modules ===
 +
 +**Module sampling (rec disk) control via capteurs**
 +
 +[[http://apo33.org/pub/puredata/APO/MODULES/MODULE_REC_PLAY_not_automatic_Apo33.pd|download ici]]
 +
 +**module player timeline**
 +
 +[[http://apo33.org/pub/puredata/APO/MODULES/Module_player_Timeline.pd|download ici]]
 +
 +
 +Contrôle DMX via Arduino : 
 +
 +Il faut tout d'abord installer la librairie DMXSimple.
 +
 +Ensuite, suivre les étapes de ce tutoriel :
 +https://www.youtube.com/watch?v=sq33uOGq_l0
 +
 +IMPORTANT : En uploadant Serial To DMX sur votre Arduino, vous aurez un message d'erreur disant qu'il ne trouve pas "wiring.h". Il vous faut aller dans l'emplacement de la librairie, trouver DMX Simple.cpp, l'ouvrir avec un éditeur de texte et remplacer "wiring.h" au début par "Arduino.h".
 +
 +
 +
 +===== 6-Arduino - synth & visual machine =====
 +
 +to develop
 +
 +
 +http://playground.arduino.cc/Main/ArduinoSynth
 +
 +https://hendersonmedia.wordpress.com/2010/11/16/basic-arduino-square-wave-synth/
 +
 +http://www.instructables.com/id/Auduino-Lo-fi-Synth-for-arduino/?ALLSTEPS
 +
 +===== 7-Arduino - Theremine Purr Data simulation =====
 +
 +Nous allons contruire une maquette de Thérémine avec un arduino et deux capteurs de distance qui controleront respectivement les modulations de fréquence( donc le pitch) et le volume du process audio géré par Purr Data
 +
 +Matériel :
 +
 +2 capteurs HC-SR04
 +
 +1 arduino
 +
 +1 bread board
 +
 +Cables de connexion électroniques
 +
 +1 cable USB (pour arduino vers PC)
 +
 +1 PC 
 +
 +Sofware 
 +
 +Purr Data a.k.a pd-l2ork
 +
 +Arduino avec la librairie UltraDistSensor installée (trouvée via le gestinnaire de bibliothèque Arduino)
 +
 +Schémas de connexions :
 +
 +{{:nomades:theremine_pinout.jpg?direct&300|}}
 +
 +
 +Photos :
 +
 +{{:nomades:general.jpg?direct&300|}}
 +
 +
 +
 +{{:nomades:sensor2.jpg?direct&300|}}
 +
 +
 +
 +Code Arduino pour 2 capteurs de distance :
 +
 +
 +<code>
 +
 +#include<UltraDistSensor.h>
 +UltraDistSensor mysensor1;
 +UltraDistSensor mysensor2;
 +//UltraDistSensor mysensor3;
 +int reading1;
 +int reading2;
 +int mysensor1distanceInCmMax=30;
 +int mysensor2distanceInCmMax=20;
 +void setup() {
 +    Serial.begin(9600);
 +    mysensor1.attach(11,12);//Trigger pin , Echo pin
 +    mysensor2.attach(3,2);//Trigger pin , Echo pin
 +}
 +
 +void loop() {
 +     reading1=mysensor1.distanceInCm();
 +      if(reading1 > mysensor1distanceInCmMax){
 +      reading1 = mysensor1distanceInCmMax;
 +      }
 +//    Serial.print("Sensor 1 Reading :");
 +//    Serial.println(reading);
 +//    Serial.println(" CM");
 +   reading2=mysensor2.distanceInCm();
 +      if(reading2 > mysensor2distanceInCmMax){
 +      reading2 = mysensor2distanceInCmMax;
 +      }
 +//    Serial.print("Sensor 2 Reading :");
 +    Serial.print(reading1);
 +    Serial.print(" ");
 +    Serial.println(reading2);
 +    delay(60);
 +}
 +
 +</code>
 +
 +
 +Patches Pure Data :
 +
 +
 +Reception des capteurs dans Purr Data
 +
 +[[http://apo33.org/pub/puredata/theremine/CapteurIn.pd|Partie Capteur]]
 +
 +
 +
 +[[http://apo33.org/pub/puredata/theremine/pd-capteur-sonique.pd|Patch principal + Audio]]
 +
 +===== tips & tricks =====
 +
 +les problémes qui peuvent apparaitre, les petits conseils utiles...
 +
 +==== port & permissions ====
 +
 +Si vous utilisez un systéme libre (Gnu/Linux) comme nous, la premiére fois que vous utilisez arduino pour uploader un script dans la carte, vous aurez sûrement ce probléme :
 +
 +"Arduino IDE error - avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied"
 +
 +en fait votre utilisateur "username" n'a pas les droits de bosser avec la carte, on va les lui donner.
 +
 +ouvrir un terminal et taper les commandes suivantes (mettre votre nom utilisateur à la place de <username>) :
 +
 +$ sudo usermod -a -G dialout <username>
 +
 +$ sudo chmod a+rw /dev/ttyACM0
 +
 +si tout se passe bien vous devriez pouvoir uploader vos scripts.
 +
 +==== calcul de résistances ====
 +
 +http://73s.online.fr/mobile.htm
 +
 +===== arts & arduino =====
 +
 +==== installation, art, interaction ====
 +
 +
 +-Zimoun et ses moteurs : http://www.semageek.com/zimoun-une-oeuvre-dart-avec-138-moteurs-et-des-boules-de-coton/
 +
 +-différents projets artistique utilisant arduino : http://arduinoarts.com/2014/05/9-amazing-projects-where-arduino-art-meet/
 +
 +-projet bourse et tricotage (via arduino) : http://www.thegreekfoundation.com/performing-arts/oiko-nomic-threads
 +
 +-machine interactive avec couteau : https://www.youtube.com/watch?v=t4uMZOcsxxs (5voltscore) & Spaceactive https://www.youtube.com/watch?v=UrMITRkemLg
 +
 +-oeuvres collaborative (Marinos) : https://vimeo.com/40716532
 +
 +-Uki Enter The bionet - Shu Lea Cheang : https://vimeo.com/102143712
 +
 +-sonification wikipedia : http://labomedia.org/oeuvres-interactives/wikikirc-ou-la-sonification-de-wikipedia/
 +
 +-collectif Ukrainien (HP motorisé...etc) : http://www.f18institut.org/f18-institut/f18-robotics.html
 +
 +-des mirroires, des moteurs, des capteurs (galerie style!) : http://www.jeppehein.net/pages/project_id.php?path=works&id=202
 +
 +-lithophone/automatique : https://blog.arduino.cc/2016/01/18/step-inside-a-unique-electromechanical-lithophone/#more-12989
 +
 +-plus de projets audio/arduino/interactif ici : https://blog.arduino.cc/category/music/
 +
 +-install eeg & arduino moteur : https://blog.arduino.cc/2014/06/06/diy-russian-folk-bot-playing-from-eeg/#more-9515
 +
 +-Ecoute urbaine & maps : http://www.echelleinconnue.net/outils/mobio/
 +
 +=== controllers & stuffs ===
 +
 +
 +-drumMachine : https://www.youtube.com/watch?v=b_LLdJ9gqk8
 +
 +-paper piano (tranducInk) - https://www.youtube.com/watch?v=_4cIv6qLaM8
 +
 +-pour Arturo : https://www.youtube.com/watch?v=Ry9Sj-si8Bw (piezo/control)
 +
 +-cheesy matiére qui bouge! https://www.youtube.com/watch?v=RrZMnEqjoT0
 +
 +-controlleur 4 potars (arduino/pd) - https://www.youtube.com/watch?v=j4HbmtghHWs
 +
 +-arduinome : https://www.youtube.com/watch?v=cfF6FNgOK5o
 +
 +-méga stuff raspberry+arduino : https://vimeo.com/116906304
 +
 +-sugarCube (genre monotome) : https://blog.arduino.cc/2014/05/02/sugarcube-a-grid-based-music-controller/#more-9342
 +
 +-mimi le bouquin interactif : http://antonellanonnis.com/?/interactive/TheMusicMathArtandScienceElectronicBook-5/
 +
  
nomades/arduino.txt · Last modified: 2019/12/18 17:29 by 127.0.0.1