Les LEDs faire les mêmes choses de base qu’ils ont fait dans mon dernier (en projet), mais maintenant j’ai éliminé le raccordement de fil de PC, donc je peux enfin avoir un discours activé Arduino partout atteint mon réseau sans fil.
Voici la vidéo de YouTube du projet :
J’ai utilisé un module WiFly de Roving Networks (https://www.sparkfun.com/products/10822) parce que j’ai lu quelque part que cela fonctionnerait avec le bouclier de XBee j’ai eu (https://www.sparkfun.com/products/9976). Malheureusement, j’ai découvert la manière dure qu’une diode entre l’Arduino TX et le RX WiFly bloquait le signal. J’ai dû arracher la diode et ajouter un diviseur de tension entre les broches TX/RX de l’Arduino et le module WiFly parce que la broche RX de la WiFly est tolérant 3.3V et le TX Arduino travaille à 5V. Il ne semble pas être la meilleure approche, mais cela a fonctionné et j’ai été en mesure d’envoyer et de recevoir des données du module. J’ai découvert que Sparkfun publié une nouvelle version du bouclier XBee (https://www.sparkfun.com/products/10854) et que le levier de vitesses niveau diode a été remplacé par un levier de vitesses niveau MOSFET plus robuste. Cela devrait résoudre le problème de la diode.
Selon moi, qu'un des modules sans fil suivants pourrait être utilisé. Il suffit de trouver à qui l’un d’eux meilleures correspond à vos besoins :
- http://arduino.cc/en/Main/ArduinoWiFiShield
- http://www.rovingnetworks.com/products/RN171XV
- https://www.sparkfun.com/pages/xbee_guide (vous aurez besoin d’un Dongle de Explorer XBee pour connecter le XBee à votre ordinateur : https://www.sparkfun.com/products/9819)
-Nombreux autres Arduino WiFi de boucliers peuvent être trouvés ici : http://postscapes.com/arduino-wifi
Le processus d’installation du module WiFly peut être difficile, donc j’ajoute également un tutoriel étape par étape sur la façon de le faire. Dans mon cas, j’utilise un point d’accès régulier/routeur de D-Link pour mettre en place mon réseau sans fil privé. Ce tutoriel devrait fonctionner avec n’importe quel point d’accès là-bas.
1. déconnectez votre ordinateur depuis n’importe quel réseau sans fil
2. configurer la broche de GPIO9 du module WiFly à vif (3.3V) au pouvoir. Cela permet le mode adhoc sur le module. J’ai utilisé le 3.3V source à partir de la carte Arduino et un cavalier ordinaire. Juste après la puissance vers le haut, retirer le fil et suivez les étapes suivantes. Module fiche technique : http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Wireless/WiFi/WiFly-RN-XV-DS.pdf
3. sur votre ordinateur, recherchez les réseaux disponibles et connectez-vous au réseau WiFly module (WiFly-GSX-XX). Cela peut prendre quelques secondes avant que l’ordinateur obtient une adresse IP du module.
4. Téléchargez et exécutez un logiciel gratuit appelé TeraTerm (http://www.rovingnetworks.com/resources/download/86/Teraterm)
5. Entrez les paramètres suivants et cliquez sur OK: adresse IP : 169.254.1.1 ; Port TCP : 2000 ; Service : Telnet ; Protocole : IPv4
6. vous devriez voir le mot "* Bonjour * » sur l’écran.
7. tapez $$$ pour entrer en mode de commande
8. type de scan et appuyez sur entrée pour rechercher les points d’accès disponibles
9. Si votre réseau utilise l’authentification WPA, utilisez la commande définir l’expression wlan pour définir le mot de passe. Pour le WEP, définissez la clé à l’aide de la valeur clé wlan commande. Mon réseau est WEP sécurisé, donc j’ai dû utiliser la deuxième commande. Le problème est que la clé doit être saisie codé ASCII/HEX et il doit avoir exactement 26 caractères. J’ai trouvé cette page qui convertit le texte en ASCII/HEX : http://www.string-functions.com/string-hex.aspx.
10. tapez régler WiFi ssid , où XXXX est le SSID de votre réseau (Regardez les résultats de l’étape 8)
11. tapez Enregistrer
12. type de jointure (Regardez les résultats de l’étape 8)
13. le WiFly-GSX-XX disparaîtra de la liste de réseau windows
14. Fermez Teraterm
15. reconnectez votre ordinateur à votre réseau local sans fil
16. Éteignez votre carte Arduino et de retour sur
17. Notez le numéro d’IP attribué au module WiFly par votre point d’accès (habituellement, vous pouvez trouver cette info sur la page DHCP access point)
18. open Teratem en utilisant la nouvelle adresse IP et les autres paramètres de l’étape 5
19. tapez $$$ pour entrer en mode de commande
20. type set comm fermer 0 et appuyez sur entrée
21. type set comm ouvrir 0 et appuyez sur entrée
22. type comm 0 distants de la valeur et appuyez sur entrée
23. type définir comm taille 1460 et appuyez sur entrée
24. type régler heure comm 1000 et appuyez sur entrée
25. type comm baud 115200 la valeur et appuyez sur entrée (la même vitesse de transmission j’ai utilisé dans mon croquis)
26. type Enregistrer et appuyez sur entrée
27. tapez exit et appuyez sur entrée
28. Fermez Teraterm
Maintenant votre module WiFly devrait être en mesure de communiquer avec BitVoicer et votre PC. Manuel de l’utilisateur WiFly peut être téléchargé ici : http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Wireless/WiFi/WiFly-RN-UM.pdf
Il s’agit de l’esquisse que j’ai utilisé pour contrôler les LEDs, de capturer l’audio et d’interagir avec BitVoicer :
#include < BitVoicer11.h >
Instancie la classe BitVoicerSerial True si magasins l’outil de Calibration de Streaming Audio void setup() void loop() Cette fonction s’exécute chaque fois que des données série sont disponibles Effectue les modifications LED selon la valeur en
BitVoicerSerial bvSerial = BitVoicerSerial() ;
est en cours d’exécution
sampleTest booléen = false ;
Stocke le type de données récupéré par GetData
le type de données Byte = 0 ;
Met en place les goupilles et les variables par défaut
pinR int = 3 ;
int pinY = 5 ;
pinG int = 6 ;
Éclairement int = 0 ;
{
Définit la référence analogique externe (broche AREF)
AVERTISSEMENT!!! Si quelque chose est connectée à la broche AREF,
Cette fonction doit être appelée en premier. Dans le cas contraire, il sera
endommager le jury.
bvSerial.setAnalogReference(BV_EXTERNAL) ;
Met en place le microcontrôleur d’effectuer plus rapidement des lectures analogiques
sur l’axe spécifié
bvSerial.setAudioInput(0) ;
Communication série commence à 115200 bps
Serial.Begin(115200) ;
Met en place le pinModes
pinMode (pinR, sortie) ;
pinMode (pinY, sortie) ;
pinMode (pinG, sortie) ;
}
{
Capture audio et l’envoie à BitVoicer si l’Audio
Outil de Calibration de streaming est en cours d’exécution
Si (sampleTest == true)
{
La valeur passée à la fonction est à la fois
(en microsecondes) que la fonction doit attendre avant
effectuer la lecture. Il sert à réaliser sur
8000 lectures par seconde.
bvSerial.processAudio(46) ;
}
Capture audio et l’envoie à BitVoicer si le discours
Le moteur de reconnaissance est en cours d’exécution
Si (bvSerial.engineRunning)
{
La valeur passée à la fonction est à la fois
(en microsecondes) que la fonction doit attendre avant
effectuer la lecture. Il sert à réaliser sur
8000 lectures par seconde.
bvSerial.processAudio(46) ;
}
}
dans la série tampon après une boucle
Sub serialEvent()
{
Lit la mémoire tampon de série et stocke le type de données reçues
dataType = bvSerial.getData() ;
Modifie la valeur de sampleTest si les données reçues a été
la commande d’échantillonnage de marche/arrêt
Si (dataType == BV_COMMAND)
sampleTest = bvSerial.cmdData ;
Signaux moteur de BitVoicer de reconnaissance vocale pour commencer
écouter le flux audio après le statut d’engineRunning
a été reçue
Si (dataType == BV_STATUS & & bvSerial.engineRunning == true)
bvSerial.startStopListening() ;
Vérifie si le type de données est le même que celui de la
Schéma de la voix
Si (dataType == BV_STR)
setLEDs() ;
}
bvSerial.strData
Sub setLEDs()
{
Si (bvSerial.strData == « wake »)
{
digitalWrite (pinR, faible) ;
digitalWrite (pinY, faible) ;
digitalWrite (pinG, faible) ;
digitalWrite (pinR, HIGH) ;
digitalWrite (pinY, élevé) ;
digitalWrite (pinG, HIGH) ;
Delay(200) ;
digitalWrite (pinR, faible) ;
digitalWrite (pinY, faible) ;
digitalWrite (pinG, faible) ;
Delay(200) ;
digitalWrite (pinR, HIGH) ;
digitalWrite (pinY, élevé) ;
digitalWrite (pinG, HIGH) ;
Delay(200) ;
digitalWrite (pinR, faible) ;
digitalWrite (pinY, faible) ;
digitalWrite (pinG, faible) ;
Delay(200) ;
digitalWrite (pinR, HIGH) ;
digitalWrite (pinY, élevé) ;
digitalWrite (pinG, HIGH) ;
Delay(200) ;
digitalWrite (pinR, faible) ;
digitalWrite (pinY, faible) ;
digitalWrite (pinG, faible) ;
Éclairement = 0 ;
}
ElseIf (bvSerial.strData == « veille »)
{
digitalWrite (pinR, faible) ;
digitalWrite (pinY, faible) ;
digitalWrite (pinG, faible) ;
digitalWrite (pinR, HIGH) ;
digitalWrite (pinY, élevé) ;
digitalWrite (pinG, HIGH) ;
Delay(200) ;
digitalWrite (pinR, faible) ;
digitalWrite (pinY, faible) ;
digitalWrite (pinG, faible) ;
Delay(200) ;
digitalWrite (pinR, HIGH) ;
digitalWrite (pinY, élevé) ;
digitalWrite (pinG, HIGH) ;
Delay(200) ;
digitalWrite (pinR, faible) ;
digitalWrite (pinY, faible) ;
digitalWrite (pinG, faible) ;
Éclairement = 0 ;
}
ElseIf (bvSerial.strData == « RH »)
{
digitalWrite (pinR, HIGH) ;
Éclairement = 255 ;
}
ElseIf (bvSerial.strData == « RL »)
{
digitalWrite (pinR, faible) ;
Éclairement = 0 ;
}
ElseIf (bvSerial.strData == « YH »)
{
digitalWrite (pinY, élevé) ;
Éclairement = 255 ;
}
ElseIf (bvSerial.strData == « YL »)
{
digitalWrite (pinY, faible) ;
Éclairement = 0 ;
}
ElseIf (bvSerial.strData == « GH »)
{
digitalWrite (pinG, HIGH) ;
Éclairement = 255 ;
}
ElseIf (bvSerial.strData == « GL »)
{
digitalWrite (pinG, faible) ;
Éclairement = 0 ;
}
ElseIf (bvSerial.strData == « ALLON »)
{
digitalWrite (pinR, HIGH) ;
digitalWrite (pinY, élevé) ;
digitalWrite (pinG, HIGH) ;
Éclairement = 255 ;
}
ElseIf (bvSerial.strData == « ALLOFF »)
{
digitalWrite (pinR, faible) ;
digitalWrite (pinY, faible) ;
digitalWrite (pinG, faible) ;
Éclairement = 0 ;
}
ElseIf (bvSerial.strData == « plus clair »)
{
Si (éclairement < 255)
{
Éclairement += 85 ;
analogWrite (pinR, éclairement) ;
analogWrite (pinY, éclairement) ;
analogWrite (pinG, éclairement) ;
}
}
ElseIf (bvSerial.strData == « sombre »)
{
Si (éclairement > 0)
{
Éclairement-= 85 ;
analogWrite (pinR, éclairement) ;
analogWrite (pinY, éclairement) ;
analogWrite (pinG, éclairement) ;
}
}
d’autre
{
bvSerial.startStopListening() ;
bvSerial.sendToBV ("ERROR:" + bvSerial.strData) ;
bvSerial.startStopListening() ;
}
}
Le schéma de voix de BitVocier j’ai utilisé peut être téléchargé ici : http://www.justbuss.xpg.com.br/BitVoicerTest3.zip
Si vous avez des questions concernant ce projet, veuillez le signaler ici, pour tout le monde puisse lire la réponse.