สารบัญ:
- ขั้นตอนที่ 1: วัสดุ
- ขั้นตอนที่ 2: วงจรไฟฟ้า
- ขั้นตอนที่ 3: การเข้ารหัสเซ็นเซอร์
- ขั้นตอนที่ 4: การเตรียมและวางเซ็นเซอร์
- ขั้นตอนที่ 5: การเตรียมและวางโมดูลเมทริกซ์
- ขั้นตอนที่ 6: ทำให้เป็น IoT
- ขั้นตอนที่ 7: เชื่อมต่อ Raspberry Pi
- ขั้นตอนที่ 8: การตั้งค่าฐานข้อมูล
- ขั้นตอนที่ 9: การสร้างเว็บไซต์
- ขั้นตอนที่ 10: การเชื่อมต่อกับเวิลด์ไวด์เว็บ
- ขั้นตอนที่ 11: ปิดท้าย
วีดีโอ: ตารางฟุตบอล Raspberry Pi IoT: 11 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
ยินดีต้อนรับสู่โต๊ะฟุตบอลที่ถูกแฮ็กในเวอร์ชันของฉัน ซึ่งเป็นส่วนหนึ่งของโครงการนักเรียนสำหรับเทคโนโลยีสื่อและการสื่อสารใหม่ ฉันโตมากับโต๊ะฟุตบอลและโต๊ะพูล ดังนั้นฉันคิดว่าการลองเชื่อมต่ออุปกรณ์เหล่านี้เข้ากับอินเทอร์เน็ตคงจะดีไม่น้อย
การตั้งค่าหลักใช้ตารางฟุตบอลที่มีอยู่ซึ่งเชื่อมต่อกับ Raspberry Pi ซึ่งสามารถทำงานต่อไปนี้ทั้งหมด:
- ใช้พิน GPIO เพื่อขับเคลื่อน IR LED/Receivers และโมดูลดอทเมทริกซ์ 8x8
- เรียกใช้เว็บไซต์ Flask โดยใช้ nginx
- เรียกใช้ฐานข้อมูล MySQL/MariaDB สำหรับการจัดเก็บข้อมูล
ในการสร้างโครงการนี้ขึ้นมาใหม่ คุณจะต้องมีทักษะดังต่อไปนี้:
แบ็กเอนด์:
- ทำความเข้าใจ HTML/CSS/Javascript สำหรับลูกค้าของเว็บไซต์
- ทำความเข้าใจ Python ด้วย Flask/Flask-SocketIO/Jinja2 สำหรับฝั่งเซิร์ฟเวอร์ของเว็บไซต์
- ความรู้พื้นฐานของ MySQL
- รู้วิธีเรียกใช้เว็บเซิร์ฟเวอร์
ต้นแบบ
- ความรู้เบื้องต้นในการต่อวงจรไฟฟ้า
- บัดกรี
- ความเข้าใจพื้นฐานเกี่ยวกับวิธีการเขียนสคริปต์ใน Python
- การทำงานกับลินุกซ์ (Raspbian)
- มีความอดทนมากเพราะจะมีการดีบักมากมายที่เกี่ยวข้อง
ขั้นตอนที่ 1: วัสดุ
นี่คือรายการพร้อมส่วนที่จำเป็นทั้งหมดสำหรับตาราง:
- Raspberry Pi Model 3 (พร้อมเคส)
- T-Cobbler สำหรับเชื่อมต่อ Pi กับเขียงหั่นขนม
- โต๊ะบอล (ผมใช้โต๊ะเก่ามากๆ คล้ายๆ ตัวนี้ ต้องยอมเจาะรูเข้าไปครับ)
- MAX7219 โมดูล Arduino Dot Matrix (2)
- IR LED Emitters (2+ เพราะแตกคล้ายกับอันนี้)
- ตัวรับ IR (2+ เพราะพวกมันแตกเหมือนกัน)
- เขียงหั่นขนมแบบพื้นฐาน
- ลวดจำนวนมาก (ขึ้นอยู่กับขนาดของโต๊ะฟุตบอล)
- ขั้วต่อชาย (30+)
- ขั้วต่อหญิง (10+)
- ตัวต้านทาน 100-220 โอห์ม (4+)
- วัสดุบัดกรี
- สายรัด
- ผู้ถือ LED
- ไม้/สกรู เผื่อต้องการถ่ายทอดลูกในรางน้ำ
ค่าใช้จ่ายทั้งหมดของโครงการนี้ขึ้นอยู่กับค่าใช้จ่ายของโต๊ะฟุตบอลของคุณ (แพง) นอกจากโต๊ะ วัสดุจะสูงสุด 150 ยูโร
ขั้นตอนที่ 2: วงจรไฟฟ้า
ก่อนที่คุณจะพยายามประสาน ให้ประกอบส่วนประกอบทั้งหมด ผมขอแนะนำให้ทดสอบบนเขียงหั่นขนมก่อน การเปลี่ยนส่วนประกอบที่ผิดพลาดได้ง่ายกว่าก่อนที่คุณจะใช้เวลาหลายชั่วโมงในการบัดกรี
ตอนแรกฉันพยายามใช้เมทริกซ์ LED 8x8 กับรีจิสเตอร์ 74HC595 (ภาพแรก) และอาร์เรย์ทรานซิสเตอร์ แต่เนื่องจากสายไฟจำนวนมากและเอาต์พุตที่ต่ำมาก ฉันจึงเปลี่ยนมาใช้โมดูล MAX7219 Dot Matrix เพราะใช้เพียง 5 สายและขับเคลื่อนโดย บัส SPI
วงจรที่ฉันใช้ในที่สุดถูกวาดด้วย Fritzing โปรดทราบว่า IR LEDS และตัวรับสัญญาณสามารถเชื่อมต่อกับพิน GPIO ฟรีของคุณ
ตัวรับ IR และ LED ควรอยู่ตรงข้ามกัน และด้านบนของ LED ควรชี้ไปที่ตัวรับสัญญาณ เนื่องจากเราต้องการจำลองลำแสงตรงซึ่งสามารถหักได้โดยการเคลื่อนที่ของลูกบอล ซึ่งในกรณีนี้ จะมีการเปลี่ยนแปลงสถานะของสายข้อมูลของเครื่องรับจาก 0 เป็น 1
ขั้นตอนที่ 3: การเข้ารหัสเซ็นเซอร์
ฉันได้เขียนโค้ดส่วนใหญ่ของโปรเจ็กต์นี้โดยใช้ Pycharm เพราะช่วยให้ปรับใช้ SSH กับ Raspberry Pi ได้ง่ายโดยใช้ล่ามระยะไกล ฉันจะไม่ลงรายละเอียดเกี่ยวกับวิธีการทำงานของโปรแกรมนี้ แต่ข้อมูลมากมายสามารถพบได้บนเว็บไซต์ pycharm
ตอนนี้ฉันยังคงทำงานในโครงการ แต่เมื่อทุกอย่างเสร็จสิ้น ทั้งโปรเจ็กต์จะพร้อมใช้งานในโปรไฟล์ github ของฉัน
รหัสสำหรับเซ็นเซอร์ประกอบด้วย 3 คลาสซึ่งทำงานในเธรดพื้นหลังบนเซิร์ฟเวอร์ Flask ของฉัน (ซึ่งจะอธิบายในภายหลัง):
- คลาสเป้าหมาย (ลิงก์) -ไฟล์นี้เริ่มต้นส่วนประกอบที่แยกจากกันทั้งหมด ซึ่งสามารถเรียกใช้ได้โดยการใส่อุปกรณ์/บัส SPI และหมายเลขพินที่ถูกต้อง
- The Matrix Class (ลิงค์) -นี่คือคลาสหลักสำหรับเพิ่มพลังให้กับโมดูล MAX7219
- คลาส LED และตัวรับสัญญาณ (ลิงก์) - นี่คือคลาสหลักในการเปิดไฟเบรกบีมอินฟราเรดโดยใช้เธรดแยกกันเพื่อลดภาระ CPU ของ RPi
ทั้ง LED และตัวรับสัญญาณทำงานบนความถี่ 38kHz และเครื่องรับคาดว่าพัลส์ขึ้น 50% และดาวน์ 50% จะทำงานได้อย่างถูกต้องเสมอ
ขั้นตอนที่ 4: การเตรียมและวางเซ็นเซอร์
ตอนนี้เรากำลังเตรียม IR LED และตัวรับสัญญาณ ในรูปภาพของตาราง คุณสามารถค้นหาตำแหน่งที่ควรวาง RPi และเซ็นเซอร์
แต่ก่อนอื่นเราต้องเตรียมสายไฟ:
- ตรวจสอบว่าคุณวัดปริมาณลวดที่ต้องการจากตำแหน่ง RPi/เขียงหั่นขนมไปยังตำแหน่งเซ็นเซอร์
- บัดกรีหมุดตัวรับสัญญาณ IR ที่ปลายด้านหนึ่งของสาย (COM/GND/V+)
- บัดกรีขั้วต่อตัวผู้ที่ปลายอีกด้านของสาย
ตอนนี้เรากำลังเตรียมโต๊ะ:
- สร้างภาพวาดพื้นฐาน (ตามภาพ) เกี่ยวกับตำแหน่งที่จะเจาะ มันสำคัญมากที่ 2 รูจะต้องชิดกันเพราะนี่จะเป็นตำแหน่งของลำแสง
- เจาะรู
- หากคุณมีที่ยึด LED (ลิงค์) คุณสามารถใส่สิ่งเหล่านี้เข้าไปในรูเพื่อให้แข็งแรงขึ้น
- ใส่ + เทป LED + ตัวรับสัญญาณทั้งสองด้าน
- มัดสายไฟ + พันเทปไว้บนไม้เพื่อไม่ให้ไขว้กันมากเกินไป
- ใส่หมุดตัวผู้บนเขียงหั่นขนมตามวงจรที่ให้มาก่อนหน้านี้
ขั้นตอนที่ 5: การเตรียมและวางโมดูลเมทริกซ์
ต่อไปเราจะเชื่อมต่อโมดูลเมทริกซ์ LED 2 โมดูล
บันทึก:
เพราะฉันใช้โต๊ะฟุตบอลแบบเก่า จึงมีรูขึ้นไปทางส่วนบนอยู่แล้วเพราะที่ใส่บุหรี่ หากคุณไม่มีสิ่งเหล่านี้ คุณจะต้องสร้างมันขึ้นมา
เพื่อเตรียมสายไฟ:
- วัดเส้นลวดจากเขียงหั่นขนมไปทางส่วนบนของโต๊ะ
- บัดกรีขั้วต่อตัวเมียบางตัวเข้ากับปลายสายด้านแรก
- บัดกรีขั้วต่อตัวผู้บางตัวเข้ากับปลายอีกด้านของสาย
การวางเมทริกซ์:
- ดึงเมทริกซ์ผ่านรูด้านบน
- รัด + พันสายไฟด้านในไม้เพื่อหลีกเลี่ยงการข้าม
- ใส่หมุดตัวผู้บนเขียงหั่นขนมตามวงจรที่ให้มาก่อนหน้านี้
ในบางจุดฉันจะเพิ่มขั้นตอน DIY เล็ก ๆ เพื่อเพิ่มเคสสำหรับโมดูลเมทริกซ์ แต่ตอนนี้พวกมันเปลือยเปล่า
ขั้นตอนที่ 6: ทำให้เป็น IoT
หากคุณเพียงต้องการลงทะเบียนและแสดงคะแนน คุณสามารถปิดโครงการได้โดยการเขียนสคริปต์ Python ที่ทำงานอยู่ขนาดเล็กซึ่งจะวนซ้ำจนกว่าคะแนนใดคะแนนหนึ่งจะถึง 9 แล้วรีเซ็ต
อย่างไรก็ตาม หากคุณต้องการเชื่อมต่อโต๊ะกับอินเทอร์เน็ต ขั้นตอนต่อไปควรอยู่ในซอยของคุณ
ในไม่กี่ขั้นตอนถัดไป เราจะกล่าวถึงสิ่งต่อไปนี้:
- การกำหนดค่า Raspberry Pi
- จัดทำฐานข้อมูลสำหรับจัดเก็บ
- การสร้างเว็บไซต์
- วางออนไลน์
ณ จุดนี้ หากคุณคุ้นเคยกับ git ฉันแนะนำให้คุณสร้างที่เก็บบน GitHub/GitLab เพื่อติดตามไฟล์ของคุณ หากคุณไม่ใช่ คุณสามารถสร้างโฟลเดอร์ที่มีโครงสร้างเดียวกับในภาพได้
โปรเจ็กต์เต็มจะพร้อมใช้งานเร็ว ๆ นี้บน GitHub อย่างไรก็ตาม มีไฟล์ rar ชั่วคราวพร้อมไฟล์ที่จำเป็นทั้งหมด
ขั้นตอนที่ 7: เชื่อมต่อ Raspberry Pi
ต่อไป เราจะตั้งค่าสภาพแวดล้อม raspberry pi ในการดำเนินการนี้ คุณต้องทำตามขั้นตอนต่อไปนี้:
- เชื่อมต่อผ่าน SSH กับ Rasberry Pi ของคุณ (คุณสามารถใช้ PuTTY ได้)
- สร้างโฟลเดอร์ (ตัวอย่างโครงการ mkdir) และย้ายไปยังโฟลเดอร์นี้โดยใช้คำสั่ง cd
- สร้างสภาพแวดล้อม Python เสมือนในโฟลเดอร์นี้โดยใช้คำสั่ง python3 -m venv --system-site-packages env
- เปิดใช้งานล่ามเสมือนด้วยซอร์ส /env/bin/activate คำสั่ง
- ติดตั้งแพ็คเกจจาก requirements.txt ด้วย python -m pip install package-name command
- โอนไฟล์จากไฟล์ project_example.rar ที่ให้ไว้ก่อนหน้านี้ผ่าน SSH ในโฟลเดอร์โปรเจ็กต์ของคุณ
ตอนนี้คุณควรจะสามารถรันโปรเจ็กต์แบบเต็มบน Raspberry Pi ของคุณได้ ฉันแนะนำให้คุณใช้ Python IDE เช่น PyCharm ซึ่งช่วยให้คุณใช้การดีบักจากตัวแปลระยะไกลผ่าน SSH และอัปโหลดการเปลี่ยนแปลงโดยตรงหากจำเป็น
ขั้นตอนที่ 8: การตั้งค่าฐานข้อมูล
ตอนนี้ คุณต้องตั้งค่าฐานข้อมูลพื้นฐานมาก ตามโมเดลนี้
วิธีที่ง่ายที่สุดในการดำเนินการนี้คือการสร้างฐานข้อมูลของคุณในฐานข้อมูล MySQL ซึ่งคุณสามารถทำการทดสอบได้
เมื่อเสร็จแล้วคุณสามารถส่งออกดัมพ์ของฐานข้อมูลของคุณและอัปโหลดบน RPi ของคุณแล้วดำเนินการด้วย sudo mariadb < pathtofile/file.sql
ขั้นตอนที่ 9: การสร้างเว็บไซต์
ถัดไป คุณสามารถวิเคราะห์ (และใช้) รหัสที่ให้ไว้ในไฟล์ project_example.rar
ไฟล์หลักคือ Flask.py ซึ่งเป็นขนมปังและเนยของโปรเจ็กต์นี้:
- เรียกใช้แอพ Flask-SocketIO ที่จัดการแบ็กเอนด์ของเว็บไซต์
- สร้างการเชื่อมต่อระหว่างฐานข้อมูลและ Flask
- ให้การตรวจสอบการเข้าสู่ระบบและการลงทะเบียนผู้ใช้
- ให้รหัสที่จำเป็นเกี่ยวกับวิธีการเล่นเกมใช้ socketio เพื่ออัปเดตเว็บไซต์แบบเรียลไทม์ระหว่างเกม
- นำผลการแข่งขันลงฐานข้อมูล
ในโฟลเดอร์สแตติกและเทมเพลต คุณสามารถค้นหา HTML/CSS/JS ซึ่งให้ส่วนหน้าของเว็บไซต์ ปรับเปลี่ยนได้ตามใจชอบ
ขั้นตอนที่ 10: การเชื่อมต่อกับเวิลด์ไวด์เว็บ
ในการเชื่อมต่อเว็บไซต์ของเรากับเว็บ เราจะใช้ nginx และ uwsgi ในตัวอย่างโครงการ คุณสามารถค้นหาไฟล์ที่จำเป็นในโฟลเดอร์ conf
ก่อนอื่นคุณต้องอัปเดตสิ่งต่อไปนี้ในไฟล์เหล่านี้:
- ใน uwsgi-flask.ini คุณต้องเปลี่ยนเส้นทางของพารามิเตอร์ virtualenv เป็นล่ามของคุณ
- ใน project1-flask.service คุณต้องอัปเดตส่วน [Service] ของไฟล์ด้วยข้อมูลรับรองและพาธของคุณไปยังไฟล์ที่เกี่ยวข้อง
- ในไฟล์ nginx คุณต้องอัปเดตเซิร์ฟเวอร์และตำแหน่ง / เส้นทางไปยังซ็อกเก็ตที่เกี่ยวข้องของคุณ
ถัดไป คุณต้องแทนที่ไฟล์เว็บเซิร์ฟเวอร์ nginx ที่เป็นค่าเริ่มต้นด้วยตำแหน่งของไฟล์กำหนดค่า nginx ของคุณ ด้านล่างนี้เป็นตัวอย่างของคำสั่ง linux ที่จะทำสิ่งนี้
- me@my-rpi:~/project1 $ sudo cp conf/nginx /etc/nginx/sites-available/project1
- me@my-rpi:~/project1 $ sudo rm /etc/nginx/sites-enabled/defaul t
- 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
สุดท้ายคุณต้องเพิ่มบริการที่กำหนดเองลงในโฟลเดอร์ 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-*
หากคุณต้องการให้เว็บเซิร์ฟเวอร์เริ่มทำงานเมื่อบูตราสเบอร์รี่ pi ของคุณ คุณต้องใช้คำสั่ง sudo systemctl enable project1-*.service
หากทำอย่างถูกต้อง หลังจากที่ระบบรีบูต เว็บไซต์ของคุณควรทำงานโดยใช้ที่อยู่ IP ของคุณ หากคุณต้องการแก้ไขไฟล์ปรับแต่งเหล่านี้ คุณต้องหยุดบริการเสมอ ให้อัปโหลดไฟล์ใหม่และใช้คำสั่ง daemon-reload ตามด้วยการเริ่มต้น มิฉะนั้น การเปลี่ยนแปลงจะไม่มีผล
ขั้นตอนที่ 11: ปิดท้าย
ขณะพิมพ์ส่วนสุดท้ายของคำแนะนำนี้ โครงการโรงเรียนเล็กๆ นี้ยังอยู่ในระหว่างดำเนินการ
ฉันใช้เวลามากมายในการทำสิ่งนี้ให้เสร็จภายใน 2.5 สัปดาห์ แม้ว่าทุกอย่างจะเร่งรีบเล็กน้อย แต่ฉันก็ยังภูมิใจในสิ่งที่ฉันทำสำเร็จ ในระหว่างขั้นตอนการประกอบ ฉันพบข้อผิดพลาด/ข้อผิดพลาด/เซ็นเซอร์ผิดพลาดนับไม่ถ้วน ดังนั้นอย่าท้อแท้เกินไปหากทุกอย่างไม่ทำงานในการลองครั้งแรก
สิ่งที่ดีที่สุดที่คุณสามารถทำได้คือขอหรือมองหาความช่วยเหลือบนอินเทอร์เน็ต มีผู้คนมากมายที่มีความรู้ที่ดีกว่านี้มากซึ่งกระตือรือร้นที่จะช่วยเหลือคุณ
สุดท้ายนี้ ผมต้องขอขอบคุณอาจารย์จาก New Media and Communication Technology ที่ให้คำแนะนำมากมายและช่วยให้ผมทำโครงงานนี้สำเร็จ
แนะนำ:
Easy IOT – ฮับเซ็นเซอร์ RF ที่ควบคุมด้วยแอปสำหรับอุปกรณ์ IOT ระยะกลาง: 4 ขั้นตอน
Easy IOT – ฮับเซ็นเซอร์ RF ที่ควบคุมด้วยแอปสำหรับอุปกรณ์ IOT ระยะกลาง: ในบทช่วยสอนนี้ เราจะสร้างเครือข่ายของอุปกรณ์ที่สามารถควบคุมผ่านลิงก์วิทยุจากอุปกรณ์ศูนย์กลาง ประโยชน์ของการใช้การเชื่อมต่อวิทยุแบบอนุกรม 433MHz แทน WIFI หรือ Bluetooth คือช่วงที่กว้างกว่ามาก (พร้อม
IoT APIS V2 - ระบบชลประทานพืชอัตโนมัติที่เปิดใช้งาน IoT แบบอัตโนมัติ: 17 ขั้นตอน (พร้อมรูปภาพ)
IoT APIS V2 - ระบบชลประทานพืชอัตโนมัติที่เปิดใช้งาน IoT แบบอัตโนมัติ: โครงการนี้เป็นวิวัฒนาการของคำสั่งก่อนหน้าของฉัน: APIS - ระบบชลประทานพืชอัตโนมัติฉันใช้ APIS มาเกือบปีแล้วและต้องการปรับปรุงจากการออกแบบก่อนหน้านี้: ความสามารถในการ ตรวจสอบโรงงานจากระยะไกล นี่คือวิธีที่
โมดูลพลังงาน IoT: การเพิ่มคุณสมบัติการวัดพลังงาน IoT ให้กับตัวควบคุมการชาร์จพลังงานแสงอาทิตย์ของฉัน: 19 ขั้นตอน (พร้อมรูปภาพ)
โมดูลพลังงาน IoT: การเพิ่มคุณสมบัติการวัดพลังงาน IoT ให้กับตัวควบคุมการชาร์จพลังงานแสงอาทิตย์ของฉัน: สวัสดีทุกคน ฉันหวังว่าพวกคุณทุกคนจะยอดเยี่ยม! ในคำแนะนำนี้ฉันจะแสดงให้คุณเห็นว่าฉันสร้างโมดูลการวัดพลังงาน IoT ที่คำนวณปริมาณพลังงานที่สร้างโดยแผงโซลาร์เซลล์ของฉันได้อย่างไรซึ่งถูกใช้โดยตัวควบคุมการชาร์จพลังงานแสงอาทิตย์ของฉัน t
พื้นฐาน IoT: การเชื่อมต่อ IoT ของคุณกับคลาวด์โดยใช้ Mongoose OS: 5 ขั้นตอน
พื้นฐาน IoT: การเชื่อมต่อ IoT ของคุณกับคลาวด์โดยใช้ Mongoose OS: หากคุณเป็นคนที่ชอบซ่อมแซมและอุปกรณ์อิเล็กทรอนิกส์ บ่อยครั้งคุณจะเจอคำว่า Internet of Things ซึ่งปกติจะย่อว่า IoT และมัน หมายถึงชุดอุปกรณ์ที่สามารถเชื่อมต่ออินเทอร์เน็ตได้! เป็นคนแบบนี้
การติดตั้ง Raspbian ใน Raspberry Pi 3 B โดยไม่ต้องใช้ HDMI - เริ่มต้นใช้งาน Raspberry Pi 3B - การตั้งค่า Raspberry Pi ของคุณ 3: 6 ขั้นตอน
การติดตั้ง Raspbian ใน Raspberry Pi 3 B โดยไม่ต้องใช้ HDMI | เริ่มต้นใช้งาน Raspberry Pi 3B | การตั้งค่า Raspberry Pi ของคุณ 3: อย่างที่พวกคุณบางคนรู้ว่าคอมพิวเตอร์ Raspberry Pi นั้นยอดเยี่ยมมากและคุณสามารถรับคอมพิวเตอร์ทั้งหมดได้บนบอร์ดเล็ก ๆ ตัวเดียว Raspberry Pi 3 Model B มี ARM Cortex A53 แบบ 64 บิตแบบ quad-core โอเวอร์คล็อกที่ 1.2 GHz ทำให้ Pi 3 ประมาณ 50