როგორ შევქმნათ სმარტფონი NFC ფუნქციებით
NFC (ახლო ველის კომუნიკაცია) თანამედროვე სმარტფონების ერთ-ერთი აუცილებელი მახასიათებელია. ეს ტექნოლოგია საშუალებას აძლევს მოწყობილობებს დაუკავშირდნენ მოკლე მანძილზე (ჩვეულებრივ, 4 სმ-ზე ნაკლები) სხვადასხვა მიზნებისთვის, როგორიცაა უნაღდო გადახდები, ბარათით ბალანსის შევსება, კარზე წვდომა და ყურსასმენების ან დინამიკების მსგავსი მოწყობილობების დაწყვილებაც კი. ბევრს აინტერესებს: შესაძლებელია თუ არა „სმარტფონის შექმნა NFC-ით“? პასუხია დიახ, მაგრამ ეს არ ნიშნავს, რომ სმარტფონი ნულიდან უნდა ავაწყოთ, როგორც დიდი ქარხანა. ეს სტატია განიხილავს NFC ფუნქციების დანერგვის ყველაზე რეალისტურ და გონივრულ გზას „ხელნაკეთ სმარტფონში“ ან მოდიფიცირებულ/აწყობილ სმარტფონ მოწყობილობაში, მათ შორის საჭირო კომპონენტებს, ინტეგრაციის ეტაპებს და მთავარ გამოწვევებს.
1. გაიგეთ NFC და როგორ მუშაობს ის
NFC მუშაობს 13,56 MHz სიხშირეზე და მხარს უჭერს კომუნიკაციის ისეთ რეჟიმებს, როგორიცაა:
1. წამკითხველი/ჩამწერი რეჟიმი: სმარტფონი მოქმედებს როგორც NFC ტეგების წამკითხველი (მაგ., კითხულობს წვდომის ბარათებს ან წებოვან NFC ტეგებს).
2. ბარათის ემულაციის რეჟიმი: სმარტფონი „ახდენს“ ბარათის „ემულაციას“, მაგალითად, გადახდების ან წვდომის კონტროლისთვის.
3. Peer-to-Peer რეჟიმი: მონაცემთა გაცვლა მოწყობილობებს შორის (მაგ. კონტაქტების გაგზავნა ან სწრაფი დაწყვილება).
სმარტფონებში, NFC მოდული ჩვეულებრივ შედგება:
– NFC კონტროლერი/IC (NFC კონტროლერის მთავარი ჩიპი),
– NFC ანტენა (სპირალის ფორმის ანტენა),
– უსაფრთხო ელემენტი (SE) ან ალტერნატივები, როგორიცაა HCE (მასპინძელი ბარათის ემულაცია) ბარათის ემულაციისთვის,
– მთავარ პროცესორთან კავშირი ავტობუსის საშუალებით, როგორიცაა I2C ან SPI, ასევე ენერგიის კონტროლი.
2. განსაზღვრეთ მიდგომა: ნულიდან აწყობა vs. მოწყობილობის მოდიფიცირება
სმარტფონის ნულიდან აწყობა (PCB-ის დიზაინი, SoC-ის არჩევა, baseband firmware-ის შექმნა, რადიო სერტიფიცირება და ა.შ.) უკიდურესად რთულია და თითქმის შეუძლებელია ინდივიდუალურად მასშტაბირება დიდი გუნდისა და ხარჯების გარეშე.
უფრო რეალისტური მიდგომა:
1. აირჩიეთ სმარტფონი/დაფა, რომელიც უკვე უჭერს მხარს NFC-ს, მაგრამ ჯერ არ არის აქტიური (გარკვეულ შემთხვევებში მოწყობილობის ვარიანტებზე).
2. შექმენით სმარტფონი ერთბორდიანი კომპიუტერის (SBC) + ფიჭური მოდულის საფუძველზე, შემდეგ დაამატეთ NFC.
3. შექმენით NFC-ის მქონე „სმარტფონის მსგავსი“ მოწყობილობა (Android მოწყობილობა), მაგალითად, კიოსკის მოწყობილობა, მორგებული პორტატული კომპიუტერი ან პროტოტიპი.
ამ სტატიაში ჩვენ ყურადღებას გავამახვილებთ მე-2 და მე-3 მიდგომებზე, რადგან ისინი ტექნიკურად ყველაზე გამართლებულია და შესაძლებელია მოწყობილობის შემუშავების პროექტის სახით.
3. საჭირო კომპონენტები
აქ მოცემულია ძირითადი კომპონენტები, თუ გსურთ შექმნათ NFC-ის მქონე Android/პორტატული მოწყობილობა:
ა) გამოთვლითი პლატფორმა (მოწყობილობის ტვინი)
– SBC (მაგ. ARM-ზე დაფუძნებული), რომელსაც შეუძლია Android/Linux-ის გაშვება.
– ალტერნატივა: უფრო „გამოსაყენებლად მზა“ Android-ის განვითარების დაფა.
მნიშვნელოვანი კრიტერიუმები:
– მხარს უჭერს I2C/SPI/UART ინტერფეისს NFC მოდულისთვის,
– მხარდაჭერა მოდიფიცირებადი დრაივერებისა და ბირთვებისთვის,
– საკმარისად ძლიერია Android-ის გასაშვებად.
ბ) ფიჭური მოდული (რომელიც „სმარტფონად“ მოხსენიების ღირსია)
თუ გსურთ, რომ მოწყობილობას რეალურად შეეძლოს ზარების/SMS-ის/მობილური მონაცემების განხორციელება:
– 4G/5G მოდული (მაგ. USB ან M.2-ზე დაფუძნებული LTE მოდემი),
– დრაივერის მხარდაჭერა და ოპერაციულ სისტემაში ინტეგრაცია.
შენიშვნა: ეს ხშირად ყველაზე რთული ნაწილია, რადგან ხმოვანი ზარები მოითხოვს IMS/VoLTE მხარდაჭერას, რაც ყოველთვის ადვილი არ არის.
გ) NFC მოდული
დაგჭირდებათ NFC მოდული მკაფიო სპეციფიკაციებით. ეს მოდული შეიძლება იყოს:
– NFC IC + ცალკე ანტენა,
– ინტეგრაციისთვის მზა მოდული (პატარა დაფა), რომელიც უზრუნველყოფს I2C/SPI კავშირებს და შეწყვეტის პინებს.
ინდუსტრიაში პოპულარულ NFC ჩიპებს შორისაა NXP-ის, STMicroelectronics-ის და სხვა კომპანიების ჩიპები. თუმცა, ჩიპის შერჩევისას ასევე უნდა გაითვალისწინოთ:
– Android-ისთვის დრაივერების ხელმისაწვდომობა,
– ინტეგრაციის დოკუმენტაცია,
– უსაფრთხოების ელემენტის მოთხოვნა, თუ გსურთ გადახდის ფუნქცია.
დ) NFC ანტენა
ანტენები მუშაობის ერთ-ერთი მთავარი ფაქტორია. გასათვალისწინებელი ფაქტორები:
- კოჭის ზომა,
– განთავსება (ჩვეულებრივ უკანა ყდასთან ახლოს),
– მანძილი ლითონისგან/აკუმულატორიდან,
– წინაღობის შესაბამისობა/რეგულირება სტაბილური მაჩვენებლის უზრუნველსაყოფად.
ე) უსაფრთხოების ელემენტი (არასავალდებულო, მაგრამ აუცილებელია გადახდებისთვის)
თუ მიზანი მხოლოდ ტეგების წაკითხვაა (მაგ., კონკრეტული ბარათის ბალანსის შემოწმება, UID ტეგის წაკითხვა, ავტომატიზაცია), შეგიძლიათ გამოიყენოთ ჩვეულებრივი NFC უსაფრთხოების ელემენტის გარეშე.
თუმცა, თუ სამიზნე არის შეხებით გადახდა ან ბარათის უსაფრთხო ემულაცია:
– საჭიროა უსაფრთხო ელემენტი (ჩაშენებული SE, SIM ბარათზე დაფუძნებული SE ან გარე SE),
– პლუს სერტიფიცირება და გადახდის ეკოსისტემის ინტეგრაცია (ძალიან რთულია DIY პროექტებისთვის).
ალტერნატიულად, Android ზოგიერთი გამოყენების შემთხვევაში მხარს უჭერს HCE-ს (Host Card Emulation), მაგრამ კომერციული გადახდებისთვის ის მაინც მოითხოვს უსაფრთხოების მოთხოვნებს და გამყიდველის/გადახდის ქსელის თანამშრომლობას.
ვ) კვება, კორპუსი, ბატარეა და ეკრანი
იმისათვის, რომ მოწყობილობა ნამდვილად სმარტფონს დაემსგავსოს:
– ეკრანი (LCD/OLED) + სენსორული ეკრანის კონტროლერი,
– ლითიუმ-იონური აკუმულატორი + BMS/დამტენი ინტეგრირებული სქემები,
– ენერგიის მართვა,
– ქეისი, რომელიც ხელს არ უშლის NFC ანტენას.
კორპუსში არსებულ მეტალს შეუძლია NFC-ის მუშაობაზე გავლენა მოახდინოს, ამიტომ პლასტმასის მასალები უფრო NFC-თან თავსებადია.
4. NFC აპარატურის ინტეგრაციის ეტაპი
ნაბიჯი 1: ინტერფეისის განსაზღვრა
NFC მოდულების უმეტესობა პროცესორს უკავშირდება შემდეგი გზით:
– I2C (ზოგადი),
– SPI (უფრო სწრაფი),
– პლუს IRQ/Interrupt PIN კოდი სისტემისთვის ტეგის არსებობის შესახებ შეტყობინებისთვის.
დარწმუნდით, რომ დედა დაფას აქვს ხელმისაწვდომი პინები და თავსებადი ძაბვის დონეები (მაგ., 1,8 ვ ან 3,3 ვ). თუ ისინი არ ემთხვევა, გამოიყენეთ დონის გადამრთველი.
ნაბიჯი 2: ანტენის განლაგების დიზაინი
ანტენა უნდა განთავსდეს:
– რაც შეიძლება ახლოს გარე ზედაპირთან (უკანა ყდა),
– დიდი ზომის ბატარეებისგან ან ლითონის დამცავისგან მოშორებით,
– არ არის დაფარული შემაწუხებელი ლითონის სტიკერებით ან მაგნიტური რგოლებით.
ლითონის ჩარჩოებმა ან მაგნიტურმა სამაგრებმა შეიძლება მკვეთრად შეამციროს NFC-ის დიაპაზონი.
ნაბიჯი 3: ანტენის შესაბამისობა და რეგულირება
სამრეწველო დიზაინში, NFC ანტენები რეგულირებადია შესაბამისი სქემის (კონდენსატორის/ინდუქტორის) გამოყენებით, რათა მიღწეული იქნას რეზონანსი 13,56 MHz სიხშირეზე. თუ იყენებთ მზა მოდულს, ის, როგორც წესი, წინასწარ არის რეგულირებული, მაგრამ შეიძლება საჭირო გახდეს რეგულირება შემთხვევისა და პოზიციის მიხედვით.
ნაბიჯი 4: საბაზისო კომუნიკაციის ტესტი
პირველადი ტესტირების ჩატარება:
– სისტემა აფიქსირებს თუ არა მოდულს (I2C მოწყობილობა ხილულია),
– შეუძლია თუ არა მოდულს ტეგების აღმოჩენა,
– დაფარვა სტაბილურია.
Linux-ის ძირითადი ინსტრუმენტები დაგეხმარებათ I2C ავტობუსის შემოწმებაში, ხოლო Android-ში ტესტირება შესაძლებელია logcat-ისა და NFC სატესტო აპლიკაციების საშუალებით.
5. პროგრამული უზრუნველყოფის ინტეგრაცია: დრაივერი, ბირთვი და Android Framework
იმისათვის, რომ NFC-მა Android-ზე იმუშაოს, მხოლოდ აპარატურის ინსტალაცია საკმარისი არ არის. თქვენ გჭირდებათ პროგრამული უზრუნველყოფის შემდეგი ფენები:
ა) ბირთვის დრაივერი
– NFC მოდული ბირთვმა შესაბამისი დრაივერის მეშვეობით უნდა ამოიცნოს.
– შესაძლოა დაგჭირდეთ ბირთვის კონფიგურაციის ჩართვა ან დრაივერების დამატება.
ბ) HAL (აპარატურის აბსტრაქციის ფენა)
Android იყენებს HAL-ს აპარატურასთან ჩარჩოს დასაკავშირებლად. NFC-სთვის HAL თავსებადი უნდა იყოს გამოყენებულ ჩიპთან.
გ) სისტემის კონფიგურაცია და ნებართვები
Android-ზე, თქვენ უნდა:
– NFC ფუნქციის ჩართვა აწყობისას (ფუნქციის დროშები),
– დარწმუნდით, რომ NFC სერვისი მუშაობს,
– დაემატა NFC ჩიპებთან დაკავშირებული მომწოდებლის კონფიგურაციის ფაილები,
– დარწმუნდით, რომ ნებართვები და SELinux-ის პოლიტიკა არ ბლოკავს წვდომას.
დ) გამოყენება და ტესტირება
NFC-ის გააქტიურების შემდეგ:
– NDEF ტეგის წაკითხვის ტესტი,
– მკითხველის/ჩამწერის რეჟიმის ტესტირება,
– Android Beam-ის ტესტირება (ძველი ფუნქცია) ან შესაბამისი მონაცემთა გაცვლა,
– საჭიროებისამებრ, თავსებადობის ტესტირება MIFARE/NTAG ტეგებთან.
6. დიდი გამოწვევები: გადახდა და სერტიფიცირება
ბევრი ადამიანი ფიქრობს, რომ „NFC-ის ქონა“ ნიშნავს, რომ მისი გამოყენება გადახდებისთვის დაუყოვნებლივ შეგიძლიათ. სინამდვილეში, NFC გადახდები მოიცავს:
– უსაფრთხოების ელემენტი ან ექვივალენტური უსაფრთხოების სქემა,
- უსაფრთხოების სერტიფიკატი,
– გადახდის ქსელებისა და ბანკების დამტკიცება,
– ინტეგრაცია ისეთ სერვისებთან, როგორიცაა Google Wallet ან ადგილობრივი გადახდის სქემები.
პირადი პროექტებისთვის ყველაზე რეალისტურია:
– წაიკითხეთ NFC ტეგები,
– წვდომის სისტემები (მაგ. კარებისთვის),
– ავტომატიზაცია NFC ტეგებით,
– წევრობის ბარათი, კიოსკი ან შიდა აპლიკაცია.
საჯარო გადახდის სისტემებისთვის გამოსაყენებელი მოწყობილობის შექმნა „გააკეთე შენ თვითონ“ თითქმის არარეალურია ინდუსტრიის ოფიციალური არხების გარეშე.
7. პრაქტიკული რჩევები პროექტის წარმატებისთვის
1. დაიწყეთ მარტივი მიზნით: პირველ რიგში, ყურადღება გაამახვილეთ ტეგების წაკითხვასა და NDEF-ის დაწერაზე.
2. გამოიყენეთ საერთო NFC მოდული: აირჩიეთ ისეთი, რომელსაც აქვს სრული დოკუმენტაცია და ინტეგრაციის მაგალითები.
3. განვიხილოთ შემთხვევა თავიდანვე: ლითონის ქეისები და მაგნიტები NFC-ის მტრები არიან.
4. გამოყავით დრო პროგრამული უზრუნველყოფის გამართვისთვის: დრაივერის კონფლიქტები, SELinux, სისტემის ნებართვები და Android-ის თავსებადობა ხშირად დროს მოითხოვს.
5. ენერგიის მოხმარების გაზომვა: NFC-ს შეუძლია გაზარდოს უმოქმედო რეჟიმში მუშაობის სიმძლავრე, თუ ის სწორად არ არის კონფიგურირებული.
6. დოკუმენტირებულია განლაგება და გაყვანილობა: IRQ-ში ან PIN კოდის გადატვირთვისას მცირე შეცდომამ შეიძლება NFC არასტაბილური გახადოს.
8. კესიმპულანი
NFC-თან თავსებადი სმარტფონის შექმნა არ ნიშნავს მხოლოდ მოწყობილობაზე NFC მოდულის მიმაგრებას და მის დასრულებას. რეალისტური პროცესი გულისხმობს NFC ინტეგრაციის მხარდამჭერი დაფაზე დაფუძნებული Android/პორტატული მოწყობილობის შექმნას ან მოდიფიცირებას, შემდეგ NFC მოდულის, შესაბამისი ანტენის დამატებას და პროგრამული უზრუნველყოფის (დრაივერები, HAL და Android კონფიგურაცია) დაყენებას. ისეთი აპლიკაციებისთვის, როგორიცაა ტეგების წაკითხვა, ავტომატიზაცია, წვდომის კონტროლი ან შიდა აპლიკაციები, ეს პროექტი ნამდვილად შესაძლებელია. თუმცა, უფრო მაღალი დონის ფუნქციებისთვის, როგორიცაა უკონტაქტო გადახდები, თქვენ მოგიწევთ კომპლექსური უსაფრთხოების ელემენტების, სერტიფიკატების და ინდუსტრიის მოთხოვნებთან გამკლავება.
თუ გსურთ, შემიძლია ეს სტატია უფრო ტექნიკური (მაგ. Android NFC სტეკის არქიტექტურის მაგალითებით, I2C + IRQ + გადატვირთვის გაყვანილობის სქემებით ან AOSP აწყობის ნაბიჯებით) ან უფრო პრაქტიკული (ადვილად მოსაძებნი კომპონენტების სიები და ტესტირების ნაბიჯები) ფორმით შევცვალო.