Arduino Due mit Ethernet und NFC Shield

Hallo Zusammen!

Ich habe ziemlich wenig erfahrung was den Arduino Due betrifft. Mein Projekt soll ein Sensor werden mit dem ich Schweißstrom und Schweißspannung auslese und dann weiter auf einen Computer schicke und zusätzliche Informationen über einen NFC Chip bekomme.
Ich habe den Timer von meinem Arduino Uno auf den Due umgebaut und wollte nun einmal Testen ob es funktioniert, jedoch schreibt mit der Serielle Monitor immer heraus, dass das NFC Shield nicht gefunden wird. Direkt am NFC Shield leuchtet ständig die rote „BUSY“ LED.

Hat schon jemand Erfahrung zwecks Pin Kompatibilität vom Due, NFC und Ethernet Shield gemeinsam?
Was ich herausgefunden habe ist die Pin Benutzung der Shields:
NFC: 3v3, 5v, A4, A5, D2
Ethernet: 3v3, 5v, D10, D11, D12, D13

Auf D7-9 kommen später noch LEDs und auf Aref lege ich eine externe Referenz von 3v3 an (den Widerstand habe ich schon umgelötet.

Wäre über jede Hilfe dankbar.

Mfg,
Florian

pirflo:
Scheißstrom

Da klemmte wohl die w-Taste... :o :slight_smile:

Könntest du mal die entsprechenden Shields hier verlinken? Bspw. deutet deine gepostete Belegung zum NFC-Shield darauf hin, dass dieses über I2C angebunden wird - beim Uno sind A4 und A5 auch für I2C. Ob der Due an den Pins I2C bietet kann ich nicht mit Gewissheit sagen und würde das zunächst einmal ausschließen. Aber da kann man wirklich nur über die Datenblätter bzw. Dokumentationen der Shields gehen, um das beurteilen zu können.

Ist es tatsächlich notwendig, einen Due zu verwenden? Der langweilt sich doch zu Tode... :wink: Ist die Netzwerkanbindung Pflicht?

I2C ist bei dem SAM nicht auf A4/A5 sondern auf D20/D21. Ist doch auch noch dick auf dem Board aufgedruckt.

Auch die SPI Schnittstelle ist beim Due nicht dort wo sie beim UNO ist. Außerdem verträgt der Due nur 3,3V an den Eingängen. Welceh Spannung geben die beiden Platinen?
Grüße Uwe

uwefed:
Welche Spannung geben die beiden Platinen?

Das weiß ich nicht, aber was ich gelesen habe sind sie beide mit dem Due kompatibel.

Ethernet Shield:

NFC Shield:

Und @sth77 ja es ist notwendig einen Due zu verwenden da der Uno für das Programm zu wenig Speicher hat. Die Netzwerkanbindung ist auch Pflicht da der Due die Daten über das Netzwerk auf einen anderen Rechner in der Firma senden soll.

Auf A0-A3 sollen (wenn es dann funktioniert) die 2 Eingänge mit jeweils einem 100Hz und 5Hz Filter kommen. (A0 100Hz Strom; A1 5Hz Strom; A2 100Hz Spannung; A3 5Hz Spannung). Dazu bräuchte ich auch noch ein bisschen Hilfe da ich grade nicht weiß wie es gehen soll 1 Eingangssignal auf 2 Eingänge zu verteilen.
Derzeit nutze ich nur jeweils den 100Hz Filter auf A0 und A2.

Mfg,
Florian

Guten Morgen!

Kann mir bitte jemand weiterhelfen? Oder hat hier niemand Erfahrungen mit dem Due :confused:

An was kann es liegen? I2C Versorgung umlöten?

Lg

Kennt sich keiner mit dem Due aus?

Zum NFC Shield:
Adafruit sagt:

Compatible with any "classic" Arduino - NG, Diecimilla, Duemilanove, UNO - as well as Mega R3 or later.

Ins Besondere hat der DUE kein I2C auf A4-A5
Auch arbeitet der DUE mit 3,3V.
Ich sehe im Schaltplan des NFC Shields keine Auswertung der IOREF Leitung.

Also geht das mit dem Nfc Shield überhaupt nicht oder kann ich die andere Pinbelegung auch einfach mit dünnen Drähten verkabeln anstatt das Nfc Shield drauf zu stecken?

Mfg

Das sollte gehen!
Beachte dabei die 5V -- 3,3V Problematik.
Wenn ich mich nicht vertan habe, ist ein Levelshifter für die I2C Leitungen nötig...
ohne Gewähr
(ich kenne das Shield nur aus den Beschreibungen)

Was ist genau ein Levelshifter bzw. was macht der?

Ich habe jetzt anstatt dem "normaln Adafruit Nfc Shield das Breakout Board genommen und mit Drähten angelötet. Ist nicht die schönste Lösung aber hoffentlich eine die Funktioniert. Jedoch wenn ich das Programm starte, schreibt er mir immer das es das Board nicht findet.

Ich checks grad echt nicht. Ist aber höchstwahrscheinlich eine Software Problematik oder?

Mfg

Was ist genau ein Levelshifter bzw. was macht der?

Google: "i2c level shifter"

Ist aber höchstwahrscheinlich eine Software Problematik oder?

Ohne je die Hardware, Schaltplan und die Software gesehen zu haben dürfte das unmöglich zu sagen sein.

Ja aber wenn ich das jetzt richtig sehe braucht man so einen Level Shifter doch nur wenn man ein 5V Board hat.
Der Due den ich verwende hat aber 3,3V. Von daher dachte ich dass das egal wäre.

Ich weiß momentan nicht weiter wie ich das NFC Board mit dem Due verbinden muss.

Folgende Pin Belegung habe ich gefunden:

MOSI Pin11
MISO Pin12
SCK Pin13
SDA Pin10
RST Pin9
3,3V 3,3V
GND GND

Aber wie sieht es da mit der I2C Kommunikation aus? Die Jumper auf dem Board habe ich richtig gesetzt.

Mfg

Ich habe jetzt anstatt dem "normaln Adafruit Nfc Shield das Breakout Board genommen und mit Drähten angelötet.

Das Board kenne ich nicht.
Kann also wenig über den Anschluss, ob du es richtig gemacht hast, oder die Volt sagen.

Was ich aber weiß ist:
Pin 10 11 12 und 13 sind nicht die SPI Pins des DUE
Also wundere ich mich auch nicht über eine Fehlfunktion

Ich habe ja eh geschrieben I2C.
Das NFC Board arbeitet mit 3,3V

Die SPI Pins sind:

Arduino Board MOSI MISO SCK SS (slave) SS (master)
Due ICSP-4 ICSP-1 ICSP-3 4, 10, 52

Den IRQ Pin habe ich zusätzlich auf den Due Pin 2 angeschlossen und den Reset Pin auf Due Pin 3.

Es schreibt immer nur "didn´t find Pn53xx Board" :confused:

Edit:
Habe jetzt mithilfe von dem Breakout Wiring und
http://www.nxp.com/documents/data_sheet/HEF4050B.pdf
SCK auf Pin 2 / MOSI auf Pin 3 und SSEL auf Pin 4 verlegt.

Jedoch das ganze weiterhin ohne Erfolg :confused:

Ich habe ja eh geschrieben I2C.

Ok, aber warum sprichst du dann dauernd über Miso Mosi, SS und Sck?

Sehe, in dem Link, dass das Board auch ein 3,3V Board ist.
Eine Levelschifter oder ein HEF4050B ist nicht nötig.

PS:
Für I2C bedarf es noch 2 Pullups.

Hallo,

er muß einfach seinen eigenen Link komplett lesen und muß sich endlich mal für SPI oder I2C entscheiden!
Sonst wird das nix.

Und wenn er das gelesen und verstanden hat, sucht er sich die passenden Pins auf seinem Due und fertig.
Er muß natürlich auch im Sketch die Pin Nummern ändern.

Wer lesen kann, ist im Vorteil, wer Adafruit lesen muß, bekommt ein Knäul ins Gehirn. Geht mir zumindest beim NFC Shield so. Da wird fröhlich zwischen Shield, Breakout, I2C und SPI hin und her gesprungen. So habe ich beispielsweise keinen Schaltplan für das Shield finden können. :smiling_imp:

Ich habe weder DUE noch NFC Breakout, aber wenn ich sie hätte, würde ich dies versuchen:

DUE - NFC Breakout
3,3V - 3,3V
20 - SDA (1k5 Pullup nach 3,3V im DUE integriert)
21 - SCL (1k5 Pullup nach 3,3V im DUE integriert)
2 - IRQ
3 - Reset
GND - GND

Im Sketch Mifare.pde:

// Use this line for a breakout with a software SPI connection (recommended):
// Adafruit_PN532 nfc(PN532_SCK, PN532_MISO, PN532_MOSI, PN532_SS); 
...
// Or use this line for a breakout or shield with an I2C connection:
Adafruit_PN532 nfc(PN532_IRQ, PN532_RESET);

Die Pins für I2C sind sind bei den mir bekannten Arduinos (ATtiny Mega2560 und UNO) festgelegt.

Ich habe keine Angabe über den Stromverbrauch des Breakout Boards gefunden, hoffentlich kann der DUE genug liefern.

Adafruit hat übrigens auch ein Forum, welches mir wertvolle Informationen für mein MP3 Shield geliefert hat.

Ich drücke Dir die Daumen!

Danke für die Antworten :slight_smile:
@agmue ich habe die Pins genauso belegt wie du gesagt hast. Jumper sind richtig gesetzt, die Zeile im Sketch eingefügt aber es schreibt mir immer can´t find pn53xx board… :frowning:

Falls es wem hilft, hier auch der Test-Sketch:

#include <SPI.h>
#include <Wire.h>
#include <Adafruit_PN532.h>

#define PN532_IRQ   (2)
#define PN532_RESET (3)

Adafruit_PN532 nfc(PN532_IRQ, PN532_RESET);

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  nfc.begin();
  uint32_t versiondata = nfc.getFirmwareVersion();
  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);
  
  // configure board to read RFID tags
  nfc.SAMConfig();
  
}

Moin,

ich weiß nicht welche Library Du für das NFC Breakout benutzt.
Ist es vielleicht diese: https://github.com/adafruit/Adafruit-PN532 ist.

Wenn ja, dann steht in der Datei "Adafruit_PN532.cpp" ab Zeile 52:

#if defined(__AVR__) || defined(__i386__) //compatibility with Intel Galileo
 #define WIRE Wire
#else // Arduino Due
 #define WIRE Wire1
#endif

Somit ist die Pins SCL1 und SDA1 für die I2C-Schnittstelle zu benutzen
und nicht Pin 20(SDA) und 21(SCL).
Entweder die Hardware anpassen, oder die Library ändern in

#if defined(__AVR__) || defined(__i386__) //compatibility with Intel Galileo
 #define WIRE Wire
#else // Arduino Due
 #define WIRE Wire
#endif

Dann sollte es hoffentlich gehen.