Daftar Isi:
- Langkah 1: Mengumpulkan Bagian
- Langkah 2: Melukis semprot & Merancang Antarmuka
- Langkah 3: Membuat Basis Data
- Langkah 4: Menghubungkan Bagian Bersama
- Langkah 5: Menyiapkan Raspberry Pi
- Langkah 6: Menulis aplikasi Web
- Langkah 7: Membuat Potongan untuk Menyelesaikan Casing
- Langkah 8: Kode
Video: CleanBot oleh Guillaume Meurillon: 8 Langkah
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:57
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
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
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
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
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
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
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
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:
Retro Arcade - (Ukuran Penuh Didukung oleh Raspberry Pi): 8 Langkah
Retro Arcade - (Ukuran Penuh Didukung oleh Raspberry Pi): Pertama saya ingin mengucapkan terima kasih telah melihat panduan build untuk sistem Retro Arcade ini. Saya mengambil kotak arcade yang lebih tua dan menempatkannya di lemari mandiri dengan monitor layar lebar 24 inci. Pengukuran pada panduan ini kasar untuk
Rumah Pintar oleh Raspberry Pi: 5 Langkah (dengan Gambar)
Smart Home oleh Raspberry Pi: Sudah ada beberapa produk di luar sana yang membuat flat Anda lebih pintar, tetapi kebanyakan dari mereka adalah solusi eksklusif. Tapi mengapa Anda membutuhkan koneksi internet untuk menyalakan lampu dengan smartphone Anda? Itulah salah satu alasan bagi saya untuk membangun Smar saya sendiri
Tampilan Gaming LED Kayu Didukung oleh Raspberry Pi Zero: 11 Langkah (dengan Gambar)
Tampilan Gaming LED Kayu Didukung oleh Raspberry Pi Zero: Proyek ini mewujudkan tampilan LED berbasis WS2812 20x10 piksel dengan ukuran 78x35 cm yang dapat dengan mudah dipasang di ruang tamu untuk bermain game retro. Versi pertama dari matriks ini dibangun pada tahun 2016 dan dibangun kembali oleh banyak orang lain. Eksperimen ini
Menghidupkan Kembali Sirkuit Radio Lama (Didukung oleh Baterai): 4 Langkah
Menghidupkan Kembali Sirkuit Radio Lama (Diberdayakan oleh Baterai): Pernah memiliki radio lama yang hanya menyala di AC dan tidak memiliki baterai di dalamnya? Hari ini, saya akan menunjukkan cara menyalakan radio lama Anda dengan baterai dan berguna jika ada Daya pemadaman, dan daya radio Anda bergantung pada baterai tanpa menghubungkan
ROOMBA Didorong oleh ARDUINO YUN Melalui Aplikasi Wifi oleh STEFANO DALL'OLIO: 4 Langkah (dengan Gambar)
ROOMBA Didorong oleh ARDUINO YUN Melalui Aplikasi Wifi oleh STEFANO DALL'OLIO: Dengan panduan ini saya membagikan kode untuk menghubungkan ARDUINO YUN ke Roomba untuk mengemudikan Roomba melalui Wifi. Kode dan aplikasi sepenuhnya dibuat dan dikembangkan oleh saya sendiri Stefano Dall' Olio.My Roomba adalah Roomba 620 tetapi Anda dapat menggunakan kode yang sama untuk Roomba lainnya