תוכן עניינים:

Slimbox - רמקול Bluetooth חכם !: 10 שלבים (עם תמונות)
Slimbox - רמקול Bluetooth חכם !: 10 שלבים (עם תמונות)

וִידֵאוֹ: Slimbox - רמקול Bluetooth חכם !: 10 שלבים (עם תמונות)

וִידֵאוֹ: Slimbox - רמקול Bluetooth חכם !: 10 שלבים (עם תמונות)
וִידֵאוֹ: Trải nghiệm Loa Samsung Lever Box Slim IPx7 (Quà tặng Galaxy A3 2017) 2024, נוֹבֶמבֶּר
Anonim
Slimbox - רמקול Bluetooth חכם!
Slimbox - רמקול Bluetooth חכם!

שלום!

עבור פרויקט בית הספר שלי ב- MCT Howest Kortrijk, הכנתי מכשיר רמקול Bluetooth חכם עם חיישנים שונים, כולל LCD וטבעת NeoPixel RGB. הכל פועל ב- Raspberry Pi (מסד נתונים, שרת אינטרנט, Backend).

אז במדריך הזה אני אראה לכם איך הכנתי את הפרויקט הזה תוך 3 שבועות, שלב אחר שלב, אז אם מישהו מכם רוצה לשחזר את הפרויקט שלי, תוכלו לעשות זאת בקלות!

זו גם ההנחיה הראשונה שלי, אם יש לך שאלות, אנסה לענות עליהן במהירות האפשרית!

GitHub שלי:

שלב 1: אספקה

אספקה
אספקה
אספקה
אספקה
אספקה
אספקה

חיישן טמפרטורה DS18B20

ה- DS18B20 הוא חיישן בעל חוט אחד המודד את הטמפרטורה, המיוצר על ידי Maxim Integrated. ישנם 2 סוגים של חיישני DS18B20, הרכיב בלבד (בו השתמשתי) והגרסה העמידה למים, שהיא הרבה יותר גדולה, אבל זה לא מה שהייתי צריך לפרויקט שלי, אז השתמשתי ברכיב בלבד. החיישן יכול למדוד את הטמפרטורה בטווח של -55 ° C עד +125 ° C (-67 ° F עד +257 ° F) ויש לו דיוק של 0.5 ° C מ -10 ° C עד +85 ° C. יש לו גם רזולוציה הניתנת לתכנות בין 9 סיביות ל -12 סיביות.

גליון נתונים:

חיישן פוטנציומטר

פוטנציומטר הוא נגד בעל שלושה מסופים הניתן לכוונון ידני על ידי סיבוב החלק העליון של החיישן. מיקומו של החלק העליון קובע את מתח המוצא של הפוטנטיומטר.

מד תאוצה LSM303 + פריצת מצפן

לוח הפריצה LSM303 הוא שילוב של מד תאוצה משולש ציר ומגנטומטר / מצפן, המיוצר על ידי Adafruit. הוא משמש עם ממשק I2C של ה- Raspberry Pi.

סקירה כללית:

גליון נתונים:

MCP3008

כדי לקרוא את הנתונים מהפוטנציומטר שלי השתמשתי ב- MCP3008, שהוא ממיר אנלוגי לדיגיטלי בן 8 ערוצים עם ממשק SPI והוא די קל לתכנת.

גליון נתונים:

רמקול - קוטר 3” - 8 אוהם 1 ואט

זהו חרוט הרמקולים שבחרתי לאחר חישוב המתח והאמפר שהוא יזדקק לו והתאמה מושלמת לפרויקט Raspberry Pi שלי, המיוצר על ידי Adafruit.

סקירה כללית:

מגבר מונו מסוג MA298357 I2S Class-D

זהו המגבר שמגיע עם הרמקול, לא רק שהוא מגבר, הוא גם ממיר דיגיטלי לאנלוגי I2S, כך שהוא גם מתאים באופן מושלם למערכת הרמקולים והאודיו שלי.

סקירה כללית:

גליון נתונים:

ארדואינו אונו

ה- Arduino Uno הוא לוח מיקרו-בקר בעל קוד פתוח המבוסס על הבקר Microchip ATmega328P, המיוצר על ידי Arduino.cc. ללוח Uno יש 14 סיכות דיגיטליות, 6 סיכות אנלוגיות וניתן לתכנות במלואן עם תוכנת Arduino IDE

סקירה כללית:

שינוי רמות

זהו לוח קטן הדואג לתקשורת בין ה- Arduino Uno ו- Raspberry Pi לבין המתחים השונים, Arduino: 5V ו- Raspberry Pi: 3.3V. זה נחוץ מכיוון שטבעת NeoPixel מחוברת ל- Arduino ופועלת שם, בעוד שכל שאר הדברים פועלים ב- Raspberry Pi.

טבעת RGB NeoPixel

זוהי טבעת קטנה מלאה 12 נוריות RGB (אתה יכול לקנות טבעות גדולות יותר עם יותר נוריות RGB, אם אתה רוצה). אשר במקרה שלי מחובר ל- Arduino Uno, אך יכול גם להיות מחובר למכשירים רבים אחרים והוא ממש פשוט לשימוש.

סקירה כללית:

צג LCD 16X2

השתמשתי בתצוגת LCD בסיסית להדפסת הטמפרטורה, הנפח וכתובת ה- IP שלי.

גליון נתונים:

Raspberry Pi 3B+ ו -16 GB כרטיס SD

כל הפרויקט שלי פועל ב- Raspberry Pi 3B+ שלי עם תמונה מוגדרת, שאעזור לך להגדיר אותה מאוחר יותר בהוראה שלי.

GPIO T-Part, 2 לוחות לחם והרבה חוטים

כדי לחבר את כל מה שהייתי צריך לוחות לחם וגופנים, השתמשתי ב- GPIO T-part כך שיהיה לי יותר מקום וברור איזה סיכה הוא איזה.

שלב 2: סכמטי וחיווט

סכמטי וחיווט
סכמטי וחיווט
סכמטי וחיווט
סכמטי וחיווט
סכמטי וחיווט
סכמטי וחיווט

עבור סכמטי שלי השתמשתי Fritzing, זוהי תוכנה שאתה יכול להתקין אשר מאפשר לך ליצור סכמטי ממש קל בסוגים שונים של תצוגות.

הורד את Fritzing:

אז הקפד לחבר הכל בצורה הנכונה! במקרה שלי צבעי החוטים אינם זהים לסכימה.

שלב 3: עיצוב מסד נתונים

עיצוב מסדי נתונים
עיצוב מסדי נתונים

אנו אוספים הרבה נתונים משלושת החיישנים המחוברים, ולכן אנו זקוקים למאגר מידע בו ניתן לאחסן את הנתונים והחיישנים. בהמשך נראה כיצד להגדיר את מסד הנתונים ב- Raspberry Pi וכיצד להוסיף לו נתונים. אבל קודם כל יש ליצור את עיצוב מסד הנתונים או ERD (Diagram Relationship Diagram) וגם שלי היה מנורמל עם 3NF. לכן פיצלנו את החיישנים לשולחן אחר ועובדים עם תעודות זהות.

בסך הכל זהו עיצוב בסיסי וקל ממש לעבודה איתו.

שלב 4: הכנת ה- Raspberry Pi

אז עכשיו כשיש לנו כמה יסודות של הפרויקט. בואו נתחיל עם ה- Raspberry Pi!

תצורת כרטיס SD

ראשית, אתה צריך כרטיס SD בנפח 16 ג'יגה בו תוכל לשים את התמונה שלך ותוכנית להעלות תמונת התחלה לכרטיס ה- SD.

תוכנה:

תמונת התחלה:

אז ברגע שהורדות אלו:

  1. הכנס את כרטיס ה- SD שלך למחשב.
  2. פתח את Win32 שהורדת זה עתה.
  3. בחר את קובץ התמונה Raspbian שהורדת גם זה עתה.
  4. לחץ על 'כתוב' למיקום כרטיס ה- SD שלך.

הדבר עשוי להימשך זמן מה, תלוי בחומרה שלך. ברגע שזה נעשה, אנו מוכנים לבצע כמה התאמות אחרונות לפני הכנסת התמונה ל- RPi שלנו.

  1. עבור לספריית כרטיס ה- SD שלך, חפש את הקובץ בשם 'cmdline.txt' ופתח אותו.
  2. כעת הוסף 'ip = 169.254.10.1' באותה שורה אחת.
  3. שמור את הקובץ.
  4. צור קובץ בשם 'ssh' ללא סיומת או תוכן.

עכשיו אתה יכול להוציא בבטחה את כרטיס ה- SD מהמחשב שלך ולהכניס אותו ל- Raspberry Pi ללא חשמל. לאחר שכרטיס ה- SD נכנס ל- RPI, חבר כבל LAN מהמחשב שלך ליציאת ה- RPi LAN, לאחר חיבור זה תוכל לחבר את הכוח ל- RPi.

עכשיו אנחנו רוצים לשלוט ב- Raspberry Pi שלנו, זה נעשה באמצעות מרק.

תוכנת מרק:

לאחר ההורדה, פתח את Putty והכנס את ה- IP '169.254.10.1' והיציאה '22' וסוג החיבור: SSH. כעת נוכל סוף סוף לפתוח את ממשק שורת הפקודה שלנו ולהתחבר באמצעות פרטי ההתחברות של המתנע -> משתמש: pi וסיסמה: פטל.

Raspi-config

sudo raspi-config

מה שבאמת חשוב לפרויקט זה הוא סעיף הממשקים, עלינו לאפשר הרבה ממשקים שונים, לאפשר את כל הממשקים הבאים:

  • חוט אחד
  • SPI
  • I2C
  • סידורי

כעת, לאחר שסיימנו עם raspi-config, בואו ננסה ליצור חיבור לאינטרנט.

חיבור אינטרנט אלחוטי

ראשית, עליך להיות הבסיס לפקודות הבאות

sudo -i

ברגע שאתה שורש, השתמש בפקודה הבאה. SSID הוא שם הרשת והסיסמה שלך היא ללא ספק הסיסמה.

wpa_passphrase "ssid" "password" >> /etc/wpa_supplicant/wpa_supplicant.conf

במקרה שעשית טעות, תוכל לבדוק, לעדכן או למחוק רשת זו על ידי הזנת קובץ זה:

nano /etc/wpa_supplicant/wpa_supplicant.conf

אז לאחר שנכנסנו לרשת שלנו, בואו להיכנס לממשק לקוח WPA

wpa_cli

בחר את הממשק שלך

ממשק wlan0

טען מחדש את הקובץ

להגדיר מחדש

ולבסוף אתה יכול לראות אם אתה מחובר היטב:

ip א

עדכון ושדרוג

כעת, לאחר שאנו מחוברים לאינטרנט, עדכון החבילות שכבר מותקנות יהיה צעד חכם, אז בואו נעשה זאת תחילה לפני התקנת חבילות אחרות.

עדכון sudo apt-get

sudo apt-get upgrade

מאגר הנתונים של MariaDB

התקן את שרת מסד הנתונים של MariaDB:

sudo apt-get להתקין mariadb-server

שרת האינטרנט Apache2

התקן את שרת האינטרנט Apache2:

sudo apt להתקין apache2

פִּיתוֹן

התקן את פייתון:

עדכון-חלופות-התקן/usr/bin/python python /usr/bin/python2.7 1

עדכון-חלופות-התקן/usr/bin/python python/usr/bin/python3 2

חבילת פייתון

יהיה עליך להתקין את כל החבילות האלה כדי שהמשקוף יפעל בצורה מושלמת:

  • בקבוק
  • בקבוקי-קורס
  • Flask-MySql
  • Flask-SocketIO
  • PyMySQL
  • בקשות
  • Python-socketio
  • RPi. GPIO
  • Gevent
  • שקע Gevent-webs
  • אוג'סון
  • Wsaccel

ספריית רמקולים

התקן את ספריית הרמקולים מ- Adafruit:

curl -sS https://raw.githubusercontent.com/adafruit/Raspbe… | לַחֲבוֹט

הגיע הזמן לאתחל מחדש

sudo אתחול מחדש

שלב 5: העבר את הנדסת מסד הנתונים שלנו ל- RPi

עכשיו לאחר שהתקנו את כל מה שהיינו צריכים, בואו נשים את מסד הנתונים שעיצבנו על ה- Raspberry Pi שלנו!

אז קודם כל עלינו להעביר קדימה את מהנדס הנתונים שלנו בספסל העבודה של MySql, תוך כדי כך, העתק את קוד הנתונים המלא שלך ומחק את כל המילים 'הנראות' בו. אז ברגע שזה מועתק, אפשר לפתוח שוב מרק, להיכנס ולהקליד:

sudo mysql

ועכשיו אתה בממשק mysql, העתק בו את קוד מסד הנתונים שלך והקש enter.

עכשיו רק צריך ליצור משתמש

צור משתמש 'משתמש' המזוהה על ידי 'משתמש';

להעניק את כל ההפרשות על *. * ל'משתמש ';

עכשיו אתחל מחדש.

אז הכל צריך להיות מוגדר עכשיו, אתה יכול גם ליצור חיבור עם Pi ו- MySql Workbench שלך, כך שקל יותר לבדוק את כל הנתונים בטבלאות שלך.

שלב 6: הגדרת Bluetooth ב- RPi שלנו

אנו יוצרים רמקול בלוטות ', אז זה אומר שהתקשורת נשלחת מהמקור שלנו ל- Raspberry Pi ואפשר לעשות את זה די קל, בואו ניכנס לזה!

המקור שלי לחיבור ה- Bluetooth:

מסיר את ה- bluealsa שכבר פועל

sudo rm/var/run/bluealsa/*

הוסף תפקיד כיור פרופיל A2DP

סודו bluealsa -p a2dp -כיור &

פתח את ממשק ה- Bluetooth והפעל את ה- Bluetooth שלך

bluetoothctl

פועל

הגדר סוכן זיווג

סוכן על

סוכן ברירת מחדל

הפוך את ה- RPi שלך לגילוי

ניתן לגלות ב-

  • עכשיו ממכשיר ה- Bluetooth שלך, חפש את ה- RPi והתחבר אליו.
  • אשר את ההתאמה בשני המכשירים, הקלד 'כן' במרק שלך.
  • אשר שירות A2DP, הקלד שוב 'כן'.
  • ברגע שזה נעשה, אנו יכולים לסמוך על המכשיר שלנו, כך שלא נצטרך לעבור את כל זה בכל פעם שאנו רוצים להתחבר

אמון XX: XX: XX: XX: XX: XX (כתובת ה- bluetooth שלך ממכשיר המקור שלנו)

אם אתה רוצה שה- RPi שלך ימשיך להיות גלוי, זו בחירה שלך, אבל אני מעדיף לכבות אותו שוב, כך שאנשים לא יוכלו להתחבר לתיבה שלך

ניתן לגלות

אז נוכל לצאת ממשק ה- Bluetooth שלנו

יְצִיאָה

ולבסוף ניתוב השמע שלנו: העברת מכשיר המקור שלנו ל- RPi

bluealsa-aplay 00: 00: 00: 00: 00: 00

כעת המכשיר שלנו מחובר במלואו לפטל שלנו ואתה אמור להיות מסוגל לנגן מדיה ממכשיר המקור שלך ברמקול ה- Pi.

שלב 7: כתיבת ה- backend המלא

אז עכשיו ההתקנה הסתיימה, סוף סוף אנחנו יכולים להתחיל לכתוב את תוכנית backend שלנו!

השתמשתי ב- PyCharm לכל התמיכה האחורית שלי, אתה רק צריך לוודא שפרויקט PyCharm שלך מחובר ל- Raspberry Pi שלך, פירוש הדבר שנתיב הפריסה שלך מוגדר בהגדרות שלך והתקנת את כל החבילות הדרושות לנו, אמור כבר להתבצע בשלב 4.

השתמשתי בשיעורים שלי וכל אלה כלולים ב- GitHub שלי. הקישור נמצא בהקדמה למקרה שפיספסת;)

בקובץ ה- backend שלי השתמשתי בשיעורי שרשור, כך שהכל יכול לפעול בו זמנית וזה לא יפריע אחד לשני. ובתחתית קיבלת את כל המסלולים כדי שנוכל בקלות לקבל נתונים בחזית שלנו.

שלב 8: כתיבת חזית (HTML, CSS ו- JavaScript)

כעת, כשהסיום מסתיים, נוכל להתחיל לכתוב את מלוא הפרונט-אנד.

HTML & CSS נעשה די קל, ניסיתי קודם כל לעבוד בנייד כמה שאפשר, מכיוון שלרוב הפעמים אנו מתחברים ל- Bluetooth ממכשיר נייד, יהיה קל יותר לשלוט בלוח המחוונים הנייד.

אתה יכול לעצב את לוח המחוונים שלך בכל דרך שתרצה, אני פשוט אשאיר את הקוד והעיצוב שלי כאן, אתה יכול לעשות מה שאתה רוצה!

וג'אווסקריפט לא היה כל כך קשה, עבד עם כמה GET ממסלולי הגב שלי, המון מאזיני אירועים וכמה מבני שקע.

שלב 9: בניית התיק שלי והרכבת הכל ביחד

בונים את התיק שלי ומרכיבים הכל ביחד
בונים את התיק שלי ומרכיבים הכל ביחד
בונים את התיק שלי ומרכיבים הכל ביחד
בונים את התיק שלי ומרכיבים הכל ביחד
בונים את התיק שלי ומרכיבים הכל ביחד
בונים את התיק שלי ומרכיבים הכל ביחד

התחלתי עם כמה סקיצות של איך אני רוצה שהתיק יראה, משהו חשוב הוא שהוא צריך להיות גדול מספיק כדי שהכל יתאים, מכיוון שיש לנו מעגל גדול להכניס למארז.

הכנתי את המארז מעץ, אני חושב שזה הכי קל לעבוד איתו כשאין לך כל כך הרבה ניסיון בבניית מארזים ויש לך גם הרבה דברים שאתה יכול לעשות איתו.

התחלתי ממארז לבקבוקי יין ופשוט התחלתי לנסר את העץ. ברגע שהיה לי את המארז הבסיסי שלי, הייתי רק צריך לקדוח בו חורים (הרבה בחזית המארז, כפי שאתה יכול לראות בתמונות: P) ולשים בו כמה מסמרים, זה ממש מקרה בסיסי, אבל זה נראה די מגניב ומתאים מושלם.

וברגע שהתיק נעשה, הגיע הזמן לחבר את הכל, כפי שניתן לראות בתמונה האחרונה! זה די בלגן בתוך הקופסה, אבל הכל עובד ולא היה לי הרבה יותר מקום, אז אני ממליץ לך אולי ליצור מארז גדול יותר אם אתה משחזר את הפרויקט שלי.

שלב 10: כמה בעיות שהיו לי בדרך ליצירת רמקול ה- Slimbox …

שגיאות Bluetooth ו- bluealsa

בכל פעם שרציתי לנגן מוזיקה או להתחבר ל- bluetooth, קיבלתי שגיאות מ- bluetooth ו- bluealsa. עשיתי מחקר בנושא וזה היה הפתרון לבעיה שלי. אז מסיבה כלשהי ה- bluetooth שלי נחסם ברכות, לא בטוח אם זה חסום רך סטנדרטי. אתה יכול לראות אם זה על ידי הקלדת הפקודה הבאה במרק שלך.

רשימת rfkill

אז אם הוא חסום רך, פשוט השתמש בזה:

rfkill בטל חסימת Bluetooth

ואולי תרצה לאתחל לאחר מכן, המקור שלי:

בעיות בחיבור סדרתי

אז עוד בעיה גדולה שהייתה לי היא שאני לא יכול ליצור שום קשר עם הארדואינו שלי באמצעות מחליק הרמות, לאחר חיפושים כלשהם גיליתי שה- '/dev/ttyS0' שלי נעלם וזה יכול להיות בגלל עדכון ה- RPi שלך. מצאתי גם פתרון בנושא

יהיה עליך להפעיל מחדש את המסוף הטורי באמצעות raspi-config, לאתחל מחדש ולאחר מכן להסיר באופן ידני את הסיביות "console = serial0, 115200" מ- '/boot/cmdline.txt'. אשר כי 'enable_uart = 1' נמצא ב- ' /boot/config.txt 'והפעל מחדש. זה אמור להחזיר את יציאת ttyS0 שלך, כמו גם את הקישור הרך'/dev/serial0 'אליו.

מקור:

מוּמלָץ: