ברוכים הבאים לבלוג:
 

    מיליון פרויקטים

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

יניב אור

מודול ESP8266 - WiFi

עבדתי לאחרונה עם ה-system-on-chip שנקרא ESP8266. זהו רכיב IoT בסיסי לתקשורת WiFi אותו ניתן לתכנת. יש אפשרות להשתמש בו כתחנה (מכשיר ברשת) החיבור הצליח. בדקתי שוב את ה-IP. הפעם הוא 192.168.1.14. מצויין. הדבר הבא שאני מעוניין לעשות הוא להפוך את הרכיב לשרת HTTP. קודם כל יש צורך לאפשר ריבוי חיבורים לרכיב בעזרת הפקודה AT+CIPMUX=1. לאחר מכן ניצור שרת שיאזין על פורט 80. הפקודה היא AT+CIPSERVER=1,80. פתחתי את הדפדפן במחשב והזנתי את כתובת ה-IP של הרכיב. הדף בטעינה ומחכה לתשובה מהשרת. במקביל, בטרמינל של הרכיב, הופיע מידע על החיבור שהתבצע ובקשת GET ל-/. לשליחת תשובה מהשרת, דבר ראשון יש צורך להגדיר מה מספר התווים שאנו עומדים לשלוח. לשליחת 6 תווים, למשל, נכתוב AT+CIPSEND=0,6. אם הכל תקין, יופיע OK ומתחתיו הסימן <. כעת ניתן לשלוח הודעה ללקוח שהתחבר. שלחתי את המחרוזת 123456789, יותר מ-6 תווים, לצורך בדיקה. הדבר הבא שצריך לעשות הוא לשלוח close כדי שההודעה תישלח. הפקודה היא AT+CIPCLOSE=0 . בדפדפן הופיע 123456. לאחר מכן הופיעה בטרמינל הודעה על בקשה ל-favicon.ico אותו מבקש הדפדפן כברירת מחדל. באותה צורה, ניתן לשלוח הודעות לשרת, בעזרת Telnet, למשל. מעבר לכך, יש עוד פקודות AT רבות נוספות אך כאן עצרתי והמשכתי לסביבת פיתוח ושפת תכנות נוחה ויעילה יותר. יש מספר אפשרויות כמו למשל פיתוח בשפת LUA מול ה-firmware שנקרא NodeMCU ויש אפשרות גם לכתוב בפייתון. אני בחרתי ב-++C לסביבת ארדואינו. כדי שתוכנת הארדואינו תדע לעבוד עם ה-ESP8266, יש צורך להתקין את הספריה המתאימה. נכנסים ל-File ואז ל-Preferences. מעתיקים את הכתובת הבאה: http://arduino.esp8266.com/stable/package_esp8266com_index.json ומדביקים אותה בשדה: Additional Boards Manager URLs לאחר מכן נכנסים ל-Tools ואז ל-Boards Manager. ובחלון שנפתח מחפשים את esp8266 ומתקינים. התמונה היא לאחר התקנה. חוזרים למסך הקודם ובוחרים את: Generic ESP8266 Module. לאחר ההתקנה, יש עשרות דוגמאות מוכנות לשימוש. ננסה, למשל, שרת web פשוט. הדוגמא שנקראת: HelloServer. הסבר קצר על הקוד. מאוד פשוט. בראש הקובץ יש הכללה של מספר ספריות. ספריה לטיפול ב-WiFi ל-ESP8266, ספריה שמכילה פונקציות להתחברות לרשת אלחוטית, ספריה ליצירת שרת web וספריה לטיפול ב-DNS. לאחר מכן יש מספר הגדרות. הגדרת שם והסיסמא של הרשת האלחוטית אליה נרצה להתחבר. בהמשך יש יצירת שרת שיאזין לפורט 80. לבסוף יש הגדרת נורת לד על פין 13, לצורך חיווי. בפונקציית setup נעשה חיבור לרשת האלחוטית כשלצורך דיבאג יש כתיבת לוג ב-serial. כמו כן יש הרצה של השרת והאזנה לבקשות שונות. בקשה ל-root - שהוא / - מחזירה את מחרוזת אחת. בקשה ל-inline מחזירה מחרוזת אחרת. בקשה ל-gif מחזירה תמונה קטנה שמיוצרת בקוד עצמו. לבסוף יש גם טיפול ב-Not Found - קוד 404. שיניתי בחלק של ההגדרות את STASSID ואת ה-STAPSK לשם ולסיסמא של הרשת האלחוטית הביתית. כמו כן שיניתי את led ל-LED_BUILTIN שהוא הלד המובנה בכרטיסון. לחצתי על כפתור Upload והעליתי את התוכנה לכרטיס. נקודה חשובה לציון, ברגע שמעלים קוד חדש לרכיב, ה-firmware הקודם נדרס. חשוב לזכור את זה. בכל מקרה אם ארצה להשתמש שוב ב-firmware של ה-AT Commands - יש אפשרות להוריד אותו מאינטרנט ולהתקין מחדש. לאחר אתחול, עברתי ל-Serial Monitor. פתחתי את הדפדפן בכתובת אותה קיבל ה-ESP8266 ובוצעה בקשה ל-root. התשובה לבקשה inline. וזאת התמונה שחוזרת לבקשת gif. מודול נוסף בו אני עושה שימוש הוא NodeMCU ESP-12E. כפי שניתן לראות, למודול יש חיבור USB שמשמש גם לאספקת מתח וגם לתקשורת. יש מספר דרכים לתכנת אותו והוא מגיע עם firmware שעובד עם שפת LUA. אני בחרתי להשתמש בסביבת פיתוח של ארדואינו. בוחרים את ה-Board המתאים מהרשימה ומכאן ואילך הפיתוח זהה למודול הקודם. כמובן שלמודול הזה יש אפשרויות רבות יותר מבחינת התממשקות ל-GPIO של הרכיב....
חיפוש