Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบเครือข่าย >> WiFi

เริ่มต้น FreeRTOS บน ESP8266 NodeMCU — คู่มือปฏิบัติ

โดย เดนิส นูติว

เมื่อเร็วๆ นี้ ผมซื้อ NodeMCU จาก AliExpress ประมาณ $4 เหตุผลคืออยากรู้ว่าทั้งหมดนี้ buzz เกี่ยวกับ ESP8266 คืออะไร

NodeMCU เป็น IoT platform โอเพนซอร์ส ประกอบด้วย firmware ที่รันบน ESP8266 Wi-Fi SoC จาก Espressif Systems และ hardware ที่พัฒนาจาก ESP-12 module

เริ่มต้น FreeRTOS บน ESP8266 NodeMCU — คู่มือปฏิบัติ Source: ESP8266 Datasheet

เปรียบเทียบกับ Arduino UNO ESP8266 ของผมชนะเลยด้าน CPU power และราคา

ESP8266 เร็วกว่า 500% และถูกกว่า 82% เทียบกับ Arduino ESP8266 ยังมี WiFi connectivity ด้วย

ผมประหลาดใจมากตอนไปเว็บ Espressif สำหรับ ESP8266 มี documentation และ resources เยอะมาก ที่สามารถใช้ได้ เช่น มี Android application ที่บอก ESP8266 ให้เชื่อมต่อ WiFi ของคุณ App ส่ง SSID และ password เป็น packets ESP8266 สนิฟฟ์พวกมัน และเชื่อมต่อ WiFi ของคุณ นี่เรียกว่า SmartConfig และถูกประดิษฐ์โดย Texas Instruments

ในบทความนี้ ผมจะแนะนำคุณ setup และรันตัวอย่าง Smart Config จาก Espressif RTOS SDK

สิ่งที่คุณต้องการ:

  • คอมพิวเตอร์สมัยใหม่
  • NodeMCU board กับ ESP12-E
  • VirtualBox (https://www.virtualbox.org/wiki/Downloads)
  • Ubuntu Server LTS (https://www.ubuntu.com/download/server)

ตั้งค่า VirtualBox สำหรับการพัฒนา

  1. ดาวน์โหลด VirtualBox และติดตั้ง Ubuntu Server ควรทำได้ง่าย แตถ้าไม่รู้ Google หรือดู graphic step-by-step guide ได้ การติดตั้ง OS เป็น skill ที่ดีที่ควรมี (Tip: ตอน VirtualBox prompt ให้เลือก disk ทำให้เป็น dynamically allocated และอย่างน้อย 50GB จะช่วยหลีกเลี่ยดปัญหาต่อไป)
  2. ให้แน่ใจว่าเข้าถึงอินเทอร์เน็ตจากภายใน virtual machine ได้ และตั้งค่า DNS server:

เริ่มต้น FreeRTOS บน ESP8266 NodeMCU — คู่มือปฏิบัติ Right click the machine then Settings -> Network

เพื่อตั้งค่า DNS server ดูตัวอย่างนี้

Example: dns-nameservers 8.8.8.8 8.8.4.4 ถ้าคุณ ping Google ได้ แสดงว่าพร้อมแล้ว!

  1. (Optional) ติดตั้ง OpenSSH และ Samba server จะทำให้ชีวิตง่ายขึ้น
  2. (Optional) เปิดใช้ port forwarding เพื่อ SSH เข้า virtual machine โดยตรง ต้อง enable port forwarding เช่น map port 2222 บน host machine ไป port 22 ของ virtual machine

เริ่มต้น FreeRTOS บน ESP8266 NodeMCU — คู่มือปฏิบัติ Enable Port forwarding: Settings -> Network -> Port Forwarding

ถ้าเปิด port forwarding แล้ว คุณสามารถ SSH เข้า virtual machine จาก host machine ได้เหมือนภาพด้านล่าง

เริ่มต้น FreeRTOS บน ESP8266 NodeMCU — คู่มือปฏิบัติ FIG1: ssh -p 2020 denis@localhost

หมายเหตุ: ถ้าคุณบน Windows ต้องมี Putty เพื่อ SSH เข้า virtual machine

  1. เสียบ NodeMCU และรันคำสั่ง:

tail -f /var/log/kern.log

ควรบอกว่า device ถูกระบุเป็น /dev/ttyUSB0 ถ้าอะไรไม่เกิดขึ้น คุณต้องเพิ่ม USB ให้ virtual machine หลังเพิ่ม USB ถอดและเสียบอุปกรณ์ใหม่

เริ่มต้น FreeRTOS บน ESP8266 NodeMCU — คู่มือปฏิบัติ Adding USB: Settings -> Ports -> USB

ถ้าคุณถึงจุดนี้และทุกอย่างทำงาน ยินดีด้วย! ตอนนี้คุณพร้อม compile SDK และรันตัวอย่าง SmartConfig แม้แต่ยิง tweet ให้ผมได้ที่ https://twitter.com/metonymyqt

Compile SDK และ Flash board

  1. ติดตั้ง required packages (ดังด้านล่าง) ข้อมูลนี้มีใน readme.md ของ SDK ด้วย
sudo apt-get install make unrar-free autoconf automake libtool gcc g++ gperf flex bison texinfo gawk ncurses-dev libexpat-dev python-dev python python-serial sed git unzip bash help2man wget bzip2 libtool-bin 
  1. สร้างโฟลเดอร์ใหม่และเข้าไป: mkdir Development && cd Development
  2. Clone Open SDK: https://github.com/pfalcon/esp-open-sdk
git clone --recursive https://github.com/pfalcon/esp-open-sdk.git
  1. Run make: make

คำเตือน: ขั้นตอนนี้จะใช้เวลานาน โปรดอดทน บน VM ของผมเสร็จหลัง 50 นาที บนของคุณอาจมากหรือน้อยกว่า แตก่อน run make ให้แน่ใจว่า เชื่อมต่ออินเทอร์เน็ต และ DNS ตั้งค่าถูกต้อง วิธีดีที่สุดคือ ping Google หรือเว็บอื่นถ้า Google ถูกบล็อกในภูมิภาค

เริ่มต้น FreeRTOS บน ESP8266 NodeMCU — คู่มือปฏิบัติ Successful ping command: $ ping medium.com

ถ้า ping สำเร็จ minimize windows และดูรายการ TV โปรด กลับมาหลัง 40 นาที (แต่ให้แน่ใจคอมพิวเตอร์ไม่ sleep)

หลังจาก SDK build สำเร็จ คุณจะเห็นข้อความบอกให้ใส่บางอย่างใน path ทำได้โดยรัน:

echo 'export PATH=/home/denis/Development/esp-open-sdk/xtensa-lx106-elf/bin:$PATH' >> ~/.profile 

คำสั่งจะ append string ไป ~/.profile file ตอนนี้รันคำสั่ง:

xtensa-lx106-elf-gcc --version

ถ้าคำสั่งรันสำเร็จ แสดงว่าพร้อม!

  1. ทดสอบ board

เสียบ NodeMCU และรัน lsusb verify ว่าอุปกรณ์เชื่อมต่อ หลังจากนั้น รัน esptool.py chip_id คุณควรเห็น chip id ของ board

เริ่มต้น FreeRTOS บน ESP8266 NodeMCU — คู่มือปฏิบัติ _esptool.py chipid

  1. Clone ESP8266_RTOS_SDK
git clone https://github.com/espressif/ESP8266_RTOS_SDK.git 
  1. Export SDK path และ SDK/BIN path ด้วยคำสั่งด้านล่าง
echo 'export SDK_PATH=/home/denis/Development/ESP8266_RTOS_SDK' >> ~/.profile 
echo 'export BIN_PATH=/home/denis/Development/ESP8266_RTOS_SDK/bin' >> ~/.profile 
  1. Compile ตัวอย่าง SmartConfig
cd /home/denis/Development/ESP8266_RTOS_SDK/examples/smart_config/ 
chmod +x ./gen_misc.sh 
./gen_misc.sh 

ตอนนี้ยอมค่า default จนกว่าจะถาม SPI_SIZE_MAP นี่คือที่คุณเลือก 4 เพราะ NodeMCU มี flash size 32Mbit ซึ่งแปลงเป็น 4MB _คุณสามารถเลือก SPISPEED 3=80Mhz ได้

คุณจะเห็นอย่างนี้:

!!!SDK_PATH: /home/denis/Development/ESP8266_RTOS_SDK
BIN_PATH: /home/denis/Development/ESP8266_RTOS_SDK/bin

No boot needed.
Generate eagle.flash.bin and eagle.irom0text.bin successully in BIN_PATH
eagle.flash.bin — — — →0x00000
eagle.irom0text.bin — →0x20000!!! 
  1. Flash board
cd $BIN_PATH 
esptool.py erase_flash 
esptool.py write_flash 0x00000 $BIN_PATH/eagle.flash.bin 0x20000 $BIN_PATH/eagle.irom0text.bin 0x3FC000 $BIN_PATH/esp_init_data_default.bin 

ตอนนี้ ถ้าคุณ reset board คุณควรไม่เห็น LED กระพริบ

  1. ใช้ Phone Application
  • Android Application
  • iPhone Application

เริ่มต้น FreeRTOS บน ESP8266 NodeMCU — คู่มือปฏิบัติ ScreenShot from my Android Device

เปิด Application ตรวจสอบว่าเชื่อมต่อ WiFi AP อยู่ ใส่ password และกด confirm หลังจากไม่กี่วินาที ESP8266 ควรเชื่อมต่อ AP ของคุณ นั่นคือทั้งหมด ยินดีด้วยที่ถึงจุดสิ้นสุด!

ถ้าอยากพัฒนาเพิ่มด้วย ESP8266-RTOS-SDK โปรดเยี่ยมชมเว็บไซต์ทางการ จะพบ resources และ documentation เยอะมาก และดูตัวอย่างอื่นๆ ในโฟลเดอร์ SDK

ขอบคุณมากสำหรับเวลาอ่าน ถ้าอยากติดต่อ ผมอยู่ที่ Twitter: MetonymyQT

Resources

  • ESP8266 Overview
  • ESP8266 Resources
  • FreeRTOS Website

เรียนรู้การเขียนโค้ดฟรี หลักสูตรโอเพนซอร์สของ freeCodeCamp ช่วยให้ผู้คน 40,000+ คนได้งานเป็นนักพัฒนา เริ่มต้นเลย


No