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.
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.
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
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.
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)
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)
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.
La vidéo ressemble à ceci. (Cliquez sur l'image pour aller sur YouTube)
Maintenant que nous l'avons fait jusqu'à présent, il semble que nous devrions procéder selon l'UID reçu par oF.