Isi kandungan:

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, November
Anonim
CleanBot oleh Guillaume Meurillon
CleanBot oleh Guillaume Meurillon
CleanBot oleh Guillaume Meurillon
CleanBot oleh Guillaume Meurillon

Ini adalah panduan untuk projek yang saya buat untuk sekolah. Tujuannya adalah untuk membuat peranti dengan Raspberry Pi yang disambungkan ke internet, sambil mengumpulkan data dari sensor. Data ini harus disimpan dalam pangkalan data (MySQL). Data harus visualisasi dengan situs web, dikodekan di Python dengan paket webapp Flask dan templat Jinja2.

Idea saya adalah untuk membuat vakum robot 'diretas', menggunakan Raspberry Pi, Arduino, vakum robot yang sudah rosak dan sekumpulan sensor.

Langkah 1: Mengumpulkan Bahagian

Mengumpulkan Bahagian
Mengumpulkan Bahagian
Mengumpulkan Bahagian
Mengumpulkan Bahagian
Mengumpulkan Bahagian
Mengumpulkan Bahagian
Mengumpulkan Bahagian
Mengumpulkan Bahagian

Sebelum benar-benar membuat apa-apa, saya melakukan banyak penyelidikan mengenai bahagian mana yang hendak digunakan, cara menghubungkannya, menulis kelas perisian di Python dan sebagainya.

Senarai bahagian akan dimasukkan sebagai fail, supaya anda dapat mencari bahagian yang anda perlukan dengan mudah.

Saya memutuskan untuk menggunakan Arduino Uno di sebelah Raspberry Pi, supaya saya dapat membaca sensor saya dengan cekap tanpa menekankan Raspberry Pi saya. Saya juga memilih Uno kerana mempunyai kelajuan jam yang bagus, dan kerana pin analog. Saya mungkin menggunakan ADC (mis. MCP3008) untuk Raspberry Pi saya, tetapi saya memerlukan lebih banyak wayar, ini akan lebih mahal dan Pi saya harus bekerja lebih keras.

Saya kemudian mula memeriksa bahagian yang dapat digunakan dari vakum robot yang rosak. Elektronik dalaman di mana rosak, tetapi itu tidak menjadi masalah, kerana saya akan menggantinya sepenuhnya. Nasib baik motor dc masih berfungsi, jadi tidak ada yang perlu diganti.

Senarai bahagian:

  • Raspberry Pi 3 dengan sekurang-kurangnya 8GB MicroSD kelas 10 dan casing;
  • Raspberry Pi T-tukang sepatu dan papan roti;
  • Arduino Uno atau yang serupa (lebih disukai versi bukan cina dengan ADC yang layak, beberapa orang cina mempunyai masalah AREF) dengan semacam kes;
  • Kabel ethernet;
  • Vakum robot (rosak);
  • Modul ultrasonik 3x HC-SR04;
  • Modul sensor dewan 1x;
  • Beberapa perintang dalam nilai yang berbeza;
  • LDR;
  • 6x 18650 bateri Li-ion + pemegang 3 sel untuk 12v (lebih baik anda harus menggunakan bateri baru atau lebih baik menggunakan bateri LiPo, ini akan bertahan lebih lama);
  • 18650 (atau apa sahaja jenis bateri yang akan anda gunakan) 12v pcb pengecasan 3 sel;
  • Beberapa papan DIY PCB untuk menyolder komponen anda;
  • Selembar plastik poliuretana;
  • Komputer riba / komputer riba.

Senarai alat:

  • Gerudi dengan beberapa bit gerudi;
  • Pengisar sudut (jangan gunakannya jika anda tidak mempunyai pengalaman) atau sesuatu seperti Dremel;
  • Sekeping kertas pengamplasan;
  • Beberapa pemutar skru;
  • Superglue, gam pemasangan,…;
  • Setrika pematerian (gunakan gris untuk menyolder wayar anda dengan lebih mudah);
  • Sepasang pemotong dawai dan alat pelucut.

Senarai perisian (pilihan):

  • Adobe XD: wireframing dan membuat prototaip;
  • Fritzing: mewujudkan skim elektrik;
  • PyCharm Professional: Python IDE dengan keupayaan menggunakan penyebaran & jurubahasa jarak jauh;
  • Putty: sambungan ssh yang cepat dan mudah dengan Pi;
  • Etcher.io: alat mudah untuk memancarkan gambar Raspbian ke kad SD;
  • Win32DiskImager: alat mudah untuk membuat gambar dari persediaan Raspbian yang ada;
  • Programmer Notepad: alat mudah yang boleh anda gunakan untuk mengedit fail /boot/cmdline.txt dengan selamat.

Langkah 2: Lukisan semburan & Merangka Antaramuka

Spray-painting & Merancang Antaramuka
Spray-painting & Merancang Antaramuka
Spray-painting & Merancang Antaramuka
Spray-painting & Merancang Antaramuka
Spray-painting & Merancang Antaramuka
Spray-painting & Merancang Antaramuka
Spray-painting & Merancang Antaramuka
Spray-painting & Merancang Antaramuka

Sebelum saya mula membuat reka bentuk, saya mengecat bahagian luar, kerana saya sama sekali tidak menyukai warnanya. Saya pergi ke kedai dan mengambil primer plastik, satu tin berwarna putih dan satu tin turquoise untuk menyemburkan semula casing atas.

Setelah membiarkan cat semburan kering, saya mencari kod warna hex yang tepat untuk cat yang saya gunakan, supaya saya dapat memadankan antara muka web saya dengan peranti saya dengan sempurna. Mencari kod hex ini cukup mudah, kerana saya menggunakan grafiti Montana 94, dan kod hex & RGB ada di laman web mereka.

Saya membuat rangka kerja kesetiaan tinggi untuk setiap halaman laman web saya, sehingga saya tahu betul bagaimana saya akan membuat antara muka ini. Setelah menunjukkan antara muka saya kepada guru saya, saya mendapat nasihat untuk menjadikan latar belakang sedikit lebih kelabu dan butang berwarna putih, dan hasilnya bagus menurut saya.

Langkah 3: Membuat Pangkalan Data

Membuat Pangkalan Data
Membuat Pangkalan Data

Langkah logik seterusnya adalah mula memikirkan data apa yang ingin saya simpan dalam pangkalan data MySQL. Tidak banyak orang yang tahu tentang kekosongan mereka, jadi saya pergi dengan jadual untuk pengguna dan data log masuk mereka, serta jadual untuk sensor (bateri, jarak & bekas debu).

Gambar menunjukkan susun atur jadual saya, yang dilukis di MySQL Workbench, dengan semua hubungan antara jadual.

Bagi pengguna saya, saya ingin menjejaki nama dan nama keluarga mereka untuk memperibadikan antara muka & e-mel. Sudah tentu untuk menghantar e-mel, saya juga memerlukan alamat e-mel mereka. Saya juga menambahkan jadual untuk mengawasi pilihan e-mel pengguna saya (sama ada mereka mahu menerima e-mel atau tidak). Perkara terakhir yang ingin saya simpan mengenai pengguna, adalah peranan mereka untuk peranti ini. Saya membahagikan pengguna sebagai pentadbir & pengguna biasa. Pentadbir berhak menambah, membuang & mengurus pengguna dalam sistem, sementara pengguna biasa tidak dapat mengakses alat ini.

Jadual seterusnya mengandungi "deviceruns", yang merupakan jalan sebenarnya yang dilakukan oleh peranti. Deviceruns dimiliki oleh pengguna tertentu (orang yang memulakan larian), dan mempunyai waktu mula dan waktu akhir, untuk mengira waktu jalan.

Jadual lain digunakan untuk menghubungkan sensordata ke setiap devicerun. Sensor itu sendiri disimpan dalam jadual lain, yang mengandungi id, nama & keterangannya.

Langkah 4: Menyambungkan Bahagian Bersama

Menyambungkan Bahagian Bersama
Menyambungkan Bahagian Bersama
Menyambungkan Bahagian Bersama
Menyambungkan Bahagian Bersama

Setelah membuat skema pangkalan data, saya mula menggunakan papan roti & pendawaian untuk menghubungkan semua bahagian dalam satu prototaip yang berfungsi.

Langkah 5: Menyiapkan Raspberry Pi

Menyiapkan Raspberry Pi
Menyiapkan Raspberry Pi

Untuk memuat turun gambar Raspbian terkini, pergi ke laman web Raspbian. Di sini anda boleh memilih distro mana yang ingin anda muat turun. Untuk operasi yang lebih pantas, anda boleh memuat turun distro tanpa kepala, untuk penggunaan RAM yang lebih sedikit, atau memuat turun desktop dengan GUI jika anda lebih suka antara muka pengguna grafik.

Untuk memasang OS, cukup muat turun Etcher, ini adalah alat GUI untuk menulis gambar ke kad SD mikro anda dengan cepat dan mudah.

Untuk mengaktifkan mod tanpa kepala, sehingga anda dapat mengakses pi, anda perlu memasang Putty di komputer anda. Langkah seterusnya adalah pergi ke folder Boot yang dibuat oleh Etcher, dan membuka file cmdline.txt dengan editor teks kegemaran anda, bekas Programmer Notepad. Tambahkan teks ini ke hujung fail:

ip = 169.254.10.1

Pastikan anda tidak membuat baris baru, tambahkan ini ke hujung baris!

Seterusnya, kembali ke root folder Boot, dan buat fail bernama ssh. Jangan menambah pelanjutan, ini akan memastikan bahawa pelayan SSH dilancarkan setiap kali Pi anda dilancarkan. Sekarang masukkan kad SD ke dalam Pi anda, sambungkan sumber kuasa yang mencukupi ke Pi anda dan tambahkan kabel ethernet antara Pi dan komputer anda.

Buka dempul, dan taipkan alamat IP: 169.254.10.1. Sekarang klik YA dan log masuk, nama pengguna lalai adalah pi dan kata laluan adalah raspberry.

Seterusnya, jalankan arahan berikut untuk mendapatkan maklumat terkini:

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

Langkah terakhir adalah membuat jurubahasa Python maya pada Raspberry Pi anda, ini akan melaksanakan kod anda. Untuk melakukan ini, cukup buka dempul dan taipkan perkara berikut:

projek sudo mkdir1

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

Langkah 6: Menulis aplikasi Web

Menulis aplikasi Web
Menulis aplikasi Web

Setelah menyambung setiap bahagian dan menyiapkan Raspberry Pi, saya mula menulis aplikasi web utama saya menggunakan Flask dan Jinja2. Flask adalah kerangka backend yang mudah digunakan untuk Python, dan Jinja2 adalah bahasa templat yang saya gunakan. Dengan Jinja, anda boleh membuat fail HTML biasa dengan gelung, jika struktur dan sebagainya.

Semasa mengekod backend, saya juga menulis front end untuk aplikasi, termasuk HTML, CSS dan JavaScript untuk beberapa elemen. Saya menggunakan kaedah ITCSS dan notasi BEM untuk helaian gaya saya.

Selain aplikasi web utama, saya juga membuat 2 program utama yang lain. Satu ditulis untuk menghantar alamat IP peranti kepada pengguna dalam senarai. Setiap pengguna berdaftar yang telah menerima untuk menerima e-mel, akan menerima surat dengan pautan untuk memulakan antara muka web. Program ini dijalankan sebagai perkhidmatan systemd.

Fail utama yang lain adalah untuk peranti sebenar. Utama ini boleh dipanggil melalui aplikasi Flask saya, untuk memulakan & menghentikan peranti, dan mengumpulkan data. Data yang dikumpulkan juga dimuat naik ke pangkalan data peranti melalui utama ini. Data ini kemudian dapat dilihat dalam aplikasi web.

Aplikasi web disambungkan ke peranti utama yang dijalankan dengan Python Threading. Apabila pengguna mengklik butang mula, utas dihasilkan untuk menjalankan peranti di latar belakang. Sementara itu, pengguna dapat melayari aplikasi dengan sempurna. Apabila mengklik berhenti, utas ini dihentikan dan peranti berhenti.

Langkah 7: Membuat Potongan untuk Selesaikan Selongsong

Membuat Potongan untuk Selesaikan Selongsong
Membuat Potongan untuk Selesaikan Selongsong
Membuat Potongan untuk Selesaikan Selongsong
Membuat Potongan untuk Selesaikan Selongsong
Membuat Potongan untuk Selesaikan Selongsong
Membuat Potongan untuk Selesaikan Selongsong
Membuat Potongan untuk Selesaikan Selongsong
Membuat Potongan untuk Selesaikan Selongsong

Setelah menulis bahagian aplikasi yang paling besar, saya mula mengubah casing peranti, supaya sensor & bahagian saya yang lain benar-benar sesuai. Untuk melakukan ini, saya membeli sehelai poliuretana di sebuah kedai DIY tempatan, dan mula memotong 2 pendakap. Saya menggunakan kepingan poliuretana ini kerana tidak mungkin pecah semasa memotong, dan kerana ia agak fleksibel, yang sempurna kerana robot saya mempunyai bentuk bulat.

Braket pertama dibuat untuk mengisi lubang di bahagian atas, di mana paparan digunakan untuk duduk. Saya mengganti paparan dengan suis hidup / mati sehingga bateri dapat benar-benar dimatikan.

Braket lain adalah sokongan untuk sensor ultrasonik HC-SR04 saya yang diletakkan di bahagian depan peranti.

Perkara terakhir yang harus dilakukan adalah dengan memotong lubang pada tetulang salah satu roda, dan memasukkan magnet, supaya saya dapat memantau putaran roda.

Setelah menamatkan pendakap ini, saya juga mengecat cat dengan cat yang saya tinggalkan, agar sesuai dengan reka bentuk.

Langkah 8: Kod

Untuk memasang program, muat turun file code.zip dan unzip di direktori project1.

Seterusnya, jalankan perintah ini di terminal di 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 enabled project-1 * sudo systemctl aktifkan project1 * sudo systemctl restart nginx

Seterusnya, buka pangkalan data yang telah anda hasilkan dan buat pengguna baru dengan kata laluan hash Argon2. Sekarang anda boleh menggunakan program ini.

Selamat mencuba!

Disyorkan: