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

תחילת העבודה עם Arduino ו- Ethernet: 8 שלבים
תחילת העבודה עם Arduino ו- Ethernet: 8 שלבים

וִידֵאוֹ: תחילת העבודה עם Arduino ו- Ethernet: 8 שלבים

וִידֵאוֹ: תחילת העבודה עם Arduino ו- Ethernet: 8 שלבים
וִידֵאוֹ: #8 Как запрограммировать ПЛК Outseal Arduino — счетчики 2024, יולי
Anonim
תחילת העבודה עם Arduino ו- Ethernet
תחילת העבודה עם Arduino ו- Ethernet

ה- Arduino שלך יכול לתקשר בקלות עם העולם החיצון באמצעות חיבור Ethernet קווי. אולם לפני שנתחיל, יש להניח שיש לך הבנה בסיסית של רשתות מחשבים, כגון הידע כיצד לחבר מחשבים לרכזת/נתב באמצעות כבלי RJ45, מהי כתובת IP ו- MAC וכן הלאה. יתר על כן, הנה סקירה מהירה טובה על אתרנט.

תזדקק ללוח Arduino Uno או לוח תואם עם מגן אתרנט המשתמש במעגל ה- IC של בקר W5100 (פחות או יותר כולם) לפי התמונה.

יתר על כן, תצטרך להפעיל את הלוח באמצעות שקע DC חיצוני - ה- W5100 IC משתמש בזרם רב יותר מכוח הספק USB. חבילת תקע 9V 1.5A/יבלת לקיר תספיק.

שלב 1:

תמונה
תמונה

לבסוף - המגינים אכן מתחממים - לכן היזהרו לא לגעת ב- W5100 לאחר שימוש ממושך. למקרה שאתה לא בטוח - זהו ה- IC W5100.

שלב 2:

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

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

IPAddress ip (10, 1, 1, 77);

ושנה אותו כך שיתאים להתקנה שלך. לדוגמה, בביתנו כתובת ה- IP של הנתב היא 10.1.1.1, המדפסת היא 10.1.1.50 וכל המחשבים הנם מתחת … 50. אז אני אקבע את כתובת ה- IP שלי למצב 10.1.1.77 על ידי שינוי הקו ל:

בייט mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED};

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

שלב 3:

תמונה
תמונה

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

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

מה קורה?

ה- Arduino תוכנת להציע דף אינטרנט פשוט עם הערכים הנמדדים על ידי הכניסות האנלוגיות. אתה יכול לרענן את הדפדפן כדי לקבל ערכים מעודכנים. בשלב זה - שים לב שמגני ה- Ethernet משתמשים בסיכות דיגיטליות 10 ~ 13, כך שלא תוכל להשתמש בהם לשום דבר אחר. בחלק ממגני ה- Ethernet של Arduino עשויים להיות גם שקע של כרטיס microSD, שמשתמש גם בסיכה דיגיטלית אחרת - לכן בדוק בתיעוד כדי לברר איזה מהם.

שלב 4:

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

עבור (int analogChannel = 0; analogChannel <6; analogChannel ++) {int sensorReading = analogRead (analogChannel); client.print ("קלט אנלוגי"); client.print (analogChannel); client.print ("is"); client.print (sensorReading); client.println (""); } client.println ("");

אני מקווה שחלק זה של המערכון צריך להיות מוכר - זכור כיצד השתמשנו ב- serial.print (); בעבר בעת שליחת נתונים לתיבת הצג הטורי? ובכן עכשיו אנחנו יכולים לעשות את אותו הדבר, אבל לשלוח נתונים ממגן ה- Ethernet שלנו בחזרה לדפדפן אינטרנט - במילים אחרות, סוג בסיסי מאוד של דף אינטרנט. עם זאת, יש משהו שאולי תרצה ללמוד או לא תרצה לעצב אותו. הפלט בפורמט קריא - קוד HTML. אני לא מפתח אתרים (!) ולכן לא אתעמק יותר מדי ב- HTML.

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

client.print ("is");

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

client.println ("");

ששולח את קוד ה- HTML חזרה לדפדפן האינטרנט המורה לו להתחיל שורה חדשה. החלק שבאמת גורם להחזרת הכרכרה/הקו החדש הוא

שהוא קוד HTML (או "תג") לשורה חדשה.

כך שאם אתה יוצר דפי אינטרנט משוכללים יותר, תוכל פשוט להוסיף תגי HTML אחרים ב- client.print (); הַצהָרָה. אם אתה רוצה ללמוד עוד על פקודות HTML, הנה אתר הדרכה טוב.

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

שלב 5: גישה ל- Arduino שלך דרך האינטרנט

גישה ל- Arduino שלך דרך האינטרנט
גישה ל- Arduino שלך דרך האינטרנט

בינתיים הכל טוב. אבל מה אם אתה רוצה לגשת ל- Arduino שלך מחוץ לרשת המקומית?

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

אם ספק שירותי האינטרנט שלך לא יכול להציע לך כתובת IP סטטית, עדיין תוכל להתקדם עם הפרויקט באמצעות ארגון המציע DNS דינאמי. ארגונים אלה מציעים לך שם מארח IP סטטי משלך (למשל mojo.monkeynuts.com) במקום מספר, עקוב אחר כתובת ה- IP המשתנה שלך וקישר אותו לשם המארח החדש. ממה שאני יכול לאסוף, המודם שלך צריך לתמוך (יש לקוח מובנה עבור …) שירותי DDNS אלה.

כדוגמה, שתי חברות הן No-IP ו- DynDNS.com. שים לב שלא השתמשתי בשניים אלה, הם מוצעים רק כדוגמאות. כעת, כדי למצוא את כתובת ה- IP שלך … בדרך כלל ניתן למצוא זאת על ידי כניסה לדף הניהול של הנתב שלך - בדרך כלל היא 192.168.0.1 אך יכולה להיות שונה. בדוק עם הספק או ספק האינטרנט שלך אם הם סיפקו את החומרה. בדוגמה זו, אם אזין 10.1.1.1 בדפדפן אינטרנט, ולאחר הזנת סיסמת ניהול המודם שלי, המסך הבא מוצג בהתאם לתמונה.

שלב 6:

תמונה
תמונה

מה שאתה מחפש הוא כתובת ה- IP שלך ב- WAN, כפי שאתה יכול לראות בתמונה למעלה. כדי להרחיק את התעלולים, השחרתי חלק מהכתובת שלי.

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

שרת EthernetServer (125);

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

שלב 7:

תמונה
תמונה

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

לאחר שמירת ההגדרות, כולנו מסודרים. הכתובת החיצונית של מגן ה- Ethernet שלי תהיה ה- WAN: 125, כך שכדי לגשת ל- Arduino אכתוב את כתובת ה- WAN שלי עם: 125 בסוף לדפדפן של מכשיר האינטרנט המרוחק, אשר יצור קשר עם חומרת ה- Ethernet הבודדת בבית.

יתר על כן, ייתכן שיהיה עליך לשנות את הגדרות חומת האש של המודם שלך, על מנת לאפשר ליציאה 125 להיות "פתוחה" לבקשות נכנסות. עיין בתיעוד המודם שלך למידע נוסף על אופן הפעולה. כעת, מכל מכשיר המחובר לאינטרנט בעולם החופשי, אני יכול להזין את מספר ה- WAN והיציאה שלי בשדה ה- URL ולקבל את התוצאות. לדוגמה, מטלפון כשהוא מחובר לאינטרנט באמצעות נתונים ניידים LTE.

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

שלב 8: הצגת נתוני חיישן בדף אינטרנט

הצגת נתוני חיישן בדף אינטרנט
הצגת נתוני חיישן בדף אינטרנט

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

חבר את DHT22 עם סיכת הנתונים ל- Arduino D2, Vin לסיכה 5V ו- GND ל- … GND. עכשיו לסקיצה שלנו - להציג את הטמפרטורה והלחות בדף אינטרנט. אם אתה לא יודע HTML אתה יכול להשתמש בשירותים מקוונים כגון זה כדי ליצור את הקוד, ולאחר מכן תוכל לשנות אותו לשימוש בסקיצה. בדוגמה שלהלן נתוני הטמפרטורה והלחות מ- DHT22 מוצגים בדף אינטרנט פשוט:

#כלול "SPI.h"#כלול "Ethernet.h"

// לחיישן DHT22

#כלול "DHT.h" #הגדר DHTPIN 2 #הגדר DHTTYPE DHT22

// הזן להלן כתובת MAC וכתובת IP לבקר שלך.

// כתובת ה- IP תהיה תלויה ברשת המקומית שלך: בייט mac = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; IPAddress ip (10, 1, 1, 77);

// אתחל את ספריית שרת ה- Ethernet

// עם כתובת ה- IP והיציאה שבה ברצונך להשתמש // (יציאת 80 היא ברירת המחדל עבור HTTP): שרת EthernetServer (125); DHT dht (DHTPIN, DHTTYPE);

הגדרת חלל ()

{dht.begin (); // פתח תקשורת טורית והמתן לפתיחת הנמל: Serial.begin (9600); בעוד (! סדרתי) {; // המתן לחיבור יציאה טורית. דרוש לאונרדו בלבד} // הפעל את חיבור ה- Ethernet ואת השרת: Ethernet.begin (mac, ip); server.begin (); Serial.print ("השרת נמצא ב"); Serial.println (Ethernet.localIP ()); }

לולאת חלל ()

{// האזינו ללקוחות נכנסים לקוח EthernetClient = server.available (); if (לקוח) {Serial.println ("לקוח חדש"); // בקשת http מסתיימת בשורה ריקה בוליאנית currentLineIsBlank = true; while (client.connected ()) {if (client.available ()) {char c = client.read (); Serial.write (ג); // אם הגעת לסוף השורה (קיבלת שורה חדשה // תו) והשורה ריקה, בקשת http הסתיימה, כך שתוכל לשלוח תשובה אם (c == 'n' && currentLineIsBlank) {// שלח כותרת תגובה רגילה של http http client.println ("HTTP/1.1 200 OK"); client.println ("סוג תוכן: טקסט/HTML"); client.println ("חיבור: סגור"); // החיבור ייסגר לאחר השלמת תגובה client.println ("רענן: 30"); // רענן את הדף באופן אוטומטי כל 30 שניות client.println (); client.println ("");

client.println ("");

// לקבל נתונים מחיישן DHT22

float h = dht.readHumidity (); float t = dht.readTemperature (); Serial.println (t); Serial.println (ח);

// מכאן נוכל להזין קוד HTML משלנו ליצירת דף האינטרנט

client.print ( מזג אוויר במשרד

טמפרטורת משרד - );

client.print (t);

client.print ( מעלות צלזיוס

);

client.print ("

לחות - );

client.print (ח);

client.print ( אחוז

);

client.print ("

הדף מתרענן כל 30 שניות <

. );

לשבור;

} אם (c == 'n') {// אתה מתחיל שורה חדשה currentLineIsBlank = true; } אחרת אם (c! = 'r') {// קיבלת תו בשורה הנוכחית currentLineIsBlank = false; }}}} // לתת לדפדפן האינטרנט זמן לקבל את עיכוב הנתונים (1); // סגור את החיבור: client.stop (); Serial.println ("הלקוח נותק"); }}

זהו שינוי של שרטוט דוגמאות שרת האינטרנט של IDE שהשתמשנו בו בעבר - עם כמה שינויים. ראשית, דף האינטרנט יתחדש אוטומטית כל 30 שניות - פרמטר זה מוגדר בשורה:

client.println ("רענן: 30"); // רענן את הדף באופן אוטומטי כל 30 שניות

… וה- HTML המותאם אישית לדף האינטרנט שלנו מתחיל מתחת לשורה:

// מכאן נוכל להזין קוד HTML משלנו ליצירת דף האינטרנט

לאחר מכן תוכל פשוט להכניס את ה- HTML הדרוש לפונקציות client.print () כדי ליצור את הפריסה הדרושה לך. לבסוף - להלן צילום מסך של הסקיצה לדוגמה בעבודה.

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

מוּמלָץ: