สารบัญ:

Beargardian: 5 ขั้นตอน
Beargardian: 5 ขั้นตอน

วีดีโอ: Beargardian: 5 ขั้นตอน

วีดีโอ: Beargardian: 5 ขั้นตอน
วีดีโอ: Teddy Bear SCP-6330 Guardians of the Innocent (SCP Animation) 2024, พฤศจิกายน
Anonim
Beargardian
Beargardian

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

คุณสมบัติ

  • การแสดงแสงสีเล็กๆ แบบปรับได้
  • กล้องที่แสดงภาพสด
  • ลำโพงสำหรับเล่นเพลง
  • เซ็นเซอร์จับการเคลื่อนไหวของทารก
  • ทั้งหมดที่แสดงบนเว็บไซต์

ข้อมูลสั้นๆ

ขออธิบายสิ่งนี้ในเวอร์ชันสั้น ๆ เราต้องการเว็บไซต์ และสำหรับโปรเจ็กต์นี้ ฉันใช้ Flask เราต้องการฐานข้อมูลด้วย และฉันกำลังใช้ mysql ซึ่งเป็นสคริปต์ที่รันฮาร์ดแวร์ และนี่คือ python(3) และสุดท้าย เราต้องการการตั้งค่าเซิร์ฟเวอร์ นั่นจะเป็น nginx บน PI

เราต้องการอะไร

  • Raspberry Pi 3
  • สเต็ปมอเตอร์ 28BYJ
  • โมดูล stepper stepmotor driverchip ULN2003
  • rgb นำด้วยตัวต้านทาน 3 ตัว 330Ohm
  • กล้อง Pi NoIR V2
  • เซ็นเซอร์อัลตราโซนิก HC-SR04
  • ไมโครโมดูลจากardiuno
  • MAX98357A
  • ลำโพง 8Ohm
  • แล้วอย่าลืมซื้อหมี

ตั้งค่าราสเบอร์รี่ pi ---------------------------------------------- -------------------------------------------------- --------------------------

ขั้นแรกเราต้องตั้งค่า Pi เริ่มเข้าสู่ระบบด้วย putty แล้ว หากคุณไม่มี putty ฉันแนะนำให้คุณดาวน์โหลดสิ่งนี้ เพียงพิมพ์ ip คงที่ของ Pi ด้วย ssh แล้วใช้งาน หากคุณต้องติดตั้ง Raspberry Pi แสดงว่าฉันได้รับข่าวร้าย ฉันไม่ได้อธิบายสิ่งนี้ในโครงการนี้

ติดตั้งแพ็คเกจ

sudo apt อัปเดต

sudo apt ติดตั้ง -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3

สภาพแวดล้อมเสมือนจริง

python3 -m pip install --upgrade pip setuptools wheel virtualenv

mkdir {ชื่อโฟลเดอร์โครงการของคุณ} && cd {ชื่อโฟลเดอร์โครงการของคุณ} python3 -m venv --system-site-packages env แหล่งที่มา env/bin/activate python -m pip ติดตั้ง mysql-connector-python argon2-cffi Flask Flask-HTTPAuth Flask- MySQL mysql-connector-python passlib

ตอนนี้คุณต้องโคลนที่เก็บ git ในโฟลเดอร์โครงการของคุณ

github.com/NMCT-S2-Project-I/Project-I.git

หากคุณดูในโฟลเดอร์โครงการของคุณ คุณต้องเห็น 5 โฟลเดอร์

  • conf
  • สิ่งแวดล้อม
  • เซ็นเซอร์
  • sql
  • เว็บ

ฐานข้อมูล

sudo systemctl สถานะ mysql

ss -lt | grep mysql sudo mysql

สร้างผู้ใช้ในฐานข้อมูลที่มีสิทธิ์ทั้งหมดและสร้างฐานข้อมูลของคุณ

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

สร้างฐานข้อมูล yourdatabasename; ให้สิทธิ์ทั้งหมดในชื่อฐานข้อมูลของคุณ* กับ 'user'@'localhost' พร้อมตัวเลือกการอนุญาต

ไฟล์ Conf สำหรับเซิร์ฟเวอร์

ใน uwsgi-flask.ini คุณเปลี่ยน 'module = …' เป็น 'module= web:app' และเส้นทางไปยัง virtualenv ที่คุณสร้างขึ้น ในไฟล์อื่นๆ คุณต้องเปลี่ยนพาธไปยังพาธสัมบูรณ์จริงของไดเร็กทอรีของคุณ

เมื่อคุณคิดออกแล้ว คุณสามารถตั้งค่าไฟล์ให้ถูกที่

sudo cp conf/project1-*.service /etc/systemd/system/

sudo systemctl daemon-reload sudo systemctl start project1-* sudo systemctl status project1-*

ตอนนี้เราต้องตั้งค่านี้ให้พร้อมใช้งาน

sudo cp conf/nginx /etc/nginx/sites-available/project1

sudo rm /etc/nginx/sites-enabled/default sudo ln -s /etc/nginx/sites-available/project1 /etc/nginx/sites-enabled/project1 sudo systemctl restart nginx.service sudo nginx -t

หากทุกอย่างเป็นไปด้วยดีคุณควรมีสวัสดีชาวโลกด้วยคำสั่งนี้

wget -qO - localhost

เสร็จแล้ว ! นั่นเป็นส่วนที่ช่วยให้ระบบของคุณทำงานบน…

ขั้นตอนที่ 1: การเดินสายฮาร์ดแวร์ไปยัง Pi

การเดินสายฮาร์ดแวร์ไปยัง Pi
การเดินสายฮาร์ดแวร์ไปยัง Pi

ใช้ BCM

เสียง MAX98357A

  • BCK เป็น GPIO 18
  • ข้อมูลไปยัง GPIO 21
  • LRCK เป็น GPIO 19

แสงสว่าง

  • สีแดงเป็น GPIO 17
  • สีเขียวเป็น GPIO 27
  • สีน้ำเงินเป็น GPIO 22

โมดูลมอเตอร์ ULN2003

  • พิน 1 ถึง GPIO 5
  • พิน 2 ถึง GPIO 6
  • พิน 3 ถึง GPIO 13
  • พิน 4 ถึง GPIO 26

ไมโคร

D0 ถึง GPIO 21

เซ็นเซอร์อัลตราโซนิก

  • ไตร่ตรองถึง GPIO 16
  • ก้องไปที่ GPIO 20

ขั้นตอนที่ 2: การเข้ารหัสโปรแกรมหลัก

ฉันไม่ได้ลงรายละเอียดที่นี่ แต่คุณสามารถชำระเงินรหัสของฉันใน GitHub

เริ่มต้นด้วยฉันสร้าง html และ css, ดัชนี, ล็อกอิน, ลงทะเบียน, หน้าจอหลัก, เพลง, addmusic, addbear, light, กล้อง, การตั้งค่ากล้อง, เซ็นเซอร์, หน้าแดชบอร์ด ไฟล์ html ต้องอยู่ในเทมเพลตและไฟล์ css ในโฟลเดอร์ static/css คุณสามารถปรับแต่ง css ได้อย่างเต็มที่ตามที่คุณต้องการ

หากคุณทำส่วนนี้เสร็จแล้ว คุณต้องติดตั้งขวด Flask ใช้งานง่ายเพียงตัวอย่าง สวัสดีชาวโลก

#นำเข้าขวดแรก

จากการนำเข้าขวด * @app.route('/') def index(): return render_template('index.html')

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

ขั้นตอนที่ 3: การสร้างฐานข้อมูล

การสร้างฐานข้อมูล
การสร้างฐานข้อมูล

สำหรับแฟนตัวจริง ฉันจะบอกคุณถึงวิธีสร้างฐานข้อมูลเดียวกัน

ขั้นแรกเราต้องสร้างฐานข้อมูลหากคุณไม่อยู่ในขั้นตอนที่หนึ่ง

สร้างฐานข้อมูล Beargardian

เมื่อคุณทำสิ่งนี้ คุณจะสร้างตารางใน mysql workbench หรือ phppadmin

ตารางผู้ใช้มี

  • รหัสผู้ใช้
  • ชื่อจริง
  • นามสกุล
  • อีเมล
  • ชื่อทารก
  • รหัสผ่านด้วย sha1
  • โฟลเดอร์ผู้ใช้
  • เพลงประกอบละคร (int)
  • ไฟเพลย์ (int)
  • การบันทึกการเล่น (int)

โต๊ะดนตรีมี

  • musicID
  • เพลง
  • เส้นทาง
  • โฟลเดอร์ผู้ใช้
  • สถานะ
  • ปริมาณ

โต๊ะบันทึกมี

  • บันทึกID
  • เส้นทาง
  • โฟลเดอร์ผู้ใช้
  • เวลา
  • วัน

ตารางสีมี

  • colorID
  • สีแดง
  • เขียว
  • สีฟ้า
  • ความสว่าง
  • รหัสผู้ใช้

โต๊ะหมีมี

  • bearID (ทศนิยม (8))
  • รหัสผู้ใช้เริ่มต้น null
  • ชื่อหมี

ตารางเซ็นเซอร์มี

  • sensorID
  • ระยะทาง
  • ไมโคร
  • bearID
  • เวลา
  • วัน
  • เวลานอน

ตอนนี้คุณสร้างฐานข้อมูลสำเร็จแล้ว ไปที่ฮาร์ดแวร์กัน

ขั้นตอนที่ 4: การเข้ารหัสฮาร์ดแวร์

ฉันจะแสดงรหัสเล็กน้อยและบอกคุณว่าทำไมฉันถึงทำอย่างนั้น

เริ่มต้นด้วยการใช้ threading สิ่งที่ขาดไม่ได้ในโครงการนี้ threading คืออะไร อืม เป็นคำถามที่ดี ! การคุกคามใน python คือการเรียกใช้หลายโปรแกรมพร้อมกัน ตัวอย่างเช่น หากคุณเปลี่ยนสี คุณก็สามารถบันทึกได้เช่นกัน ใช้งานง่ายไม่ต้องกังวล

นำเข้า _threaddef function_name(something, something_else): รหัสที่จะเรียกใช้

_thread.start_new_thread(function_name, tuple_with_the_functions_variables)

หากคุณดูที่โปรแกรมของฉัน คุณเห็น logger.info('…') นี่คือฟังก์ชันการพิมพ์ แต่ดีกว่ามาก เพราะใน Pi คุณไม่สามารถพิมพ์สิ่งต่างๆ ออกมาได้ ดังนั้นฉันจึงสร้างไฟล์และพิมพ์ในนั้น โย่สามารถตั้งค่าล็อกไฟล์ด้วยรหัสนี้

logger = logging.getLogger(_name_)logger.setLevel(logging. INFO) # สร้างตัวจัดการไฟล์ตัวจัดการ = logging. FileHandler('logger.log') handler.setLevel(logging. INFO)

# สร้างรูปแบบการบันทึก

formatter = logging. Formatter('%(asctime)s - %(name)s - %(message)s') handler.setFormatter(formatter)

# เพิ่มตัวจัดการให้กับคนตัดไม้

logger.addHandler (ตัวจัดการ)

logger.info('เริ่มต้นฮาร์ดแวร์\n---------------------------------------')

เพิ่มเติมในโค้ดนั้นฉันอธิบายทุกอย่าง

แนะนำ: