Kami terus meninjau kursus robot Bangunan online gratis dan perangkat lain di Arduino. Dari lampu lalu lintas ke printer 3D (ulasan sebelumnya: minggu 1 , minggu 2 )
Minggu ketiga
Halo semuanya! Pernahkah Anda bertanya-tanya apa persamaan antara Valley dan penghalang?

Minimal, keduanya adalah robot .
Sebelum saya mendaftar dalam kursus robotika dari MIPT, saya membayangkan robot hampir secara eksklusif
Tetapi ternyata definisi robot jauh lebih luas:
Robot adalah perangkat otomatis yang dibuat berdasarkan prinsip organisme hidup, yang dirancang untuk melakukan produksi dan operasi lainnya, yang beroperasi sesuai dengan program yang telah ditentukan dan menerima informasi tentang dunia luar dari sensor, robot secara mandiri melakukan produksi dan operasi lain yang biasanya dilakukan oleh manusia. Pada saat yang sama, robot dapat berkomunikasi dengan operator (menerima perintah darinya) dan bertindak secara mandiri.
Seperti yang Anda lihat, definisi ini jauh lebih luas daripada ide stereotip saya tentang apa itu robot.
Pada minggu ketiga, selain beberapa fitur baru dari lingkungan pemrograman, kita akan belajar bagaimana bekerja dengan rangefinders , infrared dan ultrasound , serta berinteraksi dengan lingkungan eksternal menggunakan servomotors . Hal pertama yang pertama.
Apa yang terjadi sesuai hasil minggu ketiga Biarkan saya mengingatkan Anda bahwa pada minggu kedua tentu saja kami memeriksa koneksi sensor paling sederhana - photoresistor dan termistor. Mereka diatur dengan cara yang paling sederhana - ketika lingkungan berubah, mereka mengubah resistansi mereka dan, sebagai hasilnya, kita dapat mengukur penurunan tegangan pada mereka menggunakan Arduino dan memahami bahwa kondisi eksternal berubah. Kami juga belajar cara menampilkan informasi menggunakan indikator LED dan piezodynamics.
Minggu ini kami mempelajari pengukur jarak - alat yang memungkinkan Anda menentukan jarak ke objek atau penghalang.

Pencari rentang ultrasonik bekerja berdasarkan prinsip mengukur waktu antara mengirim sinyal (pulsa suara dengan frekuensi 40 kHz) dan menerima salinan pantulannya.

Dalam sensor inframerah , sinyal yang dipantulkan (sinar dalam spektrum inframerah) melewati lensa ke fotosel posisi-sensitif, yang mengubah konduktivitasnya tergantung pada tempat di mana sinar diterima.
Mungkin pembaca akan tertarik mengapa dua sensor diperlukan untuk melakukan hal yang sama? Itu semua tergantung pada ruang lingkup sensor, sehingga sensor inframerah tidak cocok untuk mengukur jarak ke permukaan yang menyerap cahaya atau transparan, karena didasarkan pada cahaya. Di sisi lain, range finder ultrasonik tidak cocok untuk menentukan jarak ke permukaan yang menyerap suara, khususnya yang halus :) Juga, sensor inframerah memiliki rentang jarak pengukuran yang lebih kecil (misalnya, 4-30, 10-80 atau 80-150 cm), walaupun bahkan murah pencari jarak menentukan jarak dari 2 hingga 400 cm. Hanya pencari jarak ultrasonik ternyata berada di set saya, oleh karena itu saya hanya menggunakannya untuk percobaan.

Apa itu motor servo ? Ini adalah motor listrik kecil yang dikombinasikan dengan potensiometer dan sirkuit kontrol. Dengan menerapkan sinyal PWM ke input servomotor, kita dapat mengatur sudut dengan mana ia harus berputar dan menahan posisi ini. Biasanya, sudut rotasi maksimum adalah 180 derajat, tetapi ada servomotors dengan sudut 120 hingga 270 derajat.
Setelah bermain cukup dengan servomotor dan pencari jarak ultrasonik secara terpisah, saya mulai berpikir perangkat mana yang akan dirakit minggu ini. Keputusan itu tiba-tiba datang ketika saya keluar dari tempat parkir bawah tanah di pusat perbelanjaan. Sistem pintu keluar dengan penghalang dan lampu lalu lintas diatur di pintu keluar, yang saya putuskan untuk disimulasikan.
Untuk membangun perangkat ini, saya menggunakan elemen perancang, yang disimpan di zaman sekolah.


Karena daya dari komputer jelas tidak cukup, papan itu secara berkala dinyalakan kembali, oleh karena itu, dalam versi final, powerbank digunakan untuk daya.

Sebenarnya, bagaimana model sistem throughput kami yang disederhanakan bekerja:
- Setelah dinyalakan, lampu lalu lintas merah menyala, penghalang diatur ke posisi tertutup. Sistem menunggu tombol ditekan (simulasi membaca pass).
- Setelah menekan tombol, sinyal lalu lintas hijau menyala dan penghalang terbuka. Sistem menunggu pengintai berada di bawah nilai tertentu (perjalanan kendaraan).
- Setelah kendaraan melintasi sinyal pencari jarak, sinyal lalu lintas merah menyala lagi dan penghalang menutup. Sistem memasuki mode siaga lagi.
Dalam lingkungan Fritzing, skema adalah sebagai berikut:

Kode sumber#include <Servo.h> // #define GATE_PIN 3 #define RED_PIN 4 #define GREEN_PIN 5 #define BUTTON_PIN 6 #define SENSOR_TRIG 11 #define SENSOR_ECHO 12 // #define GREEN 1 #define RED 0 #define CLOSE 1 #define OPEN 0 // , #define GATE_OPEN 180 #define GATE_CLOSE 90 // , #define SENSOR_THR 15 Servo gate; void setup() { Serial.begin(9600); // Serial.println(); gate.attach(GATE_PIN); gate.write(CLOSE); // Serial.println(); pinMode(GREEN_PIN, OUTPUT); pinMode(RED_PIN, OUTPUT); pinMode(BUTTON_PIN, INPUT_PULLUP); pinMode(SENSOR_TRIG, OUTPUT); pinMode(SENSOR_ECHO, INPUT); Serial.println(); light(RED); } // - void gateSet(int state) { if (state == CLOSE) { for (int i = GATE_OPEN; i >= GATE_CLOSE; i--) { gate.write(i); delay(15); } } else { for (int i = GATE_CLOSE; i <= GATE_OPEN; i++) { gate.write(i); delay(15); } } } // void light(int col) { if (col == RED) { digitalWrite(GREEN_PIN, LOW); digitalWrite(RED_PIN, HIGH); } else { digitalWrite(GREEN_PIN, HIGH); digitalWrite(RED_PIN, LOW); } } // / int getDistance() { digitalWrite(SENSOR_TRIG, HIGH); digitalWrite(SENSOR_TRIG, LOW); int distance = pulseIn(SENSOR_ECHO, HIGH) / 54; Serial.println( + String(distance)); return distance; } // , bool waitCar() { while (getDistance() > SENSOR_THR) { delay(10); } while (getDistance() <= SENSOR_THR) { delay(10); } } void loop() { Serial.println(); while (digitalRead(BUTTON_PIN)) { delay(10); } Serial.println(); light(GREEN); Serial.println(); gateSet(OPEN); Serial.println(); waitCar(); Serial.println(); light(RED); Serial.println(); gateSet(CLOSE); Serial.println(); }
Demonstrasi pengoperasian perangkat yang dirakit
Untuk meringkas. Minggu ini kami belajar cara bekerja dengan pengukur jarak, serta mengontrol drive servo. Elemen-elemen ini adalah dasar bagi banyak robot beroda atau berjalan, serta berbagai manipulator, oleh karena itu, menyediakan ruang besar untuk kreativitas.
Ulasan sebelumnya :
Dan tautan ke kursus: Membangun robot dan perangkat lain di Arduino. Dari lampu lalu lintas ke printer 3D