Daftar Isi:

CleanBot oleh Guillaume Meurillon: 8 Langkah
CleanBot oleh Guillaume Meurillon: 8 Langkah

Video: CleanBot oleh Guillaume Meurillon: 8 Langkah

Video: CleanBot oleh Guillaume Meurillon: 8 Langkah
Video: Clean Bot 2024, Juli
Anonim
CleanBot oleh Guillaume Meurillon
CleanBot oleh Guillaume Meurillon
CleanBot oleh Guillaume Meurillon
CleanBot oleh Guillaume Meurillon

Ini adalah panduan untuk proyek yang saya buat untuk sekolah. Tujuannya adalah untuk membuat perangkat dengan Raspberry Pi yang terhubung ke internet, sambil mengumpulkan data dari sensor. Data ini harus disimpan dalam database (MySQL). Data harus divisualisasikan dengan situs web, dikodekan dengan Python dengan paket webapp Flask dan templating Jinja2.

Ide saya adalah membuat vakum robot yang 'diretas', menggunakan Raspberry Pi, Arduino, vakum robot yang sudah rusak, dan banyak sensor.

Langkah 1: Mengumpulkan Bagian

Mengumpulkan Bagian
Mengumpulkan Bagian
Mengumpulkan Bagian
Mengumpulkan Bagian
Mengumpulkan Bagian
Mengumpulkan Bagian
Mengumpulkan Bagian
Mengumpulkan Bagian

Sebelum benar-benar membuat sesuatu, saya melakukan banyak riset tentang bagian apa yang akan digunakan, bagaimana menghubungkannya, menulis kelas perangkat lunak dengan Python dan sebagainya.

Daftar suku cadang akan dimasukkan sebagai file, sehingga Anda dapat dengan mudah mencari suku cadang yang Anda perlukan.

Saya memutuskan untuk menggunakan Arduino Uno di sebelah Raspberry Pi, sehingga saya dapat membaca sensor saya secara efisien tanpa membebani Raspberry Pi saya. Saya juga memilih Uno karena memiliki kecepatan clock yang bagus, dan karena pin analog. Saya bisa saja menggunakan ADC (mis. MCP3008) untuk Raspberry Pi saya, tetapi saya akan membutuhkan lebih banyak kabel, itu akan lebih mahal dan Pi saya harus bekerja lebih keras.

Saya kemudian mulai memeriksa bagian-bagian yang dapat digunakan dari vakum robot yang rusak. Elektronik internal di mana rusak, tapi itu tidak masalah, karena saya akan menggantinya sepenuhnya. Untungnya motor dc masih berfungsi, jadi tidak ada yang harus diganti.

Daftar bagian:

  • Raspberry Pi 3 dengan setidaknya 8GB MicroSD kelas 10 dan kasing;
  • Raspberry Pi T-cobbler dan papan tempat memotong roti;
  • Arduino Uno atau serupa (lebih disukai versi non-Cina dengan ADC yang layak, beberapa Cina memiliki masalah AREF) dengan semacam kasing;
  • Kabel ethernet;
  • Sebuah vakum robot (rusak);
  • 3x modul ultrasonik HC-SR04;
  • 1x modul sensor aula;
  • Beberapa resistor dalam nilai yang berbeda;
  • LDR;
  • Baterai Li-ion 6x 18650 + dudukan 3-sel untuk 12v (sebaiknya Anda menggunakan baterai baru atau bahkan lebih baik menggunakan baterai LiPo, ini akan bertahan lebih lama);
  • 18650 (atau jenis baterai apa pun yang akan Anda gunakan) 12v 3-sel pengisian pcb;
  • Beberapa papan PCB DIY untuk menyolder komponen Anda;
  • Selembar plastik poliuretan;
  • Sebuah laptop / komputer desktop.

Daftar alat:

  • Bor dengan beberapa mata bor;
  • Penggiling sudut (jangan gunakan jika Anda tidak memiliki pengalaman) atau sesuatu seperti Dremel;
  • Sepotong kertas pengamplasan;
  • Beberapa obeng;
  • Lem super, lem pemasangan, …;
  • Besi solder (gunakan minyak untuk menyolder kabel Anda lebih mudah);
  • Sepasang pemotong kawat dan alat pengupasan.

Daftar perangkat lunak (opsional):

  • Adobe XD: wireframing dan membuat prototipe;
  • Fritzing: membuat skema listrik;
  • PyCharm Professional: Python IDE dengan kemampuan menggunakan penerapan & penerjemah jarak jauh;
  • Putty: koneksi ssh cepat dan mudah dengan Pi;
  • Etcher.io: alat mudah untuk mem-flash gambar Raspbian ke kartu SD;
  • Win32DiskImager: alat mudah untuk membuat gambar dari pengaturan Raspbian yang ada;
  • Programmer Notepad: alat sederhana yang dapat Anda gunakan untuk mengedit file /boot/cmdline.txt dengan aman.

Langkah 2: Melukis semprot & Merancang Antarmuka

Melukis semprot & Merancang Antarmuka
Melukis semprot & Merancang Antarmuka
Melukis semprot & Merancang Antarmuka
Melukis semprot & Merancang Antarmuka
Melukis semprot & Merancang Antarmuka
Melukis semprot & Merancang Antarmuka
Melukis semprot & Merancang Antarmuka
Melukis semprot & Merancang Antarmuka

Sebelum saya mulai membuat desain, saya mengecat bagian luarnya, karena saya tidak suka warnanya sama sekali. Saya pergi ke toko dan mengambil primer plastik, sekaleng putih dan sekaleng pirus untuk menyemprot ulang casing atas.

Setelah membiarkan cat semprot mengering, saya mencari kode warna hex yang tepat untuk cat yang saya gunakan, sehingga saya dapat mencocokkan antarmuka web dengan perangkat saya dengan sempurna. Menemukan kode hex ini cukup mudah, karena saya menggunakan grafiti Montana 94, dan kode hex & RGB ada di situs web mereka.

Saya membuat gambar rangka dengan ketelitian tinggi untuk setiap halaman situs web saya, sehingga saya tahu betul bagaimana saya akan membuat antarmuka ini. Setelah menunjukkan antarmuka saya kepada guru saya, saya mendapat saran untuk membuat latar belakang sedikit lebih abu-abu dan tombol putih, dan hasilnya bagus menurut saya.

Langkah 3: Membuat Basis Data

Membuat Basis Data
Membuat Basis Data

Langkah logis selanjutnya adalah mulai memikirkan data apa yang ingin saya simpan di database MySQL. Tidak banyak orang ingin tahu tentang vakum mereka, jadi saya pergi dengan tabel untuk pengguna dan data login mereka, serta tabel untuk sensor (baterai, jarak & wadah debu).

Gambar menunjukkan tata letak tabel saya, digambar di MySQL Workbench, dengan semua hubungan antar tabel.

Untuk pengguna saya, saya ingin melacak nama dan nama keluarga mereka untuk mempersonalisasi antarmuka & email. Tentu saja untuk mengirim email, saya juga membutuhkan alamat email mereka. Saya juga menambahkan tabel untuk melacak preferensi email pengguna saya (apakah mereka ingin menerima email atau tidak). Hal terakhir yang ingin saya simpan tentang pengguna, adalah peran mereka untuk perangkat. Saya membagi pengguna sebagai administrator & pengguna biasa. Administrator memiliki hak untuk menambah, menghapus & mengelola pengguna dalam sistem, sementara pengguna biasa tidak dapat mengakses alat ini.

Tabel berikutnya berisi "deviceruns", yang merupakan proses aktual yang telah dilakukan perangkat. Perangkat berjalan dimiliki oleh pengguna tertentu (orang yang memulai proses), dan memiliki waktu mulai dan waktu akhir, untuk menghitung waktu proses.

Tabel lain digunakan untuk menghubungkan data sensor ke setiap perangkat yang dijalankan. Sensor itu sendiri disimpan di tabel lain, yang berisi id, nama & deskripsinya.

Langkah 4: Menghubungkan Bagian Bersama

Menghubungkan Bagian Bersama
Menghubungkan Bagian Bersama
Menghubungkan Bagian Bersama
Menghubungkan Bagian Bersama

Setelah membuat skema database, saya mulai menggunakan papan tempat memotong roti & kabel untuk menghubungkan semua bagian bersama-sama dalam satu prototipe kerja.

Langkah 5: Menyiapkan Raspberry Pi

Menyiapkan Pi Raspberry
Menyiapkan Pi Raspberry

Untuk mengunduh gambar Raspbian terbaru, buka situs web Raspbian. Di sini Anda dapat memilih distro mana yang ingin Anda unduh. Untuk pengoperasian yang lebih cepat, Anda dapat mengunduh distro tanpa kepala, untuk penggunaan RAM yang lebih sedikit, atau mengunduh desktop dengan GUI jika Anda lebih menyukai antarmuka pengguna grafis.

Untuk menginstal OS, cukup unduh Etcher, ini adalah alat GUI untuk menulis gambar ke kartu micro SD Anda dengan cepat dan mudah.

Untuk mengaktifkan mode tanpa kepala, sehingga Anda dapat mengakses pi, Anda perlu menginstal Putty di komputer Anda. Langkah selanjutnya adalah masuk ke folder Boot yang dibuat oleh Etcher, dan buka file cmdline.txt dengan editor teks favorit Anda, ex Programmer Notepad. Tambahkan teks ini ke akhir file:

ip=169.254.10.1

Pastikan Anda tidak membuat baris baru, tambahkan ini ke akhir baris!

Selanjutnya, kembali ke root folder Boot, dan buat file bernama ssh. Jangan menambahkan ekstensi apa pun, ini akan memastikan bahwa server SSH diluncurkan setiap kali Pi Anda diluncurkan. Sekarang cukup letakkan kartu SD di Pi Anda, sambungkan sumber daya yang cukup ke Pi Anda dan tambahkan kabel ethernet antara Pi dan komputer Anda.

Buka dempul, dan ketik alamat IP: 169.254.10.1. Sekarang klik YA dan masuk, nama pengguna default adalah pi dan kata sandinya adalah raspberry.

Selanjutnya, jalankan perintah berikut untuk mendapatkan yang terbaru:

sudo apt-get update -y && sudo apt-get upgrade -y && sudo apt-get dist-upgrade -y

Langkah terakhir adalah membuat juru bahasa Python virtual di Raspberry Pi Anda, ini akan mengeksekusi kode Anda. Untuk melakukan ini, cukup buka dempul dan ketik berikut ini:

sudo mkdir project1

cd project1 python3 -m pip install --upgrade pip setuptools wheel virtualenv python3 -m venv --system-site-packages venv

Langkah 6: Menulis aplikasi Web

Menulis aplikasi Web
Menulis aplikasi Web

Setelah menghubungkan setiap bagian dan menyiapkan Raspberry Pi, saya mulai menulis aplikasi web utama saya menggunakan Flask dan Jinja2. Flask adalah kerangka kerja backend yang mudah digunakan untuk Python, dan Jinja2 adalah bahasa templating yang saya gunakan. Dengan Jinja, Anda dapat membuat file HTML normal dengan for loop, if structure, dan sebagainya.

Saat coding backend, saya juga menulis front end untuk aplikasi, termasuk HTML, CSS dan JavaScript untuk beberapa elemen. Saya menggunakan metode ITCSS dan notasi BEM untuk stylesheet saya.

Selain aplikasi web utama, saya juga membuat 2 program utama lainnya. Satu ditulis untuk mengirim alamat IP perangkat ke pengguna dalam daftar. Setiap pengguna terdaftar yang telah menerima email, akan menerima email dengan tautan untuk memulai antarmuka web. Program ini berjalan sebagai layanan systemd.

File utama lainnya adalah untuk perangkat yang sebenarnya. Utama ini dapat dipanggil melalui aplikasi Flask saya, untuk memulai & menghentikan perangkat, dan mengumpulkan data. Data yang dikumpulkan juga diunggah ke database perangkat melalui main ini. Data ini kemudian dapat divisualisasikan di aplikasi web.

Aplikasi web terhubung ke perangkat yang dijalankan utama dengan Python Threading. Saat pengguna mengklik tombol mulai, utas dibuat untuk menjalankan perangkat di latar belakang. Sementara itu, pengguna dapat menelusuri aplikasi dengan sempurna. Saat mengklik berhenti, utas ini dihentikan dan perangkat berhenti.

Langkah 7: Membuat Potongan untuk Menyelesaikan Casing

Membuat Potongan untuk Menyelesaikan Casing
Membuat Potongan untuk Menyelesaikan Casing
Membuat Potongan untuk Menyelesaikan Casing
Membuat Potongan untuk Menyelesaikan Casing
Membuat Potongan untuk Menyelesaikan Casing
Membuat Potongan untuk Menyelesaikan Casing
Membuat Potongan untuk Menyelesaikan Casing
Membuat Potongan untuk Menyelesaikan Casing

Setelah menulis bagian terbesar dari aplikasi, saya mulai memodifikasi casing perangkat, sehingga sensor saya & bagian lain benar-benar cocok. Untuk melakukan ini, saya membeli selembar poliuretan di toko DIY lokal, dan mulai memotong 2 tanda kurung. Saya menggunakan lembaran poliuretan ini karena tidak mungkin pecah berkeping-keping saat memotong, dan karena cukup fleksibel, yang sempurna karena robot saya memiliki bentuk melingkar.

Braket pertama dibuat untuk mengisi lubang di bagian atas, tempat dudukan layar. Saya mengganti layar dengan sakelar on/off agar baterai benar-benar dapat dimatikan.

Braket lainnya adalah dukungan untuk sensor ultrasonik HC-SR04 saya yang diposisikan di bagian depan perangkat.

Hal terakhir yang harus dilakukan, adalah membuat lubang pada tulangan salah satu roda, dan memasukkan magnet, sehingga saya dapat memantau putaran roda.

Setelah menyelesaikan braket ini, saya juga mengecatnya dengan cat yang tersisa, agar sesuai dengan desain.

Langkah 8: Kode

Untuk menginstal program, unduh file code.zip dan unzip di direktori project1.

Selanjutnya, lakukan perintah ini di terminal pada Raspbian atau Putty:

sudo cp project1/conf/project-1* /etc/systemd/system/

sudo cp project1/conf/project1-* /etc/systemd/system/Sudo systemctl daemon-reload Sudo systemctl aktifkan project-1* Sudo systemctl aktifkan project1* Sudo systemctl restart nginx

Selanjutnya, buka database yang telah Anda buat dan buat pengguna baru dengan kata sandi hash Argon2. Sekarang Anda dapat menggunakan program.

Menikmati!

Direkomendasikan: