Fahren Sie mit dem vorherigen Artikel fort (Ausführen des Beispielprogramms openFrameworks auf Raspberry Pi 3 - Qiita) und ersetzen Sie den Ausstellungs-Mac durch Raspberry Pi. Es ist ein Versuch, dies zu tun.
Beim letzten Mal habe ich oF auf Raspberry Pi installiert und das Beispielprogramm ausgeführt. Dieses Mal werde ich einen NFC-Reader an Raspbery Pi anschließen und die aus dem Python-Programm gelesenen NFC-Daten an openFrameworks mit OSC senden.
Ich habe es möglich gemacht, den NFC-Reader zu verwenden, indem ich mich auf die Referenzstelle 1 verlassen habe. Das Programm, das ich ausgeführt habe, ist Read.py auf Referenzseite 2. Da es sich um die Referenzseite handelt, wird es weggelassen.
Als ich es zum ersten Mal ausprobierte, führte ich das Programm aus und es reagierte nicht auf NFC-Tags. Die Site sagte, dass ich den Gerätebaum deaktivieren musste, aber ich konnte den Gerätebaum in der erweiterten Option auch nach "sudo raspi-config" nicht finden.
Ich war mir nicht sicher, aber es wurde geheilt, nachdem Raspbian neu installiert wurde. Ich habe eine Micro-SD-Karte mit vorinstalliertem Raspbian 2016-02-26 gekauft, aber die vorinstallierte war möglicherweise nicht gut.
Ich habe osc verwendet, um das in 4. ausgeführte Python-Beispielprogramm auf openFrameworks zu bringen. Ich dachte, es wäre schön, wenn ich den NFC-Reader direkt von oF lesen könnte, aber ich wusste nicht, was ich tun sollte, also entschied ich mich für diese Methode.
Ich habe pyOSC ausprobiert, als ich mir die Referenzseite 3 angesehen habe. (Python OSC (pyOSC) | Android Days).
Installieren Sie pyOSC
git clone https://gitorious.org/pyosc/devel.git
cd devel
sudo python setup.py install
Referenzstelle 3. Ich habe das Beispielprogramm ausprobiert, aber es hat nicht funktioniert.
git clone https://github.com/conanxin/Arduino-Meets-Blender-OSC.git
Starten Sie zwei Terminals und versuchen Sie, das Beispielprogramm auszuführen.
terminal1
cd Arduino-Meets-Blender-OSC/pyOSC_examples
python basic_receive.py
terminal2
cd Arduino-Meets-Blender-OSC/pyOSC_examples
python basic_send.py
Beim Ausführen von send.py wurde der folgende Fehler angezeigt.
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'
Ich habe es einfach nicht verstanden.
Nehmen Sie sich einen Moment Zeit und probieren Sie eine andere Probe. Führen Sie das Beispiel aus, das sich im Entwicklungsordner befand, in den Sie pyOSC heruntergeladen haben.
terminal1
cd devel/examples
python knect-rcv.py
terminal2
cd devel/examples
python knect-snd.py
Als ich knect-snd.py ausführte, wurde Folgendes auf dem Bildschirm von knect-rcv.py angezeigt.
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)
Ich habe das Programm knect-snd.py in Dump.py eingefügt.
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)
Auch hier wird das Beispielprogramm verwendet. Kopieren Sie das Beispielprogramm oscReceiveExample nach openFrameworks / apps / myApps /.
cd openFrameworks/examples/addons
cp -r oscReceiveExample /home/pi/openFrameworks/apps/myApps/
Öffnen Sie ofApp.h.
cd /home/pi/openFrameworks/apps/myApps/oscReceiveExample/src
vim ofApp.h
Ändern Sie `# define PORT 12345``` in der 7. Zeile, in der die Portnummer auf`
# define PORT 7110``` gesetzt ist, und speichern Sie.
Gehen Sie einen Ordner zurück und machen Sie make
. Wenn die Kompilierung abgeschlossen ist, machen Sie make run
.
cd ..
make
make run
In der oberen rechten Ecke des Bildschirms wird ein blaues Fenster geöffnet. Starten Sie ein anderes Terminal und starten Sie Dump_osc.py, das in 6 erstellt wurde.
cd MFRC522-python
python Dump_osc.py
Wenn Sie den am NFC-Lesegerät angebrachten NFC-Schlüsselhalter halten, wird die NFC-UID auch auf dem blauen Bildschirm angezeigt.
Das Video sieht so aus. (Klicken Sie auf das Bild, um zu YouTube zu gelangen.)
Nachdem wir dies bisher getan haben, sollten wir gemäß der von oF erhaltenen UID vorgehen.
Recommended Posts