สารบัญ:

จำหน่ายบัตรอัตโนมัติ: 7 ขั้นตอน
จำหน่ายบัตรอัตโนมัติ: 7 ขั้นตอน

วีดีโอ: จำหน่ายบัตรอัตโนมัติ: 7 ขั้นตอน

วีดีโอ: จำหน่ายบัตรอัตโนมัติ: 7 ขั้นตอน
วีดีโอ: วิธีกด ตู้ขายสินค้าอัตโนมัติ เซเว่น 7-11 มีของคาว หวาน และเครื่องดื่ม 2024, พฤศจิกายน
Anonim
จำหน่ายบัตรอัตโนมัติ
จำหน่ายบัตรอัตโนมัติ

ฉันได้เลือกผู้จัดจำหน่ายสมาร์ทการ์ดเป็นโครงการแรกของฉันเพราะฉันชอบเล่นเกมไพ่ สิ่งที่ฉันไม่ชอบที่สุดคือการแจกไพ่ คุณต้องจำทุกเกมว่าแต่ละคนจะได้รับไพ่กี่ใบ นั่นทำให้สับสนเมื่อคุณรู้จักเกมไพ่มากมาย โครงการของฉันจะช่วยคนที่มีปัญหาในการแจกบัตรเช่นผู้สูงอายุและผู้ที่กำลังทุกข์ทรมานจากโรคพาร์กินสัน

เสบียง

  • 1 Raspberry Pi (ฉันใช้ Raspberry Pi 4)
  • การ์ด SD (แนะนำ 16GB)
  • 1 ชิ้น Outbread สำหรับ Raspberry Pi (T-piece)
  • 2 เขียงหั่นขนม
  • 1 โมดูลแหล่งจ่ายไฟสำหรับเขียงหั่นขนม 5V และ 3V3
  • จอ LCD 1 จอ
  • 1 โพเทนชิออมิเตอร์
  • 1 MPU6050 (มาตรความเร่งและไจโรสโคป)
  • 1 ทรานซิสเตอร์ NPN
  • 1 PCF8574N ตัวขยาย I/O
  • 1 สเต็ปเปอร์มอเตอร์
  • 1 ULN2003 breakout board เพื่อควบคุมสเต็ปเปอร์มอเตอร์
  • 1 HC-SR04 เซ็นเซอร์อัลตราโซนิก
  • 1 5V DC มอเตอร์
  • 1 ไดโอด
  • ตัวต้านทาน 6 470 โอห์ม
  • ตัวต้านทาน 4 10K Ohm
  • สายไฟฟ้าเชื่อมต่อทุกอย่าง

มีประโยชน์ที่จะมีในขณะที่ทำ:

  • หัวแร้ง
  • ประสาน
  • Dremel หรือจิ๊กซอว์ (สำหรับตัดไม้และพลาสติก abs)

ซอฟต์แวร์:

  • สีโป๊ว
  • โต๊ะทำงาน MySQL
  • Win32 Disk Imager
  • โปรแกรมแก้ไขโค้ด (ฉันแนะนำ Visual Studio Code)
  • WinSCP
  • ภาพ Raspbian

ขั้นตอนที่ 1: เตรียมราสเบอร์รี่ Pi

ก่อนอื่นเราต้องเตรียม Raspberry Pi ก่อนที่เราจะทำอย่างอื่น เพราะทุกอย่างจะทำงานของ Pi ดังนั้นนี่คือหนึ่งในชิ้นส่วนที่สำคัญที่สุดของผู้จัดจำหน่ายการ์ด

การติดตั้ง:

ดาวน์โหลดภาพ Raspbian จาก

  1. ดาวน์โหลดไฟล์ ZIP
  2. แตกไฟล์ ZIP ที่คุณสามารถหาได้ง่าย
  3. เปิด Win32 Disk Imager และเลือกภาพที่แยกออกมา
  4. เลือกการ์ด SD ในเมนูแบบเลื่อนลงแล้วคลิกเขียน
  5. เมื่อกระบวนการเขียนเสร็จสิ้น คุณสามารถปิด Win32 Disk Imager

ตอนนี้ เราต้องทำอะไรอีกสองสามอย่างก่อนที่เราจะสามารถเชื่อมต่อกับ Pi. ได้

  1. ไปที่โฟลเดอร์บูตบนการ์ด SD
  2. เปิดไฟล์ cmdline.txt
  3. เพิ่ม 'ip=169.254.10.1' ที่ท้ายบรรทัดโดยคั่นด้วยการเว้นวรรค
  4. บันทึกและออกจากไฟล์
  5. สร้างไฟล์ชื่อ ssh ในไดเร็กทอรีเดียวกันและลบนามสกุล (สิ่งนี้จะเปิดใช้งาน ssh ในการบู๊ตครั้งแรกเพื่อให้เราสามารถเชื่อมต่อกับ Pi)
  6. นำการ์ด SD ออกอย่างปลอดภัยแล้วใส่ลงใน Pi

ตอนนี้เราสามารถเชื่อมต่อกับ Pi:

  1. หยิบสายเคเบิลอีเทอร์เน็ตแล้วเสียบปลายด้านหนึ่งเข้ากับ Pi และปลายอีกด้านหนึ่งในคอมพิวเตอร์ของคุณ
  2. เปิดสีโป๊ว
  3. ป้อน 169.254.10.1 ในช่องชื่อโฮสต์
  4. ตรวจสอบให้แน่ใจว่าได้เลือก SSH และพอร์ตเป็น22
  5. คลิกเปิด
  6. หากคุณได้รับคำเตือนคุณสามารถดำเนินการต่อและเพิกเฉยได้
  7. ชื่อผู้ใช้คือ pi และรหัสผ่านคือ raspberry

การกำหนดค่าและการติดตั้งซอฟต์แวร์:

เปิด raspi-config ด้วยคำสั่งต่อไปนี้:

sudo raspi-config

เลือกตัวเลือกที่ 5: ตัวเลือกการเชื่อมต่อ

เปิดใช้งาน SPI และ I2C

ปิดใช้งานสิ่งต่อไปนี้ในตัวเลือกที่ 3: ตัวเลือกการบูต:

  • หน้าจอ
  • เลือก cli สำหรับการเริ่มต้นและไม่ใช่เดสก์ท็อป

การตั้งค่า Wifi:

Wifi มีประโยชน์ในการไปยังเว็บไซต์อย่างง่ายดาย ตรวจสอบให้แน่ใจว่าคุณได้ปิดข้อมูลรับรอง wifi ของคุณ

ในการตั้งค่า wifi เราต้องการบางสิ่ง:

เพิ่ม wifi ของคุณโดยใช้คำสั่งนี้และเปลี่ยน SSID และ PASSWORD เป็นข้อมูลของคุณ:

sudo wpa_passphrase "SSID" "PASSWORD" >> /etc/wpa_supplicant/wpa_supplicant.conf

ดำเนินการคำสั่งนี้เพื่อกำหนดค่า wifi ของคุณใหม่:

sudo wpa_cli

เลือกอินเทอร์เฟซที่ถูกต้อง:

อินเทอร์เฟซ wlan0

กำหนดค่าอินเทอร์เฟซใหม่:

กำหนดค่าใหม่

ตรวจสอบว่าการกำหนดค่าใหม่สำเร็จด้วยคำสั่งนี้หรือไม่:

ip a

หากคุณเห็นที่อยู่ IP บนอินเทอร์เฟซ wlan0 แสดงว่าทุกอย่างได้รับการตั้งค่าแล้ว

กำลังอัปเดตระบบปฏิบัติการ

อัปเดตระบบปฏิบัติการด้วย 2 คำสั่งเหล่านี้:

sudo apt อัปเดต

sudo apt full-upgrade

การตั้งค่า MariaDB:

การติดตั้งเว็บเซิร์ฟเวอร์ Apache:

sudo apt ติดตั้ง apache2 -y

การติดตั้งเซิร์ฟเวอร์ MariaDB:

sudo apt ติดตั้งเซิร์ฟเวอร์ mariadb -y

ตอนนี้เราต้องรีบูต:

sudo รีบูต

ขอแนะนำให้รักษาความปลอดภัยการติดตั้ง MariaDB คุณสามารถทำได้โดยใช้คำสั่งนี้:

sudo mysql_secure_installation

ก่อนอื่นคุณจะถูกถามถึงรหัสผ่านรูทปัจจุบัน แต่การติดตั้งเริ่มต้นไม่มีรหัสผ่าน ให้กด Enter

จากนั้นระบบจะถามคุณว่าต้องการตั้งรหัสผ่านรูทหรือไม่ ให้พิมพ์ y อย่าลืมจำรหัสผ่าน!

  • ป้อน y เพื่อลบผู้ใช้ที่ไม่ระบุชื่อ
  • ป้อน y เพื่อปิดใช้งานการเข้าสู่ระบบรูทจากระยะไกล
  • ป้อน y เพื่อลบฐานข้อมูลทดสอบและเข้าถึง
  • ป้อน y เพื่อโหลดสิทธิ์ใหม่

การติดตั้ง MariaDB ของคุณควรปลอดภัย!

ตอนนี้เราสามารถสร้างผู้ใช้ใหม่ได้:

ป้อน mysql shell ด้วยคำสั่งนี้:

sudo mysql

สร้างผู้ใช้ด้วยชื่อผู้ใช้ mysql และรหัสผ่าน (your_password) คำสั่งต่อไปนี้:

สร้างผู้ใช้ mysql@localhost ที่ระบุโดย 'your_password';

ให้สิทธิ์ทั้งหมดใน *.* แก่ mysql@localhost;

สิทธิพิเศษในการล้าง;

ออกจากเปลือก mysql ด้วยคำสั่งนี้:

ทางออก;

แพ็คเกจหลาม:

ควรติดตั้ง Python แล้ว เว้นแต่คุณจะเลือกเวอร์ชัน Lite:

sudo apt ติดตั้ง python3-pip

เราต้องการแพ็คเกจ Python จำนวนมาก คุณสามารถติดตั้งแพ็คเกจทั้งหมดได้ด้วยคำสั่งต่อไปนี้:

pip3 ติดตั้ง mysql-connector-python flask-socketio flask-cors gevent gevent-websocket

ตอนนี้เราต้องรีบูตอีกครั้ง

sudo รีบูต

ขั้นตอนที่ 2: การตั้งค่า Visual Studio Code และ MySQL Workbench

การเชื่อมต่อกับ Pi ด้วย MySQL Workbench:

เปิด MySQL Workbench

สร้างการเชื่อมต่อใหม่กับ Pi ด้วยข้อมูลต่อไปนี้:

  • ชื่อการเชื่อมต่อ: Raspi
  • วิธีการเชื่อมต่อ: มาตรฐาน TCP/IP ผ่าน SSH
  • ชื่อโฮสต์ SSH: ที่อยู่ IP ของ Pi

คุณสามารถรับที่อยู่ IP ด้วยคำสั่งนี้:

ip a

  • ชื่อผู้ใช้ SSH: pi
  • ชื่อโฮสต์ MySQL: 127.0.0.1
  • พอร์ตเซิร์ฟเวอร์ MySQL: 3306
  • ชื่อผู้ใช้: mysql

คลิกตกลงและป้อนรหัสผ่านสำหรับผู้ใช้ pi จากนั้นป้อนรหัสผ่านสำหรับผู้ใช้ mysql

การตั้งค่ารหัส Visual Studio:

เปิดรหัส Visual Studio

ติดตั้ง 2 ส่วนขยายเหล่านี้:

  • รีโมท - SSH
  • รีโมท - SSH: การแก้ไขไฟล์การกำหนดค่า

กดใน Visual Studio Code F1 แล้วพิมพ์ ssh

เลือก Remote SSH: เพิ่มโฮสต์ SSH ใหม่

กรอก ssh pi@IP-address

ในขั้นตอนต่อไปให้กด Enter

ตอนนี้เชื่อมต่อกับ Pi แล้ว คุณสามารถเชื่อมต่อกับ Pi ได้โดยกด F1 แล้วเลือกเชื่อมต่อกับโฮสต์ระยะไกล

ป้อนรหัสผ่านเพื่อให้ Visual Studio Code สามารถเข้าถึง Pi

อีกสิ่งหนึ่ง: ติดตั้งส่วนขยาย Python บนเครื่องระยะไกลเพื่อให้คุณสามารถเรียกใช้และแก้ไขโค้ดได้อย่างง่ายดาย

ขั้นตอนที่ 3: Fritzing Diagram

Fritzing Diagram
Fritzing Diagram
Fritzing Diagram
Fritzing Diagram
Fritzing Diagram
Fritzing Diagram

ในขั้นตอนนี้ฉันจะอธิบายวงจร

แผนผังด้านบนทำด้วย Fritzing

มอเตอร์กระแสตรง:

เชื่อมต่อ GPIO 18 กับฐานของตัวสะสม พินกลางบนทรานซิสเตอร์ npn เชื่อมต่อกราวด์ของมอเตอร์เข้ากับตัวสะสมจากทรานซิสเตอร์และกำลังของมอเตอร์เป็น 5V ต่อกราวด์ของทรานซิสเตอร์กับสายกราวด์ เชื่อมต่อไดโอดในสิ่งกีดขวางเหนือมอเตอร์เพื่อป้องกันไม่ให้กระแสไฟไหลตรงไปยังทรานซิสเตอร์

สเต็ปเปอร์มอเตอร์:

ต่อสเต็ปเปอร์มอเตอร์เข้ากับแผงควบคุม บนแผงควบคุมมีพินด้านหนึ่งสำหรับเชื่อมต่อ 5V และกราวด์ หมุดอื่น ๆ เป็นหมุดควบคุม หมุดเหล่านี้ควบคุมแม่เหล็กภายในมอเตอร์เพื่อให้สามารถหมุนได้ เชื่อมต่อพินเหล่านี้กับ GPIO 12, 16, 20 และ 21 บน Raspberry Pi

HC-SR04 อัลตราโซนิก:

เซ็นเซอร์นี้สามารถวัดระยะทางได้ประมาณ 4.5 เมตรโดยใช้เสียง

เชื่อมต่อพิน VCC กับ 5V, พินทริกเกอร์กับ GPIO 25, พินสะท้อนที่มีตัวต้านทาน 470 โอห์มถึง GPIO 24 และกราวด์ที่มีตัวต้านทาน 470 โอห์มกับพื้น

MPU6050:

เชื่อมต่อพิน VCC กับ 3V3, กราวด์กับกราวด์, scl กับ scl บน Pi และ sda ไปยัง sda บน Pi สำหรับเซ็นเซอร์นี้ ฉันใช้ I2C เพื่อควบคุม คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ที่นี่ นี่คือคำอธิบายพื้นฐาน: Pi เป็นหลักและ MPU6050 เป็นทาส ผ่านเส้น scl Pi ควบคุมการกำหนดเวลาและเส้น sda ใช้เพื่อส่งข้อมูลจากต้นแบบไปยังทาสหรือจากทาสไปยังต้นแบบ เฉพาะต้นแบบเท่านั้นที่สามารถเริ่มการถ่ายโอนข้อมูลได้

ตัวต้านทานขึ้นอยู่กับแสง:

เพื่อให้ได้ค่าที่ถูกต้องจาก LDR ฉันใช้ชิป MCP3008 สิ่งนี้ทำให้แน่ใจว่าการอ่านจาก ldr นั้นเสถียรและถูกแปลงจากสัญญาณแอนะล็อกเป็นดิจิตอล

เชื่อมต่อ 3V3 กับด้านหนึ่งของ ldr ด้วยตัวต้านทาน 10K Ohm ระหว่างกัน ระหว่าง ldr และตัวต้านทานเชื่อมต่อสายเข้ากับช่อง 0 ของ MCP3008 จากนั้นเชื่อมต่ออีกด้านหนึ่งของ ldr กับพื้น

จอ LCD:

คุณสามารถใช้จอ LCD ได้โดยไม่ต้องใช้ PCF8574 แต่เนื่องจากพิน GPIO บน Pi นั้นมีจำกัด ฉันจึงใช้ PCF8574 เพื่อบันทึกพิน GPIO บางตัว คุณสามารถใช้ shift register ได้ แต่ฉันชอบ PCF8574 คุณสามารถควบคุม PCF8574 ด้วยโปรโตคอล SMbus แต่ฉันเขียนคลาสของตัวเองเพื่อควบคุม โพเทนชิออมิเตอร์ควบคุมความคมชัด

หมุดแสดงผล LCD:

  • VSS ลงกราวด์
  • VDD ถึง 5V
  • V0 ไปยังพินตัวแปรของโพเทนชิออมิเตอร์
  • RS เป็น GPIO 13
  • R/W ลงกราวด์เพราะฉันเขียนไปที่จอแสดงผลเท่านั้นและไม่อ่าน
  • E ถึง GPIO 19
  • DB0 ถึง P0 ของ PCF
  • DB1 ถึง P1
  • DB2 ถึง P2
  • DB3 ถึง P3
  • DB4 ถึง P4
  • DB5 ถึง P5
  • DB6 ถึง P6
  • DB7 ถึง P7
  • LED+ ถึง 5V
  • LED- ลงกราวด์

PCF8574 หมุด:

  • A0 ลงกราวด์
  • A1 ลงกราวด์
  • A2 ลงกราวด์
  • พื้นดินสู่พื้นดิน
  • VCC ถึง 5V
  • SDA เป็น GPIO 27
  • SCL ถึง GPIO 22 พร้อมตัวต้านทาน 330 โอห์ม

คุณอาจไม่มี LED+ และ LED ขึ้นอยู่กับประเภทของจอแสดงผลที่คุณมี LED+ และ LED- ใช้สำหรับไฟแบ็คไลท์

เชื่อมต่อด้านบวกของโพเทนชิออมิเตอร์กับ 5V และกราวด์กับกราวด์

ตรวจสอบให้แน่ใจว่าคุณใช้ตัวต้านทานแบบดึงขึ้น!

ขั้นตอนที่ 4: รหัสบน Github

คุณสามารถค้นหารหัสที่จำเป็นทั้งหมดบน Github ของฉัน

โครงการโฟลเดอร์ 1:

โฟลเดอร์นี้มีรหัสทั้งหมดสำหรับแบ็กเอนด์ ในโฟลเดอร์ Klasses มีคลาสทั้งหมดสำหรับควบคุมฮาร์ดแวร์

ที่เก็บโฟลเดอร์ประกอบด้วย 2 ไฟล์: Database.py และ DataRepository.py Database.py รักษาการเชื่อมต่อกับฐานข้อมูลและจัดการการสืบค้น DataRepository.py มีการสืบค้นข้อมูลทั้งหมดที่จำเป็นสำหรับไซต์

App.py เป็นไฟล์หลักของแบ็กเอนด์ ไฟล์นี้เริ่มต้นโดยอัตโนมัติเมื่อ Pi บูท

Config.py มีการตั้งค่าบางอย่างเพื่อเชื่อมต่อกับฐานข้อมูล ตรวจสอบให้แน่ใจว่าคุณกรอกไฟล์เหล่านี้ด้วยข้อมูลของคุณเอง

คุณสามารถวางโฟลเดอร์นี้ไว้ที่ใดก็ได้ในโฮมไดเร็กตอรี่ของคุณ

โฟลเดอร์ html:

โฟลเดอร์นี้ประกอบด้วยไฟล์ทั้งหมดสำหรับไซต์ ส่วนหน้า

  • โฟลเดอร์ประกอบด้วยไฟล์สำหรับเค้าโครงของไซต์
  • แบบอักษรประกอบด้วยแบบอักษรที่ใช้ในไซต์
  • สคริปต์มีไฟล์ Javascript ทั้งหมดเพื่อทำให้ไซต์เป็นไดนามิก

โฟลเดอร์นี้ต้องอยู่ในโฟลเดอร์ /var/www/html

คุณสามารถคัดลอกไฟล์หรือโฟลเดอร์ด้วยคำสั่งนี้:

sudo mv /path/to/current/directory /path/to/destination/directory

ในการนำทางไปยังประเภทไซต์ในเบราว์เซอร์ของคุณ ที่อยู่ IP ที่แสดงบนจอ LCD

ขั้นตอนที่ 5: โครงสร้างฐานข้อมูลปกติ

โครงสร้างฐานข้อมูลปกติ
โครงสร้างฐานข้อมูลปกติ

ในขั้นตอนนี้เราจะนำเข้าฐานข้อมูล

  1. เชื่อมต่อกับ Raspberry Pi ของคุณด้วย MySQL Workbench
  2. คลิกที่เซิร์ฟเวอร์ -> นำเข้าข้อมูล
  3. เลือกนำเข้าไฟล์ที่มีในตัวเอง
  4. ในโฟลเดอร์ Database-export จาก Github มีไฟล์ sql ชื่อ dump_project1.sql
  5. เรียกดูไฟล์นี้แล้วคลิกเริ่มการนำเข้า

แค่นั้นแหละ. ตอนนี้ Pi สามารถเข้าถึงฐานข้อมูลได้หากมีข้อมูลที่ถูกต้อง

ขั้นตอนที่ 6: กรณีสำหรับผู้จัดจำหน่ายบัตร

กรณีจำหน่ายบัตร
กรณีจำหน่ายบัตร
กรณีจำหน่ายบัตร
กรณีจำหน่ายบัตร
กรณีจำหน่ายบัตร
กรณีจำหน่ายบัตร

ในขั้นตอนนี้ ฉันจะอธิบายสิ่งที่ฉันใช้สำหรับเคสและวิธีติดตั้งทุกอย่าง

สำหรับกรณีฉันใช้กล่อง ABS 2 กล่อง:

- 265 x 185 x 95 มม.

- 171 x 121 x 80 มม.

รูที่ฉันทำในกล่อง

รูสำหรับจอแสดงผล LCD, 3 รูสำหรับสายไฟ, รูหนึ่งสำหรับสายไฟจากสเต็ปเปอร์มอเตอร์, มอเตอร์ DC และเซ็นเซอร์อัลตราโซนิก

ในกล่องที่เล็กที่สุด ฉันทำรูสำหรับสายไฟจากส่วนประกอบ และรูสำหรับการ์ดที่จะลอดผ่าน ด้านบนสุด ฉันทำหลุมที่ใหญ่ที่สุดเพื่อให้คุณสามารถวางไพ่ในอุปกรณ์ได้

ฉันติดตั้งมอเตอร์กระแสตรงด้วยขายึดและเทปกาวสองหน้า ฉันทำกระดานไม้เพื่อวางไพ่โดยมีรูสำหรับล้อเพื่อยิงไพ่

ฉันเลือกใช้พลาสติก ABS เพราะมันมีน้ำหนักเบา ดังนั้นสเต็ปเปอร์มอเตอร์จึงสามารถหมุนได้อย่างง่ายดาย ไม้อาจหนักมาก และสเต็ปเปอร์มอเตอร์อาจมีปัญหากับสิ่งนี้ ในการตัดรู ฉันใช้สว่านพร้อมดอกสว่านที่ออกแบบมาสำหรับโลหะและเดรเมล การตัดรูที่ใหญ่ขึ้นต้องทำงานหนักขึ้นมาก และจิ๊กซอว์จะดีกว่า

ขั้นตอนที่ 7: โปรแกรมเป็นบริการ

มีประโยชน์มากที่จะมีโค้ดเริ่มต้นหลังจากบูต Pi เพื่อที่เราจะให้บริการ

สร้างไฟล์ใหม่ชื่อ smartcard.service ด้วยคำสั่งต่อไปนี้:

sudo nano /etc/systemd/system/smartcard.service

สิ่งนี้จะต้องเข้าไปในไฟล์:

[หน่วย]

Description=แบ็กเอนด์สมาร์ทการ์ด After=network.target [Service] ExecStart=/usr/bin/python3 -u app.py WorkingDirectory=/home/pi/project1 StandardOutput=inherit StandardError=inherit Restart=Always User=pi [Install] WantedBy =ผู้ใช้หลายคน.target WorkingDirectory คือพาธไปยังโฟลเดอร์ที่โปรแกรมตั้งอยู่

ตอนนี้คุณมีสมาร์ทการ์ดของคุณเองแล้ว!

แนะนำ: