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

Flash ESP-01 (ESP8266) ללא מתאם USB-to-serial באמצעות Raspberry Pi: 3 שלבים
Flash ESP-01 (ESP8266) ללא מתאם USB-to-serial באמצעות Raspberry Pi: 3 שלבים

וִידֵאוֹ: Flash ESP-01 (ESP8266) ללא מתאם USB-to-serial באמצעות Raspberry Pi: 3 שלבים

וִידֵאוֹ: Flash ESP-01 (ESP8266) ללא מתאם USB-to-serial באמצעות Raspberry Pi: 3 שלבים
וִידֵאוֹ: ESP8266 ESP01 WI-FI-UART | Программирование LDmicro-Roboremo 2024, נוֹבֶמבֶּר
Anonim
Flash ESP-01 (ESP8266) ללא מתאם USB-to-serial באמצעות Raspberry Pi
Flash ESP-01 (ESP8266) ללא מתאם USB-to-serial באמצעות Raspberry Pi

מדריך זה מדריך אותך כיצד להתחיל לתכנת את המיקרו-בקר ESP8266 שלך במודול WIFI ESP-01. כל מה שאתה צריך כדי להתחיל (מלבד מודול ESP-01, כמובן) הוא

  • פאי פטל
  • חוטי מגשר
  • נגד 10K

רציתי לשפץ מנורת מיטה ישנה למנורת לילה LED מודרנית הנשלטת על ידי אלקסה. אין שום דבר מפואר פשוט להדליק/לכבות אותו באמצעות פקודה קולית. הזמנתי את מודול ה- WIFI הפשוט ביותר ESP-01, ממסר וחוט עם נוריות באינטרנט, ושכחתי לגמרי להזמין מתאם USB-to-serial כדי לתכנת מיקרו-בקר ESP8266. אך מכיוון שהיה לי Raspberry Pi ול- Raspberry Pi ולוח ESP-01 היו סיכות UART, הבנתי שאוכל להשתמש ב- RPi שלי לתכנת ESP8266 ללא המתאם.

שלב 1: הגדר את Rapberry Pi

הגדר את Rapberry Pi
הגדר את Rapberry Pi

השתמשתי ב- Raspberry Pi 3 דגם B+, אולם ההוראות צריכות לפעול בגרסאות אחרות, במיוחד בדגם B.

אז ראשית כל - עלינו לאפשר UART ב- Pi.

עבור אל הגדרות התצורה של RPi. הפעל בחלון מסוף

$ sudo raspi-config

עבור אל 5 אפשרויות ממשק ובחר P6 Serial. לאחר מכן ביקשת האם תרצה שמעטפת התחברות תהיה נגישה באמצעות סדרה? בחר מכיוון שאיננו רוצים להשתמש ב- UART כדי להריץ את ה- Pi ללא ראש, אלא לתקשר עם מכשירים אחרים, ומכאן במסך הבא כשנשאל האם תרצה שתפעיל את חומרת היציאה הטורית? בחר. הפעל מחדש את ה- Pi כמתבקש. כעת יש לאפשר UART לתקשורת סידרית בסיכת RX ו- TX של Raspberry Pi 3. הערה: לאחר מכן אמור להופיע ערך חדש enable_uart = 1 בסוף /boot/config.txt.

שלב 2: חבר את ESP-01 ל- Raspberry Pi

חבר את ESP-01 ל- Raspberry Pi
חבר את ESP-01 ל- Raspberry Pi

עכשיו אנחנו מתחילים לחבר הכל ביחד.

ראשית, עליך לזהות בסיכות החשמל RPi שלך 3.3V וסיכות GND (קרקע) להפעלה של מיקרו -בקר ESP8266, TXD (שידור) ו- RXD (קבלה) לתקשורת, ושני סיכות למטרה כללית להפעלת ESP8266 (פינים שניתן להגדיר גבוה או נָמוּך). חפש סידור סיכה ב- pinout.xyz או הקלד מסוף:

$ pinout

שנית לזהות סיכות נחוצות ב- ESP-01. אבל בהתחלה עלינו להבין את סיכות ה- ESP-01. מצאתי מספר משאבים מועילים באינטרנט שיעזרו לך בהקשר זה. זה הוא הקצר ביותר, בעוד שהוא נותן הסבר הרבה יותר טוב. בקיצור: ישנם 8 פינים, אנו נזדקק לשבעה מהם, כלומר סיכות כוח VCC וסיכות GND (קרקע) לחיבור, סיכות TXD ו- RXD לתקשורת, ו- RST (איפוס), CH_PD (שבב כיבוי, לפעמים מסומן CH_EN או הפעלת שבבים) ו- GPIO0 להפעלת המודול. בדרך כלל ESP8266 פועל במצב רגיל, אך בעת העלאת קוד ל- ESP8266 הוא מקפיד להיות במצב פלאש. עבור מצב פעולה רגיל או רגיל המודול צריך להיות מחובר לחשמל (ברור), אך גם את הסיכה CH_PD יש לחבר ל- VCC באמצעות 10K (ערך זה משתנה במקורות שונים, מצאתי ערכים עד 3K) משיכה נגד בעת אתחול. בצד השני, כדי להיכנס למצב מהבהב או תכנות אתה צריך לקרקע את פין GPIO0 בעת האתחול. כדי למנוע זרימת זרם בלתי מוגבלת באמצעות GPIO0 כאשר היא מוארקת, מומלץ לחבר את GPIO0 לקרקע באמצעות כמה נגד התנגדות נמוכה 300Ω - 470Ω (עוד על זה כאן). סיכת RST כפי שהשם מרמז מאפסת (או מפעילה מחדש) את ה- MCU. במהלך פעולה רגילה הוא עשוי להיות מחובר ל- VCC באמצעות נגד משיכה של 10K, אך יש לאדמו אותו כדי לאפס את הבקר. אמנם תמיד ניתן להשתמש בכפתורים פיזיים לקרקע סיכות RST ו- GPIO0 (או אפילו לחבר ידנית חוטים כדי לדמות כפתור), אך חוויה נעימה הרבה יותר היא להשתמש בסיכות Raspberry Pi כדי להגדיר מתח גבוה ונמוך ב- RST וב- GPIO0 של המודול. סיכות. כמו כן אין צורך בנגדים של 10K ו- 470Ω.

כעת, כאשר אנו מודעים למאפייני הסיכות של ESP-01, אנו יכולים להתחיל לחבר הכל ביחד. תוכל להשתמש בטבלה הבאה כהפניה יחד עם הציור לעיל:

ESP-01 פטל פטל

  • סיכה VCC (3.3V) מספר 1 (3.3V)
  • סיכת GND #6 (GND)
  • סיכת TXD מספר 10 (RXD / BCM 15)
  • סיכת RXD מספר 8 (TXD / BCM 14)
  • סיכה CH_PD מספר 1 (3.3V)
  • סיכת RST מס '3 (BCM 2)
  • GPIO 0 פין #5 (BMC 5)

חבר את סיכת ה- VCC האחרונה. המופע שחיברת את סיכת ה- VCC מודול ה- Wi-Fi שלך יופעל. השתמש במסך או במיניקום כדי לבדוק אם RPi ו- ESP8266 יכולים לתקשר באמצעות UART (שים לב: ייתכן שיהיה עליך להתקין מסך או מיניקום תחילה, מכיוון שנראה שהם אינם מותקנים ב- Raspbian כברירת מחדל).

שימוש בהפעלת מסך:

$ sudo מסך /dev /serial0 115200

שימוש ב- Minicom Run:

$ sudo minicom -b 115200 -o -D /dev /serial0

הערה: משאבים מקוונים רבים מציעים להתחבר ל- ESP8266 on /dev /ttyAMA0, אך הדבר אינו פועל ב- RPi 3 ואילך (כולל אפס W) לפי תיעוד RPi. התחבר באמצעות /dev /serial0 במקום זאת או /dev /ttyS0.

לאחר הזנת מסך או מיניקום, השתמש בפקודות AT כדי לתקשר עם ESP8266. הקלד AT ולאחר מכן הקש Enter ולאחר מכן הקש Ctrl+J כדי לשלוח פקודה. אתה אמור לקבל בסדר בתגובה. רשימת פקודות AT זמינות ניתן למצוא באתר espressiff.com או רק כאן.

המכשירים מחוברים פיזית ומדברים זה עם זה, אנחנו יכולים להתחיל לתכנת את סיכות ה- RPi GPIO ולבסוף את ה- ESP8266 עצמו.

שלב 3: התקנת תוכנה (Python להפעלה ו- Arduino IDE לתכנות)

חלק 1. שימוש בפייתון להחלפת מצבי ESP8266

כפי שצוין לעיל נוח להשתמש בסיכות GPIO של RPI כדי להחליף מצבי פעולה של ESP8266. כתבתי שני קודי פיתון בסיסיים שהכניסו את ESP8266 למצב רגיל או לתכנות.

מצב רגיל: כדי להכניס את המיקרו-בקר למצב פעולה רגיל, אנחנו רק צריכים להפעיל אותו ולחבר CH_PD באמצעות הנגינה למשיכה ל- VCC, אך כדי לעבור את ה- MCU מתכנות למצב רגיל עלינו לאפס אותו (חשוב לחשוב מחדש). כדי לעשות זאת ב- RPi אנו הולכים למשוך בקצרה את ה- GPIO של ה- RPi המחובר לסיכת RST ב- ESP-01 (כברירת מחדל סיכת ה- RPi בה השתמשתי לאיפוס מוגדרת ל- HIGH). כמה בקצרה? בשבילי זו שאלה ספקולטיבית. אתה יכול לנסות מרווחי זמן שונים, אך גיליתי ש- 200 - 500 אלפיות השנייה עובדים מצוין. כתוב בתגובות אם יש לך רעיון טוב יותר. שמור את הקוד שלך בשם reset.py

#!/usr/bin/python

ייבוא RPi. GPIO כשעת ייבוא GPIO GPIO.setmode (GPIO. BOARD) # מגדיר זיהוי GPIO לפי מספרי פינים פיסיים resetPin = 3 # זיהוי פין פיזי RPi המחובר ל- ESP8266 סיכת RST GPIO.setup (resetPin, GPIO. OUT) # set reset סיכה כפלט GPIO.output (resetPin, GPIO. LOW) # מתח ירידה בזמן סיכת RST. שינה (.2) # המתן ל- 2. ניקוי () # סיכות איפוס ב- RPI כדי למנוע אזהרות בזמן ריצה

  • מצב תכנות: כדי להכניס את ה- MCU למצב תכנות עלינו להפעיל את ה- ESP8266 עם GPIO0 מוארק, או לחילופין לאפס אותו ולקרק את GPIO0 בזמן האתחול (שוב משך הזמן המדויק של ירידות המתח אינו ידוע לי כל כך, אז אל תהיי קפדנית מונחה על ידי ערכים משומשים). שמור קוד כ- flash.py או הורד למטה. רצף הפעולות הוא כדלקמן:

    • משוך את סיכת RST כלפי מטה
    • משוך את סיכת GPIO0 כלפי מטה
    • משוך את סיכת RST למעלה
    • משוך את סיכת GPIO0

#!/usr/bin/python

ייבוא RPi. GPIO כשעת ייבוא GPIO GPIO.setmode (GPIO. BOARD) # קובע זיהוי GPIO לפי מספרי פינים פיסיים resetPin = 3 # זיהוי פין פיזי RPi המחובר ל- ESP8266 סיכת RST flashPin = 5 # זיהוי פין פיזי RPi המחובר ל- PIN ESP8266 GPIO0 GPIO.setup (resetPin, GPIO. OUT) # הגדר סיכת איפוס כפלט GPIO.setup (flashPin, GPIO. OUT) # הגדר סיכת הבזק כפלט GPIO.output (resetPin, GPIO. LOW) # מתח ירידה בזמן סיכה RST. שינה (.2) # צורך בהמתנה זו הוא פלט ספקולטיבי GPIO.output (flashPin, GPIO. LOW) # ירידה במתח ב- GPIO0 time.sleep (.2) # הצורך בהמתנה זו הוא ספקולטיבי GPIO.output (resetPin, GPIO. HIGH) # התחל אתחול ESP8266 time.sleep (.5) # המתן עד ש- ESP8266 יפעיל את GPIO.ouput (flashPin. GPIO. HIGH) # שחזור מתח ב- GPIO pinGPIO.cleanup () # סיכות איפוס ב- RPI כדי למנוע אזהרות זמן ריצה עתידיות

בהרשאות לשינוי מסוף:

$ sudo chmod +x flash.py

$ sudo chmod +x reset.py

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

$ python /flash.py

לאחר העלאת קוד כדי להיכנס לפעולה רגילה:

$ python /reset.py

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

חלק 2. הגדרת Arduino IDE

אם כבר מותקן לך Arduino IDE, עדיין ייתכן שתרצה לדפדף בסעיף ולוודא שה- IDE שלך מוכן ל- ESP8266.

ב- Rapberry Pi אתה יכול להשתמש ב- Arduino IDE לתכנת ESP8266 שלך. ישנן שתי דרכים להתקין את IDE ב- RPi:

  • באמצעות שורת פקודה ממאגרים באמצעות התקנת apt-get
  • הורד והתקן באופן ידני מתוך arduino.cc.

אני ממליץ בחום ללכת בדרך האחרונה. נראה שגרסת ה- IDE ממאגרים מיושנת ובוודאי שתצטרך לעשות יותר לפני שאתה מוכן להתחיל לתכנת ESP8266. כדי להימנע מהטרחה, עבור לדף ההורדות של Arduino.cc והורד את גרסת ARM של Linux. הבא דחיסה והתקנה: אם שם הקובץ שהורד נראה בערך כמו arduino-X. Y. Z-linuxarm.tar.xz, הפעל בתיקיית ההורדה:

$ tar -xvf arduino-X. Y. Z-linuxarm.tar.xz

זה אמור לבטל את הדחיסה של הקובץ לתיקייה arduino-X. Y. Z. לָרוּץ:

$ sudo./arduino-X. Y. Z/install.sh

זה אמור להתקין את IDE. לאחר השלמת ההתקנה, הפעל את IDE.

  • מתוך Arduino IDE עבור אל קובץ> העדפות. חפש "כתובות URL נוספות של מנהל הלוח" בתחתית חלון ההעדפות. הזן https://arduino.esp8266.com/stable/package_esp8266com_index.json בשדה "כתובות אתרים נוספות של מנהל לוח", לחץ על הלחצן "אישור".
  • עבור אל כלים> לוח: XXX> מנהל לוחות. בחלון השתמש בחיפוש או גלול מטה, בחר בתפריט הלוח ESP8266 ולחץ על התקן. המתן עד לסיום ההתקנה וסגירת החלון.
  • לך שוב אל כלים> לוח: XXX וחפש לוחות ESP8266. בחר מודול ESP8266 כללי.

כעת IDE מוכן לתכנת ESP8266. הקלד או הדבק את הקוד הרצוי בחלון IDE ושמור אותו. לחץ על העלה. מהפעלה מסוף flash.py, זה אמור להכניס את הלוח למצב תכנות. המתן מספר דקות עד ש- IDE יסיים את החיבור וההעלאה (הערה: ESP-01 מגיע בדרך כלל עם 2 נוריות LED, הנורית הכחולה תהבהב בזמן העלאת הקוד) ותפעיל reset.py. כעת לוח ESP-01 שלך מוכן לביצוע תפקידים.

מוּמלָץ: