Isi kandungan:

Keysorter: 6 Langkah
Keysorter: 6 Langkah

Video: Keysorter: 6 Langkah

Video: Keysorter: 6 Langkah
Video: Использование компонента Ant Design Table в приложении ReactJS | Учебное пособие по компоненту таблицы AntD 2024, Julai
Anonim
Penyusun kunci
Penyusun kunci
Penyusun kunci
Penyusun kunci

Saya sedang belajar NMCT di Howest. Untuk semester akhir kami terpaksa membuat projek. Oleh itu, saya membuat Keysorter.

Apa yang dilakukannya?

Kami mempunyai banyak kunci kereta di rumah dan semuanya sama. Oleh itu, saya membuat Keysorter untuk menyelesaikan masalah ini.

Ia harus mengimbas kunci melalui RFID dan memberikannya tempat di dalam kotak. Sekiranya saya mengimbas kunci yang sama sekali lagi, ia akan menunjukkan tempatnya yang telah ditetapkan sebelumnya. Terdapat juga butang untuk menunjukkan kereta yang dicuci terakhir.

Ini akan dijalankan pada Raspberry Pi yang juga mempunyai pilihan untuk menambah halaman web melalui Flask.

Di halaman saya seharusnya dapat melihat semua kunci, menambah nama pada kunci dan mengeluarkan kunci.

Langkah 1: Langkah 1: Apa yang Saya Perlu?

Langkah 1: Apa yang Saya Perlu?
Langkah 1: Apa yang Saya Perlu?
Langkah 1: Apa yang Saya Perlu?
Langkah 1: Apa yang Saya Perlu?

Saya mulakan dengan membuat senarai komponen yang saya perlukan untuk menjadikan perkara ini berfungsi.

Komponen:

  • Pai raspberi
  • 2 x daftar Shift (74hc595)
  • Butang 3 x
  • 9 x dipimpin hijau
  • Pengimbas RFID (MFRC522)
  • 12 x perintang 220 ohm

Kemudian saya memasukkan semua ini ke dalam skema saya.

Setelah saya selesai, saya berjaya dalam kehidupan sebenar.

Langkah 2: Langkah 2: Membuat Skema Pangkalan Data

Langkah 2: Membuat Skema Pangkalan Data
Langkah 2: Membuat Skema Pangkalan Data

Untuk menyimpan data saya, saya terpaksa membuat pangkalan data yang boleh dijalankan pada Pi saya.

Saya berjaya di Mysql.

Kereta meja:

  • ID kereta
  • ID Pengguna
  • Jenama (jenama kereta)
  • Jenis
  • Terakhir dicuci
  • Kunci
  • RFID_ID

Langkah 3: Langkah 3: Pengekodan

Langkah 3: Pengekodan
Langkah 3: Pengekodan

Apabila semua ini sudah siap, saya dapat memulakan pengekodan.

Saya mulakan dengan membuat kod untuk sensor saya di Python 3.5.

Untuk memuat turun kod klik di sini.

Gunakan pautan untuk mengklon projek.

Langkah 4: Langkah 4: Menempatkan Al Code pada My Raspberry Pi

Memasang pakej

Mula-mula saya memasang pakej yang saya perlukan untuk menjayakannya.

saya @ my-rpi: ~ $ sudo apt kemas kini

saya @ my-rpi: ~ $ sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3

Persekitaran maya

me @ my-rpi: ~ $ python3 -m pip install - upgrade pip setuptools wheel virtualenvme @ my-rpi: ~ $ mkdir project1 && cd project1 me @ my-rpi: ~ / project1 $ python3 -m venv --system- pakej laman web env me @ my-rpi: ~ / project1 $ source env / bin / activate (env) me @ my-rpi: ~ / project1 $ python -m pip install mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-connector-python passlib

Muat naik projek ke Pi anda menggunakan pycharm

Buka Pycharm dan pergi ke VCS> Import dari Versi Kawalan> Github dan klon fail github saya.

Masukkan konfigurasi penyebaran ke direktori yang baru anda buat. (/ rumah / saya / projek1). Tekan terpakai!

Pergi ke tetapan jurubahasa dan pilih persekitaran maya yang baru anda buat. (/ rumah / saya / projek1 / env / bin / pyhon)

Periksa sama ada pemetaan laluan betul.

Sekarang anda boleh memuat naik kod ke direktori anda menggunakan Pycharm.

Pangkalan data

Periksa sama ada pangkalan data berjalan. Anda harus mendapatkan sesuatu seperti ini:

me @ my-rpi: ~ $ sudo systemctl status mysql ● mariadb.service - Pelayan pangkalan data MariaDB Dimuat: dimuat (/lib/systemd/system/mariadb.service; diaktifkan; pratetap vendor: diaktifkan) Aktif: aktif (berjalan) sejak Sun 2018-06-03 09:41:18 CEST; 1 hari 4 jam yang lalu PID Utama: 781 (mysqld) Status: "Mengambil permintaan SQL anda sekarang …" Tugas: 28 (had: 4915) Kumpulan Kumpulan: /system.slice/mariadb.service └─781 / usr / sbin / mysqld

Jun 03 09:41:13 my-rpi systemd [1]: Memulakan pelayan pangkalan data MariaDB… Jun 03 09:41:15 my-rpi mysqld [781]: 2018-06-03 9:41:15 4144859136 [Catatan] / usr / sbin / mysqld (mysqld 10.1.26-MariaDB-0 + deb9u1) Jun 03 09:41:18 my-rpi systemd [1]: Memulakan pelayan pangkalan data MariaDB.

saya @ my-rpi: ~ $ ss -lt | grep mysql DAFTAR 0 80 127.0.0.1:mysql *: *

Buat pengguna dan tambah pangkalan data

saya @ my-rpi: ~ $ sudo mariadb

setelah anda berada di pangkalan data, lakukan ini.

BUAT PENGGUNA 'project1-admin' @ 'localhost' DIDENTITIKAN OLEH 'adminpassword'; BUAT PENGGUNA 'project1-web' @ 'localhost' DIKENALI oleh 'webpassword'; BUAT PENGGUNA 'project1-sensor' @ 'localhost' DIKENALI OLEH 'sensorpassword';

BUAT projek DATABASE1;

MEMBERIKAN SEMUA KEISTIMEWAAN PADA projek1. * Kepada 'project1-admin' @ 'localhost' DENGAN PILIHAN GRANT; GRANT SELECT, INSERT, UPDATE, DELETE ON project1. * TO 'project1-web' @ 'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1. * TO 'project1-sensor' @ 'localhost'; KEISTIMEWAAN FLUSH;

BUAT JADUAL `user` (` idUser` int (11) NOT NULL, `Password` varchar (45) DEFAULT NULL, PRIMARY KEY (` idUser`)) ENGINE = InnoDB DEFAULT CHARSET = utf8

CREATE TABLE `car` (` idCar` int (11) NOT NULL AUTO_INCREMENT, `idUser` int (11) NOT NULL,` Brand` varchar (45) DEFAULT NULL, `Type` varchar (45) DEFAULT NULL,` LastWashed` datetime DEFAULT NULL, `RFID_Number` varchar (15) DEFAULT NULL,` Key` varchar (5) DEFAULT NULL, PRIMARY KEY (`idCar`,` idUser`), KEY `fk_Car_User1_idx` (` idUser`), CONSTRAIN KUNCI ASING (`idUser`) RUJUKAN` user` (`idUser`) PADA HAPUS TIADA TINDAKAN PADA KEMASKINI TIADA TINDAKAN) ENGINE = InnoDB AUTO_INCREMENT = 4 DEFAULT CHARSET = utf8

Sambungkan pangkalan data anda ke Pycharm

Klik pada tab pangkalan data di sebelah kanan. Sekiranya tab tidak terbuka, lakukan ini: Lihat> Alat Windows> Pangkalan Data.

Klik tambah sambungan. Pilih Sumber Data> MySQL (Sekiranya terdapat pemacu muat turun butang tekan.)

Pergi ke SSH / SSL dan periksa SSH. Isi kelayakan Raspberry pi anda (hos / pengguna / kata laluan). Port mestilah 22 dan jangan lupa untuk memeriksa kata laluan ingat.

Kembali kepada Jeneral. Host mestilah localhost dan pangkalan data mestilah projek1. Isi kelayakan dari project1-admin dan uji sambungannya.

Sekiranya sambungannya OK maka pergi ke tab Skemas dan pastikan projek1 diperiksa.

Periksa sama ada pangkalan data betul

me @ my-rpi: ~ $ echo 'menunjukkan jadual;' | mysql project1 -t -u project1-admin -pMasukkan kata laluan: + --------------------------- + | Jadual_dalam_projek1 | + --------------------------- + | sensor | | pengguna | + --------------------------- +

Fail Konfigurasi

Di conf direktori anda akan menemui 4 fail. Anda harus menukar nama pengguna menjadi nama pengguna anda.

Sistemd

Untuk memulakan semua, anda harus melaksanakan perintah ini.

saya @ my-rpi: ~ / project1 $ sudo cp conf / project1 - *. service / etc / systemd / system /

me @ my-rpi: ~ / project1 $ sudo systemctl daemon-reload me @ my-rpi: ~ / project1 $ sudo systemctl start project1- * me @ my-rpi: ~ / project1 $ sudo systemctl status projek1- * ● projek1- flask.service - contoh uWSGI untuk melayani antara muka web projek1 Dimuat: dimuat (/etc/systemd/system/project1-flask.service; disable; vendor preset: enabled) Aktif: aktif (berjalan) sejak Isnin 2018-06-04 13: 14:56 CEST; 1s lalu PID Utama: 6618 (uwsgi) Tugas: 6 (had: 4915) Kumpulan Kumpulan: /system.slice/project1-flask.service ├─6618 / usr / bin / uwsgi --ini / rumah / saya / projek1 / conf / uwsgi-flask.ini ├─6620 / usr / bin / uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6621 / usr / bin / uwsgi --ini / rumah / saya / projek1 / conf / uwsgi-flask.ini ├─6622 / usr / bin / uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6623 / usr / bin / uwsgi --ini / rumah / saya / projek1 / conf / uwsgi-flask.ini └─6624 / usr / bin / uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini

Jun 04 13:14:56 my-rpi uwsgi [6618]: dipetakan 383928 bait (374 KB) untuk 5 teras 04 Jun 13:14:56 my-rpi uwsgi [6618]: *** MODUL Operasi: preforking ***

● projek1-sensor.service - Perkhidmatan sensor projek 1 Dimuat: dimuat (/etc/systemd/system/project1-sensor.service; disable; vendor preset: enabled) Aktif: aktif (berjalan) sejak Isnin 2018-06-04 13: 16:49 CEST; 5s lalu PID Utama: 6826 (python) Tugas: 1 (had: 4915) Kumpulan Kumpulan: /system.slice/project1-sensor.service └─6826 / home / me / project1 / env / bin / python / home / me / project1 /sensor/sensor.py

04 Jun 13:16:49 my-rpi systemd [1]: Memulakan perkhidmatan sensor Projek 1. Jun 04 13:16:49 my-rpi python [6826]: DEBUG: _ main _: Proses sensor tersimpan_count = b'217 / n 'ke pangkalan data 04 Jun 13:16:55 my-rpi python [6826]: DEBUG: _ main_: Proses sensor disimpan_kiraan = b'218 / n 'ke pangkalan data

nginx

saya @ my-rpi: ~ / projek1 $ ls -l / etc / nginx / laman web- *

/ etc / nginx / sites-available: total 4 -rw-r - r-- 1 root root 2416 12 Jul 2017 lalai

/ etc / nginx / sites-enabled: total 0 lrwxrwxrwx 1 root root 34 Jan 18 13:25 default -> / etc / nginx / sites-available / default

Untuk menjadikan semuanya lalai melaksanakan perintah ini.

saya @ my-rpi: ~ / projek1 $ sudo cp conf / nginx / etc / nginx / sites-available / project1me @ my-rpi: ~ / project1 $ sudo rm / etc / nginx / sites-enabled / default me @ my- rpi: ~ / project1 $ sudo ln -s / etc / nginx / sites-available / project1 / etc / nginx / sites-enabled / project1 me @ my-rpi: ~ / project1 $ sudo systemctl mulakan semula nginx.service

Bermula secara automatik

Mari pastikan semuanya bermula secara automatik.

Pergi ke direktori conf dan laksanakan perintah akhir ini dan anda sudah selesai!

saya @ my-rpi: ~ / projek1 $ sudo systemctl aktifkan projek1- *

Sekiranya anda menghidupkan semula Pi anda, ia akan bermula secara automatik.

Langkah 5: Langkah 5: Membuat Perumahan

Langkah 5: Membuat Perumahan
Langkah 5: Membuat Perumahan
Langkah 5: Membuat Perumahan
Langkah 5: Membuat Perumahan
Langkah 5: Membuat Perumahan
Langkah 5: Membuat Perumahan
Langkah 5: Membuat Perumahan
Langkah 5: Membuat Perumahan

Kitar semula

Untuk membuat kediaman saya, saya menggunakan almari lama yang akan ditinggalkan oleh ibu saya.

asas

Saya menggergaji 4 papan (34 cm x 26 cm). (jadi itu adalah kubus dari 34 x 34 x 26).

Di bahagian bawah saya menambah sekeping kayu nipis sebagai bahagian bawah.

Papan dengan led

Di tengah-tengah saya telah meletakkan 2 kepingan kayu kecil di setiap sisi pada jarak 9 cm dari atas. Ini memegang papan tempat pemimpin akan duduk.

Papan dengan led adalah papan kecil (32 cm x 32 cm).

Saya menggerudi 9 lubang untuk keluar dari led.

pembahagian

Saya membuat bahagian dengan bahan yang sama dengan bahagian bawah dan papan dengan yang dipimpin.

4 keping setiap satu dengan sayatan pada 10.3 cm (9 cm x 31 cm). Sekarang saya dapat mengumpulkannya.

Butang dan pembaca RFID

Saya membuat lubang di pangkalan untuk meletakkan pembaca dan butang RFID saya. Untuk RFID saya meletakkan sekeping papan nipis di hadapannya agar kelihatan lebih bersih.

Langkah 6: Langkah 6: Meletakkan Segala-galanya di Perumahan

Ini bergantung pada bagaimana anda mahu melakukannya. Saya secara peribadi menggunakan banyak kabel tanpa pematerian kerana saya ingin menggunakan semula Raspberry Pi saya.

Saya menempelkan plumbum di tempatnya dan mengetuk pembaca RFID dan papan roti ke kotak itu.

Dan itulah cara anda membuat Keysorter!

Disyorkan: