צריבה ישירות של קושחה על ESP32 – הדגמה עם WiFi Extender

הפעלת extender בקלות עם צ׳יפ של 4 דולר להרחבת הרשת האלחוטית - במיוחד ל-IoT.

במאמרים הקודמים דיברנו על מיקרופייתון ו-ESP32 וגם על רשת WiFi פרטית. אבל אפשר לעשות עם ESP32 הרבה יותר – כמו מאריך טווח או repeater או רשת נפרדת שגם מעבירה WiFi אבל היא נפרדת לגמרי. וכל זה עם ממשק מגניב וכיפי.

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

איך מתקינים אותו? אם יש לכם פייתון במחשב (ויש לכם, יחד עם pyenv ופואטרי – נכון?) אז אפשר להתקין אותו בפרויקט רגיל עם pip install esptool. יש כאן הוראות התקנה מפורטות גם לחלונות. זה לא מסובך במיוחד אם יש לכם סביבת פייתון. שימו לב שאתם צריכים פייתון בגרסה 3.7 וצפונה. עדיף כמובן 3.11.

כאשר אתם יכולים להקליד esptool.py -h ולקבל תוצאות. זה הזמן להתחבר ולעבוד. נחבר את ה-ESP32 למחשב ונראה מה הפורט שלו. במק ובלינוקס זה באמצעות הפקודה הזו בטרמינל:

esptool.py -h

אצלי למשל זה

/dev/cu.usbserial-0001

בחלונות אנו נכנס אל ה-Device Manager – פשוט להקליד את זה בחיפוש. אנו נפתח את החלק של Ports (COM & LPT) ונראה מה מספר ה-COM של ה-ESP32. זה למשל יכול להיות COM3.

אחרי שהבנו באיזה USB פיזי ה-ESP32 נמצא, זה הזמן להתחבר אליו. אם התקנתם קושחה, אפשר ורצוי לבדוק את החיבור באמצעות הקלדת הפקודה:

esptool.py --port /dev/cu.usbserial-0001 chip_id

החליפו את ״/dev/cu.usbserial-0001״ בכתובת שלכם כמובן. אנו נקבל בתגובה את סוג השבב או את ה-mac address שלו. למשל:

 ~  esptool.py --port /dev/cu.usbserial-0001 chip_id                                                                          ok

esptool.py v4.6.1
Serial port /dev/cu.usbserial-0001
Connecting....
Detecting chip type... Unsupported detection protocol, switching and trying again...
Connecting.......
Detecting chip type... ESP32
Chip is ESP32-D0WD-V3 (revision v3.0)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: a8:42:e3:47:9f:60
Uploading stub...
Running stub...
Stub running...
Warning: ESP32 has no Chip ID. Reading MAC instead.
MAC: a8:42:e3:47:9f:60
Hard resetting via RTS pin..

הצליח לכם? מעולה! לא הצליח – שימו לב לדברים הבאים:

  1. יש לכם פייתון על המחשב מגרסה 3.9 באמצעות הפקודה python –version. אין לכם? זו הבעיה.
  2. כשאתם מקלידים esptool.py -h אתם מקבלים תוצאה. אם יש שגיאה – בידקו את ההתקנה שלכם.
  3. כשהפורט הוא באמת הפורט של ה-ESP32. איך מוודאים? מנתקים את הכבל – הוא נעלם? מעולה. לא נעלם? אולי טעיתם.

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

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

כפתור ה-boot
esptool.py --chip esp32 \
--before default_reset --after hard_reset write_flash \
-z --flash_mode dio --flash_freq 40m --flash_size detect \
0x1000 build/esp32/bootloader.bin \
0x8000 build/esp32/partitions.bin \
0x10000 build/esp32/firmware.bin

אם הכל יעבוד כמו שצריך, תראו ״Writing at 0x000c54ea… (81 %)״ והאחוזים יתחילו לעלות. צריך להמתין כמה דקות עד שזה מסתיים.

כשהכל עובד – תוכלו לראות את הרשת ESP32_NAT_Router ואז להתחבר אליה עם הלפטופ או עם הטלפון.

שם רשת ESP32_NAT_Router

היא תהיה ללא אינטרנט ואנו נצטרך להכנס לממשק הפנימי שלה. איך? נתחבר לרשת ונכנס אל http://192.168.4.1. אנו נגיע לממשק הניהול.

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

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

ESP32 עם לד אדום וכחול שפועלים יחדיו

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

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

screen /dev/cu.usbserial-0001 115200

אם יש לכם חלונות, תצטרכו להשתמש ב-PuTTY ולהשתמש ב-com המתאים כדי להתחבר ולהזין.

כך או כך, תגיעו לממשק שבו אפשר להזין פקודות. הקלדה על help תראה לכם בדיוק איזה. למשל show stat.

esp32> show stat
I (614914) cmd_router: ssid Uga
I (614914) cmd_router: ent_username
I (614914) cmd_router: ent_identity
I (614924) cmd_router: passwd mm02071971
I (614934) cmd_router: static_ip
I (614934) cmd_router: subnet_mask
I (614934) cmd_router: gateway_addr

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

רק הערה: לא הייתי בונה על זה לתשתית אינטרנט רצינית. אם אתם מחפשים extender למטרות שהן לא IoT או אחרות אלא ממש לתשתית בבית – אני ממליץ לכם על הפוסט שלי על בניית רשת בבית.

אחרי שלמדנו את זה – השלב הבא הוא ללכלך את הידיים עם IoT ולחבר ציוד פיזי ל-ESP32!

פוסטים נוספים שכדאי לקרוא

פתרונות ומאמרים על פיתוח אינטרנט

המנעו מהעלאת source control לשרת פומבי

לא תאמינו כמה אתרים מעלים את ה-source control שלהם לשרת. ככה תמצאו אותם וגם הסבר למה זה רעיון רע.

DALL·E 2024-09-06 12.34.24 - A visually engaging post about Python and cryptographic problems. The image should feature a dark-themed background with a glowing, futuristic Python
פתרונות ומאמרים על פיתוח אינטרנט

בעיות במימוש של פונקציות קריפטוגרפיות בפייתון

היום (16 לספטמבר) ממש, אני מעביר הרצאה ב-PyconIL 2024 על בעיות קריפטוגרפיות באפליקציות פייתון. לצערי אי אפשר להכניס את כל הבעיות הקריפטוגרפיות להרצאה אחת או

רספברי פיי

מה זה AIoT? ואיך אפשר להתחיל?

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

גלילה לראש העמוד