Სარჩევი:

ელექტრონული საფულე: 3 ნაბიჯი
ელექტრონული საფულე: 3 ნაბიჯი

ვიდეო: ელექტრონული საფულე: 3 ნაბიჯი

ვიდეო: ელექტრონული საფულე: 3 ნაბიჯი
ვიდეო: როგორ მოვიქცეთ 3 წლამდე ასაკის ბავშვებთან?! 2024, ნოემბერი
Anonim
ელექტრონული საფულე
ელექტრონული საფულე

შენიშვნა: მე ახლა მაქვს ინსტრუქცია, რომელიც გთავაზობთ Arduino კოდს RC522 და PN532.

ჩემს წინა პოსტში მე დეტალურად განვიხილე MFRC522 და PN532 RFID მოდულებთან კომუნიკაციის საფუძვლები Mifare Classic 1k ტეგებიდან მონაცემების წასაკითხად/დასაწერად. ამ პოსტში მე კიდევ ერთი ნაბიჯი გადავდგი და ვაჩვენებ როგორ გამოვიყენო ეს მოდულები ტეგებიდან ელექტრონული საფულის შესაქმნელად. როგორც წინა პოსტში, ეს წარმოდგენილია როგორც ძირითადი განხორციელება, მაგრამ უნდა იყოს საფუძველი სხვადასხვა აპლიკაციებისთვის, რომლებიც საჭიროებენ დამატებით/შემცირებას ან დათვლის ფუნქციებს.

ნაბიჯი 1: მონაცემთა მთლიანობა

ელექტრონული საფულისთვის ყოველთვის არსებობს შეშფოთება, რომ ვიღაცამ შეიძლება დაამატოს კრედიტები მათთვის გადახდის გარეშე. ასევე არსებობს შეშფოთება, რომ ტეგზე არსებული კრედიტები უნებლიედ დაზიანდეს მონაცემთა ჩაწერის დროს. მონაცემთა წვდომა მოითხოვს ტეგის გასაღების გამოყენებას, ამიტომ აუცილებელია ნაგულისხმევი გასაღების შეცვლა ტეგის პირველად ინიციალიზაციისას. არის სტატიები ინტერნეტში, რომლებიც საუბრობენ იმაზე, თუ როგორ უნდა გატეხოთ წარწერა მაშინაც კი, თუ თქვენ არ იცით გასაღები, მაგრამ ტექნიკა არ არის ტრივიალური. მე არ გირჩევთ გამოიყენოთ ეს ტეგები თქვენი საბანკო ანგარიშისთვის, მაგრამ ისინი საკმარისად კარგია უამრავი ნაკლებად სარისკო პროგრამისთვის.

მონაცემთა გაფუჭების ალბათობა შედარებით მცირეა, მაგრამ პროგრამულ უზრუნველყოფას უნდა შეეძლოს მინიმუმ ძირითადი საქმის დამუშავება. ეს პროცესი მოიცავს ორ ნაბიჯს პირველ ნაბიჯთან, კორუფციის გამოვლენის მიზნით. ამ პროექტში, რომელიც ინახება როგორც საკრედიტო ღირებულების, ასევე საკრედიტო ღირებულების 1 -ის დამატებით. ეს შესაძლებელს ხდის ღირებულებების მარტივ შედარებას. მეორე ნაბიჯი არის საკრედიტო ღირებულების და მისი შემავსებლის სარეზერვო ვერსიის შენახვა. ეს იძლევა აღდგენის ოპერაციის შესაძლებლობას, თუ კრედიტების პირველი ნაკრები დაზიანებულია. თუ ორივე ნაკრები დაზიანებულია, პროგრამული უზრუნველყოფა ცდილობს ტეგის ხელახალი ინიციალიზაციას, რაც იწვევს ყველა კრედიტის დაკარგვას.

ნაბიჯი 2: აპარატურა

ტექნიკა
ტექნიკა

აპარატურის კავშირები ნაჩვენებია დიაგრამაში ზემოთ. ეს არის იგივე კონფიგურაცია, როგორც წინა პოსტი, ორი გადამრთველისა და გამწევ რეზისტორის დამატებით. ერთი გადამრთველი არ მოითხოვს გამწევ რეზისტორს, რადგან ის არის PIC შეყვანისას, რომელსაც აქვს სუსტი გაყვანის შესაძლებლობა. პრაქტიკაში ორივე კონცენტრატორი დაიმალება, რადგან ისინი გამოიყენება კრედიტების დასამატებლად და ტეგის ინიციალიზაციისთვის. ინიციალიზაციის შეცვლა არჩევითია (ხელით საკრედიტო ნულოვანი), რადგან პროგრამულ უზრუნველყოფას შეუძლია დამოუკიდებლად აღმოაჩინოს და დაიწყოს ახალი ტეგი. Jumper ქინძისთავები შეიძლება გამოყენებულ იქნას კონცენტრატორების ნაცვლად.

ნაბიჯი 3: პროგრამული უზრუნველყოფა

პროგრამული უზრუნველყოფის ძირითადი მარყუჟის დამატებები გაკეთდა ორი კონცენტრატორის წაკითხვისა და მდგომარეობის გამოვლენისათვის, რომელიც მოითხოვს ტეგის ინიციალიზაციას. როგორც აღვნიშნეთ აპარატურის განყოფილებაში, ტეგის ინიციალიზაციას ხელით შეიძლება შეუკვეთოთ გადამრთველი. პროგრამულ უზრუნველყოფას ასევე შეუძლია ბრძანება გაუწიოს ტეგის ინიციალიზაციას ორ სხვა შემთხვევაში. პირველი, თუ ის აღმოაჩენს ახალ ტეგით ან მონაცემთა სექტორს და მეორე, თუ საკრედიტო მონაცემების ორივე ნაკრები დაზიანებულია.

ტეგების ავთენტიფიკაცია მოითხოვს „გასაღები A“- ს სამიზნე მონაცემთა სექტორისთვის. Mifare Classic 1k ტეგების ნაგულისხმევი გასაღები არის "FF FF FF FF FF FF", მაგრამ უნდა შეიცვალოს თქვენი აპლიკაციისთვის. პროგრამული უზრუნველყოფა იძლევა განსაზღვრებებს როგორც ნაგულისხმევი გასაღებისთვის, ასევე ახალი გასაღებისთვის ("My_Key"). უბრალოდ ჩართეთ ნებისმიერი მნიშვნელობა, რაც გსურთ "My_Key" - ში. პროგრამული უზრუნველყოფა ყოველთვის ცდილობს ტეგის ავთენტიფიკაციას "My_Key" გამოყენებით. თუ ეს ვერ მოხერხდა, მაშინ ეწოდება ტეგის ინიციალიზაციის რუტინას და ნაგულისხმევი გასაღები გამოიყენება ავტორიზაციისთვის. ინიციალიზაციის რუტინა ცვლის გასაღებს "My_Key" და კრედიტებს ნულამდე აყენებს. თუ თქვენ გაქვთ ტეგი არასტანდარტული გასაღებით და არ იცით რა არის, მაშინ ტეგის ავტორიზაცია შეუძლებელია. თუ ეს მოხდება, შეიძლება დაგჭირდეთ მონაცემების სხვა სექტორების შემოწმება ნაგულისხმევი გასაღების გამოყენებით, რომ ნახოთ თუ არის ერთი. Trailer ბლოკი, მონაცემთა ბლოკი და სარეზერვო ბლოკები ყველა განსაზღვრულია პროგრამული უზრუნველყოფის ჩამონათვალის დასაწყისში, ასე რომ თქვენ შეგიძლიათ მარტივად შეცვალოთ ისინი.

ამ აპლიკაციის ტეგში შენახული მონაცემების ფორმატი იყენებს მხოლოდ დადებით რიცხვებს (დაუშვებელია დეფიციტი) და მნიშვნელობები ინახება შეფუთული BCD- ის ოთხი ბაიტის სახით (ორობითი კოდირებული ათწილადი). ეს იძლევა საკრედიტო დიაპაზონს 0 -დან 99 -მდე, 999, 999 -მდე (ორი ციფრი თითო ბაიტზე). საკრედიტო ღირებულება და მისი 1 -ის დამატება მხოლოდ 16 ბაიტიდან 8 -ს იყენებს მონაცემთა ერთ ბლოკში, დანარჩენი კი ნულოვანია. ერთიდაიგივე მონაცემთა ბლოკში არის ადგილი სარეზერვო ასლისთვის, მაგრამ მე გადავწყვიტე, რომ უფრო უსაფრთხო იქნებოდა სარეზერვო მონაცემების ცალკე ბლოკში ჩადება. სარეზერვო ბლოკი არის იმავე სექტორში, როგორც მონაცემთა ბლოკი, ამიტომ ცალკე ავტორიზაცია არ არის საჭირო. უფრო უსაფრთხოდ რომ იყოთ, შეიძლება გაითვალისწინოთ სარეზერვო ასლის განთავსება სხვა მონაცემთა სექტორში, მაგრამ შემდეგ ცალკე ავტორიზაციის ნაბიჯი იქნება საჭირო ამ მონაცემებზე წვდომისათვის.

როდესაც კრედიტების წაკითხვა ხდება, დამატებული მნიშვნელობა ასევე იკითხება და შემდეგ ეს ორი ერთმანეთთან შედარებით ხდება. თუ არსებობს შეუსაბამობა, მაშინ მნიშვნელობის/დამატების სარეზერვო ნაკრები იკითხება და შედარებულია. თუ ისინი ემთხვევა, მაშინ სარეზერვო ასლი ითვლება სწორად და გამოიყენება დაზიანებული მონაცემების გამოსასწორებლად. თუ სარეზერვო ასლები არ ემთხვევა, მაშინ წარწერა ცუდად ითვლება და მისი ხელახალი ინიციალიზაციის მცდელობა ხდება.

გაზრდისა და შემცირების მნიშვნელობები განისაზღვრება ჩამონათვალის წინა ნაწილთან ახლოს და მოსალოდნელია იყოს შეფუთულ BCD- ში. რუტინები, რომლებიც ეფექტურად ზრდის და ამცირებს ამას აკეთებენ 32-ბიტიან რიცხვზე. მათემატიკა ძალიან მარტივია, მაგრამ მოითხოვს რუტინული მეთოდების გამოყენებას, რათა შეცვალოს შედეგები თითოეული შეფუთული BCD ბაიტის შიგნით და ერთი ბაიტიდან მეორეზე. ეს მიიღწევა მაკროების DAA (ათწილადი შესწორების დამატება) და DAS (ათწილადი მორგება გამოკლება) გამოყენებით. ეს მაკროები დარწმუნდებიან, რომ თითოეული 4-ბიტიანი BCD ციფრი ყოველთვის რჩება 0-9 დიაპაზონში.

წინა პოსტში გამოქვეყნებული შეტყობინებების გარდა, ამ აპლიკაციას აქვს შეტყობინებები მრავალი დამატებითი ნაბიჯისათვის - განსაკუთრებით იმ შემთხვევაში, თუ მონაცემთა შეცდომები არსებობს და/ან ტეგს სჭირდება დაფიქსირება ან ინიციალიზაცია. კრედიტები ასევე ნაჩვენებია გაზრდის/შემცირების საფეხურამდე და მის შემდეგ, რათა თქვენ იხილოთ ღირებულებების შეცვლა.

ეს არის ამ პოსტისთვის. გადახედეთ ჩემს სხვა ელექტრონიკურ პროექტებს: www.boomerrules.wordpress.com

გირჩევთ: