Enkelt låssystem med NFC Shield för Arduino

Om man vill använda sitt chip till något som det inte finns någon lösning för är det inte omöjligt att man själv kan bygga en lösning för problemet. Har man motivationen och kan lite elektronik och programmering kan man komma ganska långt. Då behöver man bara hårdvaran. Vi kommer skriva om den hårdvara som finns i dagsläget på marknaden och som antingen fungerar bra eller åtminstone hyfsat bra med chippen, och vi börjar med läsaren som kallas för NFC Shield V2.1. Detta är en (som kan tolkas ur namnet på den) en NFC (13,56 MHz) shield för Arduino och har utvecklats av Seeed Studio. Det är open source hårdvara så dokumentationen för läsaren är väldigt bra. Det är en läsare som fungerar ovanligt bra med chippen NTAG216 och Mifare Classic. Eftersom det är en shield finns det inte mycket att tänka på för att komma igång, och en annan bra grej med den här shielden är att själva antennen hänger löst i en tråd, så det är lättare att placera den på ett sätt som passar ens tilltänkta användningsområde bättre. Här visar vi hur du kan använda denna shield för att läsa av ett chip (eller en nyckeltagg/kort) för att sedan tända en LED, baserat på om id-numret på chippet stämmer med det numret som finns sparat i koden. Istället för att tända en LED skulle man självklart kunna låsa upp ett lås istället. Denna applikation finns även beskrivet på dokumentation-sidan för shielden.

NFC Shield V2.1
NFC Shield V2.1 från Seeed Studio.

Hårdvara och material

  • 1 st Arduino (vilken modell som helst, förutom Intel Edison)
  • 1 st NFC Shield V2.0 eller V2.1
  • 1 st Kopplingsplatta
  • 2 st LED (förslagsvis en röd och en grön)
  • 2 st 1kΩ resistor
  • Kopplingstråd

Installera nödvändiga programbibliotek

Innan vi börjar koppla ihop allting behöver vi installera några programbibliotek. Om du inte redan har installerat Arduinos IDE kan du ladda ned det här och installera enligt instruktionerna för ditt operativsystem (det finns även en online-editor, men jag har inte testat den). Sedan behöver vi ladda ned programbiblioteken för att kunna använda NFC shielden.

  1. Stäng ned IDEn om det inte redan är nedstängt
  2. Ladda ned zipfilen programbiblioteket för PN532 och extrahera filerna.
  3. Kopiera mapparna för PN532, PN532_HSU, PN532_SPI, and PN532_I2C till mappen i din Arduino-mapp som heter libraries.
  4. Ladda ned Dons NDEF programbibliotek och extrahera filerna.
  5. Byt namn på mappen NDEF-master till NDEF och kopiera även denna mapp till mappen libraries i din Arduino-mapp.
  6. Starta nu Arduinos IDE. Nu ska du kunna se NDEF och PN532 som alternativ under File > Examples.

Läsa av ett chip med NFC Shield

Nu kan vi ta reda på vilket id-nummer som ditt chip har, och därefter kan vi spara den i koden och jämföra med det id-numret som vi kommer läsa från ditt chip. Sätt ihop din shield och sätt den på din Arduino, om det inte redan levereras som ett färdigt paket. Kopiera sedan koden nedan till din Arduino IDE och ladda upp koden till din Arduino.

Sedan behöver du göra följande:

  1. Öppna Serial monitor-fönstret under Verktyg > Seriell Monitor.
  2. Sätt baudrate till 115200.
  3. Håll nu läsarens antenn mot ditt chip. Id-numret på chippet och annan information kommer läsas av och printas ut i monitorn (se bilden nedan).
  4. Anteckna id-numret på chippet, vilket är markerat i bilden.

Dörrlåssystem med NFC Shield

Nu kan vi fortsätta med att bygga dörrlåssystemet. Det här är ett väldigt enkelt exempel. Systemet kommer läsa av id-numret av ett chip (eller kort) och jämföra det med ett id-numer som finns sparat i en variabel i koden. Om numret i variabeln stämmer överens med numret som finns på chippet kommer den gröna LEDn att blinka. Annars börjar den röda LEDn blinka.

Sätt ihop alla delar på enligt schemat nedan.

Kopplingsschema för dörrlås
Kopplingsschema för enkelt dörrlåssystem. Bild från seeedstudio.com

Öppna sedan upp en ny sketch och kopiera in koden nedan:

På rad 6 hittar du variabeln myUID. Ändra denna till ditt eget UID som du läste av i första delen. Ladda sedan koden till din Arduino. Öppna Seriell Monitor igen och läs först av ditt eget chip. Den gröna LEDn ska börja blinka. Läs sedan av till exempel ditt busskort. Den röda LEDn ska börja blinka.

Detta går sedan att bygga ut och koppla till exempel diverse lås. Resultatet går se i Youtube-videon nedan.

Chipster.io – Chip, IoT och smarta hem

Chipster.io är en del av Chipster, som verkar inom fälten för chippning, NFC, RFID, smarta hem och närliggande områden. Chipster.io är ett försök att fokusera på de mer tekniska aspekterna av chippen. För att uppmuntra de som är chippade att bygga sina egna lösningar vill vi sprida kunskap om teknikerna som chippen bygger på och hur man kan integrera dem med annan teknik. Till exempel vill vi visa hur man skriver kod för att läsa av ett chip med NFC-läsare, hur man använder en Proxmark3 för att undersöka ett chip och klona informationen, hur man använder en PN532-läsare med Arduino, vi kommer tipsa om hårdvara som funkar med chippen och massa andra saker med lite mer teknisk djup än vad man hittar på Chipster.nu.

Vi har märkt att de som är chippade eller som är intresserade av att chippa sig ofta också är intresserade av teknik i övrigt och då speciellt smarta hem och IoT. Men information om hur man kan integrera chippen i det smarta hemmet är väldigt bristfälligt, och produkter som funkar med chippen är få. Vi vill med den här bloggen dela med oss av den kunskap vi har kring de tekniska aspekterna av chippen, visa på hårdvara som fungerar med chippen, visa hur man integrerar chippen med annan hårdvara och ge inspiration till vad man kan göra med chippen. Nivån på texterna kommer rikta sig till de som redan har en bra grundläggande förståelse för hård- och mjukvara. Det är med andra ord inte en blogg som vänder sig till den absoluta nybörjaren. För den absoluta nybörjaren rekommenderar vi guiderna som går att hitta på Chipster.nu.

Men vi kommer även att skriva, berätta om och visa på annan teknik som inte har en direkt koppling till chippen men ligger nära chippen som teknikområde, som till exempel smarta hem, IoT och annan teknik och elektronik som ligger nära dessa områden och som är vanligt förekommande i gör-det-själv-rörelser (som till exempel 3D-printing, Arduino, Raspberry Pi och så vidare). Förhoppningen är som sagt att kunna förmedla vår kunskap och erfarenhet så andra kan bygga sina egna lösningar (och gärna dela dessa med oss och andra så vi kan fortsätta den positiva spiralen).

Redan under helgen kommer ett första superenkla exempel på vad man kan göra med en PN532-läsare som är en NFC-läsare till Arduino. Vill man ha en NFC-läsare för Arduino rekommenderas denna, men mer om det i nästa och kommande inlägg.