Cara membuat Lunokhod itu sendiri

Jika di masa kecil Anda tidak memiliki sepeda, dan sekarang Anda memiliki Bentley,
sama saja, di masa kecil Anda, Anda tidak punya sepeda.

Kebetulan di masa kecilku tidak ada Lunokhod . Dan kemudian seorang bayi lahir. Secara umum, saya berpikir, dan memutuskan untuk membuat mainan untuk kami berdua.


Saya tidak ingin membuat salinan yang tepat, dan saya tidak tahu cara mencetak kasus di rumah, jadi saya memutuskan untuk membatasi diri untuk membuat ulang fungsionalitas yang sama. Selain itu, saya merasa tidak manusiawi untuk memasuki "program" pergerakan dari memori dan tidak mengerti apa yang sebenarnya terjadi, jadi saya menambahkan tampilan.

Versi 1




Di tangan ada sasis murah dengan Ebay dan Arduino Uno.



Untuk mengendalikan motor, saya mengambil PWM Servo Shield dan menyolder L293D + PCF8574 di papan tempat memotong roti:



Untuk membaca dari keyboard saya mengambil PCF8574 dan beberapa dioda:



Keyboard itu sendiri dibuat papan sirkuit cetak:



Agar keyboard tidak berantakan di tangan saya, saya memperbaiki overlay di atasnya. Dia harus memesan dari "penggilingan" :)



Untuk menampilkan program, digunakan tampilan 4 karakter konvensional 20. Ya, juga melalui PCF8574;)

Awalnya saya menggunakan 4 baterai untuk daya, tetapi mereka kehabisan terlalu cepat, dan saya menggantinya dengan 18650 baterai:



Saya menggunakan modul TP4056 untuk pengisian daya, yang saya hubungkan ke baterai melalui relay, meskipun tidak terlalu berhasil.

Cara tercepat adalah menulis firmware. Sayangnya, ternyata perpustakaan LCD I2C memiliki lisensi GPL, dan kode tersebut dibuang ke tempat sampah. Sekitar waktu yang sama, saya menyadari bahwa Arduino Uno bukan pilihan terbaik, dan beberapa PCF8574 sangat tidak nyaman untuk disolder.

Dan saya memutuskan untuk memulai dari awal.

Versi 2




Saya memperhitungkan pengalaman sebelumnya, yang menyarankan bahwa ada beberapa masalah:

  • Chassis dengan Ebay terbuat dari plexiglass dan sangat (!) Rapuh (saya menarik sekrup pemasangan gearbox dan mount baru saja putus).
  • Ada banyak lubang pemasangan pada sasis, tetapi tidak ada yang cocok.
  • Seiring dengan sasis adalah roda gigi 1:48, tetapi mereka terlalu cepat.
  • Secara umum, sasis tidak cukup.
  • Arduino Uno memiliki beberapa kaki.
  • Tidak ada modul suara (dan itu diperlukan untuk perintah api).
  • Cerita-cerita horor ditulis tentang Li-ion di Internet; Saya tidak ingin memberi anak perangkat yang berpotensi berbahaya.

Akibatnya, saya membeli:


Selain itu:


Achtung! Peringatan! Perhatian! Tautan ini disediakan semata-mata untuk menggambarkan dan menyederhanakan pencarian lebih lanjut untuk perincian. Saya tidak dapat menjamin bahwa penjual tiba-tiba tidak mengubah lot menjadi yang lain, tidak mengubah harga, kuantitas, dll.

Besi


Saya memindahkan keyboard ke papan sirkuit (mungkin ini satu-satunya elemen yang sulit diulang). Hamparan keyboard digiling sesuai pesanan saya.

Pertanyaannya tetap: apa yang membuat sasis? Tidak ada plastik yang cocok, sulit untuk memproses logam ... Dan jika Anda mengambil kayu lapis? "Tapi ini tidak menyenangkan secara estetika!", Pikirku. Tetapi ketika setengah jam saya mendapatkan sasis yang normal, saya berubah pikiran. Chassis tidak terlalu rapi dan pergi ke keranjang, tetapi saya sangat menyukai kecepatan pemrosesan sehingga saya memutuskan untuk terus menggunakan kayu lapis.

Benar, saya mulai melihat lembar kedua hanya setelah saya membuat rencana kasar:



Untuk memasang motor, saya memotong sepotong sudut aluminium dan mengebor:



Papan diperbaiki pada rak heksagonal dan dihubungkan di antara mereka dengan loop.


(di sini Anda dapat melihat stabilizer 5V dan beberapa kontak daya).

Kabel daya ternyata sedikit banyak, jadi saya membuat papan daya dari papan (detail di sini ). Saya menduga bahwa Anda dapat mengambil perisai sensor normal, yang memiliki banyak pin daya.



Karena tidak ada lagi I / O ekspander, keyboard harus diulang ( sumber ). Saya mentransfer dioda dan resistor pull-up ke sana:





Sebagai sensor kecepatan, saya menggunakan optocoupler dan roda gigi berlubang (dicat dengan spidol permanen):



Sebagai roda ketiga saya menggunakan bola:



Awalnya, ada dukungan dalam bentuk roda pada balok, yang datang dengan sasis. Namun, ketika arah gerakan berubah, roda mulai berputar pada saat yang paling tak terduga dan melemparkan troli ke samping.

Diagram pengkabelan


Cara terbaik untuk melihat file consts.h dan lcd.ino, mereka berisi informasi yang paling relevan. Koneksi, seperti sekarang, terlihat seperti ini:

Gambar bisa diklik.

Firmware


Firmware , pada dasarnya, adalah program biasa yang ditulis dalam Arduino IDE. Ada dua mode operasi: pengeditan dan eksekusi. Dalam proses pengeditan, perintah + jumlah pengulangan diterima dari keyboard. Semua ini dikemas dalam nilai 16-bit dan ditambahkan ke array dalam RAM. Ketika sebuah program dieksekusi, nilai-nilai dihapus dari array dan dieksekusi. Melakukan satu langkah (dalam bentuk yang sangat sederhana) terlihat seperti ini:

  ( )      ( >=  ),                    = *    
( ) ( >= ), = *

Jarak yang ditempuh ditentukan oleh jumlah pulsa dari optocoupler, yang diperiksa dengan menyela timer.

Satu-satunya pengecualian adalah memainkan suara. Jika perintah “shot” ditemukan, loop paling sederhana dimulai, yang mengambil nilai-nilai dari file wav (itu di-flash dalam memori flash yang sama dengan program) dan mengeluarkannya ke R-2R DAC. Ketika nilai-nilai berakhir, ia kembali ke proses eksekusi program normal.

Sayangnya, dunia nyata sedikit berbeda dari model perangkat lunak yang dirancang firmware, jadi saya menambahkan sejumlah penundaan yang memungkinkan inersia sasis dipertimbangkan.

Saya sengaja memasang lisensi MIT. Dalam pemahaman saya, firmware dengan lisensi semacam itu dapat digunakan secara bebas sesuai keinginan Anda, tanpa perlu mempublikasikan perubahan lebih lanjut (saya tidak ingin memaksa siapa pun untuk melakukan apa pun).

Manual operasi;)


Keyboard sedikit berbeda dari Lunokhod "klasik":



  • Di sebelah kiri adalah blok perintah (hijau - ke mana harus pergi, jeda merah, bawah - Keluar, api, ulangi).
  • Di tengah adalah angka dengan jumlah pengulangan.
  • Di sebelah kanan ada 8 kunci kontrol (hitam - hapus perintah terakhir, merah - hapus semuanya, hijau - mulai, kuning - mulai perintah terakhir, uji biru, abu - abu cadangan).

Sekali lagi dengan tanda:
Dalam gambarTerjemahanArtinya
FwdBerkendara maju
BwdBerkendara kembali
KiriBelok kiri
BenarBelok kanan
JedaBekukan
KeluarTidak diterapkan, dibiarkan untuk masa depanLakukan seperti di Lunokhod
ApiApiMenghasilkan suara "pih!"
LoopSiklusUlangi beberapa perintah sebelumnya sekali
0-9Jumlah langkahMaksimum 20
BspHapus perintah terakhir
DelHapus seluruh programPergi konfirmasi diperlukan!
T1, T2TesJalankan program uji
PeriksaAmbil langkah terakhir
Pergi!Selesaikan semua langkah

Program dimasukkan dengan secara bergantian menekan "Tim" dan "Nomor". Lalu kami menekan tombol hijau "Luncurkan" dan lihat hasilnya. Penghapusan terjadi dengan menekan tombol merah, tetapi tidak segera: Anda perlu mengkonfirmasi keputusan Anda dengan menekan tombol "Start" hijau. Ketika daya dimatikan, program dihapus.

Perintah Repeat berisi satu parameter: berapa banyak langkah yang perlu diulang [sekali]. Contoh: Fwd1, Pause1, Bwd1, Loop3; sebagai hasilnya, perintah Fwd1, Pause1, Bwd1 akan dieksekusi dua kali. Pertama kali karena mereka ada dalam program, yang kedua - karena begitu ditunjukkan dalam perintah Cycle.

Untuk jaga-jaga, daya baterai dimonitor. Jika terlalu kecil, peringatan ditampilkan dan mainan tidak naik.

GUI


Mempertahankan seluruh program sulit, jadi saya mengacaukan indikator sederhana yang menggandakan informasi input.

Setelah memulai, sebuah prompt ditampilkan:



Saat Anda memasukkan perintah, ikon perintah dan jumlah pengulangan ditampilkan di sudut kiri atas:



Jika lebih dari satu perintah dimasukkan, daftar di bawah ini akan menjadi (pada kenyataannya, program), dan perintah yang Anda masukkan masih akan ditampilkan di atas:



Mengapa itu terjadi seperti itu


Mainan itu dibuat dari apa yang ada di tangan atau mudah didapat. Saya juga ingin mengatakan tentang Arduino. Itu dipilih karena beberapa alasan:

  • Dia memiliki sejumlah kesimpulan yang sesuai, dan mereka membutuhkan banyak (43):
    • 6 untuk mengendalikan motor;
    • 8 + 4 untuk keyboard;
    • 11 untuk LCD;
    • 3 untuk DAC;
    • 8 untuk sensor ultrasound;
    • 2 untuk sensor kecepatan;
    • 1 untuk mengukur tegangan baterai.
  • Saya kenal dengan platform ini.
  • Itu dijahit dalam satu klik.
  • Mikrokontroler tidak memerlukan kecepatan raksasa atau volume memori.
  • Dan efisiensi khusus juga tidak diperlukan, karena 90% dari arus dikonsumsi oleh motor.

Apa yang bisa diperbaiki


Sasis Dengan awal yang tajam, rodanya "dipoles" dan mainannya tersesat. Anda dapat mencoba membuat sasis beroda enam, atau bahkan crawler (ada di Aliexpress, tetapi saya belum mencobanya).

GUI Sekarang indikator hanya menampilkan jumlah minimum informasi, dan ini dilakukan dengan cara yang paling sederhana.

Kode Saya pasti tidak akan mendapatkan Pulitzer.

Suara . Ada pemutar mp3 murah dan sangat kecil. Anda dapat melempar R-2R DAC dengan aman dan menggantinya dengan pemain yang sudah jadi.

Tombol cadangan . Anda dapat merekam program yang sudah selesai di EEPROM sehingga tidak hilang ketika daya dimatikan. Implementasinya bisa seperti di radio: dengan tekan lama, program disimpan, dengan pers singkat.

Tombol keluar . Saat ini tidak diimplementasikan. Anda dapat mengacaukan sesuatu seperti relay / servo ke salah satu pin Arduino.

Ucapan Terima Kasih


  • Anak yang memotivasi saya selama ini.
  • Istri saya, yang dengan sabar menunggu sementara saya bermain cukup, dan membantu dengan Corel Draw!
  • Sergey Dudnikov, yang menggambar overlay keyboard.
  • Andrei Shishkov, yang menggiling tambalan ini.
  • Anton, yang membuatkan saya mp3 yang luar biasa dengan suara "wow!".
  • hudbrog , untuk ide mengimplementasikan pengontrol PID!
  • Chatik do-it-yourselfers yang secara mental mendukung saya dan dipaksa untuk melihat hasil antara pekerjaan;)

Duplikat buruk


Saya suka film dengan Jackie Chan, karena pada akhirnya ada potongan yang tidak berhasil. Aku juga tidak bisa melakukannya tanpa mereka. Yang paling mengejutkan saya adalah kenyataan bahwa bor bundar dengan dua alur memberi lubang segitiga;)








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


All Articles