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

פרויקט Arduino: בקרת אלקטרוניקה באינטרנט באמצעות Nodejs + מסד נתונים ואתר SQL .: 6 שלבים
פרויקט Arduino: בקרת אלקטרוניקה באינטרנט באמצעות Nodejs + מסד נתונים ואתר SQL .: 6 שלבים

וִידֵאוֹ: פרויקט Arduino: בקרת אלקטרוניקה באינטרנט באמצעות Nodejs + מסד נתונים ואתר SQL .: 6 שלבים

וִידֵאוֹ: פרויקט Arduino: בקרת אלקטרוניקה באינטרנט באמצעות Nodejs + מסד נתונים ואתר SQL .: 6 שלבים
וִידֵאוֹ: פרויקטים בתחומים תוכנה, אלקטרוניקה ומכאניקה 2024, נוֹבֶמבֶּר
Anonim
פרויקט Arduino: שליטה באלקטרוניקה באינטרנט באמצעות Nodejs + מסד נתונים ואתר SQL
פרויקט Arduino: שליטה באלקטרוניקה באינטרנט באמצעות Nodejs + מסד נתונים ואתר SQL
פרויקט Arduino: שליטה באלקטרוניקה באינטרנט באמצעות Nodejs + מסד נתונים ואתר SQL
פרויקט Arduino: שליטה באלקטרוניקה באינטרנט באמצעות Nodejs + מסד נתונים ואתר SQL
פרויקט Arduino: שליטה באלקטרוניקה באינטרנט באמצעות Nodejs + מסד נתונים ואתר SQL
פרויקט Arduino: שליטה באלקטרוניקה באינטרנט באמצעות Nodejs + מסד נתונים ואתר SQL

פרויקט מאת: Mahmed.tech

תאריך יצירה: 14 ביולי 2017

רמת קושי: מתחיל עם ידע בתכנות.

דרישת חומרה:

- Arduino Uno, Nano, Mega (אני חושב שרוב ה- MCU עם החיבור הטורי יעבוד)

- LED יחיד ונגד הגבלת זרם. השתמש במחשבון זה אם אינך בטוח: מחשבון חוק אוהם

- פוטנציומטר 10K.

דרישת תוכנה:

- Arduino IDE

- Node. JS (זוהי תוכנה במחשב, פשוטה מאוד להתקנה)

- שרת MySQL (הדרך הקלה ביותר שמצאתי היא להשתמש באירוח אתרים זול. תוכל גם לקבל שמות דומיינים בחינם)

שפת תכנות וסקריפטים בשימוש:

Arduino (משתנה C/C ++), JavaScript (Nodejs), PHP, HTML ו- CSS

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

שלב 1: לוגיקת תוכנה: ארכיטקטורת מערכת

לוגיקת תוכנה: ארכיטקטורת מערכת
לוגיקת תוכנה: ארכיטקטורת מערכת

נתוני פוטנציומטר:

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

נתוני Led:

עבור LED הבהירות PWM תוגדר על ידי המשתמש בדף אינטרנט מרוחק, כך שהמסע שלו מתחיל בקצה הנגדי של הספקטרום. נתוני הקלט נשמרים במסד נתונים של SQL, כל מרווח קבוצות שבסיס הנתונים נבדק על שינוי ב- PWM מוביל, זה נעשה על ידי NodeJS. אם הערך שונה מהערך הקודם, הערך החדש יישלח לארדואינו באמצעות אוטובוס סדרתי. ה- Arduino משנה את ערך PWM הפלט של ה- led כדי לשנות את בהירותו.

מחשבון חוק אוהם משתמש בנוסחה V = IR ו- P = IV = I²R = V²/R עבור פרויקט זה אשתמש בלד כחול. זה חשוב מכיוון שככל שתדר האור גדל גם ירידת המתח עולה. מכיוון שלאור כחול יש תדירות גבוהה יותר בהשוואה למשהו כמו LED אדום. המשמעות היא מתח קדימה גבוה יותר. בהתאם לייצור, סוג וגודל טווח העבודה ישתנה. עבור ההתקנה שלי, השתמשתי בנגד 220 Ω בסדרה, שלילי לקרקע וחיובי לסיכת PWM על Arduino. הסיר היה מחובר לסיכה אנלוגית. עם 5VCC קצה אחד GND השני והסיכה האמצעית מחוברים לסיכה אנלוגית (A0 במקרה שלי).

שלב 2: שלב 1: חיווט חומרה

שלב 1: חיווט חומרה
שלב 1: חיווט חומרה

זה פשוט מאוד: פשוט חבר את הנגד המגביל הנוכחי שלך בסדרה עם ה- LED וודא שההנהגה שלך תקינה. נקודה אחת תגיע ל- GND ואילו קצה אחר יגיע לסיכת Arduino. עבור ההתקנה שלי, השתמשתי בסיכה 12 עבור LED ו- A7 עבור Pot. אין לי סכמטי מאז המעגל הפשוט מאוד שלו. עם זאת, מצאתי את זה באינטרנט (תמונה)

שלב 3: שלב 2: ארדואינו

ראשית, הלייד והסיר נבדקו אם הם עובדים כצפוי. זה היה על ידי תוכנית פשוטה שבה ערך הסיר שולט ב- LED. השתמשתי בפונקציית אילוץ כדי לשנות את טווח הסירים של 0 עד 1023 ל -0 ל- 255, אבל גם פשוט /4 עובד. ערך הסיר הוחלק על ידי לקיחת הממוצע הממוצע מ -10 קריאות רצופות, זאת כדי להסיר קוצים. (עם זאת, החלקה זו גרמה לבעיות ב- NodeJS כך שהוסרה בהמשך הפרויקט - עוד על כך)

קוד ארדואינו

הקריאה / כתיבה סדרתית השלב הבא הוא לקחת קלט משתמשים באמצעות חלונות הצג הטוריים המסופקים על ידי ה- Arduino ide כדי להגדיר את הבהירות. לשם כך, נעשה שימוש ב- serial.parseInt () שלוקח ערך שלם ומתעלם ממחרוזת. כמו כן, בדיקת שגיאה מתווספת לקוד. הטווח התקף של ערך PWM הוא 0 - 255, כאשר משתמש מזין> 255 אז הוא מקצה את הערך 255 ואם המשתמש מזין ערך או <+/- 5 עשיתי זאת כדי להפוך את הקריאה ליציבה יותר מכיוון שהיא הייתה תנודה. מדוע זו בעיה גדולה הקשורה לעדכון SQL, עוד על כך בהמשך.

שלב 4: שלב 3: NodeJS

אני לא הולך להראות לך כיצד להשיג או להגדיר שרת SQL. יש טונות של הדרכות בחוץ.

לתוכנית NodeJS יש 3 היבטים עיקריים:

קרא נתונים סידוריים

כתוב נתונים סידוריים

עדכן את מסד הנתונים של SQL

כדי ליצור חיבור טורי בתוך NodeJS, יש להוריד מודול בשם serialport שניתן לבצע אותו באמצעות הפקודה npm. פתח את CMD בתיקייה שבה תוכנת NodeJS תישמר, התקן על ידי הקלדה: npm install serialport כמו כן יש להתקין את מודול SQL כדי להתחבר למסד הנתונים SQL: npm להתקין mysql NodeJS - יציאה סידרית השלב הראשון שלי עם ה- NodeJS התוכנית הייתה לקרוא את הנתונים המודפסים ולשלוח בהירות pwm ל- Arduino. זה נעשה על ידי פתיחת חיבור טורי באותו קורבנות ויציאה זהים. לאחר חיבור הקשר קראתי הודעות נכנסות והדפסתי אותו על חלון הקונסולה. הבעיה עלתה כאשר ניסיתי לכתוב את ערך pwm כדי לשלוט על הבהירות.

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

NodeJS - MySQL ספריית MySQL שימשה (npm להתקין MySQL) כדי להתחבר למסד הנתונים של SQL מכיוון שהשרת במיקום מרוחק השתמש בכתובת ה- IP של השרת במקום ב- localhost.

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

NodeJSCode Link

שלב 5: שלב 4: ממשק האינטרנט

שלב 4: ממשק האינטרנט
שלב 4: ממשק האינטרנט

ממשק אינטרנט

דף האינטרנט הראשי נכתב ב- PHP מכיוון שכבר היה לי ניסיון כלשהו ממאגרי ה- CO323 שלי וממודול האינטרנט באוניברסיטה. טבלת וטופס HTML שימשו להצגת נתוני ה- sql.

קוד גישה של PHP PHP: קישור גלול למקטע ממשק אינטרנט.

HTML & CSS * קוד דף אינטרנט של Javascript: קישור גלול לתחתית

דף אינטרנט סופי

מוּמלָץ: