Bukan sehari tanpa olahraga - 2: memprogram ulang gelang Cina

Bagi orang yang terlibat dalam olahraga, pendamping yang sering untuk jogging atau berkuda adalah smartphone dengan berbagai aplikasi. Dengan sepeda lebih mudah, Anda dapat memperbaiki smartphone, misalnya, di roda kemudi dan menonton data dari sensor. Tetapi bagaimana jika Anda berlari atau bermain ski? Anda dapat memperbaiki kecerdasan di tangan Anda, karena ini ada penutup khusus (termasuk yang dapat diputar). Tapi ini merepotkan dan terkadang merepotkan. Selain itu, pahlawan Rusia tidak langsung pergi.

Ada berbagai artikel di Internet di mana penggemar membuat jam tangan pintar mereka. Kasing buatan sendiri atau cetak. Buat isiannya. Tetapi ada banyak perangkat yang sudah jadi di aliexpress. Misalnya, seperti pada foto di bawah ini. Jika Anda meyakini deskripsi tersebut, maka itu adalah perangkat super langsung: ini mengukur detak jantung, tekanan, kalori, dan hal lainnya.


Mari kita buka dan lihat apa yang ada di dalamnya.



Dan sebenarnya
. . Random() . , , , .


Otak gelang ini adalah chip PHY6202 dari produsen dari Kerajaan Tengah Fengjia Microelectronics. Di dalamnya ada Cortex-M0 dan seperangkat perangkat standar. Memori: 512kB Flash, 138kB SRAM, dan 128kB ROM. ROM berisi tumpukan BLE dan bootloader UART, sebagai chip yang dapat diprogram melalui UART. Kawan-kawan Cina dengan hati-hati mengeluarkan kontak untuk UART. Untuk beralih ke mode UART, bootloader perlu menarik output TM ke tingkat tinggi dan mengatur ulang chip.

Utilitas dan SDK untuk PHY6202 (dan juga untuk kakaknya PHY6212) dapat ditemukan di sini .

Utilitas pemrograman chip PhyPlusKit disediakan secara langsung. Dokumentasi ini memiliki daftar perintah: hapus, tulis, dll. Detail dalam dokumen PHY62XX_UART_FlashWrite_Protocol di tautan di atas (dalam bahasa Cina). Jujur saja, daftar perintahnya tidak lengkap. PhyPlusKit menggunakan perintah rdreg lain (baca register apa pun).

Mari kita mulai. Kami membongkar, menyolder kontak yang diperlukan ke adaptor UART-USB dan pergi .

SDK berisi banyak contoh. Dalam dirinya sendiri, menurut saya, itu bengkok dan lembab. Terkadang Anda harus mengedit sumbernya, karena mereka tidak dirancang hanya untuk penggunaan "eksternal". Berikut adalah fungsi pengukuran level baterai dari Layanan Baterai. Kenapa dia ada di sana sama sekali tidak bisa dimengerti.

static uint8 battMeasure( void )
{
  uint8 percent;
  percent = 95;
  return percent;
} 

Bukan SDK, tapi satu contoh solid.
Pinout gelang adalah:
1) accelerometerSDA P32
SCL P33
2) LCDSDA P25
SCL P31
RS P00
Reset P01
CS P02
LED P34
3)P03
4)P20
5) USB Vin ( USB)P15
6) VbatP14/AIO3
7) Green LED ( )P23
Layar standar (penuh pada aliexpress) pada ST7735 dengan resolusi 80 * 160. Didukung oleh SPI. Ada perpustakaan yang sudah jadi untuk itu, tetapi lebih baik untuk membuat versi ringan Anda sendiri, untuk ukuran font Anda dan karakter Anda sendiri. Layar berwarna, tetapi ini tidak terlalu relevan di jalan, karena kontras rendah (sayangnya ingat tampilan transflektif dari ponsel Siemens). Ya, dan kaca berwarna. Kami akan menggunakan warna putih untuk menampilkan teks, yang paling baik dilihat.

Tombol sentuh dibuat pada chip Tontec TTP233D-HA6.

Akselerometer tidak diketahui, tetapi pemindaian bus I2C menunjukkan bahwa ia menggunakan register seperti semua akselerometer ST. Kebanyakan dari itu mirip dengan LIS2DH12. Tampaknya semua register kontrol sesuai.

Untuk menampilkan informasi kami pada gelang, kami membutuhkan layanan BLE kami sendiri untuk transfer data. Sesuatu seperti SPP . Selain itu, Anda dapat menambahkan Layanan Baterai dan pembaruan firmware melalui BLE.

Sebagai dasar untuk proyek ini, kami mengambil contoh firmware untuk memperbarui OTA dan membuatnya sesuai kebutuhan. Tambahkan layanan untuk baterai. Untuk mentransfer data, Anda dapat menggunakan contoh penerapan layanan khusus dari SDK. Ia menggunakan satu layanan FF01 dan di dalamnya satu karakteristik FF02.

Spoiler
SDK GPIO 0, . . , . , pull-up pull-down ( 100 ) . . 40 , ยซยป pull-down, 15 ( ).

Kami mempercepat layanan kerja:

  1. penanganan interupsi dengan tombol sentuh. Selain menyalakan layar dan menghidupkan / mematikan gelang itu sendiri, kami akan membuat pengenalan ketukan tunggal dan ganda dengan transmisi perintah melalui karakteristik FF02 kami.
  2. output data yang diterima dari smartphone melalui karakteristik yang sama dengan tampilan.
  3. Dimasukkannya vibromotor untuk menarik perhatian.
  4. menggunakan accelerometer, menyalakan layar dengan lambaian tangan (sulit untuk mengatur, karena ketika Anda berlari, Anda melambaikan tangan).

Ok, gelang sudah siap. Kami memeriksa melalui nRFConnect, memungkinkan Anda membaca dan menulis nilai-nilai karakteristik. Di layar, denyut nadi, waktu, jarak, dan pengatur waktu lainnya (misalnya, untuk menampilkan jeda waktu atau memimpin grafik, mis. Semacam alat pacu jantung, tetapi ini hanya dapat diperoleh dari aplikasi Anda).


Sekarang kita perlu mengambil data ke suatu tempat untuk mengirimkannya. Saat ini saya menggunakan aplikasi Strava, meskipun saya kurang menyukainya. Mungkin cara termudah untuk mendapatkan waktu berlari darinya dan jarak (meskipun dengan pembulatan hingga 100 m) dari pemberitahuan di bilah status. Untuk melakukan ini, Anda perlu menulis aplikasi dengan layanan untuk mendengarkan notifikasi. Ini tidak sulit. Tapi kita akan membaca pulsa langsung dari sabuk BLE atau ANT +. Yah, karena kami mendapat pemberitahuan dari gelang tentang menekan tombol, kami perlu menggunakannya di suatu tempat. Misalnya, Anda dapat, dengan mengirim pesan melalui BroadCastReceiver, jeda Strava dan mulai ulang. Dan lebih baik suatu hari nanti buat Strava dengan lonceng dan peluit. Aplikasi ini membutuhkan hak untuk mengakses lokasi (ini diperlukan untuk bekerja dengan BLE) dan hak untuk mengakses pemberitahuan.

Masih memverifikasi kasus. Sayangnya, musim dingin berakhir pada bulan Februari, jadi siklus dari gambar di awal artikel sudah berakhir. Tapi Anda bisa lari. Accelerometer sering kali menyalakan layar secara tidak perlu, mungkin harus dimatikan sepenuhnya. Tombol sentuh dapat bereaksi terhadap tetesan yang jatuh dari dahi.




Dan akhirnya, kabar baiknya. Gelang yang sudah dari pabrik mendukung pembaruan OTA melalui aplikasi PhyApp (terletak di tempat yang sama dengan SDK, aslinya dalam bahasa Cina). Karena itu, memiliki firmware yang sudah jadi, bahkan membongkar gelang tidak diperlukan. Flash dan gunakan. Untuk melakukan ini, Anda perlu menginstal aplikasi, meletakkan firmware di "root" telepon (HEX, bukan HEXF, karena yang terakhir berisi bootloader yang sudah kita miliki dari pabrik), sambungkan ke gelang dan gunakan tombol OTA untuk mengunggah firmware ke gelang. Setelah flashing gelang akan dimatikan, untuk menyalakannya Anda harus menahan tombol selama 2 detik.

Secara umum, jam tangan dan gelang di PHY62 dapat dengan mudah dikonversi menjadi apa saja.

Referensi:

  1. kode sumber dan APK aplikasi android (itu ditulis di bawah Android 8.1, tampaknya berfungsi di bawah 9, itu tidak memeriksa di bawah yang lain);
  2. File firmware HEX melalui BLE, dan HEXF - untuk firmware melalui UART (Saya tidak keberatan dengan sumbernya, tetapi saya perlu memahami bahwa saya dapat mengunggahnya dengan perjanjian lisensi dan siapa yang tidak menulis dalam spesial ini) + aplikasi firmware PhyApp untuk firmware OTA.
  3. Saya membeli gelang di sini , tetapi saya tidak dapat menjamin bahwa isinya akan sama, karena banyak yang sama dalam penampilan, tetapi dengan chip yang berbeda. Ada beberapa pilihan dengan layar yang lebih besar, yang juga memiliki PHY6202. Secara umum, ada jam tangan / gelang dengan chip yang berbeda (Phy +, Telink, dan bahkan nRF).


PS Secara umum, sepertinya SDK untuk PHY62 dibuat berdasarkan Texas Instruments SDK untuk chip BLE mereka.

All Articles