Étape 20 : Comment fonctionne le logiciel
- Ligne 8 permet au programme d’utiliser la bibliothèque de SoftwareSerial que le programme utilise pour communiquer avec le lecteur RFID
- Lignes 10-16 définissent les broches de l’Arduino utilisés par le programme
- Lignes 18-23 définissent les variables utilisées par le programme
- Lignes 28-36 sont exécutés lorsque l’Arduino est tout d’abord sous tension ou réinitialisation. Ce code la couleur changeant circuit LED s’allume, initialise la connexion avec le PC et le lecteur de carte RFID et initialise les LED sur le dessus du gizmo.
- Lignes 41-71 sont la boucle principale du programme. Cette boucle s’exécutera jusqu'à ce que l’Arduino est mis hors tension ou réinitialisation. La première chose à faire dans la boucle est de vérifier si le lecteur RFID a lu toutes les données et déterminer si les données lues indiquent le début d’une balise. Dans l’affirmative :
- Lignes 44-53 lire les données du lecteur RFID jusqu'à ce que la balise a été lue complètement.
- Lignes 55-63 envoient les données vers le PC. Référence trois sont envoyés : le nombre de balises lire jusqu’ici, le temps qui a été lu l’étiquette et l’ID de la balise qui a été lu. Le comte et le temps ne sont pas utilisés par le programme sur le PC, mais sont a-t-il des fins de débogage et sont utiles si vous souhaitez utiliser ce code pour d’autres projets d’Arduino RFID.
- Lignes 64-68 désactive temporairement le lecteur de carte RFID, effectue les LED sur le dessus de la course de gizmo autour et puis dort pendant une courte période. Le lecteur RFID se rallume et le programme effectue une boucle vers le haut.
- Lignes 74-88 sont une sous-routine que rend la LED sur le dessus de gizmo éclairent en séquence et semble courir autour en cercles. L’entrée de la sous-routine est le nombre de fois de courir autour et le nombre de millisecondes pour garder chaque LED illuminée.
- Lignes 90-98 sont une sous-routine qui initialise les broches pour les LEDs et affecte les broches de sortie.
Le programme de gizmo Python boucles en attente de données envoyées par l’Arduino et s’exécute sur le PC. Lorsque les données sont reçues, le programme recherche l’ID de la balise dans une table pour trouver le site web associé. Si l’ID de la balise est dans le tableau, le programme utilise une bibliothèque de Python appelée « webbrowser » pour ouvrir un nouvel onglet dans le navigateur par défaut sur le PC et de charger la page web. Si le navigateur n’est pas en cours d’exécution, « webbrowser » il commencera. Si l’ID de la balise n’est pas dans le tableau, les programmes crée un fichier HTML avec un message d’erreur portant l’ID de la balise et s’affiche dans un nouvel onglet dans le navigateur. Un exemple est montré dans la dernière image. Le programme apparaît en quatrième position, cinquième, sixième et septième diagrammes. S’ensuit un aperçu du programme :
- Lignes 12 à 15 importer les bibliothèques pour créer et écrire dans des fichiers, communication avec l’Arduino, analysant les données envoyées de l’Arduino et contrôler le navigateur web.
- Lignes 20-34 sont la table (dictionnaire en termes de Python) utilisée pour associer la balise ID aux sites web. Chaque ligne possède le dix caractères RFID tag ID et un lien HTTP vers le site web. Notez que la première balise a « quitter » pour l’adresse web. Si cette balise est lu, puis le programme se terminera. Nouvelles balises peuvent être ajoutés en dupliquant la dernière ligne et remplacer l’ID de la balise avec la nouvelle balise et en mettant dans le site web souhaitée pour la balise.
- Ligne 37 définit quel port COM, le programme utilisera pour communiquer avec l’Arduino. Il s’agit de la même partie de COM utilisé par le logiciel de développement Arduino pour charger le programme compilé dans l’Arduino. Vous devriez changer cela pour correspondre à votre système.
- Ligne 42 est le nom du fichier que le programme crée lorsqu’une balise inconnue est lu. Ce fichier est créé dans le répertoire où vous avez installé Python. Dans mon cas, c’était « c:\Python27 ».
- Lignes 45 à 54 ans utilisent la bibliothèque de pySerial pour vous connecter à l’Arduino. Messages seront affichera dans la fenêtre Python qui indique si la connexion a été effectuée ou non.
- Ligne 56 vérifie si la connexion a réussi. Si la connexion a été établie, traitement se poursuivra par ailleurs que le programme se terminera.
- Ligne 58 définit une variable qui est utilisée pour déterminer si une balise en double a été lu. L’idée est d’empêcher le même site de s’ouvrir dans le navigateur si le lecteur RFID arrive à lire l’étiquette plus d’une fois quand il trouve sur le lecteur.
- Lignes 62 et 63 utilisent la bibliothèque « pySerial » pour lire les données de l’Arduino.
- Ligne 66 vérifie si les données ont été lues.
- Lignes 68-74 utilisation de la bibliothèque « shlex » pour diviser les données de Arduino en trois parties : le comte, le temps et l’ID de la balise.
- Lignes de 76 à 78 appellent une fonction pour rechercher le site web basé sur l’ID de la balise. L’ID de la balise et le site web en Python sont affichés dans la fenêtre de console Python pour des fins de débogage.
- Lignes 81 et 82 vérifier pour voir si il s’agit de la balise spéciale utilisée pour arrêter le programme, et si oui, le programme s’arrête la boucle et le programme se termine.
- Ligne 86 vérifie si la balise vient de lire est la même que la précédente. Dans l’affirmative, il effectue une boucle vers le haut.
- Ligne 87 utilise la bibliothèque « webbrowser » pour démarrer le navigateur se n'exécute pas et puis ouvrez un nouvel onglet pour le site web.
- Ligne 88 enregistre la balise, il suffit de lire pour empêcher l’affichage des sites dupliqués. Le programme effectue une boucle puis retour pour attendre qu’une autre balise.
- Lignes 90-104 sont la fonction qui est utilisée pour rechercher les sites web associés à l’ID de la balise :
- Ligne 93 vérifie si l’ID de la balise est dans le dictionnaire
- Ligne 94 renvoie au site web, si l’ID de la balise a été dans le dictionnaire.
- Lignes 98 à 100 construisent le code HTML pour le message d’erreur pour la balise inconnue.
- Lignes 101-103 utilisent la bibliothèque « sys » pour créer un fichier HTML, écrire le code HTML dans le fichier et fermez le fichier. Si le fichier se trouve existent déjà, le code HTML dans le fichier est remplacé par le nouveau code de HTML.
- Ligne 104 retourne le nom du fichier. Retour dans le programme principal, le navigateur web va ouvrir ce fichier, plutôt qu’un site web et afficher le message d’erreur.
- Lignes 107-111 vous permettent d’exécutez ce programme depuis la ligne de commande passez le nom du port COM comme un paramètre plutôt que de modifier le programme. Voir l’étape suivante pour plus d’informations sur la façon de l’utiliser.
J’ai testé le logiciel avec une variété de navigateurs web : la bibliothèque « webbrowser » fonctionne très bien avec Firefox, Safari et Internet Explorer. Il ne fonctionne pas correctement avec Opera.