Arduino Robot Vacuum Cleaner

Terlepas dari kenyataan bahwa pada geektimes sudah ada beberapa artikel tentang penyedot debu robot pada Arduino di sini dan di sini , saya pikir itu tidak akan berlebihan untuk mempublikasikan proyek lain. Selain itu, dibuat sedikit lebih dekat dengan model toko dan, karena proyek ini terus berkembang, itu akan melampaui beberapa dari mereka dalam fungsi dari waktu ke waktu. Saya menerbitkan posting ini dengan izin dari pengembang penyedot debu robot ini, karena penulis tidak memiliki kesempatan untuk menerbitkan artikel dari akunnya. Oleh karena itu, artikel tersebut akan berupa wawancara singkat dengan pembuatnya yang dicampur dengan skema, foto dan kode penyedot debu robot. Tapi mari kita mulai dengan demonstrasi video membersihkan ruangan dengan penyedot debu ini.





Jadi, mari kita mulai dengan desain dan prinsip operasi penyedot debu.



Diagram menunjukkan bahwa penyedot debu dilengkapi dengan 6 sensor inframerah. Mereka bekerja ketika penyedot debu mendekati rintangan, memberikan perintah untuk berhenti dan berbalik tanpa menabraknya. Jika tidak ada satu pun dari 6 sensor yang bekerja dan penyedot debu robot bertabrakan dengan penghalang, maka salah satu dari 2 sakelar yang menghubungkan bumper (yang berisi sensor IR) dan badan robot terpicu.

Pembaca yang penuh perhatian telah memperhatikan bahwa kekuatan robot tidak ditampilkan dalam diagram. Di sini solusinya cukup standar, 4 baterai format 18650 digunakan, dua pasang dihubungkan secara seri melalui pengontrol pengisian daya baterai. Selanjutnya, konverter DC-DC atas-dan-bawah dihubungkan dari pengontrol melalui sakelar. + 12 volt memasok motor roda dan motor sikat depan. +5 volt memberi makan sisa elektronik. Turbin ditenagai oleh 7-8 volt, sehingga konverter tidak diperlukan untuk itu. Kelihatannya seperti ini:



Sebagai hasilnya, daftar komponen utama terlihat seperti ini:

arduino pro mini
L298N Modul Driver Motor
roda
meningkatkan konverter
step-down converter
sensor IR 6 pcs impeller
pengontrol pengisian daya
untuk turbin (sekitar 200 rubel)
PVC untuk pembuatan kotak
baterai 18650 4 pcs.
2 motor untuk sikat (model tidak terlalu penting)
1 motor untuk turbin
2 tumbukan sakelar.
Salah satu pilihan sketsa untuk pembersihan yang kacau
sini
#define mot_ena 9 //
#define mot_in1 8 //
#define mot_in2 7 //
#define mot_in3 6 //
#define mot_in4 4 //
#define mot_enb 10 //

#define ir_1 A0 // 1 -
#define ir_2 A1 // 2 -
#define ir_3 A2 // 3 -
#define ir_4 A3 // 4 -
#define ir_5 A4 // 5 -
#define ir_6 A5 // 6 -

#define lev_vik 11 //
#define pra_vik 12 //

//
byte max_skor_lev = 254;
byte max_skor_prav = 244;
//---------------------------------

byte min_skor = 0;

void setup() {

randomSeed(analogRead(A7));
//
pinMode(3, INPUT); //
pinMode(2, INPUT); //
//-------------------------
//
pinMode(mot_ena, OUTPUT);
pinMode(mot_in1, OUTPUT);
pinMode(mot_in2, OUTPUT);
pinMode(mot_in3, OUTPUT);
pinMode(mot_in4, OUTPUT);
pinMode(mot_enb, OUTPUT);
//-------------------------------------------
// -
pinMode(ir_1, INPUT);
pinMode(ir_2, INPUT);
pinMode(ir_3, INPUT);
pinMode(ir_4, INPUT);
pinMode(ir_5, INPUT);
pinMode(ir_6, INPUT);
//-------------------------
//
pinMode(lev_vik, INPUT);
pinMode(pra_vik, INPUT);
//---------------------------
delay(3000);

ROB_VPERED();
}

void loop() {

//
if (digitalRead(lev_vik) == LOW)
{
ROB_STOP();
delay(200);
ROB_NAZAD();
delay(150);
ROB_STOP();
delay(200);
ROB_PRAV();
delay(random(400, 1500));
ROB_STOP();
delay(200);
ROB_VPERED();
}
//-----------------------------------------------
//
if (digitalRead(pra_vik) == LOW)
{
ROB_STOP();
delay(200);
ROB_NAZAD();
delay(150);
ROB_STOP();
delay(200);
ROB_LEV();
delay(random(400, 1500));
ROB_STOP();
delay(200);
ROB_VPERED();
}
//-----------------------------------------------
// 2 -
if (digitalRead(ir_2) == LOW)
{
ROB_STOP();
delay(200);
ROB_PRAV();
delay(random(200, 1100));
ROB_STOP();
delay(200);
ROB_VPERED();
}
//-----------------------------------------------
// 3 -
if (digitalRead(ir_3) == LOW)
{
ROB_STOP();
delay(200);
ROB_PRAV();
delay(random(200, 1100));
ROB_STOP();
delay(200);
ROB_VPERED();
}
//-----------------------------------------------
// 4 -
if (digitalRead(ir_4) == LOW)
{
ROB_STOP();
delay(200);
ROB_LEV();
delay(random(200, 1100));
ROB_STOP();
delay(200);
ROB_VPERED();
}
//-----------------------------------------------
// 5 -
if (digitalRead(ir_5) == LOW)
{
ROB_STOP();
delay(200);
ROB_LEV();
delay(random(200, 1100));
ROB_STOP();
delay(200);
ROB_VPERED();
}
//-----------------------------------------------
// 1 -
if (digitalRead(ir_1) == LOW)
{
ROB_PRAV();
delay(10);
ROB_VPERED();
}
//-----------------------------------------------
// 6 -
if (digitalRead(ir_6) == LOW)
{
ROB_LEV();
delay(10);
ROB_VPERED();
}
//-----------------------------------------------

}

//
void ROB_PRAV()
{
//
digitalWrite(mot_in1, LOW);
digitalWrite(mot_in2, HIGH);
analogWrite(mot_ena, max_skor_lev);
//
digitalWrite(mot_in3, LOW);
digitalWrite(mot_in4, HIGH);
analogWrite(mot_enb, max_skor_prav);
}
//-----------------
//
void ROB_LEV()
{
//
digitalWrite(mot_in3, HIGH);
digitalWrite(mot_in4, LOW);
analogWrite(mot_enb, max_skor_prav);
//
digitalWrite(mot_in1, HIGH);
digitalWrite(mot_in2, LOW);
analogWrite(mot_ena, max_skor_lev);
}
//---------------------
//
void ROB_VPERED()
{
//
digitalWrite(mot_in1, LOW);
digitalWrite(mot_in2, HIGH);
analogWrite(mot_ena, max_skor_lev);
//
digitalWrite(mot_in3, HIGH);
digitalWrite(mot_in4, LOW);
analogWrite(mot_enb, max_skor_prav);
}
//-------------------------------------
//
void ROB_NAZAD()
{
//
digitalWrite(mot_in1, HIGH);
digitalWrite(mot_in2, LOW);
analogWrite(mot_ena, max_skor_lev);
//
digitalWrite(mot_in3, LOW);
digitalWrite(mot_in4, HIGH);
analogWrite(mot_enb, max_skor_prav);
}
//------------------------------------
//
void ROB_STOP()
{
//
digitalWrite(mot_in1, LOW);
digitalWrite(mot_in2, LOW);
analogWrite(mot_ena, min_skor);
//
digitalWrite(mot_in3, LOW);
digitalWrite(mot_in4, LOW);
analogWrite(mot_enb, min_skor);
}
//--------------------------------

Nah, sedikit wawancara dengan penulis proyek ini. Nama penulis adalah Dmitry Ivanov, tinggal di Sochi.

- Dmitry, bagaimana Anda mendapat ide untuk membuat robot penyedot debu?

- Saya melihat video di YouTube di mana penyedot debu robot sedang membersihkan, ingin membeli satu, tetapi ketika saya melihat harganya, saya berpikir dan memutuskan untuk melakukannya sendiri. Pada awalnya saya membuat versi pertama dari robot, itu memiliki motor lemah di atas roda, wadah tetap untuk puing-puing dan debu, beberapa sensor hambatan, dan saya membuat versi kedua, tanpa kekurangan ini.

- Berapa banyak uang dan waktu yang diperlukan untuk membuatnya?

โ€œSekitar 5.000 ribu rubel. ditambah dua bulan kerja โ€

- Apa yang paling sulit selama proses konstruksi?

Yang paling sulit adalah membuat casing dan turbin, agar sesuai dengan semua detail.

- Adakah rencana untuk terus meningkatkan robot?

Rencananya adalah untuk melukis case, membuat beberapa mode pembersihan, menghubungkan modul bluetooth dan menulis program untuk ponsel di android (kontrol mode, kontrol manual, tampilan pengisian baterai). Nah, buat backlight biru untuk kecantikan di bawah penyedot debu.

Koleksi lebih dari 100 materi pelatihan tentang Arduino untuk pemula dan pro dapat ditemukan di sini .
PS Kursus online tentang Arduino di Gimetays ada di sini. Pada saat yang optimis ini, saya pikir, kita akan menyelesaikan cerita tentang versi penyedot debu robot ini, walaupun ada banyak momen menarik yang belum dinyalakan. Jadi kami menyimpulkan dengan sebuah pertanyaan:

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


All Articles