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

Beargardian: 5 שלבים
Beargardian: 5 שלבים

וִידֵאוֹ: Beargardian: 5 שלבים

וִידֵאוֹ: Beargardian: 5 שלבים
וִידֵאוֹ: Teddy Bear SCP-6330 Guardians of the Innocent (SCP Animation) 2024, נוֹבֶמבֶּר
Anonim
ברגרדן
ברגרדן

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

התכונות

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

מידע קצר

תן לי להסביר זאת בגרסה קצרה. אז אנחנו צריכים אתר אינטרנט ולפרויקט הזה אני משתמש בבקבוק, אנחנו צריכים גם מסד נתונים ואני משתמש ב- mysql, גם סקריפט שמריץ את החומרה וזה עם פייתון (3) וכאחרון אנחנו צריכים התקנת שרת. זה יהיה nginx ב- PI.

מה אנחנו צריכים

  • ה- Raspberry Pi 3
  • המנוע החורג 28BYJ
  • שבב המנוע החורג ULN2003 צעד צעד
  • RGB מנורה עם 3 נגדים 330Ohm
  • מצלמת Pi NoIR V2
  • החיישן הקולי HC-SR04
  • מודול המיקרו מבית ardiuno
  • ה- MAX98357A
  • רמקול 8 אוהם
  • ואל תשכח לקנות דוב

הגדרת פטל פאי ----------------------------------------------- -------------------------------------------------- --------------------------

בהתחלה עלינו להתקין את ה- Pi. התחל כבר להתחבר באמצעות מרק, אם אין לך מרק אני ממליץ לך להוריד את זה, פשוט הקלד את ה- IP הסטטי של ה- Pi עם ssh ותלך עם זה. אם אתה צריך להתקין את ה- Raspberry Pi אז קיבלתי חדשות רעות, אני לא מסביר את זה בפרויקט הזה.

התקן חבילות

עדכון sudo apt

sudo apt install -y python3-venv python3-pip python3-mysqldb mysql-server uwsgi nginx uwsgi-plugin-python3

סביבה וירטואלית

python3 -m pip להתקין -שדרוג pip setuptools גלגל וירטואלי

mkdir {שם התיקייה של הפרויקט שלך} && cd {שם התיקייה של הפרויקט שלך} python3 -m venv-system-site-packages env מקור env/bin/activ 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
  • env
  • חיישן
  • sql
  • אינטרנט

מאגר מידע

sudo systemctl סטטוס mysql

ss -lt | grep mysql sudo mysql

צור משתמש במסד הנתונים עם כל ההרשאות והפוך את מסד הנתונים שלך

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

צור שם מסד הנתונים שלך; להעניק את כל ההרשאות על שם הנתונים שלך.* ל'משתמש '@' localhost 'עם אפשרות מענק;

קבצי conf עבור השרת

ב- uwsgi-flask.ini אתה משנה 'module = …' ל- 'module = web: app' ואת הנתיב לרשת הווירטואלית שלך שיצרת. בקבצים האחרים עליך לשנות את הנתיבים לנתיבים המוחלטים בפועל של הספרייה שלך.

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

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

sudo systemctl daemon-reload sudo systemctl הפעל פרוייקט 1-* פרוייקט סטטוס sudo systemctl1-*

עכשיו אנחנו צריכים להגדיר את זה זמין

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: חיבור החומרה לפי

חיווט החומרה לפי
חיווט החומרה לפי

באמצעות 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 בתיקייה סטטית/css. אתה יכול להתאים אישית את ה- CSS באופן מלא כרצונך.

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

בקבוק יבוא # בהתחלה

מיבוא הבקבוק * @app.route ('/') index index (): החזר render_template ('index.html')

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

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

יצירת מסד הנתונים
יצירת מסד הנתונים

למעריצים האמיתיים אני הולך לספר לכם כיצד ליצור את אותו מסד נתונים.

אז ראשית עלינו ליצור את מסד הנתונים אם לא עשית זאת בשלב הראשון.

צור מסד נתונים beargardian;

ברגע שעשית זאת אתה יוצר את הטבלאות בספסל העבודה של mysql או ב- phpadmin

בטבלת משתמשים יש

  • תעודת זהות של משתמש
  • שם פרטי
  • שם משפחה
  • אימייל
  • שם בייבי
  • סיסמא עם sha1
  • תיקיית משתמשים
  • playmusic (int)
  • פנס (int)
  • הקלטת השמעה (int)

לשולחן המוזיקה יש

  • musicID
  • שִׁיר
  • נָתִיב
  • תיקיית משתמשים
  • סטָטוּס
  • כרך

שולחן הקלטות יש

  • מזהה הקלטה
  • נָתִיב
  • תיקיית משתמשים
  • זְמַן
  • יְוֹם

בטבלת הצבעים יש

  • colorID
  • אָדוֹם
  • ירוק
  • כָּחוֹל
  • בְּהִירוּת
  • תעודת זהות של משתמש

לשולחן הדוב יש

  • bearID (עשרוני (8))
  • null ברירת מחדל של userID
  • שם דוב

שולחן חיישן יש

  • sensorID
  • מֶרְחָק
  • מיקרו
  • bearID
  • זְמַן
  • יְוֹם
  • זמן שינה

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

שלב 4: קידוד חומרה

אציג מעט קוד ואגיד לך מדוע עשיתי זאת כך.

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

יבוא _threaddef function_name (משהו, something_else): קוד להפעלה

_thread.start_new_thread (שם פונקציה, tuple_with_the_functions_variables)

אם הסתכלת על התוכנית שלי ראית logger.info ('…'). זוהי פונקציית ההדפסה אבל הרבה יותר טובה, כי ב- Pi אי אפשר להדפיס דברים אז אני אכין קובץ ומדפיס אותו שם. יו יכול להגדיר את קובץ היומן באמצעות קוד זה.

logger = logging.getLogger (_ שם _) logger.setLevel (logging. INFO) # צור מטפל בקבצים = logging. FileHandler ('logger.log') handler.setLevel (logging. INFO)

# צור פורמט רישום

formatter = logging. Formatter (' %(שעון הזמן) s - %(שם) s - %(הודעה) s') handler.setFormatter (פורמט)

# הוסף את המטפלים ללוגר

logger.addHandler (מטפל)

logger.info ('הפעלת חומרה / n ---------------------------------------')

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

מוּמלָץ: