Lisez les données du lecteur NFC connecté à Raspberry Pi 3 avec Python et envoyez-les à openFrameworks avec OSC

1. Vue d'ensemble

Poursuivant l'article précédent (Exécution de l'exemple de programme openFrameworks sur Raspberry Pi 3 --Qiita), remplacez l'exposition Mac par Raspberry Pi. C'est une tentative de le faire.

La dernière fois, j'ai installé oF sur Raspberry Pi et exécuté l'exemple de programme, donc cette fois je vais connecter un lecteur NFC à Raspbery Pi et envoyer les données NFC lues à partir du programme python à openFrameworks avec OSC.

2. Environnement de travail

3. Site de référence

  1. Comment connecter le lecteur / graveur NFC RFID-RC522 de la méthode de communication SPI au Raspberry Pi 3 modèle B et lire l'étiquette NFC (Comment connecter le lecteur / graveur RFID NXP MFRC522 à Raspberry 3 et lire la carte NFC sans contact)
  2. mxgxw/MFRC522-python: A small class to interface with the NFC reader Module MFRC522
  3. Python OSC (pyOSC) | Android Days
  4. pyOSC 0.3.5b-5294 : Python Package Index
  5. Réalisation dexFaceTracker avec Raspberry Pi2 - Journal de prise

4. Utilisez un lecteur NFC avec Raspberry Pi 3

J'ai rendu possible l'utilisation du lecteur NFC en m'appuyant sur le site de référence 1. Le programme que j'ai exécuté est Read.py sur le site de référence 2. Puisqu'il s'agissait du site de référence, il est omis.

Quand je l'ai essayé pour la première fois, j'ai exécuté le programme et il n'a pas répondu aux balises NFC. Le site a dit que je devais désactiver l'arborescence des périphériques, mais je ne pouvais pas trouver l'arborescence des périphériques dans l'option avancée même après sudo raspi-config`.

Je n'étais pas sûr, mais il a été guéri après la réinstallation de Raspbian. J'ai acheté une carte micro SD avec Raspbian 2016-02-26 préinstallé, mais celle préinstallée n'était peut-être pas bonne.

5. Installez pyOSC

J'ai utilisé osc pour apporter l'exemple de programme python exécuté en 4. à openFrameworks. Je pensais que ce serait bien si je pouvais lire le lecteur NFC directement depuis oF, mais je ne savais pas quoi faire, alors j'ai choisi cette méthode.

J'ai essayé pyOSC en regardant le site de référence 3. (Python OSC (pyOSC) | Android Days).

Installez pyOSC

git clone https://gitorious.org/pyosc/devel.git
cd devel
sudo python setup.py install

Échec

Site de référence 3. J'ai essayé le programme d'exemple écrit, mais cela n'a pas fonctionné.

git clone https://github.com/conanxin/Arduino-Meets-Blender-OSC.git

Démarrez deux terminaux et essayez d'exécuter l'exemple de programme.

terminal1


cd Arduino-Meets-Blender-OSC/pyOSC_examples
python basic_receive.py

terminal2


cd Arduino-Meets-Blender-OSC/pyOSC_examples
python basic_send.py

Lorsque j'ai exécuté send.py, j'ai eu l'erreur suivante.

terminal2


Traceback (most recent call last):
  File "basic_send.py", line 28, in <module>
    client.sendto(msg, ('127.0.0.1', 2014)) # note that the second arg is a tupple and not two arguments
  File "/usr/local/lib/python2.7/dist-packages/OSC.py", line 1174, in sendto
    ret = select.select([],[self._fd], [], timeout)
AttributeError: 'OSCClient' object has no attribute '_fd'

Je n'ai simplement pas compris.

Succès

Prenez un moment et essayez un autre échantillon. Exécutez l'exemple qui se trouvait dans le dossier de développement dans lequel vous avez téléchargé pyOSC.

terminal1


cd devel/examples
python knect-rcv.py

terminal2


cd devel/examples
python knect-snd.py

Lorsque j'ai exécuté knect-snd.py, ce qui suit était affiché sur l'écran de knect-rcv.py.

terminal1


('Now do something with', 'user1', 3.0, 1.0, -1.0)
('Now do something with', 'user2', 4.0, 2.0, -2.0)
('Now do something with', 'user3', 3.0999999046325684, 2.0, -2.0)
('Now do something with', 'user4', 6.0, 3.200000047683716, -2.4000000953674316)

6. Ajouter le traitement OSC au programme RFID

J'ai mis le programme knect-snd.py dans Dump.py.

Dump_osc.py


#!/usr/bin/env python
# -*- coding: utf8 -*-

import RPi.GPIO as GPIO
import MFRC522
import signal

# OSC setting
from OSC import OSCClient, OSCMessage
client = OSCClient()
client.connect(("localhost", 7110))

continue_reading = True

# Capture SIGINT for cleanup when the script is aborted
def end_read(signal,frame):
    global continue_reading
    print "Ctrl+C captured, ending read."
    continue_reading = False
    GPIO.cleanup()

# Hook the SIGINT
signal.signal(signal.SIGINT, end_read)

# Create an object of the class MFRC522
MIFAREReader = MFRC522.MFRC522()

# This loop keeps checking for chips. If one is near it will get the UID and authenticate
while continue_reading:

    # Scan for cards    
    (status,TagType) = MIFAREReader.MFRC522_Request(MIFAREReader.PICC_REQIDL)

    # If a card is found
    if status == MIFAREReader.MI_OK:
        print "Card detected"

    # Get the UID of the card
    (status,uid) = MIFAREReader.MFRC522_Anticoll()

    # If we have the UID, continue
    if status == MIFAREReader.MI_OK:

        # Print UID
        print "Card read UID: "+str(uid[0])+","+str(uid[1])+","+str(uid[2])+","+str(uid[3])

        # Send OSC
        client.send( OSCMessage("/user/1", [uid[0], uid[1], uid[2], uid[3]] ) )

        # This is the default key for authentication
        key = [0xFF,0xFF,0xFF,0xFF,0xFF,0xFF]

        # Select the scanned tag
        MIFAREReader.MFRC522_SelectTag(uid)

7. Créez un programme pour recevoir OSC avec openFrameworks

Le programme exemple est également utilisé ici. Copiez l'exemple de programme oscReceiveExample dans openFrameworks / apps / myApps /.

cd openFrameworks/examples/addons
cp -r oscReceiveExample /home/pi/openFrameworks/apps/myApps/

Ouvrez ofApp.h.

cd /home/pi/openFrameworks/apps/myApps/oscReceiveExample/src
vim ofApp.h

Changez # define PORT 12345 sur la 7ème ligne où le numéro de port est défini sur `` `` # define PORT 7110 et enregistrez

Remontez d'un dossier et faites make ''. Lorsque la compilation est terminée, faites make run ''.

cd ..
make
make run

Une fenêtre bleue s'ouvrira dans le coin supérieur droit de l'écran. Lancez un autre terminal et lancez Dump_osc.py créé dans 6.

cd MFRC522-python
python Dump_osc.py

Lorsque vous maintenez le porte-clé NFC attaché au lecteur NFC, l'UID NFC est également affiché sur l'écran bleu.

スクリーンショット 2016-10-25 00.03.14.png

La vidéo ressemble à ceci. (Cliquez sur l'image pour aller sur YouTube) IMAGE ALT TEXT HERE

Maintenant que nous l'avons fait jusqu'à présent, il semble que nous devrions procéder selon l'UID reçu par oF.

Recommended Posts

Lisez les données du lecteur NFC connecté à Raspberry Pi 3 avec Python et envoyez-les à openFrameworks avec OSC
Renvoyez les données d'image avec Flask of Python et dessinez-les dans l'élément canvas de HTML
Obtenez des données supplémentaires vers LDAP avec python (Writer et Reader)
J'ai envoyé les données de Raspberry Pi à GCP (gratuit)
C'était génial d'éditer le fichier Python dans Raspberry Pi avec la fonction à distance d'Atom
J'ai essayé d'automatiser l'arrosage du pot avec Raspberry Pi
Déplacer les données vers LDAP avec python Change / Delete (Writer et Reader)
Traitez le fichier gzip UNLOADed avec Redshift avec Python de Lambda, gzipez-le à nouveau et téléchargez-le sur S3
Envoyez la température, l'humidité, etc. mesurées par SensorTag à Ambient via Raspberry Pi 3 et tracez-les.
Mesurez la température, l'humidité, etc. avec SensorTag et envoyez-le à Ambient via Raspberry Pi 3 pour le représenter graphiquement Partie 2
Sortie CSV des données d'impulsion avec Raspberry Pi (vérifier l'entrée analogique avec python)
Utilisez python sur Raspberry Pi 3 pour éclairer la LED avec le contrôle du commutateur!
Envoyer et recevoir des données d'image au format JSON en Python sur le réseau
Lisez le fichier CSV avec Python et convertissez-le en DataFrame tel quel
[python] Envoyez l'image capturée de la caméra Web au serveur et enregistrez-la
Exportez le rapport au format PDF à partir de DB avec Python et attachez-le automatiquement à un e-mail et envoyez-le
Comment mettre OpenCV dans Raspberry Pi et collecter facilement des images des résultats de détection de visage avec Python
J'ai essayé d'obtenir et d'analyser les données statistiques de la nouvelle Corona avec Python: données de l'Université John's Hopkins
J'ai fait un package npm pour obtenir l'ID de la carte IC avec Raspberry Pi et PaSoRi
Mettez à jour les données en les téléchargeant sur s3 d'aws avec une commande, et supprimez les données utilisées (en chemin)
Fabriquez un thermomètre avec Raspberry Pi et rendez-le visible sur le navigateur Partie 3
Connectez-vous à la console Raspberry PI et affichez les informations IP et SD locales
Résumé de la lecture des données numériques avec python [CSV, NetCDF, Fortran binary]
J'ai tweeté l'éclairement de la pièce avec Raspberry Pi, Arduino et un capteur optique
[Python] Comment lire les données de CIFAR-10 et CIFAR-100
Informer périodiquement l'état de traitement de Raspberry Pi avec python → Google Spreadsheet → LINE
Sortie CSV des données d'impulsion avec Raspberry Pi (sortie CSV)
Obtenez des informations sur le processeur de Raspberry Pi avec Python
(Journal 1) Comment créer, parcourir et enregistrer des données dans la base de données SQL du service Microsoft Azure avec python
GAE --Avec Python, faites pivoter l'image en fonction des informations de rotation d'EXIF et importez-la dans Cloud Storage.
Utilisez python sur Raspberry Pi 3 pour éclairer la LED quand il fait noir!
Connectez-vous à MySQL avec Python sur Raspberry Pi
J'ai essayé d'envoyer automatiquement la littérature du nouveau virus corona à LINE avec Python
[Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Mesurer la température du processeur de Raspeye avec Python
Une histoire sur l'obtention du champ Atom (télégramme XML) de l'Agence météorologique avec une tarte à la râpe et de le tweeter
[Python Data Frame] Lorsque la valeur est vide, remplissez-la avec la valeur d'une autre colonne.
Contrôlez la lecture de musique sur un smartphone connecté à Raspberry Pi 3 et Bluetooth avec AVRCP
Extraire des images et des tableaux de pdf avec python pour réduire la charge de reporting
J'ai essayé d'automatiser la mise à jour de l'article du blog Livedoor avec Python et sélénium.
Créez rapidement un tableau de bord d'analyse de données Python avec Streamlit et déployez-le sur AWS
Je voulais juste extraire les données de la date et de l'heure souhaitées avec Django
Lisez le fichier csv avec le notebook jupyter et écrivez le graphique l'un sur l'autre
J'ai essayé de comparer la vitesse de traitement avec dplyr de R et pandas de Python
Il est facile d'exécuter SQL avec Python et de générer le résultat dans Excel
Mémo connecté à HiveServer2 d'EMR avec python
Modèle de script python pour lire le contenu du fichier
IoT facile pour démarrer avec Raspeye et MESH
Visualisons la pièce avec tarte aux râpes, partie 1
Comment utiliser Raspeye Relay Module Python
Prenez la valeur du thermo-hygromètre SwitchBot avec Raspberry Pi
Changer les valeurs du thermo-hygromètre Bot avec Raspberry Pi
Ubuntu 20.04 sur raspberry pi 4 avec OpenCV et utilisation avec python
Lire le fichier json avec Python, le formater et générer le json
Exploitons GPIO de Raspeye avec Python CGI
Python --Lisez des données à partir d'un fichier de données numériques pour trouver des matrices, des valeurs propres et des vecteurs propres distribués co-distribués
Notez ce que vous voulez faire à l'avenir avec Razpai