HeHe

Ces pages sont une ressource pour des ateliers d'initiation à la programmation des microcontrôleurs et des fondements de l'électronique. Cette ressource est destinée aux artistes et designers. Ce page et sous licence du Créative Commons, vous êtes libre de reproduire, distribuer et communiquer cette page sous la condition de Paternité, Pas d'Utilisation Commerciale et la Partage des Conditions Initiales à l'Identique 2.5 Licence

These pages are a resource to support short Workshops, to teach the basics of 'DIY electronics' and microcontroller programming, to students, artists and designers. This page is licensed under the Creative Commons License, you are free to reproduce, distribute and communicate this page, under the conditions of Attribution-NonCommercial - ShareAlike 2.5 License


* Préparation et Outils: logiciel, matériel et théorie de base
* Connecter la Basic Stamp et écrire une première programme en langage Basic
* Entrées et sorties simple : 0/1 : ON/OFF : 0v/5v
* Entrées et sorties faux analogique: PWM, PULSE, RCTIME: 0 à 5v
* Convertisseur Analogue Digitale (ADC) et convertisseur Digitale Analogique (DAC)
* Comment envoyer ou recevoir une information depuis un ordinateur (protocole MIDI ou RS232 vers Macromedia Director)
* Comment programmer un PIC depuis un PC (à venir)
* Quelques circuits à construire (à venir)
* Liens utiles vers d'autres circuits (à venir)

 


* OUTILS: Matériels, composants, logiciels, fournisseurs et théorie de base

MATÉRIEL ESSENTIEL:

   

BASIC
STAMP2

USB-SERIÉ CONVERTISSEUR
pour mac sans
porte série

BREADBOARD/
SOCKET BOARD
9 PIN (DB9)
CABLE SERIÉ +
CONNECTIQUE SERIÉ

ALIMENTATION
12 - 13,8 VDC
stabilisé

MULTIMÈTRE

 

ET AUSSI ... AUTRES OUTILS
FER À SOUDER, SUPPORT DE FER, SOUDURE, PINCE COUPANTE POUR L'ELECTRONIQUE, PINCE A DÉNUDAGE, PETITE TOURNER VISE,
PISTOLET À COLLE, TRESSE À DESSOUDER, FILS

 

MAGASINS UTILES:

Le contenu de ce page est pour le Basic Stamp 2. Pour trouver une BS2 module en France:

RoboPolis, 107 Bld Beaumarchais PARIS 75003 tel 01 44 78 01 18 (commande en ligne)
Selectronic 11, Place de la Nation PARIS 75011 / Tel: 01 55 25 88 00 (commande en ligne ou dans la boutique)
Liste des vendeurs international de BASIC STAMP sur le site de parallax.com

Pour des boutiques des composants electronique en détail à Paris:

RAM 131 Bld Diderot 75012 / Tel: 01 43 07 62 45
Espace Composant Electronic 66 rue de Montreuil, PARIS 75011 / Tel 01 43 72 30 64
St Ouentin Radio rue st Quentin PARIS 75010 /Tel 01 40 37 70 74

Boutiques en ligne:

Conrad mail order electronics and kits
Farnell pour des professionel: commande uniquement enligne

 

 

COMPOSANTS ÉLÉCTRONIQUES ET LEUR FONCTIONNE:

CONDENSATEURS POLARISÉS
ils stoquent une charge électrique.

(nF ou µF)

(f = Farad)

CONDENSATEURS NON POLARISÉS
pas sensible à la polarité, fait en mylar ou ceramique

nF , µF

(f = Farad)

RESISTANCE
C'est l'aptitude d'un matériau conducteur à s'opposer au passage du courant électrique. Cette composante est utiliser pour modifier le courrant ou le voltage dans une circuit.

Ω, kΩ,

(Ω=OHM)

RESISTANCE VARIABLE
Ceux composants permettent à un utilisateur d'ajuster un courant (rhéostat) ou une tension (potentiomètre).

Ω, kΩ,

(Ω=OHM)

INTERUPTEURS
on/off ; 1/0 ; 0/5v
 
INTERUPTEUR / CAPTEUR D"INCLINISATION
on/off ; 1/0 ; 0/5v
 
LED (LIGHT EMITTING DIODE)
donne une petite lumière

la patte courte est le cathode-
la patte long est l'anode+
DIODE
passer le courant électrique que dans un sens.

(-) <=== (+)
LDR (LIGHT DEPENDANT RESISTOR)
À une resistance qui varie en fonction de la lumière
 

POWER REGULATOR 7805
Transforment du 12V en 5V DC independant et regularisé. Attention à la puissance (Ampères) neccessaire pour votre projet.

 

 

  INPUT 12v /MASSE gnd /OUTPUT 5v
TRANSISTOR et MOSFET
des interupteurs logiques, pour piloter une circuit


Gate / Drain /Source

Collector /Base /Emmitter



LOGICIELS A TÉLÉCHARGER :

BASIC STAMP logiciel de programmation: PC / OSX / LINUX
BASIC STAMP mode d'emploi PDF en anglais (Le texte définatif)
KEYSPAN driver (pour des MAC il faudrait un Keyspan USA19 convertisseur USB/sérié) OSX Windows Linux


 

Liens Indispensables

parallax fabricant du Basic Stamp, outils d'apprentissage et divers circuits électroniques
Michael Field's les fondements du basic stamp et d'électronique
condensateur convertisseur uF, nF, et mF
résistance codes comment lire les résistances

 

 


* CONNEXION POUR LA PROGRAMMATION

 

 

LA TAILLE DE VARIABLES

1 BIT =
0 - 1
0 1 bit
1 NIB =
0 - 15
0000 4 bits
1 BYTE =
0 - 255
00000000 8 bits
1 WORD =
0 - 65535
0000000000000000 16 bits


EXEMPLE D'UNE PROGRAMME:

'Déclarez vos d'entrées et sorties (INPUT / OUTPUT) suivi par la patte
.........input 0
.........output 1

'Déclarez vos constants (CON) suivi par la patte
.........
led CON 1
.........capteur CON 0

'Déclarez vos variables (VAR) suivie pas la taille
.........
monVar VAR BIT

'Instructions à faire une fois au démarrage
.........high led

'la programme principale (boucle)
.........
main:
.........
if capteur = 1 then LightOn
.........if capteur = 0 then LightOff
.........debug ? "salut tous"
.........
goto main

'les opérations secondaires
.........LightOn:
.........led = 1
.........goto main

.........LightOff:
.........led = 0
.........goto main

 


* ENTRÉES ET SORTIES SIMPLE: 0/1 : ON/OFF : 0V/5V


ENTRÉE : UN SIMPLE BOUTON

La résistance de 270 ohms est dans ce circuit seulement pour protéger le BS2 (par exemple, si le bouton étais fermé et la programme a déclaré par hasard P0 est output = 1 on risque à faire sauter le stamp.) Ici, il y n’a aucun risque.

exemple du code:

.........input 0 'declarez patte 0 comme entrée
.........main: 'debut de l'operation
.........if in0 = 1 then faire_ci 'si bouton est fermé aller à l'operation faire_ci
.........if in0 = 0 then faire_ca 'si bouton est ouvert aller à l'operation faire_ca
.........goto main 'retourne au debut de l'operation

.........faire_ci: 'debut de l'operation no2
.........debug ? "frappé"
.........goto main 'retourne au debut de l'operation

.........faire_ca: 'debut de l'operation no 3
.........debug ? "zzzz"
.........goto main 'retourne au debut de l'operation

 

SORTIE : UNE LED (LIGHT EMMITTING DIODE)

Pour allumer une LED il faut une resistance.

Pour calculer la valeur de la resistance: http://led.linear1.org/led.wiz
Il faut savoir le FORWARD VOLTAGE (Vf) de vos LED et le FORWARD CURRENT en Ampères (If)


Exemple: Une LED, If = 10 mA et Vf =2V

Si l'alimentation pour le circuit est 9V le VOLTAGE à travers R1 = 9v - 2v = 7 Volts
Donc, à travers la resistance il y a 10 mA et 7 V. Pour calculer la valeur de la resistance:

R=V/I

OHMS = VOLTS/AMPS or
KILAOHM = VOLTs/MILIAMPS

R = 7/0.01 = 700 OHMS

Si vous voulez les mettre en serié: http://ourworld.compuserve.com/homepages/Bill_Bowden/led.htm

exemple du code:

.........output 0 'declarez patte 0 comme sortie
.........loop: 'debut de l'operation
.........high 0 'allume LED sur patte 0
.........pause 1000 'attends 1 second
.........low 0 'eteigne LED sur patte 0
.........goto loop 'retourne au debut de l'operation

 

SORTIE : PLUSIERS LED, LE TRANSISTOR

Un I/O sur le stamp peut donner 20 milliampères de courrant. Les 8 I/0 peuvent donner un totale de 50 milliampères. Si vous avez besoin de plus, (ex. 8+ LEDs pilotés par le stamp) il faut utiliser des transistors pour piloter un deuxième circuit pour avoir une luminosité maximale.
Également, si vous souhaitez piloter quelque chose à 12V, il vous faut un transistor de puissance ex. un MOSFET.

 


* ENTRÉES ET SORTIES 'FAUX' ANALOGIQUE: RCTIME, PWM, FREQ, PULSE

ENTRÉE : RESISTANCE VARIABLE / BOUTON TOURNANT / CAPTEUR DE LUMIÈRE


Utilisant le command RCTIME en PBASIC, on peut lire une valeur analogique directement, sans recours à un autre circuit intégré.

.........input 0 'declarer patte 0 comme input
.........result var word 'crée une variable pour la valeur
.........loop: 'début du programme
.........high 0
.........pause 1
.........rctime 0,1,result 'rctime patte,state, variable
.........debug ? result 'afficher la variable
.........goto loop 'retourne au début

Vous pouvez remplacer la resistance variable avec un LDR (Light Depandant Resistor) pour faire une capteur de lumière.


SORTIE: PWM (Pulse Width Modulation)

PWM nous permettrons de faire variér une sortie entre 0 et 5 v ( pour fairepar exemple, une variation de lumière ou changer la vitesse d'une moteur).Duty cycle = la proportion de 1s et 0s

PWM, Pin, Duty, Cycles
Duty: le niveau du voltage 0-255
Cycles: la durée du signal 0-255

PWM 1, 100, 40 'Generate PWM on I/O pin 1



SORTIE : SON (avec un piezo ou haute parleurs)


Connectez l'extérieur à la masse, l'intérieur à la patte
 

Un piezo est à la fois un capteur de choque et un haut-parleur. Un côté de la piezo est connecté au I/O de la Basic Stamp, l'autre côté à la masse. Depuis PBasic, on génère du son:

.........' {$STAMP BS2}

.........main:
.........DTMFOUT 0, [0, 1, 2] '0,1,2 délimite les tonalités à jouer (entre 0-15)
.........GOTO main


'Essayer aussi avec la commande:

.........FREQOUT Pin, Période, Freq1 {, Freq2}

Cette commande générée un ou deux tons en sinus onde pour une période spécifié:

• Pin est une variable / constante / expression (0 – 15) délimitant le I/O. Cette patte serra paramétré automatiquement en output.
• Période est une variable / constante / expression (0 - 65535) délimitant la durée des tons.
• Freq1 est une variable / constante / expression (0 – 32767) délimitant la fréquence du premier ton.
• Freq2 est optionnel,pour mélanger un deuxième ton au même temps.

  BS2, BS2e BS2sx BS2p
units in PERIOD 1 ms 0.4 ms .265 ms
units in Freq 1 1 Hz 2.5 Hz 3.77 Hz
Range of Frequency 0 to 32767 Hz 0 to 81.917 kHz 0 to 123.531 kHz

 

 

ENTRÉE: CAPTEUR DE PROXIMITE

(pour la module SRF04 fabrique par Devantech)

Il faut connecter le 5v à une regulateur independant (7805)

code exemple:

.........'{$STAMP BS2}
.........wDist var word 'declare une variable

.........' declare les constants
.........TRIGGER con 10 'connect Trigger to pin 10
.........ECHO con 9 'connect Echo to pin 9
.........convfac con 01 'convfac

.........'commence la programme
.........
main:
.........gosub sr_sonar
.........freqout 7, 5, wDist, wDist
.........goto main

.........sr_sonar:
.........pulsout TRIGGER,5 ' 10us init pulse
.........output TRIGGER 'dummy command (delay)
.........pulsin echo,1,wdist
.........rctime ECHO,1,wDist 'measure echo time
.........wDist=wDist/convfac
.........pause 10
.........return

 


* Convertisseur Analogue Digitale (ADC) et convertisseur Digitale Analogique (DAC)

 

TLC549 8 bit ADC (Analogue to digital convertor)

SHIFTIN data_pin, clock_pin, format, variable

0 = MSBPRE
1 = LSBPRE
2 = MSBPOST
3 = LSBPOST

 

code exemple:

.........dataIN var byte 'incoming data

.........loop:
.........low 10 'CS est bas active
.........SHIFTIN 9,8,msbpre, [dataIN] 'prend le donné
.........debug ? dataIN 'affichher
.........pause 200 'pas trop vite
.........goto loop

 

 

MAX550 8bit DAC (Digital to Analogue Convertor)

 
   

 

 

 


* LA COMMUNICATION VERS UN ORDINATEUR en RS232:

Pour envoyer une variable (8bits) entre un ordinateur et une Basic Stamp, via RS323, utilisant COM - porte série ou USB convertisseur. RS232 est un protocole asynchrone (comme MIDI RS485 et TCP-IP). Chaque côté à son propre horloge pour compter les un et les zéros.

Du côté PC et Basic Stamp, il faut délimiter la vitesse de la communication (en anglais dit 'baud rate'). On utilise le standard: 9600 bits /second 8-bit no-parity inverted. (en langage PBasic 9600 bits/sec = 16468). Page 279 du guide. C'est une vitesse d'environ 8 bits (ou la lettre "A") par milliseconde.

 

LE PBASIC:

'POUR TRANSMET UNE VALEUR AU PC: dans ce code PIN 1 est connecté au TX 'du connecteur DB9

.........OUTPUT 1

.........main: 'label
.........SEROUT 1, 16468, ["salut"] 'envoyer une byte
.........goto main

'POUR LIRE UNE VALEUR VENANT DU PC: dans ce code PIN 0 est connecté au RX du connecteur DB9

.........INPUT 0
.........switch var byte

.........switch = 255

.........main:
.........SERIN 0,16468, [switch]
.........goto main

Le PC peut lire la donnée depuis Macromedia Director et le Serial Xtra de Geoff Smith, MAX MSP ou Pure Data.

 

 

LINGO EXEMPLE CODE:

 

__moviescript__

global theXtra, theXtraName, theXtraFilename

on startmovie
--SEE SAMPLE MOVIE AT PHYSCIAL BITS TO GET A LICENSE OR DEMO VERSION
end

on LoadXtraFileIfNecessary
if scanXtraList() = false then
if the platform contains "Macintosh" then
if ( getProp(the environment, #osVersion) contains "10." ) then
set theXtraFilename to theXtraName&".osx"
else
set theXtraFilename to theXtraName&".os9"
end if
else
set theXtraFilename to theXtraName&".x32"
end if
-- So it is not open
openxlib the pathname&theXtraFilename
end if
end

on openThePort
global theports, keyspan
theports = string(FindPorts())
keyspanstart = offset("/dev/cu.USA19Q", theports) --USA19
keyspanend = offset("1.1", theports)
keyspan = chars(theports, keyspanstart, keyspanend +2)
theXtra.OpenPort(keyspan)
theXtra.setProtocol(9600, "n", 8, 1)
end

on stopMovie
if objectP( theXtra ) then
theXtra.ClosePort()
set theXtra to 0
end if
closexlib
clearglobals
end

 

__passthroughframescript__

global theXtra

on exitFrame me
if theXtra.IsPortOpen() = 0 then openThePort
if theXtra.IsPortOpen() = 1 then go the frame + 1
end

 

__exitframescript__

global theXtra, prox

on exitframe
readStamp
go the frame
end

on ReadStamp
if theXtra.CharsAvailable( ) > 0 then
prox = theXtra.ReadNumber()
end if
end