Kontrol nirkabel motor Lego dengan Steam Controller

Kontrol nirkabel motor Lego dengan Steam Controller

Ketika saya masih muda, saya selalu ingin memiliki perangkat Lego techno untuk membuat benda-benda keren. Tank otonom dengan menara berputar yang menembakkan batu bata Lego. Tapi saat itu saya tidak punya set seperti itu.

Dan bahkan tidak ada balok Lego biasa. Saya hanya punya teman yang saudara laki-lakinya memiliki semua mainan mahal ini.

Dan sekarang saya mempunyai seorang putra seusia itu. Dan dia membuat tank yang... dengan bodohnya maju ke depan sampai menabrak tembok πŸ™‚

Dan sekarang, waktunya untuk ESP32 dan keajaiban besi solder - mari kita rakit remote control yang tepat untuk mereka!

Tidak, tentu saja saya tahu tentang keberadaan remote tersebut. Tapi tidak ada satupun yang cocok untukku. Entah itu inframerah, dengan teknologi tahun 80-an, atau terlalu besar. Atau yang mahal. Dan yang paling penting, saya tidak akan bisa memberi tahu putra saya tentang satu pun dari hal-hal tersebut: "Saya melakukannya khusus untuk Anda!"

Jadi mari kita buat kendali jarak jauh yang baru dan lebih baik untuk mengatur semua orang!

Kontrol nirkabel motor Lego dengan Steam Controller

Bahan:

  • ESP32-WROOM-32D | WiFi, BLE dan prosesor dengan I/O - cukup untuk mengontrol dua motor ΠΈ DIPIMPIN.
  • DRV8833 | jembatan H ganda dengan tenaga yang cukup untuk motor.
  • TPS62162 | turunkan tegangan ke 17V, juga untuk bersenang-senang saat menyolder casing WSON-8 2x2mm
  • CP2104 | untuk pemrograman ESP32
  • Konektor untuk menghubungkan motor dan dioda. Potong kabel dan solder di bagian bawah, dan rekatkan konektor Lego di bagian atas.

Semua ini akan ditempatkan di papan yang agak kecil - berikut tampilannya di editor EasyEDA:

Kontrol nirkabel motor Lego dengan Steam Controller

Kabel, seperti yang terlihat pada foto judul, diperlukan bukan untuk memperbaiki beberapa kesalahan, tetapi untuk memasok daya dari USB. Mungkin tidak cukup untuk motornya, tapi sayangnya kontak dari China belum datang ke saya. Oleh karena itu, saya periksa dulu pengoperasian LEDnya. Untuk keindahan di foto, saya cukup memasang konektor dari motor di papan.

Papan saya versi 1.1 (tidak seperti versi 1.2 yang sudah ada di EasyEDA) tidak memiliki LED, jadi saya menyolder dua dioda anti-paralel ke output sehingga saya dapat melihat apa yang terjadi. Jika Anda perhatikan lebih dekat, video tersebut menunjukkan penyalaan bergantian dari sepasang dioda 0603, yang menunjukkan gerakan maju / mundur.

Sedangkan untuk remote control, pada awalnya saya hanya ingin merakit papan tambahan dengan tombol dan ESP32 lainnya - remote control klasik.

Namun, kemudian saya teringat bahwa Steam Controller memiliki mode operasi Bluetooth Low Energy (BLE). Saya memutuskan untuk mengatasi masalah ini, dan setelah beberapa jam saya belajar cara menerima paket dari pengontrol.

Untuk melakukan ini, Anda hanya perlu mencari perangkat HID yang menamakan dirinya SteamController dan menyambungkannya. Dan kemudian gunakan layanan tidak berdokumen dari Valve dan beberapa perintah yang tidak terdokumentasi, memungkinkan transmisi paket.

Kontrol nirkabel motor Lego dengan Steam Controller

Saya juga menemukan format laporan tidak berdokumen yang saya urai secara manual.

Kontrol nirkabel motor Lego dengan Steam Controller

Setelah sekitar satu jam, arti dari bendera dan nilainya menjadi jelas bagi saya, dan saya berhasil mengedipkan LED menggunakan pengontrol Steam dan ESP32. Β―_(ツ)_/Β―

File

v1.0: "pendekatan percobaan"
- opsi pertama yang saya pilih pengatur tegangannya salah. TPS62291 hanya membutuhkan tegangan hingga 6V. Saya sedang mengembangkan beberapa proyek secara paralel, dan saya lupa bahwa perangkat perlu bekerja dengan 9V.

v1.1: "cukup baik"
- opsi ini terlihat di video, dan semuanya berfungsi

v1.2: "terakhir"
- menambahkan LED indikator ke output dan mengoptimalkan ukuran dan tata letak papan

Video singkat berikut menunjukkan fase koneksi (1-3 detik setelah penyalaan) dan kontrol output motor. Konektor dari Lego belum tersambung. Ini akan menuju ke ruang kosong di sebelah konektor lainnya, ditandai dengan persegi panjang putih.

Anak saya sekarang rutin menggunakan pengontrol ini untuk mengontrol mesin yang dia rakit.

Selama stress test, saya hanya menemui satu masalah: Saya pikir mode β€œpeluruhan cepat” [peluruhan cepat] pada driver motor akan bekerja paling baik, tetapi karena itu, setelah beberapa detik pengoperasian, kecepatan motor turun drastis. . Jadi saya mengubah kodenya sehingga menggunakan "peluruhan lambat" [slow pembusukan].

Kontrol nirkabel motor Lego dengan Steam Controller

Meskipun saya tidak yakin bagaimana DRV bekerja dan mengapa motor berputar cepat pada awalnya, dan kemudian setelah 10 detik motor mulai melambat secara bertahap. Mungkin MOSFET sedang memanas dan resistansinya meningkat terlalu tinggi.

Saya harap contoh cara menggunakan Arduino ini dengan mudah menginspirasi orang lain dan memungkinkan mereka memperkenalkan elektronik kepada anak-anak mereka.

Sumber: www.habr.com

Tambah komentar