การใช้งาน UNO WiFi R3 ATmega328P ESP8266 เบื้องต้น

การใช้งาน UNO WiFi R3 ATmega328P ESP8266 เบื้องต้น

ในบอร์ดจะมี MCU อยู่ 2 ตัว คือ ATmega328P กับ ESP8266 โดย บอร์ดนี้สามารถใช้ได้ 3 รูปแบบด้วยกัน คือ

  1. ใช้เป็น Arduino UNO ธรรมดา
  2. ใช้เป็น ESP8266
  3. ให้ ATmega328P กับ ESP8266 ทำงานร่วมกัน

บอร์ดนี้มีโหมดการทำงานทั้งหมด 4 โหมดด้วยกัน การกำหนดโหมดทำโดยการเซ็ตที่ Dip Switch ที่อยู่บริเวณกลางบอร์ด โดยมีรูปแบบดังนี้

การใช้งาน UNO WiFi R3



รายการอุปกรณ์


ขั้นตอนการทํางาน


1. ติดตั้งโปรแกรม Arduino IDE

สำหรับการเขียนโปรแกรมของ Arduino IDE นั้นจะใช้ภาษา C/C++ ซึ่งเป็นรูปแบบภาษาซีประยุกต์แบบหนึ่ง ที่มีโครงสร้างการทำงานของตัวภาษาโดยรวม คล้ายกับ ภาษาซีมาตรฐาน (ANSI-C) ทั่วๆไป เพียงแต่ได้มีการปรับปรุงเพื่อลดความยุ่งยากในการใช้งานลง เพื่อให้ผู้ใช้สามารถใช้งาน เขียนโปรแกรมได้ง่าย และสะดวกมากกว่าเขียนภาษาซี แบบมาตรฐาน

Arduino integrated development environment หรือเรียกสั้นๆว่า โปรแกรม Arduino IDE เป็นโปรแกรมที่ “แจกฟรี” ภายใต้เงื่อนไขในการใช้งานลักษณะ Open source ซึ่ง Arduino IDE จะทำหน้าที่ ติดต่อ ระหว่าง คอมพิวเตอร์ ของเรา (Windows, Mac OS X และ Linux) กับ บอร์ด Arduino ซึ่งโปรแกรมนี้ออกแบบให้ง่ายต่อการเขียนโค้ดและอัปโหลดโค้ดที่เราเขียน เข้าสู่ บอร์ด UNO+WiFi R3

โดย Download ตัวติดตั้งได้จาก

https://www.arduino.cc/en/Main/Software

เลือก Windows Installer, for Windows 7 and up

Download ตัวติดตั้ง Arduino IDE


คลิกเลือก JUST DOWNLOAD (หากต้องการร่วมบริจาคช่วยการพัฒนา Arduino Software สามารถกด CONTRIBUTE & DOWNLOAD)

เมื่อดาวน์โหลดเสร็จแล้ว ให้ติดตั้งตามที่โปรแกรมแนะนำ


2. เพิ่มบอร์ด ESP8266 ให้ Arduino IDE


เราจะต้องอัปเดตผู้จัดการบอร์ดด้วย URL ที่กำหนดเอง โดยเปิดโปรแกรม Arduino IDE และไปที่ File -> Preferences

การใช้งาน NodeMCU ESP8266  อัปเดตผู้จัดการบอร์ดด้วย URL


คัดลอก URL ด้านล่างลงใน Additional Board Manager URLs: แล้ว คลิก OK

http://arduino.esp8266.com/stable/package_esp8266com_index.json
คัดลอก URL ด้านล่างลงใน Additional Board Manager URLs


จากนั้นไปที่ตัวจัดการบอร์ดโดยไปที่ Tools -> Board: -> Boards Manager…

การใช้งาน NodeMCU ESP8266 ไปที่ Tools -> Board: -> Boards Manager...


ที่ช่องค้นหา พิมพ์ esp8266  จะพบ esp8266 by ESP8266 Community  แล้วคลิก Install

พิมพ์ esp8266  จะพบ esp8266 by ESP8266 Community

INSTALLED แสดงการติดตั้งสำเร็จ แล้วปิดหน้าต่างลงไป

INSTALLED แสดงการติดตั้งสำเร็จ


3. ตรวจสอบ Port ของบอร์ด UNO WiFi R3

เชื่อมต่อสาย USB จาก คอมพิวเตอร์ ไปที่บอร์ด UNO WiFi R3

การใช้งาน UNO WiFi R3


ที่ Device Manager ไปที่ Ports (COM & LPT) จะพบ USB-SERIAL CH340 ในตัวอย่างเป็น (COM8) แสดงว่าคอมพิวเตอร์ของเราสามารถ ติดต่อสื่อสารกับ บอร์ด UNO WiFi R3 ได้แล้ว

การใช้งาน UNO WiFi R3 ATmega328P ESP8266

ถ้าไม่พบให้ทำการติดตั้ง Driver

http://www.mediafire.com/download/c9pyi2u7g93iqt6/CH341SER.ZIP


4. ทำงานร่วมกันระหว่าง Arduino UNO กับ ESP8266



ก่อนอื่นต้องทำความเข้าใจว่า ในบอร์ดนี้ เป็นบอร์ดผสม โดยมีไมโครคอนโทรลเลอร์ 2 ตัวอยู่ในบอร์ดเดียวกัน คือ Arduino UNO (ATmega328P) ต้นแบบจากประเทศอิตาลี และ ESP8266 ต้นแบบจากประเทศจีน

โดย Arduino UNO มีขา อินพุต/เอาต์พุต จำนวนมากพอสมควรแต่ใช้ WiFi ไม่ได้ แต่ ESP8266 ใช้ WiFi ได้ แต่มีขา อินพุต/เอาต์พุต น้อย ซึ่งอาจจะไม่เพียงพอในการใช้งานบางโปรเจค

ดังนั้นเพื่อให้เกิดประโยชน์สูงสุดในการใช้งานบอร์ดนี้ เราจะเรียนรู้ การทำงานร่วมกันระหว่าง Arduino UNO กับ ESP8266 โดย จะสื่อสารกันผ่านพอร์ตอนุกรมแบบ UART โดยมีการเชื่อมต่อดังนี้

  • Arduino UNO Tx <-> ESP8266 Rx
  • Arduino UNO Rx <-> ESP8266 Tx


โดยบอร์ดนี้จะทำการเชื่อมต่อโดยอัตโนมัติ เมื่อเราเซ็ท Dip Switch 1 และ 2 เป็น On และถ้าจะให้ทั้ง 2 ทำงานร่วมกัน ต้องโหลดโปรแกรมให้กับแต่ละ ไมโครคอนโทรลเลอร์

การสื่อสารผ่าน UART

UART หรือชื่อเต็ม Universal Asynchronous Receiver and Transmitter เป็นการสื่อสารข้อมูลผ่านพอร์ตอนุกรมแบบอะซิงโครนัส (asynchronous serial communication) ระหว่างอุปกรณ์ต่าง ๆ ซึ่งนิยมใช้เป็นการสื่อสารระหว่างไมโครคอนโทรลเลอร์ด้วยกัน การทำงานแบบอะซิงโครนัสหมายความว่าจะไม่มีสัญญาณนาฬิกา (clock signal) ส่งออกมาจากตัวส่งหรือตัวรับเพื่อกำหนดจังหวะการรับส่งข้อมูล แต่จะกำหนดผ่านโดยการตั้งความเร็วในการรับส่งข้อมูลของอุปกรณ์ดังกล่าวแทน



4.1 อัพโหลดโค้ด Arduino UNO

การอัพโหลดโค้ดให้กับ Arduino UNO ให้เซ็ท Dip Switch โดยให้ตัวที่ 3 และ 4 เป็น On ที่เหลือเป็น Off หมด

การใช้งาน UNO WiFi เบื้องต้น

เปิดโปรแกรม Arduino IDE เขียนโปรแกรม และ อัพโหลด ตามโค้ดด้านล่างนี้

void setup() {
  pinMode(13, OUTPUT);
  Serial.begin(115200);
}
void loop() {
  while (Serial.available()) {
    char inChar = (char)Serial.read(); 
    if (inChar == 'a') { 
      digitalWrite(13, HIGH);
    }
    else if (inChar == 'b') {
      digitalWrite(13, LOW);
    }
  }
}


อธิบายโค้ด

  • ที่ฟังก์ชั่น setup() ใช้คำสั่ง Serial.begin(115200) เพื่อเป็นการตั้งความเร็วในการรับส่งข้อมูลระหว่าง UNO กับ ESP8266

  • ที่ฟังก์ชั่น loop() จะคอยอ่านข้อมูลที่ส่งมาจากการสื่อสารผ่านพอร์ตอนุกรมแบบ UART โดยถ้าข้อมูลเป็น a ก็จะสั่งให้ LED ที่อยู่บนบอร์ด “ติด” ถ้าข้อมูลเป็น b ก็จะสั่งให้ LED ที่อยู่บนบอร์ด “ดับ” และโปรแกรมนี้ก็จะรอรับการสั่งงานจาก ESP8266 ไปเรื่อยๆ


การอัพโหลดโค้ด

ไปที่ Tools -> Board -> Arduino AVR Boards -> เลือกบอร์ดเป็น Arduino UNO

ไปที่ Tools -> Board -> Arduino AVR Boards -> เลือกบอร์ดเป็น Arduino UNO



เลือก Port โดยไปที่ Tools -> Port -> COM8
(โดย COM8 แต่ละเครื่องจะไม่เหมือนกัน ให้เลือกตามที่ปรากฎ)

เลือก Port โดยไปที่ Tools -> Port ->



คลิกที่ Upload

คลิกที่ Upload

รอจนกระทั่งขึ้น Done uploading. ที่แถบด้านล่าง แสดงว่าเราอัพโหลดโปรแกรมลงบอร์ดได้สำเร็จแล้ว

ขึ้น Done uploading. ที่แถบด้านล่าง



4.2 อัพโหลดโค้ด ESP8266

การอัพโหลดโค้ดให้กับ ESP8266 ต้องเซ็ท Dip Switch โดยให้ตัวที่ 5 กับ 6 และ 7 เป็น On ที่เหลือเป็น Off หมด

การใช้งาน UNO WiFi เบื้องต้น


เขียนโปรแกรม และ อัพโหลด ตามโค้ดด้านล่างนี้

void setup() {
  Serial.begin(115200);
}
void loop() {
  Serial.print("a"); 
  delay(1000);  
  Serial.print("b");  
  delay(1000);  
}



อธิบายโค้ด

  • ที่ฟังก์ชั่น setup() ใช้คำสั่ง Serial.begin(115200) เพื่อเป็นการตั้งความเร็วในการรับส่งข้อมูลระหว่าง UNO กับ ESP8266

  • ที่ฟังก์ชั่น loop() ใช้คำสั่ง Serial.print(“a”) เพื่อส่งค่าเป็นตัวอักษร a ออกมา และ คำสั่ง delay(1000) คือรอ 1 วินาที แล้วจึงส่งค่าเป็นตัวอักษร b ออกมา ด้วยคำสั่ง Serial.print(“b”) และรอ 1 วินาที วนลูปไปเรื่อยๆ

การอัพโหลดโค้ด

ไปที่ Tools -> Board -> ESP8266 Boards -> เลือกบอร์ดเป็น Generic ESP8266 Module

เลือกบอร์ดเป็น Generic ESP8266 Module

เลือก Port โดยไปที่ Tools -> Port -> COM8
(โดย COM8 แต่ละเครื่องจะไม่เหมือนกัน ให้เลือกตามที่ปรากฎ)

เลือก Port โดยไปที่ Tools -> Port -> COM

คลิกที่ Upload

คลิกที่ Upload



ในระหว่าง Upload ในขณะที่ขึ้นข้อความว่า Connecting ………


ให้กดปุ่ม MCU RESET ค้างไว้ระยะนึง แล้วปล่อย

ให้กดปุ่ม MCU RESET ระยะนึง แล้วปล่อย

รอจนกระทั่งขึ้น Done uploading. ที่แถบด้านล่าง แสดงว่าเราอัพโหลดโปรแกรมลงบอร์ดได้สำเร็จแล้ว

รอจนกระทั่งขึ้น Done uploading.



4.3 ทดสอบการทำงาน ระหว่าง Arduino UNO กับ ESP8266

ให้เซ็ท Dip Switch 1 และ 2 ให้เป็น On เพื่อเชื่อมระหว่าง UNO กับ ESP8266 ที่เหลือให้ Off หมด และให้กดปุ่ม MCU RESET 1 ครั้ง

ทดสอบการทำงาน ระหว่าง Arduino UNO กับ ESP8266



ถ้าพบว่า LED สีฟ้า บนบอร์ด กระพริบ ติด-ดับ แสดงว่า ESP8266 กับ Arduino UNO สามารถสื่อสารและทำงานร่วมกันได้แล้ว

การใช้งาน UNO WiFi