Mikrodenetleyicide kendin yap elektronik RFID kilidi. Şema

  • 01.05.2019

RFID konularında birkaç yıl çalıştıktan ve Mifare, EMMARINE, TIRIS gibi popüler standartların transponder modelleri için çeşitli okuyucuların geliştirilmesinden sonra ... Böyle bir soru beni sık sık şaşırtmaya başladı - kelimenin tam anlamıyla Geçen yıl popüler protokollerin etiketleri için çeşitli emülatörler ve çeşitli anahtar/biblo kopyalayıcılar geniş bir popülerlik kazanmıştır.

Popüler RFID protokollerinin ticari olarak mevcut çok sayıda özel çipleri ve ucuz okuyucular göz önüne alındığında, dijital osiloskoplar, sniffers ve spektrum analizörleri gibi ekipmanların yaygın kullanımı, bu soru birçok geliştirici için daha alakalı hale geldi. Daha sonra yukarıda anlatılan standartlardan farklı olan projelerden biri için değişim protokolü yapmaya karar verdim.

Bu fikir elbette çözmez küresel sorunlar güvenlik yeni sistem ve ekipmanın varlığında diğer geliştiriciler tarafından analiz edilebilir, ancak mesele şu ki, tüm bunlar birbiriyle örtüşmüyor. mevcut standartlar ve tüm fotokopi demir parçaları, böyle bir algoritmayı hızlı bir şekilde kopyalamanıza ve yeniden oluşturmanıza izin vermez. Tabii ki, böyle bir sistem burada sunulmamaktadır. tam çözüm güvenlik sorunları, ancak RFID'yi uyarlama deneyimi nasıl kapalı sistem. Diğer benzerleri arasında güvenlik açısından iyi bir artı kablosuz sistemler düşük frekanslı RFID teknolojisinin kendisidir - üzerindeki etiketleri okumanıza izin vermez uzun mesafe.

Pasif etiketlerin gücü oldukça düşüktür ve onları çalıştırmak için yeterli güce ihtiyaç duyar. güçlü jeneratör okuyucu, radyo dalgalarının bu frekanslarda yayılmasının özellikleri de bu sistemin çalışma sınırlarını sınırlar. Transponderlerin gerçek okuma aralığı, EmMarine gibi 125 KHz standartları için nadiren 20 cm'yi aşıyor, örneğin EM4001 standardı, Mifare (13.56 MHz) gibi diğer protokoller için daha uzun olabilir (iso15693 için 1.5 metre). elde edilebilir daha büyük mesafe sırasıyla bobinin boyutunu ve besleme voltajını ve okuyucunun gücünü artırırsanız düşük frekanslı okuyucular için okuma. Bununla birlikte, bu tür sistemler hantaldır ve genellikle taşınabilir hale getirilmesi zordur. Kural olarak, bu tür sistemler yalnızca sabit olarak uygulanır - örneğin arabalar için.

Yani, şimdi aslında RFID sistemimizin mimarisinde. Deneyler için atmel atmega8 denetleyicisi seçildi. Transponder üretimi açısından, bu inkar edilemez bir aşırılık gibi görünüyor. Ancak, içinde bu durum hazır bir c atmega hata ayıklama kartı üzerinde yeni bir arayüz geliştirmenin birincil görevi çözüldü, ardından bu kodu daha ucuz Tiny13 tipi kontrolörlere taşıdı. Transponder için, çalışma algoritması, CTC modunda T1 zamanlayıcı kullanılarak, OCR1 ile çakışma ile kesinti ve sıfırlama ile PWM üretim modu temelinde oluşturulmuştur. Transponder iletim verileri, denetleyici açıldığında EEPROM'dan okunur. Toplamda, transponder 10 bayt iletir. Transponderin EEPROM'unun içeriği şurada görülebilir: Şekil 1.İlk bayt 0xE7 zorunlu başlık paket, okuyucu tarafından paket ayrıştırılırken her şeyden önce varlığı kontrol edildiğinden.

İlk 8 bayt, transponder paketinin içeriğidir, son 2 bayt, paketin ilk sekiz baytının CRC16 sağlama toplamını içerir. Örneğin, transponderimizde aşağıdaki veriler kaydedildi - bir paket 0xE7, 0x05, 0xE8, 0x93, 0x43, 0x7F, 0x20, 0xFF ve buna bağlı olarak 0xF5 0xA8 sağlama toplamı. Kendi benzersiz transponderinizi yapmak için, ilk bayt 0xE7'ye ek olarak, sonraki yedi baytı EEPROM'a yazmanız ve ardından ilk sekiz bayt için sağlama toplamını hesaplamanız gerekir. Bundan sonra, paketin sonundaki EEPROM'a iki CRC16 bayt yazın. İlk bayt değişmeden bırakılır - 0xE7. Transponder açıldığında, bu baytların verileri bitlere bölünür ve OCR kaydının değerine göre uygun darbe uzunluğu ile kodlanır. İletim için, mantıksal “0” ve “1” iletimi için 2KHz ve 5KHz olmak üzere 2 frekans kullanılır. Ek olarak, veriler senkronizasyon darbeleri - paket başlangıç ​​işaretleri ile ayrılır.

Şekil 1 Transponder paketinin içeriği.


İncir. 2 Sanal osiloskop ekranında aktarıcı aktarım dökümü.

Transponder diyagramı görülebilir Figür 3. Ana osilatörün frekansı 8 MHz'dir. Kontrolör güç kaynağı +5V. “L” ile işaretlenmiş mega8 denetleyiciyi kullanabilirsiniz, ardından güç kaynağından sağlanabilir. lityum pil 3v (böyle bir çip için parametreler + 2.7 .... + 3.5). Bu transistör yerine başka herhangi bir düşük güçlü NPN transistör kullanabilirsiniz. Transponder bobini, 0,22 mm tel ile 50 mm çapında bir mandrel üzerine sarılmıştır ve 50 dönüşe sahiptir. Üzerinde şu an transponder aktif hale getirildi - ile harici güç kaynağı. Bir sonraki aşamada, oldukça basit olan transponderin pasif bir versiyonunun yapılması planlanmaktadır - bu bobinden güç için bir ayırma yapmak, doğrultucu köprü diyotları ve bir dengeleyici eklemek.


Şek. 3 Transponder şeması.

Şimdi bu transponder için okuyucu devresinden bahsedelim. Şema, daha önce kullanılan EMMARINE kart okuyucusuna göre uyarlanmıştır. 74hc4060'ta jeneratör bulunan devrenin bir kısmı şurada bulunabilir: bu aşama silmekten çekinmeyin, çünkü şimdilik aktif etiketi kullanıyoruz. Ancak gelecekte pasif bir etiket yaptığımızda ve okuyucudan güç almamız gerektiğinde devrenin bu kısmına ihtiyacımız olacak. Aksi takdirde devre, EMMARINE: pasif tepe dedektörü - filtre - amplifikatör - karşılaştırıcı için okuyucu devresinden önemli ölçüde farklı değildir. Devre mümkün olduğu kadar basittir ve transponder verilerini iyi ayarlanmış konturlarla 10-12 cm mesafeden okumanıza izin verir.

Devreyi daha da basitleştirebilir, sadece dedektör ve filtreyi bırakarak çıkışa bir karşılaştırıcı rolünü oynayacak bir transistör koyabilirsiniz, ancak bunu yapmadım. Çıkışta, transponder tarafından iletilen kodlanmış darbe sürelerine göre ikili dikdörtgen bir sinyal alıyoruz. Devrenin çalıştığı eleman derecelendirmelerinin izin verilen sapmaları %5-10'dur. Kontrolör ve opamp + 5V için güç kaynağı. Kontrolörün ana osilatörünün frekansı 12 MHz'dir. LM358'deki karşılaştırıcının çıkışı, INT0 denetleyicisinin harici kesme pinine bağlanır. Denetleyici programı, harici kesme pimi INT0 üzerinde yükselen kenarda bir kesmeyi çağıracak şekilde yapılandırılmıştır. Kesme işleyicisinde, saat darbelerini kontrol eder ve ardından paket başlığını kontrol eder ve içeriği kontrolör arabelleğine yazar. Okunan paketlerin verileri RS232 arabirimi aracılığıyla PC'ye iletilir. Terminali yapılandırmak için aşağıdaki parametreleri belirtin: hız 57.6Kb/s, 8 veri biti, 1 durdurma biti, eşlik yok.

Bir paket alırken, kontrolör alınan baytların sağlama toplamını hesaplar ve verileri terminale (paket ve CRC) gönderir. Denetleyici tarafından hesaplanan sağlama toplamları ve pakette alınanlar eşleşirse, denetleyicinin PORTB.0 pimine (14) bir sinyal gönderilir (şemada LED1). bağlanabilir verilen nokta yerleşik bir jeneratöre sahip bir tweeter veya bir direnç üzerinden bir LED. Doğru anahtarı okurken, kontrolör harici kesmeleri devre dışı bırakır ve bir sonraki okumadan önce 1 saniyelik bir gecikme yapar. Bu okuyucunun bir RFID kilidinin temeli olarak bir çalışma modu da vardır. Bunu yapmak için, transponder dökümünün tam baytlarını okuyucu denetleyicinin EEPROM'una - 10 bayt - yazmak gerekir. Veriler, okuyucunun EEPROM'una, aktarıcının EEPROM'uyla aynı şekilde yazılır. Bu durumda, bir sonraki transponder okunurken ve okuyucunun EEPROM'unda kaydedilen ile eşleştirilirken, kontrolörün PORTB.1 pinine (15) bir sinyal çıkışı yapılır (şemada LED2). Bu noktada röle üzerindeki direnç veya çıkış anahtarı (transistör) üzerinden LED'i bağlayabilirsiniz. yürütme cihazı. Artık tek bir pakette belirli bir anahtar için bir RFID kilidi ve normal bir okuyucumuz var.


Şekil 4 Bir RFID etiket okuyucusunun şeması. (diyagramı büyüt)

Öyleyse, ara sonuçları özetleyelim. Bu okuyucu için kendi okuyucumuzu ve transponderimizi yaptık. Ekipmanlarımızı, popüler RFID protokolleriyle çalışan yabancı cihazlardan koruduk. Sonraki adım okuyucumuz için yaptıkları gibi pasif bir etiket üretimi olacak tanınmış üreticiler endüstriyel transponderler ve ekipman kodunu daha ucuz kontrolör modellerine taşıma. Arşivde, transponder ve okuyucu için ürün yazılımı makalesine ekliyorum.

Bellenimi indirin:
Sunucumuzdan dosya indirme erişiminiz yok

1 okuyucu açıklaması RFID RC522

RFID-RC522 modülü, NXP MFRC522 çipini temel alır. Bu çip, 13.56 MHz frekansında iki yönlü kablosuz (6 cm'ye kadar) iletişim sağlar.

MFRC522 çipi destekler aşağıdaki seçenekler bağlantılar:

Kullanarak bu modülçeşitli RFID etiketlerinden veri yazabilir ve okuyabilirsiniz: interkomlardan anahtarlıklar, plastik geçiş kartları ve metro biletleri ve kara taşımacılığı, ve giderek daha popüler olan NFC etiketleri.

RFID, "Radyo Frekansı Tanımlaması"nın kısaltmasıdır ve "Radyo Frekansı Tanımlaması" olarak tercüme edilir.
NFC, "Yakın alan iletişimi", "yakın alan iletişimi" veya "yakın temassız iletişim"dir.

2 Bağlantı şeması Arduino'ya RFID-RC522

Yukarıdaki şemaya göre RFID-RC522 modülünü SPI arayüzü üzerinden Arduino'ya bağlayalım.


Modül 2,5 ila 3,3 V'luk bir voltajla çalışır. Pinlerin geri kalanı Arduino'ya şu şekilde bağlanır:

Pim RC522Arduino Pimi
RSTD9
SDA(SS)D10
MOSID11
MİSOD12
SCKD13

Arduino'nun özel bir özelliği olduğunu da unutmayın. ICSP konektörü SPI arayüzü üzerinde çalışmak için. Pin çıkışı da resimde gösterilmiştir. RC522 modülünün RST, SCK, MISO, MOSI ve GND pinlerini Arduino üzerindeki ICSP başlığına bağlayabilirsiniz.

3 İş için kitaplık RFID ile Arduino

MFRC522 yongası oldukça kapsamlı bir işlevselliğe sahiptir. Pasaportunu (veri sayfası) inceleyerek tüm olasılıkları öğrenebilirsiniz. Bu cihazın yeteneklerini tanımak için, bunun için yazılmış hazır kütüphanelerden birini kullanacağız. Arduino çalışması RC522 ile. İndirin ve Arduino IDE\libraries\ dizinine çıkartın


Arduino'nun RFID etiketleriyle çalışması için "rfid-master" kitaplığının kurulması

Ardından Arduino IDE'yi başlatın.

4 Bilgi okumak için eskiz, RFID etiketinde yazılı

Şimdi örneklerden taslağı açalım: Dosya Örnekleri MFRC522 DumpInfo ve Arduino belleğine yükleyin.


Bu çizim, okuyucuya takılan cihazın türünü belirler ve RFID etiketi veya kartına yazılan verileri okur ve ardından seri porta çıkartır.

#Dahil etmek #Dahil etmek const int RST_PIN = 9; // pin RST const int SS_PIN = 10; // SDA pini (SS) MFRC522 mfrc522(SS_PIN, RST_PIN); // bir MFRC522 nesnesi yarat geçersiz kurulum()( Seri.başla(9600); // başlatma son. bağlantı noktası SPI.begin(); // SPI veri yolu başlatma mfrc522.PCD_Init(); // RC522 okuyucunun başlatılması ) geçersiz döngü() (// Uygulanacak yeni bir RFID etiketi bekleniyor: if (! mfrc522.PICC_IsNewCardPresent()) ( dönüş; // uygulanmadıysa çık yeni harita) // Seri numarasını oku: if (! mfrc522.PICC_ReadCardSerial()) ( dönüş; // seri numarası okunamıyorsa çık ) bağlantı noktası: mfrc522.PICC_DumpToSerial(&(mfrc522.uid)); }

Kroki metni oldukça iyi yorumlanmıştır.

Daha fazlası için tam tanıdık kütüphane keşif dosyaları ile MFRC522.h ve MFRC522.cpp dizinden rfid ustası.

5 Veri dökümü RFID etiketleri ile

Monitörü başlatalım seri port klavye kısayolu Ctrl+Üst Karakter+M, menü aracılığıyla Aletler veya büyüteç düğmesi. Şimdi okuyucuya bir metro bileti veya başka bir RFID etiketi ekleyelim. Seri port monitörü, RFID etiketine veya bilete yazılan verileri gösterecektir.


Örneğin, benim durumumda, burada şifreli benzersiz numara bilet, satın alma tarihi, geçerlilik süresi, kalan seyahat sayısı ve hizmet bilgileri. Metro ve yüzey ulaşım haritalarında nelerin kaydedildiğini gelecekteki makalelerden birinde analiz edeceğiz.

Not

Evet, RFID-RC522 modülünü kullanarak bir metro biletine veri yazabilirsiniz. Ancak kendinizi övmeyin, her kartın yeniden yazılabilir olmayan bir yazma döngüsü sayacı vardır, bu nedenle metronuza gezi “ekleyemezsiniz” - hemen algılanır ve kart turnike tarafından reddedilir :) Ancak metro biletlerini kullanarak üzerlerine az miktarda veri kaydedebilirsiniz - 1'den 4 kb'ye kadar - yapabilirsiniz. Ve onu kullanmanın yolları sadece hayal gücünüzle sınırlıdır.

19 Eylül 2013 saat 06:32

Bütçe UHF RFID okuyucu ve gelişimi

  • kablosuz teknolojiler

Merhaba saygıdeğer bayanlar ve baylar.
En ucuz UHF RFID okuyucu veya EPC Gen2 okuyucu perakende satışta en az 200 USD'dir.

10$'lık parçadan nasıl çalışır durumda bir UHF RFID okuyucu yapabileceğiniz ve bundan nasıl yararlanabileceğiniz aşağıda açıklanmıştır.

Çoğu modern EPC Gen2 RFID okuyucusu özel mikro devreler. Impinj, AMS ve Phychips tarafından üretilirler. En ucuz çipler, 1000 parçalık lotlarda yaklaşık 20 USD'ye mal oluyor. RFID okuyucular harika oluyor: güçlü, çevik ve uzun menzilli - ama pahalı.
Bu bahar, perakende olarak yaklaşık 5 USD'ye mal olan yaygın radyo bileşenlerinden çalışan bir RFID okuyucunun nasıl monte edileceğine ilişkin "Basit Düşük Maliyetli UHF RFID Okuyucu" adlı bir makale internette yayınlandı. Fikir basit görünüyor, ancak uygulama ancak son zamanlarda meyvelerini verdi. Geliştirmenin temeli, genellikle antenin yakınında birkaç üç işareti yavaşça saymanız gerektiği ve okuyucu başına 200-500 işaretlik bir okuyucu için çok para ödemenize gerek olmadığı gerçeğine dayanmaktadır. ikinci. Okuyucunun blok şeması resimde gösterilmiştir.


Güzelliği sadeliğindedir. Temel, etiketi sorgulamak için gerekli olan GPIO ayağında EPC Gen2 standart sinyallerini üreten geleneksel bir mikro denetleyicidir. Sinyaller Melexis TH72035 verici çipine, ardından bir Johanson 0910CF15B0100 kuplörü aracılığıyla antene iletilir. Alıcı, aşağıdaki şemaya göre tek bir MAX931 karşılaştırıcısına monte edilmiştir.


Alıcıdan gelen mantık sinyalleri, mikroişlemcinin başka bir GPIO pinine gönderilir. Basit bir yazılım UHF RFID okuyucu alıyoruz. Tabii ki, yumuşak bir EPC Gen2 RFID okuyucusu yazmak bir kilo kuru üzüm değildir. Ancak hedefleri açıkça tanımlarsanız ve yalnızca EPC Gen2 protokolünün doğru alt kümesini kullanırsanız, görev büyük ölçüde basitleşir.
Tanımlanan projenin yazarları, amaçlarından biri Daha fazla gelişme RFID okuyucunun tüm bileşenlerinin tek bir panoya yerleştirilmesini düşünün. Ama ters yöne gitmek daha ilginç olmaz mıydı? Yani, okuyucuyu fiziksel olarak ayrı fonksiyonel modüllere ayırın ve ardından farklı modüllerden bir RFID okuyucu oluşturun. gerekli özellikler. Aşağıdaki her şey, ayrıntılı detaylandırma olmadan sadece bir fikirdir.

Ana modülün mikroişlemci tabanlı olduğu açıktır. Muhtemelen, okuyucuyu kontrol etmek için UART ve USB konektörlerine çıkış Cortex-M0 üzerinde yapılması gerekiyor. Alıcı-verici modülünü bağlamak için 6 pinli bir konektör kullanın: Alıcı-verici gücü için Rx, Tx, 2, 2 GPIO. Bu tür konektörler, mikroişlemcinin çıkışları yeterli olduğu sürece 2-4 yapılabilir.
Alıcı-verici modülü, mikroişlemci modülüne doğrudan veya aracılığıyla bağlanacaktır. kısa kablo. Belki de alıcı-verici modülleri için birkaç seçenek yapmak gerekir. farklı güç ve fiyat, ancak aynı konektör. Konektörün 5. pimi alıcı-vericiyi açmak için kullanılabilir ve gerekirse 6. pim bir tür sensör için kullanılabilir. Alıcı-vericinin baskılı devre kartını metalize uç yarım deliklerle yapmak mantıklıdır. Daha sonra baskılı devre kartlarına lehimlenebilir. farklı antenler veya SMA koaksiyel konektörlü PCB.
Böylece mikroişlemci modülü ile alıcı-verici modülü bağlayarak bir RFID okuyucu elde etmiş oluyoruz. Ama sırf bunun için, bir bahçeyi çitle çevirmeye değmez. Daha ileri gidelim. Alıcı-verici yerine mikroişlemci modülünün 6 pinli konektörüne bir RS422 sürücüsü ve bir RJ45 soketi olan bir kart takalım (çift 1 - alma, çift 2 - gönderme, 3 - güç, 4 - GPIO). Aynı şeyi alıcı-vericiye yapıştıracağız. Artık mikroişlemci modülünü ve alıcı-vericiyi herhangi bir yama kablosu kullanarak veya bağlantı için bir ofis SCS kullanarak bağlamanın mümkün olduğu açıktır. Genel olarak anten, mikroişlemci modülünden çok uzağa yerleştirilebilir. Ve koaksiyel yok.
Eh, hepsi bu değil :) RS422 bir otobüs. Alıcı-verici, bir D-flip-flop çipini barındırabilir. Alıcı-verici modüllerini ara kablolarla seri olarak bağlayın. Doğru, bir D-flip-flop yerine senkron bir sayaç takılıysa, ikinci bir RJ45 konektörü veya bir T-splitter gereklidir. Dördüncü UTP çiftindeki iki GPIO yardımıyla istediğiniz alıcı-vericiyi seçebilirsiniz. Resimdeki gibi dağıtılmış bir RFID okuyucu çıkıyor.


USB neden gereklidir: ancak okuyucuyu bir Android tablete bağlayabilmek için.

Çözüm, yüksek etiket okuma hızı ve aralığının gerekli olmadığı durumlarda uygulanabilir.
1. Gastronomi için uygun değildir. Bunlar geleceğin RFID mağazaları. Ve şimdiki RFID mağazaları, büyük mağazalardır (ayakkabılar ve giysiler). Orada, RFID okuyucular zaten soyunma odalarında (etkileşimli bir ekranla birlikte), kasalarda ve mallarla dolu akıllı raflarda kullanılıyor.
2. Euro paletli depolar (paletlerin sol köşelerinin olduğu alıcı-verici modülleri zinciri).
3. Erişim sistemiçeşitli halka açık etkinliklere.
4. Muhtemelen başka bir yerde.

İçeride çok konuşma son zamanlar RFID etiketlerinin kullanımı etrafında toplanmıştır, hatta istenirse belirli bilgisayar becerilerine sahip kişilerin ev sisteminize girebileceğini ve eşyalarınız hakkında tam bilgi alabileceğini öne süren tartışmalarla birlikte.

Bu teknolojiyi kendim bulmaya karar verdim. Bunu yapmak için gerekli bileşenleri sipariş ettim ve RFID okuyucuyu kendi ellerimle monte ettim.

Bu yazıda size çalışan bir RFID okuyucunun nasıl monte edileceğini göstereceğim.

Aşama 1


Okuduğum makalelerden birinde yazar, mobil RFID okuyucusunun yalnızca 13.56 MHz (kısa dalga) frekansında çalıştığını, ancak 1.25 kHz frekansında (AM bant sınırının altındaki dalga boyu) çalışmadığını söyledi. 125 kHz endüstri standardı frekansında çalışan bir okuyucu yaptım. Bu, okuyucumun farklı bir anten ve kapasitör kombinasyonuna ihtiyacı olduğu anlamına gelir. Bu resimli temel devre ve temel formül. İstenilen değeri elde etmek için uygun formülü seçin, değerlerinizi değiştirin ve sonucu almak için hesap makinesini kullanın.

Bileşenlerin listesi:

  • 22 ila 30 gauge arasında yaklaşık 12 m ince tel (30 gauge kullandım).
  • Herhangi bir diyot (kırmızı kullandım).
  • Seri bağlı bir 0,005 uF kapasitör veya iki 0,01 uF disk kapasitör.
  • 2-5 disk kapasitör 100pF.
  • Bobin için taban (herhangi bir taban, bobinin çapı 10 cm olmalıdır).
  • Deneme montajları için prototipleme için PCB.
  • Düzgün ve hassas montaj için PCB.
  • Alıcıdan okumalar almak için okuyucuya erişme yeteneği.
  • Alıcı tarafından çalıştırıldığı için piller gerekli değildir. kablosuz olarak okuyucudan.

Adım 2



İlk olarak, teli yaklaşık 10 cm çapında bir tabanın etrafına sardım (birkaç santimetre olsun ya da olmasın, bir rol oynamayacağından eminim).

Tabanın etrafına sarılmış tel ile, makarayı daha önce sahip olduğum diğer makaralarla karşılaştırdım. Bu yüzden yeni bobinin endüktansını kabaca tahmin ettim - yaklaşık 330 μH aldım.

Formüle 330uH bağladım ve sonuç, bobin-kapasitör çiftini 125kHz'de "rezonans" yapmak ve diyota güç sağlamak için yeterli akıma sahip olmak için bu bobinin 0.005uF'lik bir kapasitöre ihtiyaç duymasıydı.

Lehimlemeye geçmeden önce bir breadboard üzerinde ön montaj yaptım.

Aşama 3


Breadboard'da önce bobini, diyotu ve iki 0.01 uF disk kapasitörünü (birbirleriyle seri olarak ve daha sonra toplam 0,005 uF (5000 pF) kapasitans veren diyot ile paralel olarak) bağlarız, sonra açarız. RFID okuyucu. Okuyucu bobinden yaklaşık 10 cm uzağa yerleştirildiğinde diyot yanar. Diyot, yaklaşık 1,5 cm mesafede çok parlak bir şekilde yanar.

Daha sonra okuyucunun menzilini artırmak için devreye paralel olarak 100pF (0.0001uF) bir kapasitör ekledim. Sonra tüm devreye paralel olarak aynı tipte ikinci bir kondansatör ekleyerek okuyucunun menzilini daha da artıracağımı öğrendim. Ve tam tersine üçüncü bir kapasitörün eklenmesi bu yarıçapı azalttı. Böylece, bobinim için en uygun kapasitansın 5200 pF olduğunu buldum (üçüncü denemenin çizimi).

Alıcım, 0.005 uF'lik bir kapasitör kullanarak 10 cm'de alacaktı. paralel bağlantı bir bobin ve bir diyot ile, ancak devre tahtası ek kapasitörlerin kullanılmasına izin verdi ve böylece mesafeyi 12,5 cm'ye çıkardı.

4. Adım




Fotoğraflar, bobin okuyucuya yaklaştıkça diyot ışımasının parlaklığının nasıl arttığını açıkça göstermektedir.
BT küçük cihaz 125 kHz frekansında çalışır. Az ya da çok uygun malzemeler kullanarak montajı oldukça basittir.

Adım 5

Deneme montajında ​​kullanılan tüm bileşenleri breadboard üzerinde, PCB üzerine monte ettim ve lehimledim. Sonra devreyi bobine yapıştırdım, böylece tüm cihaz gereksiz kablolar veya bağlantılar olmadan elden bir yerden bir yere hareket ettirilebilir. Cihaz düzgün çalışıyor. 7-12 cm aralığındaki tüm RFID okuyucularına cevap vermesini ve 125 kHz frekansında çalışmasını bekliyordum.

6. Adım

Bir diyotun belirli bir mesafedeki maksimum parıltısının 0,0052 uF kapasitansta elde edildiğini bildiğim için, bu değeri 125 kHz dalga boyu ile birlikte uygun formüle yerleştirdim ve 312 uH endüktans değerini buldum. , beklediğim 330 uH yerine.

Matematiksel hesaplamalar burada büyük bir rol oynamıyor, ancak onlar sayesinde bobinime uygun kapasitörlerin kapasitansını hesapladım. Bu, elbette, deneme yanılma yoluyla anlaşılabilir, ancak çok zaman alacaktı.

Bir noktada tekrar sıkıldım ve bana öyle geldi ki iyi sebep bir kart okuyucu satın almak için. Konsept şuydu: Kartı dizüstü bilgisayarın altına yapıştırıyoruz ve okuyucuyu bilgisayarın genellikle şarj olduğu yere koyuyoruz.

Sonuç: Dizüstü bilgisayarı “şarj” konumuna getirdiğimizde, soket otomatik olarak açılır. şarj cihazı. Ve zamanın geri kalanında, çıkış elbette kapalı. Özellikle yararlı olduğunu söylemek değil, - eğlence.

Ama her zamanki gibi bir şeyler ters gitti. Yani outlet alanında şok çalışmalar yapmak yerine nedense ilk önce yerel metro biletimde kaç sefer kaldığını öğrenmeyi öğrendim.

Anlamak için: Bu okuyucu bitmiş bir cihaz değil, bir kontrolör veya bilgisayar için bir çevre birimidir. Bu sebeple kullanımı biraz çaba gerektirecektir. Hazır tarifler"kutunun dışında" değil, ama her şey hayal gücüne ve yeteneklere bağlı.

Genellikle ne yaparlar? Çoğu zaman - kart açma, zaman izleme, evcil hayvanlar için erişim kontrol sistemi ile kilitler (örneğin, beslemeye giriş).

Deneyler için ucuz ve az çok evrensel bir okuyucu seçtim. Bu şey adına RFID, radyo tanımlama teknolojisi anlamına gelir, yani özel olarak bir şey ifade etmez. Ancak özelliklerden, demir parçasının ortak ile uyumlu olduğu anlaşılmaktadır. RFID kartları MIFARE protokolü ile.

Büyük olasılıkla, tekrar tekrar bu tür kartlarla tanıştınız. Çoğu zaman - bir ofis kartı şeklinde. Bir diğer çarpıcı örnek ise temassız metro biletleri.

Temel çalışma prensibini anlamak oldukça basittir. Kart ve okuyucunun antenleri vardır, okuyucunun sinyali (elektromanyetik alanın özü) aynı anda kart için bir güç kaynağı görevi görür. Şunlar. Hem enerji hem de veri aktarımı açısından bu, süper popüler hale gelen kablosuz şarja çok benziyor.

Kartların kendileri, değişikliğe bağlı olarak, onlarca bayttan birkaç kilobayta kadar veri taşıyabilir (benzersiz bir seri numarası dahil). Ayrıca, değişikliğe bağlı olarak, kart aşağıdakilerle donatılabilir: kriptografik koruma bilgi.

Kitte iki tarak vardı, ama ben zaten bir tane (açısal) lehimledim, üzgünüm. Bu nedenle taraksız tahta çeşidi yoktur.

Bu kit bir okuyucu, basit prototipleme ve hatta bir “anakarta” montaj için bir tarak ve iki tanımlayıcı içerir: bir MIFARE 1K kartı ve aynı özelliklere sahip bir anahtarlık. Yani, deneyler için oldukça yeterli.

.

.

.

Okuyucu panosu, gördüğünüz gibi, çok temiz görünüyor. Ve uygun bir şekilde, köşe tarağını taktıktan sonra, tarak aslında tahtadaki en yüksek elemanla yükseklikte çakıştığı için cihazın boyutları artmaz.

AAA pil ile

Şunlar. kolaylık ve çok yönlülük (tarak) ve gömme başına yerden tasarruf (tellerin doğrudan lehimlenmesi) arasında bir uzlaşma ile kendinize işkence edemezsiniz.

Diğer şeylerin yanı sıra, kartta ne yazık ki tamamen bilgi vermeyen kırmızı bir LED de var. Sonuç olarak, güç kesildiğinde bile yanıyor - açıkçası, SPI arayüzünde yeterli seviye var. Ve hiçbir şekilde kartlara cevap vermiyor.

Tek kelimeyle, okuyucu bir şekilde Arduino'ya bağlandığında yanar, bu da performansını garanti etmez.

Tepki aralığına gelince, subjektif olarak eşik, tahta yüzeyinden 2 cm uzaktadır. 2 - 2,5 cm içinde - güvensiz çalışma alanı.

Özellikler (satıcıdan):

Voltaj: 3.3V

Aktif durumda akım tüketimi: 13-26 mA

Bekleme akımı tüketimi: 10-13 mA

Uyku akımı: 80uA'dan az

Tepe tüketimi: 30mA'dan az

Çalışma frekansı: 13.56 MHz

Desteklenen kart türleri: MIFARE S50, MIFARE S70, MIFARE UltraLight, MIFARE Pro, MIFARE DESfire

arayüz: SPI

Boyutlar: 40x60 mm

Yukarıdan, kendimi iki kez ayırt ettiğim görülebilir. İlk olarak, besleme voltajına bakmadım. Ve bu arada 3.3V, bu kartı kullanmanın en kolay yolunun Arduino Uno, Voltaj regülatörleri ve 3.3V çıkış ile donatılmış Mega ve diğer (veya benzeri panolar). Neyse ki, maksimum akım tüketimi, platformun yeteneklerinin ötesine geçmiyor.

Aksi takdirde ya tek bir 3.3V güç kaynağı ya da ek bir regülatör/stabilizatör/voltaj dönüştürücü kullanmanız gerekir.

İkinci olarak, SPI arabiriminin bağlanması için 5 (!) kablo gerekir. Şunlar. toplamda 7 iletkenlik bir döngü okuyucuya uyar ve bu oldukça savurgandır. Para biriktirmek için I2C'ye odaklanmak mantıklıydı, ama ben neredeyim ve bu anlam nerede?!

Bağ
Bağlantıyı yumuşak ve sert olarak ayırmak isterdim, ancak her şey çok yakından iç içe geçmiş ve çok da ilginç olmayan bir sorunla sonuçlandı.

Tek kelimeyle, herkes RC522'yi bilir. Ama nedense kimse kitaplığa eklenen benioku dosyasında ve örneklerinden birinde plakada okuyucuyu bağlamak için neden tamamen farklı bir "pinout" olduğunu merak etmiyor.

Sanırım sebeplerden biri bu sonsuz problemler bu kütüphane ile. İkinci sebep ise Arduino Uno ve Mega için bağlantının farklı pinlere yapılmasıdır. Bu, platformların özelliğinden kaynaklanmaktadır.

Son olarak, üçüncü neden, iki pinin (SS ve RST) rastgele bağlantıya izin vermesi ve kodda yapılandırılmasıdır. Aynı zamanda, varsayılan olarak, Arduino Uno konfigürasyonu örnek kodda doldurulur ve bir Mega'nız varsa ve ajitasyon'u benioku veya örneğin başındaki plakadan bağladıysanız, o zaman, elbette, özleyeceksin.

Ama işin püf noktası, üçüncü nedenin oldukça açık olması ve hemen hemen pimlerimi ayarlayarak aşağı yukarı atladım, çünkü elimde vardı. arduino kurulu Mega. Bu nedenle, bu arada, ikinci beladan kurtuldum.

Ama ilki - SPI pinlerini bağlamak bana yeterince eziyet etti. Ayrıca başarılı bir kitaplık yapan kişinin üç kablonun banal bağlantısında bu kadar berbat edebileceğini hayal bile edemezdim.

Başka bir deyişle, kitaplık açıklamasında belirtilen ne birinci ne de ikinci seçeneğin bağlanması yardımcı olmadı. İlk başta bir "ölü tahta" olduğumu düşündüm. Bu nedenle, geç zamana rağmen kendimi toparladım ve tarağı ikincisine lehimledim (tutumlu davrandım ve aynı anda üç tane aldım). Eldeki "pinouts" a göre bağlantıyı tekrar tekrar kontrol etmeme rağmen sonuç aynı çıktı.

SPI'nin Mega'ya nasıl bağlandığını görmek için neden Arduino.cc'ye gitmediğimi sorma bile. Sanırım bir çeşit bulanıklıktı.

Ama googledim ve kısaca (ve benim gibi değil) satın almayı ve kütüphaneyle bağlantısını, anladığım kadarıyla Çinli yoldaşlardan açıkladım. Ellerim zaten düşüyordu ve bu durumda uyuyamıyordum, bu yüzden kendime yeni bulunan bir pinout ve bir kütüphane ile başka bir deney yapma izni verdim.

Ve her iki tahta da çalıştı.

Vicdanımı temizlemek için - "sorun" kitaplığı olan bir örnek indirdim ve bunun da işe yaradığı ortaya çıktı.

Bunlar okuyucuya eziyet ettiğim kartlar. Soldan sağa: setten bir kart, N harfli bir kart, bir MIFARE UltraLight metro bileti, bir Rus Demiryolları kartı

Ve bir içerik dökümü böyle görünür ve genel olarak RFID kitaplığı ve DumpInfo örneği ile kart tanıma

Eziyet özeti: bahsi geçen yoldaşın pin çıkışı eşleşiyor ve şaşırtıcı bir şekilde RFID kitaplığı benioku dosyasındaki pin çıkışıyla eşleşiyor. İkincisini göz önünde bulundurarak, ya geceleri pinleri karıştırdığımı ve tüm talihsizliklerimin bununla başladığını ya da yerel Çin kütüphanesinin bir şekilde okuyucuyu kurnazca başlattığını ve ardından çalışmaya başladığını varsayabilirim.

Sonuç olarak doğru pin çıkışı bağlandığım Çin kütüphanesi ve Mega için:

Mega RC522
3.3V VCC
GND GND
RST'yi SIFIRLA

50 MISO
51 MOSI
52 SCK
53 NSS

Ve Uno için (test etmedi):

Uno RC522
3.3V VCC
GND GND
5 RST

12 MISO
11 MOSI
13 SCK
10 NSS

Ablası ile birlikte

.

.

Yine de yaptığım basit testler sonucunda, okuyucunun normalde yazdığı (işte böyle bir kelime oyunu) MIFARE 1K kartlarını onunla birlikte verilenlerden yazdığı ortaya çıktı.

İkinci özellik, aynı anda birkaç kart getirildiğinde bu şeyin yeterince tepki vermesidir. Yine dahil olanlardan iki kart teklif ettim. Bu durumda, RFID kitaplığından DumpInfo örneği, her iki kartın içeriğini sırayla verir. Şunlar. ilk - bir kartın içeriği ve ondan sonra - ikincisi.

Ve dama ve git
Böylece, MIFARE 1K kartlarının hafızasının içeriğinin dökümüne bağlandık, hayran kaldık. Sıradaki ne? Sonra prizle oynayamayacak kadar tembeldim ve metro kartlarının aynı protokole göre çalıştığını hatırladım.

Gittim, kendim aldım, giydim, içeriğine hayran kaldım. Söz verildiği gibi: MIFARE UltraLight, 64 bayt bellek ve yolculukların nerede olduğu, geçerlilik süresinin nerede olduğu pek net değil, pek de net değil.

Konuyla ilgili googling Arduino'yu kullanmak bu kartlarla özellikle yararlı bir şey vermedi. Çoğu zaman, metro kartları, seri numarasını bilmenin yeterli olduğu kilitler, komut dosyası yürütme ve diğer şeyler gibi her türlü ev yapımı sistemde ultra ucuz (yani ücretsiz) NFC etiketleri olarak kullanılır. kimlik kartı için. Fakat hazır kitaplıklar ve nedense gezilerle ilgili bilgileri görüntülemek için çözümler bulamadım: ya böyle uyumak istedim ya da gerçekten yoktu (“Elusive Joe” sendromuna bakın).

Ancak Alexander "Dark Simpson" Simonov'un "" başlığı altında harika ve çok romantik bir metni buldum, görünüşe göre Hacker'ın sayılarından birinde yayınlandı. Metnin meraklı doğasına rağmen, ilgimi çeken biletler de dahil olmak üzere veri depolamanın yapısı hakkında birçok yararlı bilgi içeriyor.

Biletin önemli kısmı - sayı - görsel olarak kontrol edilir

Ertesi gün, HEX'e olan isteksizliğimi yenmeye çalıştım ve araştırmaya gittim. İşte RFID kitaplığını kullanarak aldığım bir bilet dökümü:

Kart UID: 04 6F 25 62 04 33 82
PICC tipi: MIFARE Ultralight veya Ultralight C

Sayfa 0 1 2 3
0 04 6F 25 C6
1 62 04 33 82
2 D7 48 F0 00
3 00 07 FF FC
4 45 DA 21 06
5 D0 E5 3D 00
6 1F E8 00 00
7 1F E8 00 00
8 1F 8F 5A 00
9 40 19 2E D2
10 19 91 59 7C
11 1F AB 91 C8
12 1F 8F 5A 00
13 40 19 2E D2
14 19 91 59 7C
15 1F AB 91 C8

Burada Kart UID'si - benzersiz tanımlayıcı kartlar (seri numarasının özü) ve geri kalanı - her biri 4 bayt içeren 16 sayfa bellek. Birlikte - 64 bayt.

Metro biletleriyle ilgili metni okurken en faydalı noktaları not etti:

1) Bilet numarası (üzerinde yazılıdır) sayfa 4'teki 21. bitten başlayarak 32 bit olarak sabit kodlanmıştır: 10 6D 0E 53;

2) Bilet düzenleme tarihi 01/01/1992'den bu yana gün olarak - sayfa 8'in ilk iki baytı: 1F 8F;

3) Gün olarak geçerlilik - sayfa 8'deki üçüncü bayt: 5A.

4) Son olarak, kalan yolculuk sayısı sayfa 9:19'daki ikinci bayttır.

Bununla çalışmak zaten mümkündü.

Arduino forumlarında tarih hesaplama uygulamasını görmek için (genel olarak) hangi işlevlerin neyden sorumlu olduğunu ve nasıl yararlı olabileceklerini anlamak için RFID kitaplığındaki DumpInfo örneğinde kendi kodunda biraz dolaştım. , herhangi bir dilde izleyebilirsiniz, ancak hedef platforma daha yakın arama yapmak benim için daha kolaydı).

Sonuç olarak, bir canavar doğdu. Yani, eskiz artıklardan kesilir, bazı yerlerde sonuç cevaba göre ayarlanır, ancak genel olarak, her şey aşağı yukarı gerçeğe karşılık gelir. Bu nedenle, elinden geldiğince iyi çalan bir piyaniste ateş etmek için hiçbir şey yoktur. Orada, bu arada, hatta temel işleme hatalar var: taslak, desteklenmeyen bir kart veya okumanın imkansızlığı hakkında uyaracaktır.

#Dahil etmek #Dahil etmek #define SS_PIN 53 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); // MFRC522 nesne imzasız uzun uidDec, uidDecTemp; // kart numarasını ondalık biçimde görüntülemek için bayt bCounter, readBit; imzasız uzun biletNumarası; void setup() ( Serial.begin(9600); SPI.begin(); // SPI başlatma mfrc522.PCD_Init(); // MFRC522 başlatma Serial.println("Kart bekleniyor..."); ) void loop( ) ( // Yeni bir kart aranıyor if (! mfrc522.PICC_IsNewCardPresent()) ( dönüş; ) // Bir kart seçme if (! mfrc522.PICC_ReadCardSerial()) ( dönüş; ) uidDec = 0; // Verme seri numarası kartlar Serial.print("Kart UID: "); for (bayt i = 0; ben< mfrc522.uid.size; i++) { // Serial.print(mfrc522.uid.uidByte[i] < 0x10 ? " 0" : " "); // Serial.print(mfrc522.uid.uidByte[i], HEX); uidDecTemp=mfrc522.uid.uidByte[i]; uidDec=uidDec*256+uidDecTemp; } Serial.println(uidDec); Serial.println(); // Выдача типа карты byte piccType = mfrc522.PICC_GetType(mfrc522.uid.sak); // запрос типа Serial.print("Card type: "); Serial.println(mfrc522.PICC_GetTypeName(piccType)); // трансляция типа в читаемый вид if (piccType != MFRC522::PICC_TYPE_MIFARE_UL) { // если не билетная карта Serial.print("Not a valid card: "); // так и говорим Serial.println(piccType); // Halt PICC mfrc522.PICC_HaltA(); // остановка чипа return; } // сюда мы приедем, если чип правильный byte status; byte byteCount; byte buffer; // длина массива (16 байт + 2 байта toplamı kontrol et) bayt sayfaları=(4, 8); // veri baytı olan sayfalar pageByte; // sayfa bayt sayısı byteCount = sizeof(buffer); bayt bCount=0; for (bayt i=0; ben<2; i++) { // начинаем читать страницы status = mfrc522.MIFARE_Read(pages[i], buffer, &byteCount); if (status != MFRC522::STATUS_OK) { Serial.print("Read error: "); Serial.println(mfrc522.GetStatusCodeName(status));} else { if (pages[i] == 4) { bCounter = 0; // 32-битный счетчик для номера // биты 0-3 for (bCount=0; bCount<4; bCount++) { readBit = bitRead(buffer, (bCount+4)); setBitsForGood(readBit); } // биты 4 - 27 for (pageByte=5; pageByte >2; pageByte--) ( (bCount=0; bCount için)<8; bCount++) { readBit = bitRead(buffer, bCount); setBitsForGood(readBit); } } // биты 28-31 for (bCount=0; bCount<4; bCount++) { readBit = bitRead(buffer, bCount); setBitsForGood(readBit); } Serial.print("Ticket number: "); Serial.println(ticketNumber, DEC); } if (pages[i] == 8) { // читаем дату выдачи Serial.print("Issued: "); unsigned int issueDate = buffer * 256 + buffer; // количество дней с 01.01.1992 в десятичном формате, 256 - сдвиг на 8 бит printIssueDate(issueDate); Serial.print("Good for (days): "); // срок действия Serial.print(buffer, DEC); Serial.println(); Serial.print("Trip reminder: "); // количество оставшихся поездок Serial.print(buffer, DEC); Serial.println(); } } } // Halt PICC mfrc522.PICC_HaltA(); } void printIssueDate(unsigned int incoming) { boolean isLeap = true; // признак високосного года int days={0,31,59,90,120,151,181,212,243,273,304,334}; // последний по порядку день месяца для обычного года byte dayOfMonth, monthCounter; unsigned int yearCount; incoming = incoming+1; // подогнал под ответ, но возможно это как раз необходимая коррекция, потому что начало отсчета - 01.01.1992, а не 00.01.1992 for (yearCount = 1992; incoming >366; yearCount++) ( // biletin düzenlendiği tarihten itibaren yıl ve gün sayısını sayın if ((yearCount % 4 == 0 && yearCount % 100 != 0) || yearCount % 400 == 0) ( gelen = gelen - 366; isLeap = true; ) else ( gelen = gelen - 365; isLeap = false; ) ) for (aySayacı = 0; gelen > günler; aySayacı++) ( // ayın numarasını al ) // eğer ayın gününü say (isLeap == true) ( ​​/ / eğer artık yıl ise if (days>31) ( // ilk ay değilse, o zaman ekleyin son gun ay birimleri dayOfMonth = gelen - (gün+ 1); ) else ( dayOfMonth = gelen - (günler); // eğer ilkse, vardiya Şubat'tan başlayacağı için hiçbir şey eklemeyin )) else ( dayOfMonth = gelen - (günler); // artık yıl değilse ) Serial.print(günAy); Seri.print("."); Serial.print(aySayacı); Seri.print("."); Serial.print(yılSayı); Seri.println(); ) void setBitsForGood(byte daBeat) ( if (daBeat == 1) ( bitSet(ticketNumber, bCounter); bCounter=bCounter+1; ) else ( bitClear(ticketNumber, bCounter); bCounter=bCounter+1; ) )

Bu eskiz bana ne veriyor? Pekala, öncelikle biraz beyin jimnastiği - bilirsiniz, okuyucu ve kodla uğraşırken düşünmek zorunda kaldım. İkincisi, her zaman kaç sürüş kaldığını ve kartın ne zaman bittiğini öğrenebilirim. sahip olduğum düşünüldüğünde akıllı telefon NFC hayır, oldukça uygun.

canavarın sonucu

Elbette bu durumda biletin bir “kopyasını” yapmaktan bahsetmiyoruz bile. özel bilgi fonksiyonu metro lobisindeki terminali kopyalamak.

Genel olarak, böyle bir başarıdan sonra, basit uygulama nedeniyle teorik olarak ilk olması gereken önerilen ikinci görevi üstlenmek mümkün oldu.

Yani, gerektiğinde açılan bir çıkış. Burada kart (okuyucu tarafından desteklenen ve hedef cihaza yerleştirmeye uygun herhangi bir kart) yalnızca geçiş olarak kullanılır, yani yalnızca seri numarası ilgilenir.

Mantık basittir: Okuyucu belirli bir numaraya sahip bir kart görürse soketi açar. Görmezse kapatır.

ÇIKIŞ CANAVARI

#Dahil etmek #Dahil etmek #define SS_PIN 53 #define RST_PIN 9 MFRC522 mfrc522(SS_PIN, RST_PIN); // MFRC522 örneği oluştur. imzasız uzun uidDec, uidDecTemp; #Dahil etmek RCSwitch mySwitch = RCSwitch(); boolean switchOn = yanlış; boolean cardRead = false; void setup() ( Serial.begin(9600); // PC SPI.begin() ile seri iletişimi başlat; // SPI bus mfrc522.PCD_Init(); // MFRC522 kartı mySwitch.enableTransmit(8); Serial .println("Kart bekleniyor..."); ) void loop() ( bayt durumu; bayt byteCount; bayt tampon; // dizi uzunluğu (16 bayt + 2 bayt sağlama toplamı) byteCount = sizeof(buffer); uidDec = 0 ; status = mfrc522.PICC_RequestA(buffer, &byteCount); if (mfrc522.PICC_ReadCardSerial()) ( için (byte i = 0; i)< mfrc522.uid.size; i++) { uidDecTemp=mfrc522.uid.uidByte[i]; uidDec=uidDec*256+uidDecTemp; } if ((uidDec==2218415941) && (switchOn == false)) { mySwitch.sendTriState("00110000F000"); switchOn = true; // Serial.println("Switched On"); } mfrc522.PICC_ReadCardSerial(); } else { if (switchOn == true) { mySwitch.sendTriState("001100000000"); // Serial.println("Switched Off"); switchOn = false; } } }

Benzer şekilde, haritayı tetikleyici olarak kullanarak çeşitli senaryoları çalıştırabilirsiniz. ev otomasyonu. Örneğin, bir e-kitaba bir kart koyun ve komodinin üzerine bir okuyucu yerleştirin.

Kitabı dolabın üzerine koyduğumuzda ev Morpheus krallığına gitmeye karar verdiğimizi düşünüyor ve ışıkları söndürüyor. Ve kaldırım taşından bir kitap alırsak, okumak istediğimiz varsayılır ve sonra tam tersine arka plan ışığı yanar, böylece elektronik mürekkep görünürdü ve gözleri kırmamak için.

Soket canavarı böyle çalışır

Özetlemek gerekirse: ucuz, basit, oldukça kullanışlı ve hayal gücünü harekete geçiriyor.

not Eminim daha iyisini yapabilirsin ve Arduino ve programlama hakkında hiçbir şey anlamıyorum.

Her türlü bağlantı
İncelemeyi beğendim +67 +173