Ligne 3 : |
Ligne 3 : |
| == Firmata? Kaséko? == | | == Firmata? Kaséko? == |
| | | |
− | Firmata ([http://firmata.org Firmata.org]) est un protocole permettant à un ordinateur de communiquer avec des microcontroleurs. Il est donc possible de controler '''simplement''' un Arduino depuis un Rapsberry en utilisant Firmata. | + | Firmata ([http://firmata.org Firmata.org]) est un protocole permettant à un ordinateur de communiquer avec des microcontroleurs. Il est donc possible de contrôler '''simplement''' un Arduino depuis un ordinateur ou Raspberry en utilisant Firmata. |
| | | |
| Il existe une implémentation de Firmata en Python... que quoi permettre à notre Pi de contrôler facilement votre Arduino. | | Il existe une implémentation de Firmata en Python... que quoi permettre à notre Pi de contrôler facilement votre Arduino. |
Ligne 44 : |
Ligne 44 : |
| === Téléverser Firmata via GPIO du PI === | | === Téléverser Firmata via GPIO du PI === |
| Il est également possible d'utiliser la connexion série matérielle du Raspberry Pi pour téléverser le Croquis/Sketch Firmata sur le RPi-ShieldBridge. | | Il est également possible d'utiliser la connexion série matérielle du Raspberry Pi pour téléverser le Croquis/Sketch Firmata sur le RPi-ShieldBridge. |
| + | |
| + | [[Fichier:RPI-ShieldBridge-Intro.jpg|450px]] |
| | | |
| Voyez aussi notre section [[RPI-ShieldBridge-ArduinoIDE|Installer Arduino IDE sur Raspberry Pi]] pour les instructions ci-dessous | | Voyez aussi notre section [[RPI-ShieldBridge-ArduinoIDE|Installer Arduino IDE sur Raspberry Pi]] pour les instructions ci-dessous |
Ligne 67 : |
Ligne 69 : |
| * Via UART (port série matériel du Raspberry Pi accessible sur le GPIO) | | * Via UART (port série matériel du Raspberry Pi accessible sur le GPIO) |
| | | |
− | === Connexion USB (convertisseur FTDI) === | + | === Connexion USB (via convertisseur FTDI) === |
− | * Put the RPi-ShieldBridge on the Raspberry Pi. | + | * Placer le RPi-ShieldBridge sur votre Raspberry Pi. |
− | * Connect a FTDI adapter (5V) to the USB port of the Raspberry Pi and FTDI connector on the RPi-ShieldBridge. | + | * Connectez l'adaptateur FTDI (5V) sur le port USB du Raspberry Pi et enfichez l'adaptateur FTDI sur le connecteur FTDI du RPi-ShieldBridge. |
− | * Device name: /dev/ttyUSB0 or /dev/ttyACM0 | + | * Le nom du périphérique USB sera /dev/ttyUSB0 (si vous avez défini le lien symbolique) ou /dev/ttyACM0 |
| + | |
| + | '''Note de MCHobby:'''<br /> |
| + | Etant donné que le RPi-ShieldBridge est connecté sur le GPIO, ce dernier est alimenté par l'intermédiaire du +5V du GPIO. Dans pareil cas, il n'est pas nécessaire d'alimenter le RPi-ShieldBridge par l'intermédiaire du connecteur FTDI. Les deux potentiels devrait être idéalement de pile à 5V. Cependant, dans la vie réelle, vous pourriez avoir deux tensions légèrements différentes (ex: 5.00v au GPIO et 4.95v causé par une perte sur le fils USB) provoquant une circulation de courant entre les deux potentiels. Pas franchement souhaitable. |
| + | |
| + | Dans ce cas, nous conseillons de ne pas ponter le cavalier JVCC (ou ne pas raccorder la broche VCC du connecteur FTDI). |
| | | |
| === Connexion UART (port série matériel) === | | === Connexion UART (port série matériel) === |
Ligne 84 : |
Ligne 91 : |
| | | |
| Nous allons pouvoir nous attaquer au reste. | | Nous allons pouvoir nous attaquer au reste. |
| + | === Installer pySerial, pyFirmata et pip === |
| + | Installer: |
| + | * [http://pyserial.sourceforge.net/ pySerial] en utilisant apt-get. |
| + | * [https://github.com/tino/pyFirmata pyFirmata] en utilisant [http://www.pip-installer.org/en/latest/installing.html pip] |
| + | |
| + | <nowiki>$ sudo apt-get update |
| + | $ sudo apt-get install python-serial |
| + | $ sudo pip install pyfirmata</nowiki> |
| + | |
| + | === Script de test === |
| + | |
| + | Créer le script firmatatest.pu |
| + | |
| + | nano firmatatest.py |
| + | |
| + | et tapez le script suivant: |
| + | |
| + | <nowiki>#!/usr/bin/env python |
| + | # -*- coding: latin-1 -*- |
| + | |
| + | import time |
| + | import RPi.GPIO as GPIO |
| + | import pyfirmata |
| + | GPIO.setmode(GPIO.BOARD) |
| + | GPIO.setup(12, GPIO.OUT) # GPIO18 (broche 12) en mode sortie (OUTPUT) |
| + | GPIO.output(12, GPIO.LOW) # GPIO18 LOW (niveau bas) -> désactivé du Reset Arduino |
| + | # Démarrer la connection avec Arduino UNO |
| + | # USB: /dev/ttyUSB0 ou /dev/ttyACM0 |
| + | # UART: /dev/ttyAMA0 |
| + | board = pyfirmata.Arduino('/dev/ttyUSB0') |
| + | board.digital[13].write(1) # activer la LED sur la broche 13 |
| + | time.sleep(3) # delai de 3s |
| + | board.digital[13].write(0) # Eteindre la LED |
| + | time.sleep(3) # delai de 3s |
| + | board.exit()</nowiki> |
| + | |
| + | === Exécuter le script === |
| + | |
| + | pour exécuter le script, taper simplement la commande suivante dans un terminal. |
| + | |
| + | $ python firmatatest.py |
| + | |
| + | == Contrôle avec Node.JS == |
| + | |
| + | === Installation === |
| + | Pour utiliser Firmata et Node.js, vous devrez installer: |
| + | * [http://nodejs.org/ Node] |
| + | * [https://npmjs.org/package/firmata La bibliothèque Firmata] pour Node.js |
| + | * [https://npmjs.org/package/rpio|La bibliothèque rpio] pour Node.js |
| + | |
| + | <nowiki>$ sudo mkdir /opt/node |
| + | $ wget http://nodejs.org/dist/v0.10.12/node-v0.10.12-linux-arm-pi.tar.gz |
| + | $ tar zxf node-v0.10.12-linux-arm-pi.tar.gz |
| + | $ sudo cp -r node-v0.10.12-linux-arm-pi/* /opt/node |
| + | $ sudo nano /etc/profile |
| + | |
| + | # add these lines before *export PATH* |
| + | PATH="$PATH:/opt/node/bin" |
| + | |
| + | $ sudo /opt/node/bin/npm install -g firmata |
| + | |
| + | $ sudo /opt/node/bin/npm install -g rpio</nowiki> |
| + | |
| + | === Créer le script firmatatest.js === |
| + | |
| + | Créer le fichier firmatatest.js en utilisant la commande |
| + | |
| + | nano firmatatest.js |
| + | |
| + | Et y copier le code suivant: |
| + | |
| + | <nowiki>var rpio = require('rpio'); |
| + | var firmata = require('firmata'); |
| + | |
| + | // GPIO18 low = Niveau bas -> Reset Arduino désactivé |
| + | rpio.setOutput(12); |
| + | rpio.write(12, rpio.LOW); |
| + | |
| + | // Démarrer une connexion avec Arduino |
| + | // USB: /dev/ttyUSB0 ou /dev/ttyACM0 (via convertisseur FTDI) |
| + | // UART: /dev/ttyAMA0 (via GPIO) |
| + | var board = new firmata.Board('/dev/ttyUSB0', function(err) |
| + | { |
| + | if(err) |
| + | { |
| + | console.log(err); |
| + | return; |
| + | } |
| + | console.log('connexion etablie'); |
| + | board.pinMode(13, board.MODES.OUTPUT); |
| + | // Allumer la LED |
| + | board.digitalWrite(13, board.HIGH); |
| + | // eteindre la LED après 3s |
| + | setTimeout(function() |
| + | { |
| + | board.digitalWrite(13, board.LOW); |
| + | process.exit(0); |
| + | }, 3000); |
| + | });</nowiki> |
| + | |
| + | === Exécuter le script === |
| | | |
− | {{traduction}}
| + | Taper la commande suivante dans un terminal pour exécuter le script |
| | | |
| + | $ sudo node firmatatest.js |
| {{RPI-ShieldBridge-TRAILER}} | | {{RPI-ShieldBridge-TRAILER}} |