Modul 3
Modul 3
CONTROLLED ROVER
1. Komputer
2. Mathlab
3. Arduino Nano 33IoT
4. Arduino Board Nano Motor Carrier
5. DC Motors
6. Servo Motor
7. Battery & Holder
8. Rover Robot
Controlled Rover Robot terdiri dari robot yang dapat deprogram yang dapat dikendalikan
dengan MATLAB untuk melakukan operasi menggunakan algoritma pemrosesan gambar. Rover
dibuat menggunakan Arduino Nano 33 IoT, Arduino Nano Motor Carrier, dua motor DC dengan
encoder dan motor mikro-servo. Di atas Rover, terdapat stiker berkode warna yang berfungsi
sebagai penanda untuk membantu algoritma pemrosesan gambar yang menggunakan webcam
untuk mendeteksi lokasi dan orientasi robot.
4.3.2. Matlab
MATLAB (Matrix Laboratory) adalah sebuah bahasa pemrograman tingkat tinggi yang
secara khusus digunakan untuk komputasi numerik, pemrograman, dan visualisasi. Perusahaan
yang bertanggung jawab atas produk hasil pengembangan dari MATLAB ialah MathWorks.
Fungsi utama dari MATLAB ialah untuk melakukan analisis data, mengembangkan algoritma,
serta membuat model dan aplikasi. Kinerja MATLAB lebih tinggi dibandingkan bahasa
pemrograman konvensional. Standar variabel elemen pada MATLAB menggunakan konsep larik
yang tidak memerlukan proses deklarasi. MATLAB juga dapat mengadakan integrasi dengan
bahasa pemrograman dan aplikasi lain seperti C, Java, .NET Framework, dan Microsoft Excel.
4.3.3. Simulink
Simulink merupakan salah satu komponen dari MATLAB yang berperan sebagai
pemrograman grafis. Kegunaan utama dari Simulink adalah untuk membuat simulasi sistem
dinamik. Proses simulasi dilakukan menggunakan diagram fungsional yang meliputi blok yang
terhubung dengan fungsinya masing-masing secara ekuivalen. Simulink dapat digunakan sebagai
sarana pemodelan, simulasi dan analisis dari sistem dinamik dengan menggunakan antarmuka
pengguna grafis.
Simulink terdiri dari beberapa kumpulan kotak perkakas yang dapat digunakan untuk
analisis sistem linier dan non-linier. Beberapa pustaka yang sering digunakan dalam sistem
kontrol antara lain math, sinks, dan sources.
Arduino IDE adalah software yang digunakan untuk membuat sketch pemrogaman atau
dengan kata lain arduino IDE sebagai media untuk pemrogaman pada board yang ingin
diprogram. Arduino IDE ini berguna untuk mengedit, membuat, meng-upload ke board yang
ditentukan, dan meng-coding program tertentu. Arduino IDE dibuat dari bahasa pemrogaman
JAVA, yang dilengkapi dengan library C/C++(wiring), yang membuat operasi input/output lebih
mudah.
Arduino Nano 33 IoT juga sudah dilengkapi dengan modul u-blox, the NINA-W10 yang
membuat dev board ini memiliki konektivitas WiFi dan Bluetooth yang dapat dioperasikan
sampai range 2.4GHz sehingga board ini sangat cocok sekali digunakan untuk keperluan Internet
of Things atau IoT.
Selain sudah dilengkapi dengan konektivitas WiFi dan Bluetooth, Arduino Nano 33 IoT ini
juga sudah dilengkapi dengan sensor IMU 6 sumbu sehingga bisa digunakan untuk sistem
getaran untuk memprediksi gempa ataupun sistem posisi terbang pada pesawat terbang/drone.
4.3.6. DC Motors
Motor DC (Direct Current) adalah jenis motor yang akan menyebabkan poros motor
berputar di sekitar sumbu longitudinalnya ketika menerapkan arus listrik di antara pin
terminalnya. Dengan demikian, motor DC adalah jenis aktuator yang mengubah arus listrik
menjadi gerak rotasi.
Ada dua bagian di dalam motor: rotor (poros adalah bagian dari ini) dan stator. Ketika
melihat penampang motor maka dapat dilihat bahwa rotor adalah bagian yang bergerak dan
stator adalah bagian yang statis. Stator dan rotor menggunakan magnet permanen dan
elektromagnet. Tergantung pada jenis motornya, stator bisa menjadi magnet permanen
sedangkan rotor adalah elektromagnet, atau sebaliknya. Menyalakan elektromagnet menciptakan
gaya tarik-menarik dan gaya tolak menolak yang membuat motor berputar.
Motor DC bekerja dengan cara berputar ketika diterapkan tegangan DC melalui dua pin
terminalnya. Variasi kecepatan motor dapat diatur dengan mengubah level tegangan. Selain itu,
motor dapat berjalan bebas di kedua arah hanya dengan membalikkan arah arus. Motor DC saja
tidak terlalu bagus untuk pergerakan yang presisi, tetapi dapat memberikan kecepatan rotasi yang
sangat tinggi.
To communicate between MATLAB and Arduino, you need to know the port number
your Arduino is connected to. Remember that the port names differ between operating systems;
in other words, they are different for Windows (where they are named COM## with the ## being
a unique single or two digit numeric identifier), OSX (/dev/tty.usbmodem##), and Linux
(/dev/ttyACM##).
Once you know the port number, enter the following commands with the appropriate port
number to create (a) an Arduino object with the necessary libraries and (b) a separate object for
the Motor Carrier:
a = arduino('COM##', 'Nano33IoT', 'Libraries', 'MotorCarrier');
carrier = motorCarrier(a);
dcmRight = dcmotor(carrier,'M1');
Now specify that you want the DC motors to spin at 25% of the maximum speed:
dcmLeft.Speed = 0.25;
dcmRight.Speed = -0.25;
Once you've specified how fast the motors must spin, the next step is to spin them! Enter
the following commands to run the motors for 5 seconds at this speed:
start(dcmLeft);
start(dcmRight);
pause(5);
stop(dcmLeft);
stop(dcmRight);
Drive in a circle
If you were asked how to drive the Rover in a circle, your answer might be a) to spin one
wheel but not the other, or b) spin both wheels with the same speed but in opposite directions.
Both answers are correct, though the way the Rover will move will differ. Let's analyze the first
case:
Spin one wheel but not the other. Try the following commands with the Rover, You
should observe that the Rover spins in a circle around its left wheel.:
dcmLeft.Speed = 0;
dcmRight.Speed = 0.25;
start(dcmLeft)
start(dcmRight)
pause(5)
stop(dcmLeft)
stop(dcmRight)
The other case required you to spin both wheels with the same speed but opposite
directions. Now as discussed earlier, if we provide same polarities to both the motors, they will
move in opposite directions due to their opposite alignment with respect to one another and vice
versa. Let's try spinning the wheels with equal speeds by running the following code in
MATLAB:
You should observe that the Rover spins in a circle about its centre.
dcmLeft.Speed = 0.25;
dcmRight.Speed = 0.25;
start(dcmLeft)
start(dcmRight)
pause(5)
stop(dcmLeft)
stop(dcmRight)
s = servo(carrier,3);
pause(5)
clear a;
clear carrier;
clear s;
Double-click on the v (cm/s) and w block to see what the signal looks like.
The signal looks like a step input that has a magnitude of 10 cm/s for the first five
seconds and then drops down to 0 cm/s.
The signal for w (deg/s) is a rectangular signal that has a magnitude of 72 deg/s between
5 to 10 seconds and zero at all other times.
Since the input signals are both zero after 10 seconds, the simulation stop time is set to 11
seconds as shown below.
Disconnect the USB cable from the Rover and place the Rover on the floor or
some other surface where it has enough space to move around. The Rover is fragile, and
it could get damaged if it falls from your desk.