สารบัญ:
- ขั้นตอนที่ 1: ขั้นตอนที่ 1: ฉันต้องการอะไร
- ขั้นตอนที่ 2: ขั้นตอนที่ 2: การสร้างแผนผังฐานข้อมูล
- ขั้นตอนที่ 3: ขั้นตอนที่ 3: การเข้ารหัส
- ขั้นตอนที่ 4: ขั้นตอนที่ 4: ใส่ Al the Code บน Raspberry Pi ของฉัน
- ขั้นตอนที่ 5: ขั้นตอนที่ 5: การสร้างที่อยู่อาศัย
- ขั้นตอนที่ 6: ขั้นตอนที่ 6: ใส่ทุกอย่างลงในตัวเรือน
วีดีโอ: Keysorter: 6 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
ฉันกำลังศึกษา NMCT ที่ Howest สำหรับภาคเรียนสุดท้ายของเรา เราต้องทำโครงงาน ดังนั้นฉันจึงทำ Keysorter
มันทำอะไร?
เรามีกุญแจรถมากมายที่บ้านและพวกมันก็เหมือนกันหมด ดังนั้นฉันจึงสร้าง Keysorter เพื่อแก้ไขปัญหานี้
ต้องสแกนคีย์ผ่าน RFID และใส่ลงในกล่อง ถ้าฉันสแกนคีย์เดิมอีกครั้ง มันจะแสดงตำแหน่งที่ได้รับมอบหมายก่อนหน้านี้ มีปุ่มแสดงรถที่ล้างล่าสุดด้วย
สิ่งนี้จะทำงานบน Raspberry Pi ซึ่งมีตัวเลือกในการเพิ่มเว็บเพจผ่าน Flask
ในเพจ ฉันควรจะสามารถดูคีย์ทั้งหมด เพิ่มชื่อให้กับคีย์ และลบคีย์ได้
ขั้นตอนที่ 1: ขั้นตอนที่ 1: ฉันต้องการอะไร
ฉันเริ่มต้นด้วยการทำรายการส่วนประกอบที่ฉันจะต้องทำให้สิ่งนี้ใช้งานได้
ส่วนประกอบ:
- ราสเบอร์รี่ปี่
- 2 x Shift register (74hc595)
- 3 x ปุ่ม
- 9 x ไฟ LED สีเขียว
- เครื่องสแกน RFID (MFRC522)
- ตัวต้านทาน 12 x 220 โอห์ม
จากนั้นฉันก็ใส่ทั้งหมดนี้ลงในแผนผังของฉัน
เมื่อฉันทำสิ่งนี้เสร็จแล้วฉันก็สร้างมันขึ้นมาในชีวิตจริง
ขั้นตอนที่ 2: ขั้นตอนที่ 2: การสร้างแผนผังฐานข้อมูล
เพื่อบันทึกข้อมูลของฉันทั้งหมด ฉันต้องสร้างฐานข้อมูลที่สามารถทำงานบน Pi ของฉันได้
ฉันสร้างมันใน Mysql
รถตั้งโต๊ะ:
- รหัสรถ
- ID ผู้ใช้
- ยี่ห้อ (ยี่ห้อรถ)
- พิมพ์
- ล้างครั้งสุดท้าย
- กุญแจ
- RFID_ID
ขั้นตอนที่ 3: ขั้นตอนที่ 3: การเข้ารหัส
เมื่อทั้งหมดนี้พร้อม ผมก็เริ่มเขียนโค้ดได้เลย
ฉันเริ่มต้นด้วยการสร้างโค้ดสำหรับเซ็นเซอร์ของฉันใน Python 3.5
ดาวน์โหลดรหัสคลิกที่นี่
ใช้ลิงก์เพื่อโคลนโครงการ
ขั้นตอนที่ 4: ขั้นตอนที่ 4: ใส่ Al the Code บน Raspberry Pi ของฉัน
การติดตั้งแพ็คเกจ
ก่อนอื่นฉันติดตั้งแพ็คเกจทั้งหมดที่ฉันต้องการเพื่อให้ใช้งานได้
me@my-rpi:~ $ sudo apt update
me@my-rpi:~ $ sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3
สภาพแวดล้อมเสมือนจริง
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- แพ็คเกจไซต์ env me@my-rpi:~/project1 $ source env/bin/activate (env)me@my-rpi:~/project1 $ python -m pip ติดตั้ง mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask-MySQL mysql-connector-python passlib
อัปโหลดโครงการไปยัง Pi ของคุณโดยใช้ pycharm
เปิด Pycharm แล้วไปที่ VCS > นำเข้าจากการควบคุมเวอร์ชัน > Github และโคลนไฟล์ Github ของฉัน
ใส่การกำหนดค่าการปรับใช้ไปยังไดเร็กทอรีที่คุณเพิ่งสร้าง (/home/me/project1). กดสมัคร!
ไปที่การตั้งค่าล่ามและเลือกสภาพแวดล้อมเสมือนที่คุณเพิ่งสร้าง (/home/me/project1/env/bin/pyhon)
ตรวจสอบว่าการแมปเส้นทางถูกต้องหรือไม่
ตอนนี้คุณสามารถอัปโหลดรหัสไปยังไดเร็กทอรีของคุณโดยใช้ Pycharm
ฐานข้อมูล
ตรวจสอบว่าฐานข้อมูลกำลังทำงานอยู่หรือไม่ คุณควรได้รับสิ่งนี้:
me@my-rpi:~ $ sudo systemctl status mysql● mariadb.service - เซิร์ฟเวอร์ฐานข้อมูล MariaDB โหลดแล้ว: โหลดแล้ว (/lib/systemd/system/mariadb.service; เปิดใช้งาน; ตั้งค่าล่วงหน้าของผู้ขาย: เปิดใช้งาน) ใช้งานอยู่: ใช้งานอยู่ (ทำงาน) ตั้งแต่ Sun 2018-06-03 09:41:18 CEST; 1 วัน 4 ชั่วโมงที่แล้ว Main PID: 781 (mysqld) สถานะ: "รับคำขอ SQL ของคุณตอนนี้…" งาน: 28 (จำกัด: 4915) CGroup: /system.slice/mariadb.service └─781 /usr/sbin/mysqld
03 มิ.ย. 09:41:13 my-rpi systemd[1]: กำลังเริ่มเซิร์ฟเวอร์ฐานข้อมูล MariaDB… 03 มิ.ย. 09:41:15 my-rpi mysqld[781]: 2018-06-03 9:41:15 4144859136 [หมายเหตุ] / usr/sbin/mysqld (mysqld 10.1.26-MariaDB-0+deb9u1) 03 มิ.ย. 09:41:18 my-rpi systemd[1]: เริ่มต้นเซิร์ฟเวอร์ฐานข้อมูล MariaDB
me@my-rpi:~ $ ss -lt | grep mysql ฟัง 0 80 127.0.0.1:mysql *:*
สร้างผู้ใช้และเพิ่มฐานข้อมูล
ฉัน@my-rpi:~ $ sudo mariadb
เมื่อคุณอยู่ในฐานข้อมูลให้ทำสิ่งนี้
สร้างผู้ใช้ 'project1-admin'@'localhost' ระบุโดย 'adminpassword';สร้างผู้ใช้ 'project1-web'@'localhost' ระบุโดย 'webpassword'; สร้างผู้ใช้ 'project1-sensor'@'localhost' ระบุโดย 'sensorpassword';
สร้างโครงการฐานข้อมูล1;
ให้สิทธิ์ทั้งหมดในโปรเจ็กต์1.* ถึง 'project1-admin'@'localhost' พร้อมตัวเลือก GRANT; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* เป็น 'project1-web'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON project1.* เป็น 'project1-sensor'@'localhost'; สิทธิพิเศษในการล้าง;
สร้างตาราง `ผู้ใช้' (`idUser` int (11) ไม่ใช่ NULL, `รหัสผ่าน' varchar (45) ค่าเริ่มต้น NULL, คีย์หลัก (`idUser`)) ENGINE=InnoDB ค่าเริ่มต้น CHARSET=utf8
สร้างตาราง `car` (`idCar` int (11) ไม่ใช่ NULL AUTO_INCREMENT, `idUser` int (11) ไม่ใช่ NULL, `Brand' varchar (45) ค่าเริ่มต้น NULL, `ประเภท' varchar (45) ค่าเริ่มต้น NULL, `LastWashed' วันที่เวลา DEFAULT NULL, `RFID_Number` varchar (15) ค่าเริ่มต้น NULL, `Key` varchar (5) ค่าเริ่มต้น NULL, คีย์หลัก (`idCar`, `idUser`), KEY `fk_Car_User1_idx` (`idUser`), CONSTRAINT `fk_Car_User คีย์ต่างประเทศ (`idUser`) ข้อมูลอ้างอิง `ผู้ใช้' (`idUser`) ในการลบไม่มีการดำเนินการใดๆ เมื่ออัปเดตไม่มีการดำเนินการ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8
เชื่อมต่อฐานข้อมูลของคุณกับ Pycharm
คลิกที่แท็บฐานข้อมูลทางด้านขวา หากคุณไม่มีแท็บที่เปิดอยู่ ให้ทำดังนี้: View > Tool Windows > Database
คลิกเพิ่มการเชื่อมต่อ เลือกแหล่งข้อมูล > MySQL (หากมีปุ่มดาวน์โหลดไดรเวอร์ให้กด)
ไปที่ SSH/SSL และตรวจสอบ SSH กรอกข้อมูลรับรอง Raspberry pi ของคุณ (โฮสต์/ผู้ใช้/รหัสผ่าน) พอร์ตควรเป็น 22 และอย่าลืมตรวจสอบการจำรหัสผ่าน
กลับไปที่ทั่วไป โฮสต์ควรเป็น localhost และฐานข้อมูลควรเป็น project1 กรอกข้อมูลประจำตัวจาก project1-admin เพื่อทดสอบการเชื่อมต่อ
หากการเชื่อมต่อใช้ได้ ให้ไปที่แท็บ สคีมา และตรวจสอบให้แน่ใจว่าได้เลือกโปรเจ็กต์ 1 แล้ว
ตรวจสอบว่าฐานข้อมูลถูกต้องหรือไม่
me@my-rpi:~ $ echo 'แสดงตาราง;' | mysql project1 -t -u project1-admin -pEnter รหัสผ่าน: +---------------------------+ | Tables_in_project1 | +---------------------------+ | เซ็นเซอร์ | | ผู้ใช้ | +---------------------------+
ไฟล์การกำหนดค่า
ในไดเร็กทอรี conf คุณจะพบ 4 ไฟล์ คุณควรเปลี่ยนชื่อผู้ใช้เป็นชื่อผู้ใช้ของคุณ
Systemd
ในการเริ่มต้นทุกอย่าง คุณควรรันคำสั่งเหล่านี้
me@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 project1-* ● project1- flask.service - อินสแตนซ์ uWSGI เพื่อให้บริการเว็บอินเตอร์เฟสของโครงการ 1 โหลดแล้ว: โหลดแล้ว (/etc/systemd/system/project1-flask.service; ปิดใช้งาน; ค่าที่ตั้งไว้ล่วงหน้าของผู้ขาย: เปิดใช้งาน) ใช้งาน: ใช้งานอยู่ (ทำงาน) ตั้งแต่วันจันทร์ 2018-06-04 13: 14:56 CEST; 1 วินาทีที่แล้ว PID หลัก: 6618 (uwsgi) งาน: 6 (จำกัด: 4915) กลุ่ม C: /system.slice/project1-flask.service ├─6618 /usr/bin/uwsgi --ini /home/me/project1/conf/ uwsgi-flask.ini ├─6620 /usr/bin/uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6621 /usr/bin/uwsgi --ini /home/me/project1/ conf/uwsgi-flask.ini ├─6622 /usr/bin/uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini ├─6623 /usr/bin/uwsgi --ini /home/me/ โครงการ1/conf/uwsgi-flask.ini └─6624 /usr/bin/uwsgi --ini /home/me/project1/conf/uwsgi-flask.ini
04 มิ.ย. 13:14:56 น. my-rpi uwsgi[6618]: แมป 383928 ไบต์ (374 KB) สำหรับ 5 คอร์ 04 มิ.ย. 13:14:56 my-rpi uwsgi[6618]: *** โหมดการทำงาน: preforking ***
● project1-sensor.service - บริการเซ็นเซอร์ Project 1 โหลดแล้ว: โหลดแล้ว (/etc/systemd/system/project1-sensor.service; ปิดใช้งาน; ค่าที่ตั้งไว้ล่วงหน้าของผู้ขาย: เปิดใช้งาน) ใช้งาน: ใช้งานอยู่ (ทำงาน) ตั้งแต่วันจันทร์ 2018-06-04 13: 16:49 CEST; 5s ago Main PID: 6826 (python) งาน: 1 (limit: 4915) CGroup: /system.slice/project1-sensor.service └─6826 /home/me/project1/env/bin/python /home/me/project1 /sensor/sensor.py
04 มิ.ย. 13:16:49 น. my-rpi systemd[1]: เริ่มบริการเซ็นเซอร์โครงการ 1 04 มิ.ย. 13:16:49 น. my-rpi python[6826]: DEBUG:_main_:Saved sensor process_count=b'217\n' to database Jun 04 13:16:55 my-rpi python[6826]: DEBUG:_main_: เซ็นเซอร์ที่บันทึกไว้ process_count=b'218\n' ไปยังฐานข้อมูล
nginx
me@my-rpi:~/project1 $ ls -l /etc/nginx/sites-*
/etc/nginx/sites-available: total 4 -rw-r--r-- 1 root root 2416 Jul 12 2017 ค่าเริ่มต้น
/etc/nginx/sites-enabled: Total 0 lrwxrwxrwx 1 root 34 ม.ค. 18 13:25 ค่าเริ่มต้น -> /etc/nginx/sites-available/default
เพื่อให้ทุกอย่างเป็นค่าเริ่มต้นให้รันคำสั่งเหล่านี้
me@my-rpi:~/project1 $ 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 restart nginx.service
สตาร์ทอัตโนมัติ
ตรวจสอบให้แน่ใจว่าทุกอย่างเริ่มต้นโดยอัตโนมัติ
ไปที่ไดเร็กทอรี conf และรันคำสั่งสุดท้ายเหล่านี้ เท่านี้ก็เรียบร้อย!
me@my-rpi:~/project1 $ sudo systemctl enable project1-*
หากคุณรีบูต Pi ของคุณ ควรเริ่มต้นโดยอัตโนมัติ
ขั้นตอนที่ 5: ขั้นตอนที่ 5: การสร้างที่อยู่อาศัย
รีไซเคิล
เพื่อสร้างที่อยู่อาศัย ฉันใช้ตู้เสื้อผ้าเก่าที่แม่จะทิ้ง
ฐาน
ฉันเลื่อยไม้กระดาน 4 แผ่น (34 ซม. x 26 ซม.) (ดังนั้นจึงเป็นลูกบาศก์จาก 34 x 34 x 26)
ที่ด้านล่างฉันเพิ่มไม้บาง ๆ ไว้ที่ด้านล่าง
บอร์ดพร้อมไฟ LED
ตรงกลางฉันวางไม้เล็กๆ 2 ชิ้นไว้ข้างละ 9 ซม. จากด้านบน สิ่งนี้ถือเป็นกระดานที่ผู้นำจะนั่ง
กระดานที่มีไฟ LED เป็นกระดานขนาดเล็ก (32 ซม. x 32 ซม.)
ฉันเจาะ 9 รูเพื่อให้ไฟ LED ออกมา
แผนก
ฉันทำการหารด้วยวัสดุเดียวกันกับด้านล่างและกระดานที่มีไฟ LED
มี 4 ชิ้น กรีด 10.3 ซม. (9 ซม. x 31 ซม.) ตอนนี้ฉันสามารถรวมมันเข้าด้วยกัน
ปุ่มและเครื่องอ่าน RFID
ฉันเจาะรูที่ฐานเพื่อใส่เครื่องอ่าน RFID และปุ่มต่างๆ สำหรับ RFID ฉันวางแผ่นบาง ๆ ไว้ข้างหน้าเพื่อให้ดูสะอาดขึ้น
ขั้นตอนที่ 6: ขั้นตอนที่ 6: ใส่ทุกอย่างลงในตัวเรือน
ขึ้นอยู่กับว่าคุณต้องการทำอย่างไร โดยส่วนตัวฉันใช้สายเคเบิลจำนวนมากโดยไม่ต้องบัดกรีเพราะฉันต้องการที่จะนำ Raspberry Pi กลับมาใช้ใหม่ได้
ฉันติดไฟ LED เข้าที่แล้วติดเครื่องอ่าน RFID และเขียงหั่นขนมเข้ากับเคส
และนั่นคือวิธีที่คุณสร้าง Keysorter!
แนะนำ:
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: 5 ขั้นตอน
การออกแบบเกมในการสะบัดใน 5 ขั้นตอน: การตวัดเป็นวิธีง่ายๆ ในการสร้างเกม โดยเฉพาะอย่างยิ่งเกมปริศนา นิยายภาพ หรือเกมผจญภัย
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: 3 ขั้นตอน
การตรวจจับใบหน้าบน Raspberry Pi 4B ใน 3 ขั้นตอน: ในคำแนะนำนี้ เราจะทำการตรวจจับใบหน้าบน Raspberry Pi 4 ด้วย Shunya O/S โดยใช้ Shunyaface Library Shunyaface เป็นห้องสมุดจดจำใบหน้า/ตรวจจับใบหน้า โปรเจ็กต์นี้มีจุดมุ่งหมายเพื่อให้เกิดความเร็วในการตรวจจับและจดจำได้เร็วที่สุดด้วย
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: 3 ขั้นตอน
วิธีการติดตั้งปลั๊กอินใน WordPress ใน 3 ขั้นตอน: ในบทช่วยสอนนี้ ฉันจะแสดงขั้นตอนสำคัญในการติดตั้งปลั๊กอิน WordPress ให้กับเว็บไซต์ของคุณ โดยทั่วไป คุณสามารถติดตั้งปลั๊กอินได้สองวิธี วิธีแรกคือผ่าน ftp หรือผ่าน cpanel แต่ฉันจะไม่แสดงมันเพราะมันสอดคล้องกับ
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): 8 ขั้นตอน
การลอยแบบอะคูสติกด้วย Arduino Uno ทีละขั้นตอน (8 ขั้นตอน): ตัวแปลงสัญญาณเสียงล้ำเสียง L298N Dc ตัวเมียอะแดปเตอร์จ่ายไฟพร้อมขา DC ตัวผู้ Arduino UNOBreadboardวิธีการทำงาน: ก่อนอื่น คุณอัปโหลดรหัสไปยัง Arduino Uno (เป็นไมโครคอนโทรลเลอร์ที่ติดตั้งดิจิตอล และพอร์ตแอนะล็อกเพื่อแปลงรหัส (C++)
เครื่อง Rube Goldberg 11 ขั้นตอน: 8 ขั้นตอน
เครื่อง 11 Step Rube Goldberg: โครงการนี้เป็นเครื่อง 11 Step Rube Goldberg ซึ่งออกแบบมาเพื่อสร้างงานง่ายๆ ในรูปแบบที่ซับซ้อน งานของโครงการนี้คือการจับสบู่ก้อนหนึ่ง