Étape 2: Programmer l’Arduino : émetteur
L’émetteur de l’Arduino a été programmé afin que lorsqu’un ou plusieurs des commutateurs connecté à l’e/s numériques, 2-13 a été pressé qu’une certaine lettre de l’alphabet serait transmises sans fil au fil de la série. Par exemple, il passer 1 devait être éteint, la lettre « a » a été envoyé sans fil au fil de la série. Commutateur 1 devait être sur la lettre « b » était envoie sans fil au fil de la série. Si le commutateur 2 devait être éteint, la lettre « c » a été sans fil envoyée au cours de la série. Si le commutateur 2 devait être actionné la lettre « d » a été envoyée. Un exemple de toute la transmission série de 12 commutateurs peut être vu ci-dessous :
• Exemple 1: interrupteur 1 et 3 sont fermés, tous les autres interrupteurs sont ouverts
o « bcfgikmoqsuw »
• Exemple 2: commutateur 2, 3 et 5 sont fermés, et tous les autres interrupteurs sont ouverts
o « adfgjkmoqsuw »
Voici la répartition de la façon dont l’émetteur Arduino a été programmé.
1. Retirez le bouclier de Proto de l’Arduino que vous choisissez comme l’émetteur. Le microprocesseur ATMEGA devrait être dans la carte Arduino.
2. Télécharger le programme Arduino sur le site d’Arduino (www.arduino.cc)
3. Brancher l’Arduino à un ordinateur via le câble USB.
4. Ouvrez le logiciel Arduino sur votre ordinateur
5. Sélectionnez Outils -> Serial Port -> et puis sélectionnez le port COM qui fait référence à votre carte Arduino. C’est généralement le premier port COM dans la liste.
6. Copiez et collez le code suivant dans la fenêtre de code Arduino. Notez que ce code est pour transmission à un débit de 19200 bauds. Si vous avez besoin de transmettre, à une vitesse de transmission différents que partout dans le code il est dit 19200, changez-le à votre vitesse de transmission désiré.
Ce programme envoie des informations d’une radio de MaxStream XBee.
hors série est sur le port 1
série en est sur le port 0
une entrée numérique est sur les ports 2 à 13
int switchPin2 = 2 ;
int switchPin3 = 3 ;
int switchPin4 = 4 ;
int switchPin5 = 5 ;
int switchPin6 = 6 ;
int switchPin7 = 7 ;
int switchPin8 = 8 ;
int switchPin9 = 9 ;
int switchPin10 = 10 ;
int switchPin11 = 11 ;
int switchPin12 = 12 ;
int switchPin13 = 13 ;
un octet d’envoyer des données :
char thisByte2 = 0 ;
char thisByte3 = 0 ;
char thisByte4 = 0 ;
char thisByte5 = 0 ;
char thisByte6 = 0 ;
char thisByte7 = 0 ;
char thisByte8 = 0 ;
char thisByte9 = 0 ;
char thisByte10 = 0 ;
char thisByte11 = 0 ;
char thisByte12 = 0 ;
char thisByte13 = 0 ;
annuler le programme d’installation () {}
défini convenablement les broches d’entrée et de sortie
pinMode (switchPin2, entrée) ;
pinMode (switchPin3, entrée) ;
pinMode (switchPin4, entrée) ;
pinMode (switchPin5, entrée) ;
pinMode (switchPin6, entrée) ;
pinMode (switchPin7, entrée) ;
pinMode (switchPin8, entrée) ;
pinMode (switchPin9, entrée) ;
pinMode (switchPin10, entrée) ;
pinMode (switchPin11, entrée) ;
pinMode (switchPin12, entrée) ;
pinMode (switchPin13, entrée) ;
Démarrer la connexion série avec 19200-8-n-1-true (non-inversé) :
Serial.Begin(19200) ;
pour une raison quelconque, il semble pour aider à envoyer un caractère arbitraire tout d’abord
puis mettez en pause pour le temps de garde avant de demander le mode commande
Serial.Print("X") ;
Delay(1100) ;
mettre le XBee en mode commande
Serial.Print("+++") ;
Delay(1100) ;
attendre une réponse de le XBee pour 2000 ms, ou commencer
avec le programme d’installation si aucune réponse valide n’est
Si (returnedOK() == ' t ') {}
Si OK a été reçue, puis continuer
}
else {}
Setup() ; dans le cas contraire, revenir en arrière et recommencez le programme d’installation
}
définir le PAN (réseau personnel) ID nombre
Cet exemple utilise 0x3330, mais vous aurez envie de choisir votre propre
nombre hexadécimal unique entre 0 x 0 et 0xFFFE
(Notez la virgule à la fin de la commande qui indique qu’une autre commande suivra)
Serial.Print("ATID3330,") ;
définir la Destination haut sur 0 x 0
pour sélectionner 16 bit mode d’adressage. Ces adresses peuvent
être affecté et changé en envoyant des commandes d’un microcontrôleur
Serial.Print("DH0,") ;
définir la Destination Low (adresse de 16 bits)
Cet exemple utilise 0 x 0 pour envoyer et 0 x 1 pour recevoir, mais vous aurez
pour choisir vos propres numéros hexadécimaux entre 0 x 0 et 0xFFFE
Serial.Print("DL1,") ;
quitter le mode commande (Notez que nous utilisons Serial.printLN ici pour délivrer un saut de ligne qui termine la séquence de commandes)
Serial.println("CN") ;
les commandes précédentes peuvent également être envoyés sur une seule ligne comme ceci, en utilisant un seul au commandement par des virgules :
Serial.println("ATID3330,DH0,DL1,CN") ;
la ligne de commande qui précède pourrait également être envoyée comme des commandes séparées, publie de nouveau la commande :
Serial.println("ATID3330") ;
Serial.println("ATDH0") ;
Serial.println("ATDL1") ;
Serial.println("ATCN") ;
attendre une réponse de le XBee pour 2000 ms, ou commencer
avec le programme d’installation si aucune réponse valide n’est
Si (returnedOK() == ' t ') {}
Si OK a été reçue, puis continuer
}
else {}
Setup() ; dans le cas contraire, revenir en arrière et recommencez le programme d’installation
}
}
void loop () {}
lire l’interrupteur :
thisByte2 = digitalRead(switchPin2) ;
convertir en une valeur ASCII lisible, envoyez-le sur le port série :
Delay(20) ;
Si (thisByte2 == 0) {}
thisByte2 = « a » ; }
Si (thisByte2 == 1) {}
thisByte2 = "b";}
Serial.Print(thisByte2) ;
thisByte3 = digitalRead(switchPin3) ;
Delay(20) ;
Si (thisByte3 == 0) {}
thisByte3 = « c » ; }
Si (thisByte3 == 1) {}
thisByte3 = a ';}
Serial.Print(thisByte3) ;
thisByte4 = digitalRead(switchPin4) ;
Delay(20) ;
Si (thisByte4 == 0) {}
thisByte4 = « e » ; }
Si (thisByte4 == 1) {}
thisByte4 = "f";}
Serial.Print(thisByte4) ;
thisByte5 = digitalRead(switchPin5) ;
Delay(20) ;
Si (thisByte5 == 0) {}
thisByte5 = « g » ; }
Si (thisByte5 == 1) {}
thisByte5 = "h";}
Serial.Print(thisByte5) ;
thisByte6 = digitalRead(switchPin6) ;
Delay(20) ;
Si (thisByte6 == 0) {}
thisByte6 = « i » ; }
Si (thisByte6 == 1) {}
thisByte6 = "j";}
Serial.Print(thisByte6) ;
thisByte7 = digitalRead(switchPin7) ;
Delay(20) ;
Si (thisByte7 == 0) {}
thisByte7 = « k » ; }
Si (thisByte7 == 1) {}
thisByte7 = "l";}
Serial.Print(thisByte7) ;
thisByte8 = digitalRead(switchPin8) ;
Delay(20) ;
Si (thisByte8 == 0) {}
thisByte8 = am' ; }
Si (thisByte8 == 1) {}
thisByte8 = ' n ";}
Serial.Print(thisByte8) ;
thisByte9 = digitalRead(switchPin9) ;
Delay(20) ;
Si (thisByte9 == 0) {}
thisByte9 = ' o ' ; }
Si (thisByte9 == 1) {}
thisByte9 = "p";}
Serial.Print(thisByte9) ;
thisByte10 = digitalRead(switchPin10) ;
Delay(20) ;
Si (thisByte10 == 0) {}
thisByte10 = « q » ; }
Si (thisByte10 == 1) {}
thisByte10 = "r";}
Serial.Print(thisByte10) ;
thisByte11 = digitalRead(switchPin11) ;
Delay(20) ;
Si (thisByte11 == 0) {}
thisByte11 = de ' ; }
Si (thisByte11 == 1) {}
thisByte11 = ' t ';}
Serial.Print(thisByte11) ;
thisByte12 = digitalRead(switchPin12) ;
Delay(20) ;
Si (thisByte12 == 0) {}
thisByte12 = « u » ; }
Si (thisByte12 == 1) {}
thisByte12 = 'v';}
Serial.Print(thisByte12) ;
thisByte13 = digitalRead(switchPin13) ;
Delay(20) ;
Si (thisByte13 == 0) {}
thisByte13 = « w » ; }
Si (thisByte13 == 1) {}
thisByte13 = "x";}
Serial.Print(thisByte13) ;
}
char returnedOK () {}
Cette fonction vérifie la réponse sur le port série pour voir si c’était un « OK » ou non
char incomingChar [3] ;
char okString [] = "OK" ;
char de résultat = ' n ' ;
int startTime = millis() ;
tandis que (millis() - startTime < 2000 & & résultat == ' n ') {/ / utiliser un délai d’attente de 10 secondes
Si (Serial.available() > 1) {}
lire trois octets entrants qui doivent être « O », « K » et un saut de ligne :
pour (int i = 0; i < 3; i ++) {}
incomingChar [i] = Serial.read() ;
}
Si (strstr (incomingChar, okString)! = NULL) {/ / vérifier si la suite est « OK »
Si (incomingChar [0] == ' o ' & & incomingChar [1] == « K ») {/ / vérifier si les deux premiers caractères sont « OK »
résultat = ' t ' ; T retour si « OK » fut la réponse
}
else {}
résultat = « F » ; sinon retourner F
}
}
}
retourner le résultat ;
}
7. une fois que le code a été copié dans la fenêtre de code Arduino, sélectionnez « Compiler » pour vérifier qu’il n’y a pas d’erreurs dans le code. Si aucune erreur n’est présents, puis appuyez sur le « transférer vers le bouton i/o Board ».
8. une fois que le code a été téléchargé dans la carte Arduino, débranchez le câble USB et rattacher le ProtoShield (y compris le module Xbee). Vous avez maintenant terminé Télécharger le code de l’émetteur de l’Arduino.