فهرست مطالب:

فلش ESP-01 (ESP8266) بدون آداپتور USB به سریال با استفاده از Raspberry Pi: 3 مرحله
فلش ESP-01 (ESP8266) بدون آداپتور USB به سریال با استفاده از Raspberry Pi: 3 مرحله

تصویری: فلش ESP-01 (ESP8266) بدون آداپتور USB به سریال با استفاده از Raspberry Pi: 3 مرحله

تصویری: فلش ESP-01 (ESP8266) بدون آداپتور USB به سریال با استفاده از Raspberry Pi: 3 مرحله
تصویری: ESP8266 ESP01 WIFI-UART | برنامه نویسی LDmicro-Roboremo 2024, جولای
Anonim
فلش ESP-01 (ESP8266) بدون آداپتور USB به سریال با استفاده از Raspberry Pi
فلش ESP-01 (ESP8266) بدون آداپتور USB به سریال با استفاده از Raspberry Pi

این دستورالعمل به شما نحوه شروع برنامه نویسی میکروکنترلر ESP8266 خود را بر روی ماژول WIFI ESP-01 راهنمایی می کند. تنها چیزی که برای شروع نیاز دارید (البته علاوه بر ماژول ESP-01) این است

  • تمشک پای
  • سیم های بلوز
  • مقاومت 10K

من می خواستم یک چراغ خواب قدیمی را به چراغ شب LED مدرن با کنترل الکسا تعمیر کنم. هیچ چیز جالبی نیست فقط با استفاده از فرمان صوتی آن را روشن/خاموش کنید. من ساده ترین ماژول ESP-01 WIFI ، رله و سیم با LED ها را به صورت آنلاین سفارش دادم و کاملاً فراموش کردم که برای برنامه ریزی میکروکنترلر ESP8266 آداپتور USB-serial سفارش دهم. اما از آنجا که من یک Raspberry Pi داشتم و هر دو Raspberry Pi و برد ESP-01 دارای پین UART بودند ، فکر کردم می توانم از RPi خود برای برنامه ریزی ESP8266 بدون آداپتور استفاده کنم.

مرحله 1: Rapberry Pi را پیکربندی کنید

Rapberry Pi را پیکربندی کنید
Rapberry Pi را پیکربندی کنید

من از Raspberry Pi 3 Model B+استفاده کردم ، اما دستورالعمل ها باید در نسخه های دیگر ، به ویژه در مدل B کار کنند.

بنابراین ، اولین چیزها - ما باید UART را روی Pi فعال کنیم.

به تنظیمات پیکربندی RPi بروید. در پنجره ترمینال اجرا شود

$ sudo raspi-config

به 5 گزینه Interfacing بروید ، سپس P6 Serial را انتخاب کنید. سپس از شما خواسته شد آیا می خواهید پوسته ورود به سیستم از طریق سریال قابل دسترسی باشد؟ را انتخاب کنید زیرا ما نمی خواهیم از UART برای اجرای Pi بدون سر ، بلکه برای برقراری ارتباط با سایر دستگاه ها استفاده کنیم ، بنابراین در صفحه زیر وقتی از شما س askedال می شود آیا می خواهید سخت افزار پورت سریال فعال باشد؟ انتخاب کنید. در صورت درخواست Pi را مجدداً راه اندازی کنید. UART اکنون باید برای ارتباط سریال در پین RX و TX رزبری پای 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 پین وجود دارد ، ما به 7 عدد از آنها نیاز داریم ، یعنی پین های VCC power و GND (پایه) برای برق ، پین های TXD و RXD برای ارتباطات ، و RST (بازنشانی) ، CH_PD (Chip Power Down ، گاهی اوقات برچسب گذاری می شوند) CH_EN یا فعال کردن تراشه) و GPIO0 برای کار با ماژول. معمولاً ESP8266 در حالت عادی کار می کند ، اما هنگام بارگذاری کد در ESP8266 باید در حالت فلش قرار گیرد. برای حالت عملکرد معمولی یا معمولی ، ماژول باید به برق متصل باشد (بدیهی است) ، اما همچنین پین CH_PD باید از طریق 10K به VCC متصل شود (این مقدار در منابع مختلف متفاوت است ، من مقدارها را تا 3K پیدا کردم) مقاومت در هنگام راه اندازی از طرف دیگر ، برای ورود به حالت چشمک زن یا برنامه نویسی ، باید هنگام راه اندازی پین GPIO0 را زمین کنید. برای جلوگیری از جریان نامحدود جریان از طریق GPIO0 هنگام اتصال به زمین ، توصیه می شود GPIO0 را از طریق برخی از مقاومتهای کم مقاومت 300Ω - 470Ω به زمین متصل کنید (اطلاعات بیشتر در اینجا). پین RST همانطور که از نامش مشخص است MCU را بازنشانی (یا راه اندازی مجدد) می کند. در حالت عادی ممکن است از طریق یک مقاومت کششی 10K به VCC متصل شود ، اما برای تنظیم مجدد میکروکنترلر باید زمین باشد. در حالی که همیشه می توان از دکمه های فیزیکی برای اتصال پین های RST و GPIO0 (یا حتی اتصال سیم ها به صورت دستی برای شبیه سازی یک دکمه) استفاده کرد ، استفاده از پین های رزبری پای برای تنظیم ولتاژ بالا و پایین روی 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 ارتباط برقرار کنند از صفحه یا minicom استفاده کنید (توجه: ممکن است لازم باشد ابتدا صفحه یا minicom را نصب کنید ، زیرا به نظر می رسد به طور پیش فرض روی Raspbian نصب نشده اند).

استفاده از صفحه نمایش:

$ sudo screen /dev /serial0 115200

استفاده از minicom run:

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

توجه: بسیاری از منابع آنلاین پیشنهاد اتصال به ESP8266 در /dev /ttyAMA0 را می دهند ، اما این کار بر اساس اسناد RPi در RPi 3 یا بالاتر (از جمله صفر W) کار نمی کند. به جای آن از طریق /dev /serial0 یا /dev /ttyS0 وصل شوید.

پس از وارد کردن صفحه یا minicom ، از دستورات AT برای برقراری ارتباط با ESP8266 استفاده کنید. AT را تایپ کنید ، سپس Enter را فشار دهید و سپس Ctrl+J را برای ارسال فرمان فشار دهید. در پاسخ باید OK کنید. لیست دستورات 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 تنظیم شده است). چقدر مختصر؟ برای من این یک س specال حدسی است. می توانید فواصل زمانی مختلف را امتحان کنید ، اما من دریافتم که 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) # تنظیم مجدد پین به عنوان خروجی GPIO.output (resetPin، GPIO. LOW) # افت ولتاژ در RST pin time.sleep (.2) # صبر کنید.2 ثانیه GPIO.output (resetPin، GPIO. HIGH) # بازگرداندن ولتاژ روی پین RST GPIO. cleanup () # بازنشانی پین ها در 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 متصل به پین ESP8266 GPIO0 GPIO.setup (resetPin، GPIO. OUT) # تنظیم پین بازنشانی به عنوان خروجی GPIO.setup (flashPin، GPIO. OUT) # پین فلش را به عنوان خروجی GPIO.output (resetPin، GPIO. LOW) # افت ولتاژ در زمان پین RST. sleep (.2) # نیاز به این انتظار GPIO.output (flashPin، GPIO. LOW) احتمالی است) # شروع بوت 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 install
  • بارگیری و نصب دستی از arduino.cc.

من به شدت پیشنهاد می کنم راه دوم را طی کنید. به نظر می رسد نسخه IDE از مخازن منسوخ شده است و مطمئناً قبل از آماده شدن برای شروع برنامه نویسی ESP8266 باید کارهای بیشتری انجام دهید. برای جلوگیری از دردسر ، به صفحه بارگیری Arduino.cc بروید و نسخه ARM لینوکس را بارگیری کنید. بعد فشرده سازی و نصب بعدی: اگر نام فایل بارگیری شده شبیه به این 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 به File> Preferences بروید. در پایین پنجره تنظیمات برگزیده ، به دنبال "URL های اضافی مدیر هیئت مدیره" باشید. https://arduino.esp8266.com/stable/package_esp8266com_index.json را در قسمت "آدرسهای اضافی مدیران هیئت مدیره" وارد کنید ، روی دکمه "OK" کلیک کنید.
  • به Tools> Board: XXX> Boards Manager بروید. در پنجره استفاده از جستجو یا پایین رفتن ، منوی برد ESP8266 را انتخاب کرده و روی نصب کلیک کنید. منتظر بمانید تا نصب کامل شود و پنجره را ببندید.
  • دوباره به Tools> Board: XXX بروید و به دنبال تخته های ESP8266 باشید. ماژول عمومی ESP8266 را انتخاب کنید.

اکنون IDE آماده برنامه نویسی ESP8266 است. کد مورد نظر را وارد کرده یا در پنجره IDE قرار دهید و آن را ذخیره کنید. روی بارگذاری کلیک کنید. از ترمینال اجرا flash.py ، این باید برد شما را در حالت برنامه نویسی قرار دهد. چند دقیقه منتظر بمانید تا IDE کامپایل و بارگذاری را تمام کند (توجه داشته باشید: ESP-01 معمولاً دارای 2 LED است ، LED آبی در هنگام بارگذاری کد چشمک می زند) و reset.py را اجرا کنید. اکنون برد ESP-01 شما آماده انجام وظایف است.

توصیه شده: