สารบัญ:
- เสบียง
- ขั้นตอนที่ 1: การติดตั้ง Raspbian
- ขั้นตอนที่ 2: การกำหนดค่า WiFi
- ขั้นตอนที่ 3: การติดตั้งและกำหนดค่าซอฟต์แวร์
- ขั้นตอนที่ 4: ฐานข้อมูล
- ขั้นตอนที่ 5: การสร้างกรอบกระจก
- ขั้นตอนที่ 6: อุปกรณ์อิเล็กทรอนิกส์
- ขั้นตอนที่ 7: ติดตั้งอุปกรณ์อิเล็กทรอนิกส์ในเฟรม
- ขั้นตอนที่ 8: เสร็จสิ้นการสัมผัส
- ขั้นตอนที่ 9: การโต้ตอบกับ Webapp
วีดีโอ: กระจกวิเศษพร้อมข่าว พยากรณ์อากาศ นาฬิกาปลุก ตัวจับเวลา และ Todolist: 9 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:03
กระจกวิเศษเป็นกระจกส่องทางเดียวแบบพิเศษที่มีจอแสดงผลอยู่ด้านหลัง จอแสดงผลที่เชื่อมต่อกับ Raspberry Pi แสดงข้อมูล เช่น สภาพอากาศ อุณหภูมิห้อง เวลา วันที่ รายการสิ่งที่ต้องทำ และอื่นๆ อีกมากมาย คุณสามารถเพิ่มไมโครโฟนและตั้งค่าผู้ช่วยอัจฉริยะได้ ความเป็นไปได้ไม่มีที่สิ้นสุด
โครงการนี้อาจมีราคาแพง หนึ่งในชิ้นส่วนที่แพงที่สุดที่คุณต้องการคือจอแสดงผล นั่นเป็นเหตุผลที่ฉันรีไซเคิลจอแสดงผลจากแล็ปท็อปเครื่องเก่า อย่างไรก็ตาม ฉันขอแนะนำให้ใช้จอแสดงผลขนาดใหญ่ สว่าง และคอนทราสต์สูงเพื่อสร้างโปรเจ็กต์นี้ มันคุ้มค่า.
กระจกที่ฉันทำมีคุณสมบัติเหล่านี้:
- ข่าวจากฟีด RSS ที่ผู้ใช้เลือก
- สภาพอากาศ
- อุณหภูมิภายใน
- ระบบเตือนภัย
- ระบบจับเวลา
- todolist
- ผู้ใช้หลายคน: สีของแถบนำทางและแหล่งข่าวจะเปลี่ยนไปตามการเลือกผู้ใช้
เสบียง
ในการสร้างกระจกวิเศษนี้ คุณจะต้อง:
- กระจกทางเดียว
- ไม้
- ราสเบอร์รี่ Pi
- การ์ด Micro SD (8+GB)
- เขียงหั่นขนม
- ลำโพง 20W สองตัว
- MAX9744 แอมพลิฟายเออร์ 20W เพื่อจ่ายไฟให้กับลำโพง
- 1m 30-led WS2801 แถบนำแสง
- DS18B20 เซ็นเซอร์อุณหภูมิ 1 สาย
- HC-SR501 เซ็นเซอร์อินฟราเรด
- เครื่องเข้ารหัสแบบหมุน
-
จอภาพหรือแล็ปท็อปเครื่องเก่า
หากคุณกำลังใช้จอแสดงผลแล็ปท็อปเครื่องเก่า คุณจะต้องซื้ออะแดปเตอร์แสดงผลสำหรับแล็ปท็อป คุณสามารถรับสิ่งเหล่านี้ได้จาก AliExpress, Ebay หรือ Amazon เพียงค้นหาหมายเลขซีเรียลของจอแสดงผลของคุณ
คุณจะต้องมีส่วนประกอบเล็กๆ ดังต่อไปนี้:
- ไดโอด
- ตัวต้านทาน 4.7k โอห์ม
- ตัวต้านทาน 470 โอห์ม
- สายเชื่อมต่อเซ็นเซอร์กับ Raspberry Pi
และอุปกรณ์จ่ายไฟเหล่านี้:
- 5V 2A เพื่อจ่ายไฟให้กับแถบนำแสง
- 12V 2A เพื่อจ่ายไฟให้กับจอแสดงผล
- 12V 2A เพื่อจ่ายไฟให้กับเครื่องขยายเสียง
- 5.1V 3A เพื่อจ่ายไฟให้กับ Raspberry Pi (ใช้แหล่งจ่ายไฟ RPi อย่างเป็นทางการ)
ขั้นตอนที่ 1: การติดตั้ง Raspbian
จอแสดงผลและส่วนประกอบทั้งหมดด้านหลังกระจกขับเคลื่อนโดย Raspberry Pi คุณจะต้องติดตั้ง Raspbian ซึ่งเป็นระบบปฏิบัติการเริ่มต้นของ Pi ลงในการ์ด SD
- ดาวน์โหลด Win32 Disk Imager ผู้ใช้ Linux และ MacOS สามารถใช้ Etcher ได้
- ดาวน์โหลดรูปภาพ Raspbian ล่าสุดจากเว็บไซต์ Raspberry Pi เลือกตัวเลือก 'Raspbian Buster พร้อมเดสก์ท็อป'
- เปิด Win32 Disk Imager และเขียนไฟล์ภาพลงในการ์ด SD
ตอนนี้การ์ด SD ใกล้จะพร้อมแล้ว เราแค่ต้องแน่ใจว่าเราสามารถเชื่อมต่อกับ Raspberry Pi จากระยะไกลได้:
- ไปที่พาร์ติชั่น 'บูต' ของการ์ด SD โดยใช้ตัวสำรวจไฟล์ของระบบ
- เพิ่มไฟล์ชื่อ 'ssh' โดยไม่มีนามสกุล
- เพิ่ม 'ip=169.254.10.1' (ไม่มีเครื่องหมายคำพูด) ต่อท้ายบรรทัดแรกของ 'cmdline.txt'
นำการ์ด SD ออกจากคอมพิวเตอร์อย่างปลอดภัย ใส่ลงใน Raspberry Pi แล้วเปิดเครื่อง
ขั้นตอนที่ 2: การกำหนดค่า WiFi
ในการสแกนเครือข่าย WiFi ให้รันคำสั่งต่อไปนี้:
sudo iw dev wlan0 scan | grep SSID
คุณจะเห็นรายการ SSID ทั้งหมดที่ Raspberry Pi ของคุณสามารถเชื่อมต่อได้
สร้างรายการเครือข่ายด้วยรหัสผ่านที่เข้ารหัสโดยดำเนินการคำสั่งต่อไปนี้และป้อนรหัสผ่านเครือข่ายของคุณ:
wpa_passphrase "YOUR_NETWORK_SSID_HERE"
ตอนนี้วางผลลัพธ์ของคำสั่งดังกล่าวในไฟล์นี้:
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf
ตอนนี้รีบูต Raspberry Pi คุณจะเชื่อมต่อกับอินเทอร์เน็ต
ขั้นตอนที่ 3: การติดตั้งและกำหนดค่าซอฟต์แวร์
สำหรับโครงการนี้ คุณจะต้องดาวน์โหลดแพ็คเกจเหล่านี้ไปยัง Raspberry Pi:
pip3 ติดตั้ง mysql-connector-python flask-socketio flask-cors gevent gevent-websocket adafruit-circuitpython-ws2801 adafruit-circuitpython-max9744
sudo apt ติดตั้ง apache2 mariadb-server
เพิ่มบรรทัดนี้ที่ด้านล่างของ /boot/config.txt เพื่อเปิดใช้งานเสียงผ่านพิน GPIO 12 (ซ้าย) และ 13 (ขวา):
dtoverlay=audremap
ใช้ raspi-config เพื่อตั้งค่าความละเอียดของจอแสดงผลและเปิดใช้งาน i2c, One-wire และ SPI ตั้งค่าวิธีการบู๊ตเป็น 'Desktop Autologin' ด้วย
ใน /etc/xdg/lxsession/LXDE-pi/autostart เพิ่มสิ่งต่อไปนี้:
@xset s off@xset -dpms@xset s noblank@chromium-browser --kiosk 127.0.0.1/mirror.html # โหลดโครเมียมหลังจากบู๊ตและเปิดเว็บไซต์ในโหมดเต็มหน้าจอ
ซึ่งจะเปิดเบราว์เซอร์ในหน้าที่ถูกต้องเมื่อโหลด LXDE (สภาพแวดล้อมเดสก์ท็อปของ Raspbian) ลบหรือแสดงความคิดเห็นในบรรทัด @xscreensaver เพื่อปิดการใช้งานสกรีนเซฟเวอร์
ที่เก็บ Github
โคลนที่เก็บ GitHub ของฉันและใส่เนื้อหาของโฟลเดอร์ส่วนหน้าใน /var/www/html เราต้องการโฟลเดอร์แบ็กเอนด์ในภายหลัง
ขั้นตอนที่ 4: ฐานข้อมูล
นี่คือสคีมาฐานข้อมูล ปรับให้เหมาะกับ 3NF มันเก็บการเตือนภัย แหล่งข่าว ผู้ใช้ ข้อมูลเซ็นเซอร์ เสียง และรายการสิ่งที่ต้องทำ
- ใช้ MySQL Workbench เพื่อเข้าถึงเซิร์ฟเวอร์ฐานข้อมูลของ pi (mariadb)
- สร้างฐานข้อมูลโดยใช้สคีมานี้และแทรกข้อมูลของคุณเอง
- แก้ไข config.py ในโฟลเดอร์แบ็กเอนด์ของที่เก็บ GitHub ของฉัน: เปลี่ยนชื่อฐานข้อมูล ชื่อผู้ใช้ที่คุณเลือก และรหัสผ่าน
- แก้ไข app.py และเปลี่ยน URL ของ OpenWeatherMap API เป็นของคุณเอง (สร้างของคุณเองที่นี่)
ขั้นตอนที่ 5: การสร้างกรอบกระจก
ฉันสร้างกรอบรอบกระจกโดยใช้ข้อต่อ Mitre ที่มีมุมโลหะ แผ่นไม้ที่ฉันใช้มีความหนา 18 มม. และกว้าง 10 ซม. ในภาพ คุณสามารถดูขนาดที่แน่นอนสำหรับกระจกขนาด 45 ซม. x 60 ซม. ด้านหลังกระจกเป็นอุปกรณ์อิเล็กทรอนิกส์ทั้งหมด ดังนั้น ตรวจสอบให้แน่ใจว่าแผ่นไม้ของคุณกว้างพอที่จะใส่ได้
ฉันใช้ตะขอโลหะติดลำโพงเข้ากับกรอบ วิธีนี้จะไม่วางบนกระจก ช่วยลดแรงสั่นสะเทือนที่กระจก
ขั้นตอนที่ 6: อุปกรณ์อิเล็กทรอนิกส์
ทำตามแผนผังด้านบนเพื่อสร้างวงจร ฉันใช้เทปติดอุปกรณ์อิเล็กทรอนิกส์กับกระจก
ขั้นตอนที่ 7: ติดตั้งอุปกรณ์อิเล็กทรอนิกส์ในเฟรม
หลังจากติดลำโพงเข้ากับขอเกี่ยวโลหะที่ด้านบนแล้ว ให้เพิ่มอุปกรณ์อิเล็กทรอนิกส์ที่เหลือไปที่กระจก ฉันยังวางแผ่นไม้บาง ๆ ไว้ระหว่างกระจกและอุปกรณ์อิเล็กทรอนิกส์ ดังนั้นแทนที่จะติดเทปอุปกรณ์อิเล็กทรอนิกส์กับกระจก ฉันติดเทปอุปกรณ์อิเล็กทรอนิกส์เข้ากับแผ่นไม้ หน้าจอแล็ปท็อปเป็นแผงสีขาวที่ด้านล่างของกระจก
ดังที่คุณเห็นในภาพ ฉันเสียบอะแดปเตอร์แปลงไฟทั้งหมดไว้ในเต้ารับแบบหลายซ็อกเก็ต จึงมีสายเคเบิลเพียงเส้นเดียวที่หลุดออกจากเฟรม นี่คือเหตุผลที่ฉันต้องการแผ่นไม้ที่กว้างพอ (10 ซม.)
ฉันเจาะรูกว้าง 2 ซม. ที่ด้านขวาของกระจกเพื่อให้ตัวเข้ารหัสแบบหมุนสอดเข้าไปได้ สิ่งนี้ช่วยให้คุณเปลี่ยนระดับเสียง (เปิด) หรือปิดตัวจับเวลาและการเตือน (กด) ได้อย่างง่ายดาย
ฉันเจาะรู 8 มม. สองรูที่ด้านใดด้านหนึ่งของกระจกเพื่อกำหนดเส้นทางสายเคเบิลสำหรับแถบไฟ LED
ขั้นตอนที่ 8: เสร็จสิ้นการสัมผัส
ฉันเพิ่มผ้าสีดำที่ด้านหลังกระจกเพื่อซ่อนอุปกรณ์อิเล็กทรอนิกส์ นอกจากนี้ยังทำให้ภายในเคสมืดลง ซึ่งทำให้มองเห็นสายไฟผ่านกระจกได้ยากขึ้นมาก ฉันติดมันด้วยเวลโคร ทำให้เข้าถึงอุปกรณ์อิเล็กทรอนิกส์ได้ง่ายขึ้นเมื่อจำเป็น
คัดลอกโฟลเดอร์แบ็กเอนด์จากที่เก็บ Github ของฉันไปยังที่ที่คุณจะจำได้
เพิ่มหน่วย systemd เพื่อให้สคริปต์ python ทำงานเมื่อบูต:
sudo nano /etc/systemd/system/magicmirror.service
[หน่วย]
Description=บริการสำหรับสคริปต์ python magicmirror After=network.target [Service] ExecStart=/usr/bin/python3 -u app.py WorkingDirectory=/home/pi/magicMirror/Backend StandardOutput=inherit StandardError=inherit Restart=always User =pi [ติดตั้ง] WantedBy=multi-user.target
เปลี่ยน 'WorkingDirectory' เป็นไดเร็กทอรีแบ็กเอนด์ และเปลี่ยน User เป็นชื่อผู้ใช้ของคุณเอง
ขั้นตอนที่ 9: การโต้ตอบกับ Webapp
ท่องไปยังที่อยู่ IP (ซึ่งอยู่บนจอแสดงผล) คุณจะเห็นเว็บไซต์ที่เน้นมือถือเป็นหลักพร้อมคุณสมบัติดังต่อไปนี้:
- กราฟอุณหภูมิแบบโต้ตอบได้
- เวลา. เมื่อตัวจับเวลาทำงาน คุณจะเห็นการนับถอยหลังบนกระจกด้วย
- ระบบเตือนภัย
- แท็บการตั้งค่า ซึ่งคุณสามารถแก้ไขผู้ใช้ แหล่งข่าว และระดับเสียงของลำโพง
- ช่างทำผม รายการสิ่งที่ต้องทำจะปรากฏบนกระจก
Mirror.html คือหน้าที่แสดงบนกระจกวิเศษ ฉันเพิ่มตัวอย่างในภาพด้านบน
แนะนำ:
Beacon พยากรณ์อากาศ: 4 ขั้นตอน (พร้อมรูปภาพ)
บีคอนพยากรณ์อากาศ: ในโครงการนี้ ฉันกำลังนำเสนอแบบจำลองจากบีคอนสภาพอากาศในท้องถิ่นที่ฉันสร้างโดยใช้การพิมพ์ 3 มิติ, แถบ LED, แหล่งจ่ายไฟ และบอร์ด Arduino ที่มีการเชื่อมต่อ wifi เพื่อเข้าถึงการพยากรณ์อากาศของวันถัดไป จุดประสงค์หลักของการ
วงจรรบกวนคลื่นความถี่วิทยุ 555 ตัวจับเวลา: 6 ขั้นตอน
วงจร Jammer ความถี่วิทยุ 555 ตัวจับเวลา: วงจร Jammer ความถี่วิทยุ (RF) อธิบายตนเองได้ในสิ่งที่ทำ เป็นอุปกรณ์ที่ขัดขวางการรับสัญญาณ RF ของอุปกรณ์อิเล็กทรอนิกส์บางชนิดที่ใช้ความถี่ใกล้เคียงกันและอยู่ใกล้บริเวณที่ส่งสัญญาณรบกวน วงจร jammer นี้ w
Dub Siren Synth - 555 ตัวจับเวลา: 14 ขั้นตอน (พร้อมรูปภาพ)
Dub Siren Synth - 555 ตัวจับเวลา: Dub Siren! ผู้ชาย – ฉันไม่รู้ด้วยซ้ำว่ามีสิ่งเหล่านี้อยู่จนกระทั่งเพื่อนดีเจคนหนึ่งขอให้ฉันสร้างมันขึ้นมา ฉันต้องทำการขุด (ขุดมากจริงๆ – ไม่มีอะไรบนเน็ตอย่างน่าประหลาดใจ) เพื่อค้นหาประวัติของเสียงไซเรนและมันไม่ได้
High Intensity Interval Training (HIIT) ตัวจับเวลา: 3 ขั้นตอน
High Intensity Interval Training (HIIT) Timer: ที่ที่ฉันอาศัยอยู่ เดือนที่หนาวเหน็บดูเหมือนจะดำเนินต่อไปตลอดกาล ฉันจึงต้องหาวิธีออกกำลังกายที่ช่วยให้ฉันอยู่แต่ในบ้าน ฉันสามารถไปยิมได้ แต่ต้องใช้เวลามากเกินไป ฉันจะต้องอวดร่างเก่าของฉันในที่สาธารณะ และฉันจะไม่สามารถดู
ตัวจับเวลา 'Do More' ที่ได้รับแรงบันดาลใจจาก Casey Neistat: 4 ขั้นตอน (พร้อมรูปภาพ)
ตัวจับเวลา 'Do More' ซึ่งได้รับแรงบันดาลใจจาก Casey Neistat: ฤดูร้อน ฤดูที่น่ารักเมื่อสิ่งต่างๆ เกิดขึ้น แต่บางครั้งเราก็มักจะลืมเวลาไป ดังนั้นเพื่อเตือนเราถึงเวลาที่เหลือ ฉันได้ออกแบบตัวจับเวลาที่ขับเคลื่อนด้วย Arduino DIY 'Do More' ของ Casey Neistat ซึ่งสามารถตั้งโปรแกรมให้แสดงเวลาที่เหลือจากแม้กระทั่ง