Schlagwort-Archive: arduino

Arduino M24SR NFC Tag Library

M24SR_NFC_Tag_with_I2C_Interface
Gegenstand dieses Blogartikels ist der ST M24SR im praktischen Einsatz mit einem Arduino:
Oft ist eine Benutzerschnittstelle erforderlich, wenn eine Mikrokontroller Schaltung konfiguriert werden muss. Falls ein paar Taster, evtl inkl. Mini-LCD zu teuer sind bzw das Gerät nicht über Bluetooth-, RF- oder Ethernet-Schnittstelle verfügt kann die sehr stromsparende, kostengünstige NFC-Schnittstelle zum Einsatz kommen. Der M24SR von ST dient in dieser Konstellation als NFC-I2C-Brücke zum Auslesen von Logeinträgen, Status- oder Fehlercodes und zum Konfigurieren per Smartphone. Dieser NFC-Chip ist gegenüber den komplexen NFC-Controllern (zB PN532) recht günstig ($0.34 – $1.88) da er nicht alle NFC-Modie wie Reader/Writer, P2P und Card-Emulation unterstützt sondern nur als NFC-Tag fungieren kann. Daten können in den Speicher (EEPROM) des Chips entweder per I2C-Schnittstelle (Arduino) oder per NFC (NFC Phone, Smartcard-Reader) geschrieben bzw ausgelesen werden.

Was wird benötigt?

  • ST M24SR Chip
  • Breadboard + Verbindungskabel
  • SO8-Sockel oder SO8-DIL8-Adapter-Platine zum Auflöten des Chips
  • Arduino Duemilanove (o.ae.)
  • Arduino M24SR Library
  • Antenne: Größe 75 mm x 48 mm, 6 Windungen
  • 10k Ohm Pull-up Widerstand

Setup

Das IC mit 8 Pins ist recht überschaubar zu verdrahten: Spannungsversorgung (GND, VCC), I2CInterface (SDA, SCL),  Antennenanschlüsse (AC0, AC1) und optional RF disable, Schreib-/Leseereignisse (GPO).

    • Schaltung zusammen stecken:

      Pinout:
      -------------------------------------------------------------------------------
      M24SR -> Arduino / resistor / antenna
      -------------------------------------------------------------------------------
      1 RF disable -> TODO not used
      2 AC0 (antenna) -> Antenna
      3 AC1 (antenna) -> Antenna
      4 VSS (GND) -> Arduino Gnd
      5 SDA (I2C data) -> Arduino A4
      6 SCL (I2C clock) -> Arduino A5
      7 GPO -> Arduino D7 + Pull-Up resistor (>4.7kOhm) to VCC
      8 VCC (2...5V) -> Arduino 5V
      -------------------------------------------------------------------------------
    • Arduino M24SR-Lib https://github.com/rena2019/ArduinoM24SR herunterladen

Beispiele

Sample: SystemFile

Dieses Beispiel zeigt nur die Eigenschaften des Tags an (UID, Speichergrösse, Produktcode). Es dient nur zum Überprüfen der korrekten Verdrahtung/Funktionsweise des Chips. Dafür ist weder Smartcard-Reader noch NFC-Smartphone erforderlich.

#include #include
#include
#include
#include
#define gpo_pin 7
M24SR m24sr(gpo_pin);

void setup()
{
Serial.begin(9600);
//for debug purpose
//m24sr._verbose = true;
//m24sr._cmds = true;
m24sr._setup();
m24sr.displaySystemFile();
}

void loop()
{
}

 

Sample: NDefWrite

Einfachstes Beispiel, bei dem eine (von drei) vordefinierten NDef-URL-Records in den M24SR via I2C geschrieben wird. Nach einem Reset wird der Record jedesmal neu geschrieben und kann mit einem NFC-Smartphone ausgelesen werden (Browser öffnet automatisch URL)

Sample: NFC-Info-Display

Für dieses Beispiel muss der GPO-Pin mit einem Pullup-Widerstand zusätzlich zu den I2C-Leitungen an den Arduino angeschlossen werden. Über diesen Pin erhält der Arduino ein Signal bei Schreib-/Leseversuchen über das RF-Interface. Beschreibt man den NFC-Tag mit einer App (z.B. NFC-TagWriter oder ST M24SR Demo App) so wird der Inhalt des NDEF-Records auf dem optional via SPI angeschlossenen TFT zb 128×160 angezeigt.

Arduino_M24SR_Antenna_TFT_CIMG4837
Bei gleichzeitiger Nutzung von mehreren Bibliotheken (NDef, M24SR) kommt man mit dem Arduino schnell an die Grenzen des RAMs. Bei der Implementierung der M24SR-Bibliothek kam es mehrfach zu unerklärlichem Verhalten, die Funktion displayFreeRAM legte dann das Problem offen: Speicher zu klein :-/

Links
Blogartikel: ST M24SR – Low-Cost NFC Tag mit I2C-Schnittstelle
Arduino M24SR Lib (Source Code) https://github.com/rena2019/ArduinoM24SR
ST M24SR64-Y Datenblatt http://www.st.com/web/en/resource/technical/document/datasheet/DM00067892.pdf
Google Play – ST M24SR Demo App https://play.google.com/store/apps/details?id=com.nfc.m24srdemo
Google Play – NFC TagWriter App https://play.google.com/store/apps/details?id=com.nxp.nfc.tagwriter

ST M24SR – Low-Cost NFC Tag mit I2C-Schnittstelle

IC-SO8

STMicroelectronics bietet sehr günstige ($0.34 – $1.88) Bausteine an um die NFC-Schnittstelle in eigene Schaltungen/Produkte zu intergrieren: M24SR

Features

* NFC Forum Tag Type 4 (basierend auf ISO 14443 RF-Interface)
* 1 MHz I2C-Schnittstelle (2.7 bis 5.5 V)
* EEPROM Speichergrössen: 2, 4, 16, 64 Kbits mit built-in NDEF Unterstützung
* ‚RF disable‘-Pin erlaubt der Anwendung den RF Zugriff per NFC Phone zu kontrollieren
* 128-bit Passwortschutz
* Ausgangspin zum Triggern von Applikationen (bei unterschiedlichen Ereignissen)
* einfaches Antennen Design
* 7 Byte UID

Der M24SR wird u.a. im SO8-Package (neben TSSOP8- und UFDFPN8-Package ) angeboten sodass er sogar ohne SMD-Werkzeug auf PCB eingelötet werden kann. Das Konkurrenzprodukt NTAG I2C (NT3H1101/NT3H1201
) von NXP wird im Gegensatz nur als XQFN8-Package (Body 1.6 x 1.6 x 0.6mm) angeboten.

Praxis

M24SR-Pin-Layout
Schliesst man an die AC0 und AC1 Pins des Baustein nur eine Antenne an (5 Windungen aus dünnem Kabel um 2 Finger gewickelt) kann er als einfacher NFC-Tag genutzt werden. Mit einem NFC Android Smartphone z.B. kann man den Tag auslesen, bzw mit einer App mit Text-,URI-, etc NDEF-Records beschrieben werden. Das Besondere an dem Chip ist allerdings die I2C-Schnittstelle. Schliesst man zusätzlich die Pins VSS alias GND (Pin4), VCC (Pin8), SCL (Pin6) und SDA (Pin5) an einen Mikrokontroller an können hierüber Daten an den M24SR gesendet werden und aus dem statischen NFC-Tag wird ein dynamischer (z.B. Temperatur als NDEF-Record oder URI mit One-Time-Password).

GPO (General Purpose Output) Pin

Verbindet man zusätzlich noch den GPO-Pin (Pin7) kann der angeschlossene Mikrokontroller Events empfangen, wenn z.B. die Daten im Speicher via RF-Interface geändert worden sind. Somit ist es möglich Daten aus dem M24SR auszulesen ohne die RF-Kommunikation zu unterbrechen.

App Kompatibilität

ST bietet im Google Play Store die ST M24SR Demo App an, um den Tag zu beschreiben/auszulesen. Da der Tag aber NFC-Forum Tag Type 4 kompatibel ist können auch andere Apps beispielweise die NXP TagWriter App benutzt werden.

Screenshot_M24SR_Demo_App   Screenshot_M24SR_Demo_App_NDEF_Editor

Am PC lässt sich der NFC-Tag wie eine kontaktlose (ISO14443-4) Smartcard auslesen:

screenshot_mysmartcardioshell_m24sr

 

Links und Info

ST M24SR64-Y Datenblatt http://www.st.com/web/en/resource/technical/document/datasheet/DM00067892.pdf
Evalboard M24SR-DISCOVERY 32EUR http://www.exp-tech.de/Shields/Wireless/RFID/M24SR-DISCOVERY-Dynamic-NFC-RFID-tag.html
Google Play – ST M24SR Demo App https://play.google.com/store/apps/details?id=com.nfc.m24srdemo
ST M24SR Demo App – Source Code  http://www.st.com/web/catalog/tools/FM147/SC1871/PF260169
Mouser: STMicroelectronics M24SR Dynamic NFC/RFID Tag ICs http://www.mouser.com/new/stmicroelectronics/stm-m24sr-nfc-rfid/?cm_mmc=PressRelease-PR-_-STMicro-_-M24SR_RFIDNFC-_-2014-04-02
NXP NTAG I2C (NT3H1101/NT3H1201) http://www.nxp.com/documents/short_data_sheet/NT3H1101_1201_SDS.pdf

Liste von Arduino-/ARM-/ATtiny-/Eval-Boards unter 15EUR

Hier einfach mal eine Liste von Arduino-, ATtiny-, ARM-, Eval-Boards, die unter 15EUR kosten – für Projekte, wo einfach nur ein günstiges, fertiges Board (bzw Kit) erforderlich ist und das Rad nicht erst neu erfunden werden muss bzw der PCB-Service bemüht werden muss. Am Interessantesten finde ich den DigiSpark in Stick Form, welcher direkt an den USB-Port angeschlossen werden kann. Allerdings hat das Boards auch die geringste Performance und kann wohl auch nur zum Betreiben einer LED oder als Eingabe-/Ausgabe-Leitungen (zB zur Ansteuerung, Einlesen von Sensor) genutzt werden. Die leistungsstärkeren ARM-Boards verfügen teils auch gleich über Peripherie On-board.

Freescale FRDM-KL05Z

Freescale_FRDM-KL05Z
Freescale ARM Cortex-M0+ MCU, 32 KB flash, 4 KB SRAM, 48 MHz
+ 3-axis digital accelerometer, capacitive touch slider, RGB LED
10.17EUR (+5.95EUR Versand) http://de.farnell.com/freescale-semiconductor/frdm-kl05z/eval-kinetis-l-freedom-cortex-m0/dp/2254491?Ntt=2254491

Freescale FRDM-KL25Z ARM Cortex-M0+ Development Board

Freescale FRDM-KL25Z
Freescale ARM Cortex-M0+ MCU, 128KB flash, 16KB SRAM, 8 MHz
+ USB
12,95 EUR (+3.50EUR DHL Paket) exp-tech.de
https://mbed.org/handbook/mbed-FRDM-KL25Z

LPC800/LPC812 MAX Board

LPC800_LPC812_MAX_Board
NXP LPC812 Cortex-M0+, 16 kB Flash, 4 kB RAM, 12 MHz
15EUR (+7.60 EUR First Class Mail) embeddedartists.com

LPC-P1114 Development prototype board for LPC1114 CORTEX M0 ARM microcontroller

LPC-P1114_Development_prototype_board
LPC1114 Cortex-M0, up to 50 Mhz, 32 kB Flash, 8kB SRAM
11.95 EUR (+5.50EUR Airmail Europe) olimex.com

STM32VL Discovery

STM32LV_Discovery
STM32F100RB ARM Cortex-M3 Microcontroller, 128 KB Flash, 8 KB RAM
12,14 EUR (+3.50EUR Versand) watterott.com

TI LM4F120 Stellaris LaunchPad

med_ek-lm4f120xl_stellarislaunchpad_tool
TI ARM Cortex-M4F, 256KB Flash, 32 kB SRAM
+ USB, RGB LED
12,35 EUR (+3.50EUR Versand) watterott.com

Adafruit Trinket

adafruit_products_trinket_clear_products_1500_ORIG
Atmel ATtiny85, 8K Flash, 512 Byte SRAM, 512 Byte EEPROM
7,39 EUR (+3.50EUR Versand) watterott.com

OLIMEXINO-85-ASM

OLIMEXINO-85-1
The smallest Olimex Arduino-inspired board
Atmel ATtiny85, 8K Flash, 512 Byte SRAM, 512 Byte EEPROM
6EUR (+5.50EUR Airmail Europe) olimex.com

OLIMEXINO-85-KIT

OLIMEXINO-85-KIT
Arduino OLIMEXINO-85 in DO-IT-YOURSELF (DYI)
Atmel ATtiny85, 8K Flash, 512 Byte SRAM, 512 Byte EEPROM
4EUR (+5.50EUR Airmail Europe) olimex.com

OLIMEXINO-85S
OLIMEXINO-85S-1

ATtiny85-SU microcontroller with pre-loaded „micronucleus tiny85“ bootloader, World’s smallest Arduino-compatible board
5EUR (+5.50EUR Airmail Europe) olimex.com

OLIMEXINO-85BC
OLIMEXINO-85BC

ATtiny85, Two LEDs – power and status, Reset button
7EUR (+5.50EUR Airmail Europe) olimex.com

DFRobot Cheapduino

DFRobot_Cheapduino
Atmel AVR ATmega8, 8Kbytes Flash, 1KB SRAM, 512K EEPROM
3,40EUR (+5EUR Versand) www.lipoly.de
Hersteller Wiki www.dfrobot.com

Digispark USB Development Board

Digispark_USB_Development_Board
Atmel ATtiny85, 8Kbytes Flash, 512 Byte SRAM, 512 Byte EEPROM
8.95EUR (+2,50EUR Versand) shop.cboden.de
Alternativer Anbieter ~12.50EUR ($8.95 + $8.00 Versand) www.tindie.com
Hersteller http://digistump.com/product.php?id=1

Wattuino pro mini adv 5V/16MHz

Wattuino_pro_mini
ATmega328P, 32 Kbytes Flash, 1 KB EEPROM, 2KB SRAM
– kein USB
10EUR (+3.50EUR Versand) www.watterott.com

Nano V3.0 AVR ATmega328

arduino_Nano_V3.0
Atmel ATmega328, 32 Kbytes Flash, 1 KB EEPROM, 2KB SRAM
USB Kabel inklusive
8.24EUR (kostenloser Versand) dx.com

Adafruit Gemma

Adafruit Gemma

7.57EUR (+3.50 EUR Versand) www.exp-tech.de
Hersteller www.adafruit.com

PicoDuino

PicoDuino
ATtiny85 Board mit RGB LED und Taster, Hardware-kompatibel zum Adafruit GEMMA / TRINKET Board
ab ~12EUR ($12.20 + $4.00 Versand) www.tindie.com

ITeaduino Tiny

ITeaduino_Tiny
Attiny85 Board mit Power und Test/Status LED
~9.50EUR ($9.00 + Registered Air Mail $3.90) imall.iteadstudio.com

weitere Microcontroller Boards bei Tindie

Bei Tindie, einem Marktplatz für unabhängige Entwickler gibt es auch einige interessante MSP430- und ATtiny85-Boards
www.tindie.com

Günstige Arduino Komponenten

Manchmal macht es einfach nur Spass bei eBay bzw bei einigen chinesischen Webshops im Arduino Umfeld zu stöbern. Oft stösst man dabei auf sehr günstige Komponenten, die man für das nächste Projekt einsetzen kann. Hier mal eine Liste mit Arduino Komponenten, die in keiner Arduino Bastelkiste fehlen sollten, teils zu unverschämt niedrigen Preisen:

4×4 Matrix Keypad

4x4-Keypad-1

Matrix mit 16 Tastern zum triggern von Events ab ~1.20EUR

4×4 Keypad Matrix mit LEDs

4x4-Keypad-LED

Ebenfalls eine Button Matrix, hier aber gleich mit LEDs inkl. Vorwiderstände ab ~2EUR

SD Card Module Slot

SD_Card_Module

Ethernet-Modul gekauft, aber evtl eins ohne SD-Karte erwischt? Oder soll der Arduino einfach nur sehr viele Logdaten aufnehmen? SD Card Module per SPI anbinden und Daten ab auf die SD-Karte ab ~1.10EUR

(ENC28J60) Ethernet LAN Network Modul

enc28j60-ethernet

Ebenfalls per SPI ansprechbar – das Ethernet LAN Modul. Es ist immer wieder faszinierend wenn man mit dem Arduino einen Webserver betreibt und Sensoren per Browser auslesen kann, ab ~3EUR

Nokia 5110 LCD

nokia5110-lcd

Wenn der serielle Port bereits belegt ist und man somit keine Debugmeldungen mehr anzeigen kann oder wenn der Arduino stand-alone betrieben wird eine Anzeige aber erforderlich ist, ab ~2.40EUR

Wireless Bluetooth Transceiver

hc-06-bluetooth

Arduino Bluetooth Shield zu teuer aber Bluetooth erforderlich, bzw einfach mal Arduino vom Smartphone aus ansteuern? Das Bluetooth Modul (HC-05, HC-06) gibt es in verschiedenen Varianten: nur Slave, Slave + Master, mit und ohne Baseboard (kann dann mit 3.3V bzw 5V betrieben werden), ab ~6EUR

Alle angegebene Preise (inkl Versand) sind mit dem Stand vom 15.08.2013 und können sich somit bereits verändert haben, bzw die Komponenten sind teils sogar bei anderen chinesischen Händlern günstiger zu beziehen. Am besten mal den ChinaPriceFinder anwerfen und vergleichen.

libnfc mit Arduino NFC Shield nutzen

seeedstudio-arduino-nfc-shield

Auf dem Arduino NFC Shield von Seeedstudio ist der populäre PN532 NFC Chip von NXP verbaut, der auch in vielen kontaktlosen Smartcard Readern zum Einsatz kommt. In Verbindung mit libnfc kann auf eine Vielzahl von Funktionen zurückgegriffen werden, die seit einigen Jahren kontinuierlich ausgebaut werden. Genau für diesen Zweck gibt es das mfocuino Projekt bei Google Code.Im folgenden sind die Schritte zum bauen unter Ubuntu beschrieben:

# get and extract libnfc
$ cd ~
$ wget http://libnfc.googlecode.com/files/libnfc-1.7.0-rc1.tar.gz
$ tar -xvzf libnfc-1.7.0-rc1.tar.gz
$ cd libnfc-1.7.0-rc1

# get and apply patch
# fkt nicht weil haendische gepatched:
# wget https://mfocuino.googlecode.com/svn/trunk/nfcreader/libnfc.uart.patch
# besser
$ wget http://mfocuino.googlecode.com/svn-history/r29/trunk/nfcreader/libnfc.uart.patch
$ patch -p0 < libnfc.uart.patch

#configure libnfc for PN532/UART
$ ./configure --with-drivers=pn532_uart --sysconfdir=/etc --prefix=/usr --enable-debug

#compile
$ make clean
$ make
#evtl im system installieren
$ sudo make install

#configure libnf
$ sudo mkdir /etc/nfc
$ sudo mkdir -p /etc/nfc/devices.d

# create: /etc/nfc/libnfc.conf
allow_autoscan = true 
allow_intrusive_scan = false 
log_level = 3 
device.name = "microBuilder.eu" 
device.connstring = "pn532_uart:/dev/ttyUSB0:115200"

#download arduino sketch
$ cd ~/sketchbook
$ mkdir uartnfc
$ cd uartnfc
$ wget https://mfocuino.googlecode.com/svn/trunk/nfcreader/arduino/uartnfc.ino
$ wget http://mfocuino.googlecode.com/svn/trunk/nfcreader/arduino/libraries/PN532/PN532.cpp
$ wget http://mfocuino.googlecode.com/svn/trunk/nfcreader/arduino/libraries/PN532/PN532.h
#compile / upload arduino sketch
#test 
$ LIBNFC_LOG_LEVEL=3 nfc-list

Note: Leider funktionieren nicht alle examples und utils mit dem NFC Shield, zb emulate.
Links:
Anweisung wie man libnfc mit mfocuino baut http://code.google.com/p/mfocuino/wiki/buildingLibNfc
Using libnfc with the PN532 (Linux) http://www.microbuilder.eu/blog/11-02-19/Using_libnfc_with_the_PN532_Linux.aspx

Aktive Arduino NFC-/RFID Schutzhuelle

Ganz veraengstigt von dem Bericht Lauschangriff auf neue Kreditkarten Reportage Muenchen mache ich mich auf die Suche nach einer Gegenmassnahme wieder den boesen Kreditkartendiebe. Da diese Berichte ja nur verunsichern wollen und nur am Rande von Gegenmassnahmen berichten, muss sich der DIY-Nerd wie immer selber helfen. Wer lieber nur 3.85EUR (inkl. Versand) für langweilige fertige Produkte ausgeben will sollte sich eine RFID-Schutzhülle bei http://www.pass-sicherheit.de/rfid-schutzhuellen-karte-perso-bank-c-42_40.html kaufen und nicht weiterlesen.

Einkaufsliste

  1. Arduino Board fuer 25EUR
  2. NFC-Shield fuer 30$
  3. 9Volt-Blockbatterie fuer 1EUR
  4. Stecker/Clip 1EUR
  5. Piezo-Lautsprecher 1EUR

Funktionsweise

So wie in http://proteino.de/blog/index.php/2011/12/13/arduino-nfc-shield-smartcardreader-iso-14443-18092/ beschrieben kommt auch hier ein Arduino mit NFC-Shield zum Einsatz. Allerdings wird das NFC-Shield nicht als Lesegerät genutzt, sondern emuliert eine ISO/IEC 14443-Karte alias NFC-Kreditkarte. Funkanfragen des Angreifers werden vom NFC-Shield an das Arduino Board gesendet und Fake-Daten werden dem Angreifer zurück gesendet. Ausserdem wird das Auslesen mit dem Piezo-Lautsprecher lautstark verkündet.
Hierfür muss die Seeedstudio NFC-Shield Bibliothek ein wenig erweitert werden, da der Card Emulation Mode nur halbherzig implementiert ist. Auslesen bzw Testen kann man die ‚Karte‘ dann mit der https://github.com/thomasskora/android-nfc-paycardreader Android App.


NFC/RFID Geldkarte/Kreditkarte Berichte
Daten von neuer EC-Karte auslesbar – NDR Hallo Niedersachsen http://www.ndr.de/fernsehen/sendungen/hallo_niedersachsen/media/hallonds9955.html
Lauschangriff auf neue Kreditkarten: Einfacher Datenklau per Funk – report München http://www.ardmediathek.de/das-erste/report-muenchen/lauschangriff-auf-neue-kreditkarten-einfacher-datenklau?documentId=10760822
Datenschützer warnen vor elektronischem Taschendiebstahl – RTL http://www.rtl.de/cms/news/rtl-aktuell/datenschuetzer-warnen-vor-elektronischem-taschendiebstahl-23804-51ca-23-1163458.html