Hallo, ich habe einen Arduino Mega 2560 R3 board und möchte das PN532 von Adafruit über I2C kommunizieren lassen. Folgende Pins habe ich zwischen board und shield jeweils miteinander verbunden: 5v,gnd,sda,scl. Die "busy" und "pwr" LED leuchten die ganze zeit. Eigentlich sollte es einer der LED's flakern wenn man eine Milfare Card aber es passiert nix. Ich habe die Beispiele in "Adafreuit_NFCShield_I2C" alle einzelnd upgeloadet und probiert aber bekomme immer folgende Message im Serial Monitor: "Hello" "Didn't find PN53x board" Bin mir nicht sicher ob ich noch zusätzliche Pins brauche oder habe ich etwas falsch gemacht ? Ich habe Bilder von den Verbindungstellen gemacht und hoffe jemand kann mir da weiterhelfen, ist das Erste mal das ich was mit uC etwas mache und wäre echt dankbar für jede Hilfe... Bild 1: Das PN532 von Adafruit Bild 2: Das PN532 von Adafruit: 5V und GND Bild 3: Das PN532 von Adafruit: SDA und SCL Bild 4: Arduino Mega 2560 R3 board: SDA und SCL Bild 5: Arduino Mega 2560 R3 board: GND und 5V
Sam schrieb: > Bild 1: Das PN532 von Adafruit > Bild 2: Das PN532 von Adafruit: 5V und GND > Bild 3: Das PN532 von Adafruit: SDA und SCL > > Bild 4: Arduino Mega 2560 R3 board: SDA und SCL > Bild 5: Arduino Mega 2560 R3 board: GND und 5V Ich hör sie schon schreien:BILDFORMATE!! SNCR
Hallo, PN532 Board oder Shield? Ich tippe auf Shield. Jetzt mal ehrlich, so verwirrt ein S h i e l d falsch anzuschließen kann man doch fast gar nicht sein! Ich bin zwar Arduino-Befürworter, aber sowas ist echt ein heftiger Tiefschlag. Also: Zeig doch bitte mal eine Quelle, wo steht, dass man das Ding so anschließen soll, wie Du es gemacht hast! Was lässt Dich vermuten, dass bei einem halbwegs professionellen Board irgendwas anderes als ein ISP-Programmer an den ISP_Header angeschlossen wird? Gerade bei einem Arduino? Und dann erklär mir noch kurz, warum Du es nicht einfach so machst, wie es im Video, im Sketch oder auf der Homepage von Adafruit überall steht. RTFM! beste Grüße Timm
Hallo Timm, Shield habe ich ja schon oben erwähnt... Naja wie du vielleicht weisst, ist es nicht so , das man das shield einfach dransteckt und fertig ist das ganze. Die SDA und SCL Pins vom Arduino 2560 R3 board sind leider nicht günstig plaziert ,von dem her kann man das also doch falsch anschließen. Hier ist die Quelle: http://learn.adafruit.com/adafruit-pn532-rfid-nfc/shield-wiring leider ist das Beispiel nur auf ein Arduino UNO beschränkt und man bekommt nicht gerader sehr viel Auskunft welche PIN's benötigt werden.... Die Infos, dass die PIN's 5v,gnd,sda,scl benötigt werden habe ich aus einem Supportforum :http://forums.adafruit.com/viewforum.php?f=31 MfG, Sam
Sam schrieb: > Naja wie du vielleicht weisst, ist es nicht so , das man das shield > einfach dransteckt und fertig ist das ganze. Die SDA und SCL Pins vom > Arduino 2560 R3 board sind leider nicht günstig plaziert ,von dem her > kann man das also doch falsch anschließen. Echt? http://arduino.cc/de/uploads/Main/ArduinoMega2560_R3_Front.jpg Schau ich mir die Platine an, dann steht beim Digital Pin 20 bzw. 21 eindeutig SDA und SCL dabei. Drunter steht auch noch mal ganz groß "Communication". Du bist am völlig falschen Anschluss
Hmm das ist komisch.... http://arduino.cc/en/uploads/Main/ArduinoMega2560_R3_Back.jpg da sind auch SDA und SCL aber irgendwie klappt es beim pin 20/21... Wofür sind dann die SDA SCL wo ich da angeschlossen hatte ? Oo
Sam schrieb: > Hmm das ist komisch.... > > http://arduino.cc/en/uploads/Main/ArduinoMega2560_R3_Back.jpg > > da sind auch SDA und SCL Ja, das ist der ISP anschluss. Über den wird der Prozessor programmiert, wenn man mit einem ISP Programmer direkt an den Prozessor geht. Und wenn ich das richtig sehe, dann ist das sogar der ISP Anschluss vom Hilfs-AVR, der die USB Kommunikation übernimmt. Diese beiden Pins sind also nicht nur nicht richtig, die sind nicht einmal falsch. Du bist am falschen µC. Ist dir den gar nicht aufgefallen, dass die Leitungen von diesem Anschluss gar nicht zum Haupt-µC gehen, sondern zu einem kleinen Hilfs-µC auf dem auch Atmel draufsteht? Ein bischen mitdenken muss man schon, wenn man µC programmieren will.
Danke Karl, allerding bekomme ich noch keinen Interrupt... Ich habe gelesen man braucht den digital Pin 2 dafür... An welchen Anschluss am board muss ich das verbinden ? kann ich beim board beim PWM oder Digital einen PIN aussuchen ?
Sam schrieb: > Danke Karl, > > > allerding bekomme ich noch keinen Interrupt... > > Ich habe gelesen man braucht den digital Pin 2 dafür... bei welchem Pin steht denn "2" dabei. Da würde ich mal anstecken. Wenn nicht, dann muss man halt mal die Schaltpläne ein wenig studieren. An welchen Pin beim Uno geht die Leitung, welches die der korrespondierende Pin auf deinem Mega. Und wo geht der an der Buchsenleiste hin.
@Karl-Heinz ich bewundere es, wie gut Du immer die Nerven behältst und mit welcher Disziplin Du Dich auf hilfreiche Antworten konzentrierst! @Sam ich würde sagen, bei digital Pin 2 dürfte es ich um den in der PWM Bank handeln. Der sollte an INT4 hängen. Aber eigtl. dürfte AttachInterrupt das automatisch ummodeln. Am Uno hängt digital pin 2 an INT0 Vlg Timm
Guest schrieb: > Ich hör sie schon schreien: BILDFORMATE!! Nee, tolle Fotos vom Adafruit PN532 NFC/RFID Controller Shield. Die besten, die ich mit der Google-Bildersuche gefunden habe. :-) Danke, Sam. :-)
Ich habe ein PN532 Breakout-Board problemlos über I²C am Arduino Mega 2560 zum laufen gebracht. Aber alle Beispiele gehen immer nur über Endlos-Loops. Für mich ist aber ein Interrupt-Aufruf von PN532 wichtig. Ich habe den PN532 IRQ an Pin2 (=Int0) angeschlossen, der Interrupt wird aber nicht ausgelöst, wenn ich eine NFC-Karte an das Board halte. Schaltung: Arduino_Mega PN532 GND GND 3V3 VCC SDA (Pin 20) SDA SCL (Pin 21) SCL Int0(Pin 2) IRQ Hier der nicht funktionierende Code: #include "nfc.h" NFC_Module nfc; void setup(void) { Serial.begin(9600); nfc.begin(); uint32_t versiondata = nfc.get_version(); if (! versiondata) { Serial.print("Didn't find PN53x board"); while (1); // halt } // Got ok data, print it out! Serial.print("Found chip PN5"); Serial.println((versiondata>>24) & 0xFF, HEX); Serial.print("Firmware ver. "); Serial.print((versiondata>>16) & 0xFF, DEC); Serial.print('.'); Serial.println((versiondata>>8) & 0xFF, DEC); /** Set normal mode, and disable SAM */ nfc.SAMConfiguration(); //Attach Interrupt to Int0 (Pin2) attachInterrupt(0, inter, CHANGE); } void loop(void) { } void inter(){ Serial.print("inter start"); u8 buf[32],sta; if(nfc.InListPassiveTarget(buf) && buf[0]== 4){ /** the card may be Mifare Classic card, try to read the block */ Serial.print("UUID length:"); Serial.print(buf[0], DEC); Serial.println(); Serial.print("UUID:"); nfc.puthex(buf+1, buf[0]); Serial.println(); } }
Ich habe schon die Ursache gefunden: Der IRQ-Pin steht immer auf HIGH (3V), egal ob ich mit einer Karte in die Nähe komme oder nicht. Lt. Spec sollte der IRQ aber auslösen wenn eine Karte in die Nähe kommt. Dann ist es klar, dass der Interrupt nicht ausgelöst wird. Hat jemand eine Idee dazu? Ansonsten wäre der PN532 optimal.
Nachtrag: ich habe gerade die PN532 Spec gelesen. Der Wakeup-Puls am IRQ dauert nur 12 ms. Da ich kein Oszi, etc habe, kann ich Signal nicht prüfen.
Moritz Schnell schrieb: > Nachtrag: ich habe gerade die PN532 Spec gelesen. Der Wakeup-Puls > am IRQ > dauert nur 12 ms. Da ich kein Oszi, etc habe, kann ich das Signal nicht > prüfen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.