Sportiduino - sistem penandaan elektronik untuk acara olahraga, bagian 3

Bagian 1 , Bagian 2

Setahun telah berlalu sejak publikasi terakhir, dan saya sering ditanya pertanyaan tentang apa yang telah berubah sejak saat itu. Singkatnya, transisi ke chip Ntag dibuat, perubahan kecil dibuat di sirkuit untuk memberikan sensitivitas yang lebih baik, volume sinyal dan gerakan jam yang benar, dan perangkat lunak diciptakan untuk bekerja dengan sistem. Secara umum, sistem telah stabil dan siap untuk diputar dan digunakan. Lebih detail di bawah ini.

Pertama-tama, saya akan memberi tahu Anda tentang chip RFID, mengapa transisi dilakukan menuju Ntag. Biarkan saya mengingatkan Anda bahwa memori Mifare Classic 1K berisi 1024 byte, yang 752 byte tersedia untuk menyimpan informasi. Struktur memori dibagi menjadi 16 blok, yang berisi 4 halaman 16 byte, salah satunya dicadangkan untuk enkripsi. Jika Anda menggunakan satu halaman sebagai layanan, maka masih ada 46 halaman untuk merekam tanda.

Pada awal pengembangan, saya menggunakan memori secara bebas - satu halaman 16 byte per tanda, yang membatasi penggunaan awal yang kecil. Dan untuk rogaining, turis orienteering atau balap petualangan, 46 stasiun sedikit. Oleh karena itu, ide pemadatan diwujudkan: dua tanda ditulis pada setiap halaman. Pada saat yang sama, ada risiko kehilangan data, karena unit rekaman adalah satu halaman, dan ketika merekam ulang, Anda harus membaca setengah yang sudah direkam untuk menulisnya lagi. Sebenarnya, saya menginjak menyapu ini selama Rogaining November lalu, sebagian kecil dari data hilang, saya harus mengedit banyak secara manual. Dan, meskipun kesalahan dalam kode terdeteksi, saya memutuskan untuk beralih ke chip yang lebih luas tanpa risiko kehilangan data selama penulisan ulang.

Salah satu opsi yang mungkin adalah menggunakan chip Mifare 4K, struktur yang berbeda dari 1K hanya dalam empat kali jumlah memori yang besar. Tapi keripik seperti itu lebih mahal dan durasi pembersihan, tanda dengan penggunaannya akan meningkat. Pilihan lain adalah menggunakan chip seri Ntag (213/215/216). Struktur memori chip Ntag cukup sederhana - memori dibagi menjadi halaman 4 byte, 4 halaman pertama dan 5 halaman terakhir dicadangkan untuk menyimpan informasi layanan, sisanya dapat digunakan. Chip seri Ntag berbeda dalam ukuran memori, Ntag213 memiliki 36 halaman (144 byte) gratis, Ntag215 memiliki 126 halaman (504 byte), dan Ntag216 memiliki 222 halaman (888 byte). Sebagai hasilnya, saya menerapkan dukungan untuk semua chip dalam seri ini, meskipun Ntag215 dapat dianggap optimal, yang ingatannya cukup untuk 120 tanda, dan harganya cukup rendah (sekitar $ 0,2 per chip dalam bentuk stiker atau $ 0,4 dalam bentuk gantungan kunci). Juga, atas saran SFR, ia memutuskan untuk meninggalkan penyimpanan informasi penting - jumlah halaman gratis terakhir yang mendukung pencarian binernya. Ini menambah stempel waktu, tetapi meningkatkan keandalan.

Halaman memori Ntag berisi 4 byte, di mana Anda harus menyesuaikan nomor stasiun - 1 byte dan cap waktu - 4 byte. Masalahnya dipecahkan oleh fakta bahwa waktu penuh inisialisasi (pembersihan) chip ditulis dalam halaman terpisah, dan ketika ditandai, hanya 3 byte lebih rendah dari waktu. Kemudian, ketika membaca, waktu tanda sepenuhnya dikembalikan berdasarkan waktu inisialisasi. Halaman lain dalam chip ditempati oleh nomor chip dan dua tersisa sebagai cadangan. Struktur yang dihasilkan disajikan di bawah ini:



Menggunakan Ntag memungkinkan memecahkan masalah perekaman yang aman dari sejumlah besar tanda pada chip, tetapi masalah lain muncul. Chip Ntag membutuhkan daya pemancar lebih banyak daripada Mifare dengan area antena yang sama, dan chip gantungan kunci dengan antena berukuran 2 cm ^ 2 mungkin tidak berfungsi dengan baik pada modul RC522 sebagai standar. Solusi untuk masalah ini adalah menyolder induktansi pada modul ke yang lebih kuat. Pada saat yang sama, rentang respons meningkat secara signifikan, untuk chip Ntag hingga 2 cm, dan untuk Mifare hingga 3 cm. Tetapi beberapa modul mulai bekerja dengan buruk karena penyolderan seperti itu: chip direkam hanya dengan jarak tertentu dan agak tak terduga dari antena pengirim. Saya harus masuk ke perpustakaan Arduino RC522 dan menemukan parameter gain di sana, yang bertanggung jawab untuk kekuatan antena, mengeditnya untuk setiap stasiun menyelesaikan masalah. Dia juga menguasai pembuatan chip secara manual pada gelang dari stiker. Alibaba sudah siap pakai dan cantik, tetapi area antena mereka hampir setengah dari itu, tanda melewati kurang stabil. Saya juga mencatat bahwa saya meninggalkan dukungan untuk chip Mifare 1K, Anda dapat bekerja dengan mereka, tetapi untuk ini Anda perlu menggunakan firmware terpisah, dan kapasitas chip terbatas hingga 42 tanda, tetapi mereka datang dengan modul RC522.



Masalah lain yang harus dipecahkan selama pengembangan adalah jalannya waktu yang salah. Di beberapa stasiun, jam mulai terlambat atau terburu-buru hingga 5 menit sehari. Untuk waktu yang lama saya tidak dapat memahami apa alasannya, kemudian saya menemukan bahwa hanya stasiun dengan papan sirkuit cetak yang dibuat di pabrik buggy, sementara semuanya bekerja dengan baik pada yang dietsa secara manual. Saya berpikir tentang apa yang bisa dihubungkan dengan ini. Di jalan yang agak terukir dengan tangan karena timah yang melimpah, daya tahan yang kurang. Ternyata kapasitor pada keluaran dari stabilizer tidak cukup untuk memisahkan daya jam pada trek pabrik yang tipis. Saya meletakkan kapasitor lain di dekat jam, dan masalahnya, sebagian besar, diselesaikan. Sebagian kecil arloji masih gagal, tetapi saya sudah mengaitkan ini dengan perkawinan arloji murah dengan ali, Anda perlu mencari pemasok yang dapat diandalkan.

Nah, perubahan terakhir di sirkuit adalah penguatan sinyal suara. Sebelumnya, kontrol dan kekuatan tweeter di sirkuit dilakukan dari kaki mikrokontroler, oleh karena itu cukup terbatas daya. Sekarang daya langsung dari baterai, dan kontrol melalui transistor, yang secara signifikan meningkatkan volume sinyal. Semua perubahan ini sekarang diperhitungkan dan dimasukkan ke dalam file Gerber, tetapi saya secara manual mengolah sekitar 40 stasiun, saya harus memilih kompleks, memotong rel, menggantung transistor pada kabel, ada beberapa stasiun rusak.



Karena transisi ke chip lain, firmware stasiun induk harus banyak berubah, tetapi prinsip dan logika kerja, sebagian besar, tetap sama. Mode penghematan energi, tidur, kerja, pengaturan yang sama menggunakan chip utama. Tetapi firmware gateway telah sepenuhnya didesain ulang. Protokol komunikasi sebelumnya, ketika data mengalir di port COM dalam aliran kontinu, tampak rentan: satu byte tidak ada, dan semua data berubah menjadi labu. Mengadaptasi protokol transfer data yang ada tampak membosankan, jadi dia menemukan sepedanya.

Informasi ditransmisikan dan diterima secara berurutan dengan mengirimkan paket hingga 32 byte. Jika data yang dikirimkan tidak sesuai dengan paket, transmisi dibuat dengan meneruskan paket secara berurutan. Paket dimulai dengan byte awal 0xFE, diikuti oleh nomor perintah, panjang paket, data, dan pada akhir checksum. Perintah hanya lulus dengan nilai yang benar dari checksum dan mulai byte. Cukup sederhana dan cukup andal.



Sambungan dibuat, tetapi perlu untuk menulis perangkat lunak normal untuk komputer, kerajinan saya pada Pemrosesan tidak cocok untuk ini. Semyon Yakimov, yang menciptakan modul Python untuk bekerja dengan sistem, menerima ini, yang sangat ia syukuri. Modul ini memungkinkan Anda untuk berkomunikasi dengan gateway, mengirim dan menerima data dalam format yang mudah. Setelah itu, saya menguasai Python sebagai pendekatan pertama dan menulis aplikasi GUI sederhana berdasarkan modul ini dan PyQt, yang dapat digunakan untuk mengkonfigurasi sistem, serta untuk mengumpulkan data dari chip dalam bentuk file JSON. Nah, maka data dapat diproses menggunakan skrip kecil untuk kompetisi dengan berbagai kondisi dan aturan, dikeluarkan dalam bentuk yang nyaman ( orientasi wisata , rogaining ). Tapi, bagaimanapun, ini menyiratkan beberapa keterampilan, dan kebahagiaan tidak akan lengkap jika bukan untuk para pengembang program SportOrg , yang menambahkan dukungan untuk Sportiduino (selain Sportident dan SFR). Program ini secara aktif berkembang dan banyak hal yang dapat menilai mulai berorientasi.

Kesimpulan


Dengan demikian, saat ini ada perangkat keras dan perangkat lunak yang berfungsi stabil. Saya percaya bahwa tujuan usaha telah tercapai: sistem penandaan elektronik yang murah telah muncul. Saya tidak akan mengubah apa pun dalam kerangka skema ini, kecuali jika ada semacam bug. Sistem penandaan telah dikembangkan dan diuji di sejumlah besar kompetisi yang berbeda: orienteering, rogaining, march-throw, trail, stage turis. Selain saya, ini digunakan oleh beberapa orang di tempat yang berbeda. Seseorang memainkan sistem, seseorang membuat tambahan di sana, misalnya, modul radio atau penggunaan baterai lithium dan chip Mifare sebagai yang utama.

Pengembangan terbuka dan non-komersial, dilisensikan di bawah GNU GPLv3. Siapa pun dapat dengan bebas menyalin, mereproduksi, memodifikasi, dan menggunakannya. Selama setahun terakhir, saya telah mengajukan banyak pertanyaan apakah saya melakukan penjualan stasiun. Tidak, saya tidak ingin melakukan ini. Di sisi lain, saya tidak keberatan jika seseorang mengisi ceruk ini. Saya hanya siap memberikan saran tentang perakitan dan penggunaan, karena semuanya cukup sederhana di sana.

Proyek ini tersedia di github , ada diagram, instruksi, dan materi lain yang bermanfaat. Terima kasih atas perhatian anda

Source: https://habr.com/ru/post/id427661/


All Articles