2016/Jan/03

5. การเรียกใช้งาน Wi-Fi Module เชื่อมต่อกับ Access Point ที่บ้าน อาจจะเรียก Wi-Fi Router ก็แล้วแต่สะดวกนะครับ
(Board NodeMCU V.3 พร้อม ESP8266 Wi-Fi Module)

เนื่องด้วยตัวบอร์ดทั้งของ NodeMCU V.2 กับ LoLin V.3 มี Module ESP8366 Wi-Fi ติดมาด้วย เราจึงสามารถใช้เชื่อมต่อกับ Access Point ที่บ้านเราได้เลยมาครับ

เริ่มต้นด้วยการไปเปิดไฟล์ตัวอย่าง ที่มาพร้อมกับระบบ โดยเปิดใช้ไฟล์ WiFiClient

จากนั้นทำการแก้ไข ชื่อ SSID ของ Wi-Fi ที่จะเชื่อมต่อ (1) และ เปลี่ยนรหัสผ่านให้ถูกต้อง (2)

ตัวอย่างการแก้ไข SSID และ Password เพื่อใช้เชื่อมต่อกับ Wi-Fi ที่บ้านเราครับ

จากนั้นผมก็ตัดข้อความที่ไม่ได้ใช้งานออก จะได้เห็นโค้ดเต็มๆ ครับ

#include <ESP8266WiFi.h>
const char* ssid = "g-service-true";
const char* password = "aaaaaaaaaa";
void setup() {
Serial.begin(115200);
delay(10);
// We start by connecting to a WiFi network
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
void loop() {
delay(2000);
}

 

ถ้า SSID กับ password ถูกต้องก็จะแสดงคำว่า WiFi connected และ แสดง IP Address ที่ได้รับแจกจาก Access point ครับ ลองใช้ PC หรือ Notebook แล้วพิมพ์คำสั่ง ping IP Address ของ NodeMCU  ก็จะเห็นว่าสามารถติดต่อได้

จบแล้วครับ

2015/Dec/29

4. การใช้งาน DHT22 Humidity and Temperature Sensor (Board NodeMCU v.2 พร้อม ESP8266 wi-fi Module)

หลังจากที่ลอง บอร์ด Board NodeMCU V.3 พร้อม ESP8266 wi-fi Module กันมาแล้วคราวนี้เรามาลองให้ทำการอ่านค่าจาก DHT22 Humidity and Temperature Sensor กันดีกว่า 

อุปกรณ์ DHT22 Humidity and Temperature Sensor หน้าตาก็เป็นแบบนี้ครับ

  

ใครต้องการดู Data sheet ก็เข้าไปอ่านได้จาก http://dlnmh9ip6v2uc.cloudfront.net/datasheets/Sensors/Weather/RHT03.pdf 

ต่อวงจรง่ายๆ ตามรูปเลยครับ 

จากนั้นก็ทำการ Donload Driver ของ DHT22 จากเว็บไซต์ https://github.com/adafruit/DHT-sensor-library 

เอามาติดตั้งในแฟ้ม C:\Program Files (x86)\Arduino\libraries 
** directory ขึ้นอยู่กับว่าท่่านติดตั้งที่ไหนนะครับ แต่อยู่ในแฟ้ม libraries เปลี่ยนชื่อแฟ้มให้เป็น DHT 

กำหนดให้ใช้ DHT Library DHT Sersor

จากนั้นก็คัดลอก Code ลงไป 

เปิด Serial Monitor แล้ว ลอง Run ดูครับ 

ผลการทดลอง สามารถอ่านค่าได้เป็นที่น่าพอใจครับ ขอจบ การทดลองที่ 4 ไปก่อนนะครับ คราวหน้ามาเจอกันใหม่ 

edit @ 29 Dec 2015 19:30:10 by BigTUI ^_^

เพิ่มเติมครับ กรณีที่เป็น DHT11 

  

เราก็เพียงแต่เปลี่ยน จาก DHT22 เป็น DHT11 เท่านั้นเองครับ 

ผลปรากฏว่าใช้ได้ สามารถอ่านค่าอุณหภูมิ กับ ค่าความชื้นได้เหมือนกัน


โค้ด : 

#include <DHT.h>
#define DHTPIN D1
#define LEDOnboard D4
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
pinMode(LEDOnboard,OUTPUT);
Serial.begin(115200);
dht.begin();
}
void loop()
{
digitalWrite(D4,LOW);
delay(2000);
digitalWrite(D4,HIGH);
float h = dht.readHumidity();
float t = dht.readTemperature();
if (isnan(t) || isnan(h))
{
Serial.println("Error reading DHT!");
}
else
{
Serial.print("Humidity: ");
Serial.println(h);
Serial.print("Temp: ");
Serial.println(t);
}
delay(2000);
}

 

edit @ 4 Jan 2016 14:07:06 by BigTUI ^_^

2015/Dec/29

3.ลองไฟกระพริบ LED 2 ดวงบน Board NodeMCU V.3 พร้อม ESP8266 wi-fi Module

พอดีวันนี้ได้รับบอร์ด NodeMCU v.3 พร้อม ESP8266 wi-fi Module ของ LoLin มาใหม่ ขนาดกว้างกว่าเดิม (บอร์ดใหม่กว้าง 3 Cm.)

ตัวบอร์ดมีการเพิ่มฟังก์ชั่นการใช้งาน โดยให้ขา Reserved เป็น Ground (GND) กับ USB Power Supply (VUSB)

มาลองต่อวงจรไฟกระพริบ 2 ดวงกันครับ 

เนื่องจากบอร์ดใหญ่มากกก เต็มแผ่น Bread board เลยครับ ทำให้ลำบากกับการเชื่อมต่อขาบอร์ด NodeMCU ไปยังอุปกรณ์ภายนอก เลยต้องมุดใต้บอร์ดแทนครับ 
 

จากนั้นก็ลองใช้คำสั้ง มาตรฐาน โดยใช้ขาก D0 กับ D1 เป็น Digital Output ติดดับสลับกันครับ (ช้าเร็วก็ปรับที่ delay นะครับ 1000 = 1 วินาที โดยประมาณ)

ผลออกมาใช้ได้เหมือนกันครับ 

http://www.uppic.org/image-D85F_5681F6EB.gif 

จบตอน 3 แล้วครับ LED 2 ดวง

หมายเหตุ. LED Onboard จะใช้ค่า D4 นะครับ ที่เห็น Onboard กระพริบด้วย ผมกำหนดค่า D4 เข้าไปด้วยครับ 

edit @ 29 Dec 2015 10:18:32 by BigTUI ^_^

2015/Dec/11

2.LED Blink (Board NodeMCU v.2 พร้อม ESP8266 wi-fi Module) 

 วันนี้มาต่อเรื่องคำสั่งเกี่ยวกับ Digital Output เพื่อสั่งให้ หลอด LED ที่ต่อกับ ขา D0-D11 ติด-ดับได้

เรามาลองต่อ Resister 470 Ohm จากขา D0 มาเข้าหลอด LED แล้วลงกราวด์ 



จากนั้น ก็พิมพ์คำสั้ง ลงไป

/*กำหนดให้ LED ที่ขา D0 กระพริบ (Blink)*/
void setup() {    
// กำหนดให้ขา D0 ซึ่งเป็นขา Digital ให้เป็น Output port
pinMode(D0, OUTPUT);
}

// เขียนฟังก์ชั่นวนลูป ไม่มีที่สิ้นสุด
void loop() {
digitalWrite(D0, HIGH); // กำหนดให้ LED มีสถานะเป็น On  (LED ติด) โดยการกำหนดให้ขา D0 มีค่าเป็น HIGH
delay(4000); // wait for a second
digitalWrite(D0, LOW); // กำหนดให้ LED มีสถานะเป็น Off (LED ดับ) โดยการกำหนดให้ขา D0 มีค่าเป็น LOW
delay(1000); // wait for a second
}

 

เมื่อทดลอง Run ดูก็จะเห็นว่าหลอด LED มีการกระพริบ โดยที่จังหวะที่ LED ติด (LED เป็น HIGH ประมาณ 4 วินาที) จะสว่างนานกว่าช่วงที่ LED ดับ (LED เป็น LOW ประมาณ 1 วินาที)

Digital Output Blink

http://www.uppic.org/image-8F4F_566AD902.gif

วันนี้จบตอน 2 แค่นี้ก่อนนะครับ 

 

edit @ 11 Dec 2015 21:14:47 by BigTUI ^_^

edit @ 11 Dec 2015 21:15:39 by BigTUI ^_^

2015/Dec/10

1.เริ่มใช้งาน Board NodeMCU v.2 พร้อม ESP8266 wi-fi Module


ได้ Board NodeMCU v.2 พร้อม ESP8266 wi-fi Module มายังไม่รู้ใช้งานไง ในเว็บแต่ละที่แนะนำให้ไปโหลดโปรแกรมชือ Arduino จากเว็บ https://www.arduino.cc/ => เข้าไปที่ Download => เลือกโปรแกรมที่จะติดตั้งในที่นี้ผมใช้ Windows ผมก็จะเลือก Windows Insatller => ในหน้าต่าง Donate หากท่านประสงค์จะร่วมสมทบทุนให้ทางผู้พัฒนาก็เลือกได้ ตอนนี้ผมขอลองก่อนก็เลือก just download => รอสักพักก็จะได้ไฟล์ที่ชื่อว่า arduino-1.6.6.6-windows.exe (หากขณะที่ท่านอ่านอยู่อาจจะมี version ใหม่อีกก็ได้ครับ 

ทำการติดตั้งโปรแกรม arduino-1.6.6.6-windows.exe ที่ download มา เมื่อติดตั้งเรียบร้อยก็จะได้โปรแกรม (ขณะติดตั้งระบบก็จะขออนุญาต ในการติดตั้ง driver , library ที่จำเป็นต่างๆ ก็ให้กด Install ครับ) รอจนกว่าหน้าต่างจะบอกว่า Arduino Setup : Compleated ให้กดปุ่ม Close (ปิดหน้าต่างติดตั้ง) แล้วจากนั้นลองเปิดโปรแกรม Arduino ขึ้นมาก็จะเห็นหน้าต่างดังนี้ครับ 

จากนั้นให้ไปเลือกชนิดของ Board ที่เราจะใช้งาน โดยการเปิดไปที่เมนู Tools => Board : ....  แต่เนื่องด้วยบอร์ด ที่เราใช้ยังไม่มีในรายการ เราจึงต้องไปทำการติดตั้งบอร์ดขึ้นมาก่อน

โดยการเลือกไปที่เมนู File => Preferences 

จากนั้นให้นำ URLs. ชื่อ  http://arduino.esp8266.com/stable/package_esp8266com_index.json ลงในฃ่อง Addition Boards Manager URLs.  => กดปุ่ม OK

จากนั้นไปเปิดเมนู Tools => Board: xxxxxx => Boards Manager...

ให้ทำการเลือก Type ไปที่ Contributed => เลือก Version 2.0.0 (ผมเลือกอันล่าสุดเลยแล้วกัน) => เลือกที่ปุ่ม Install รอจนติดตั้งแล้วเสร็จ (นานเหมือนกันครับ..)

 เมื่อติดตั้งแล้วเสร็จให้เข้าไปที่ Tools => Board : .... => เลื่อนไปดูด้านขวาจะเห็นว่ามีบอร์ด 

 ของเราเป็น Board ของ NodeMCU เลยเลือกที่เป็น Version ล่าสุดแล้วกันครับ

เย้..ติดตั้งโปรแกรมเรียบร้อยแล้ว ลองเสียบสาย USB เข้าเครื่องดู รอสักครู๋ ให้เครื่อง Detect  Board 

 

 หาก Windows ไม่สามารถ download driver ได้ ให้ไปโหลดจากเว็บ http://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx  หรือ http://www.silabs.com/Support%20Documents/Software/CP210x_VCP_Windows.zip แล้วทำการ Update Driver อีกครั้ง เมื่อเสร็จสิ้นการ update Driver แล้วเราก็จะเห็น Drver CP210x เป็น COM3 (COM Port 3 แต่ละเครื่องอาจจะไม่เหมือนกัน)

กลับมาที่โปรแกรม Arduino กำหนดที่เมนู Tools => เลือก Port: .... ให้เป็น COM3 เพื่อใช้ติดต่อกับ Board ของเรา

เรียบร้อยแล้วเรามาลองโปรแกรมเล่นๆ กันดูว่าทำงานได้จริงหรือเปล่า โดยการเลือกเมนู File => เลือก Examples => เลือกตัวอย่างจาก ESP8266 => เลือก ฺBlink (โปรแกรมที่สั่งให้ LED บนบอร์ด กระพริบ)

จากนั้นก็จะมีการเปิดโปรแกรม Blink ขึ้นมาใหม่ 

ทดสอบ Upload ข้อมูลลงบอร์ด ขณะ Upload ไฟสถานะจะกระพรืบเร็ว แสดงว่ามีการรับข้อมูลทาง COM Port 3 เข้ามาในเครื่อง เมื่อการ Upload ข้อมูลเรียบร้อยแล้ว ไฟ LED บนบอร์ด จะกระพรืบตามชุดคำสั่งของตัวอย่าง

http://www.uppic.org/image-CA6B_566AD902.gif

Builtin LED Blink

ลองมาดูชุดคำสั่งบ้าง 

การเขียนโปรแกรมมีอยู่ 2 ชุด

ชุดแรกเป็นการกำหนดค่าตัวแปรที่จะใช้งาน อยู่ภายใต้ void setup() {....}
pinMode(BUILTIN_LED, OUTPUT); // เป็นการเรียกใช้งาน BUILTIN_LED และกำหนดให้มีทำงานเป็น output

ชุดที่สองจะเป็นการทำงานใน Loop อยู่ภายใต้ void loop() {....}
digitalWrite(BUILTIN_LED, LOW); // เป็นการสั่งให้มีการเขียนข้อมูลแบบ Digital ไปที่ BUILTIN_LED กำหนดให้ไฟ LED ติด (on)  (หมายเหตุ ค่า LOW จะมีระดับแรงดันไฟฟ้า หลอดไฟ LED จึงจะติด)
delay(1000); // กำหนดให้รอ 1 วินาที
digitalWrite(BUILTIN_LED, HIGH); // เป็นการสั่งให้มีการเขียนข้อมูลแบบ Digital ไปที่ BUILTIN_LED กำหนดให้ไฟ LED ดับ (off) โดยการกำหนดให้มีค่าเป็น HIGH
delay(2000); //กำหนดให้รอ 2 วินาที (เพื่อที่จะให้เห็นว่าช่วงที่ไฟ LED ดับจะมีเวลานานกว่าช่วงที่ LED ติด)
}

 

ภาพแสดงการต่อใช้งานขาต่างๆ ของ NodeMCU (NodeMCU Headers’ Pinout)

 

ขอบคุณบทความดีๆ จาก 

 

 

edit @ 10 Dec 2015 21:44:53 by BigTUI ^_^

edit @ 11 Dec 2015 21:12:13 by BigTUI ^_^

edit @ 11 Dec 2015 21:14:28 by BigTUI ^_^



ศรีเดช ปัญจขันธ์
View full profile