Help , Arduino 2560 R3 Mega mit PN532

Gast #3161873
Lesenswert?

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
Angehängte Dateien:
Gast #3161875
Lesenswert?

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
(Firma: privatfrickler.de) #3162026
Lesenswert?

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
Gast #3162196
Lesenswert?

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
#3162210
Lesenswert?

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
#3162234
Lesenswert?

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.
Gast #3162245
Lesenswert?

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 ?
#3162250
Lesenswert?

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.
(Firma: privatfrickler.de) #3162252
Lesenswert?

@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
Gast #3282157
Lesenswert?

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();
    }


}
Gast #3282227
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren