กระทู้เมื่อเร็วๆ นี้

หน้า: [1] 2 3 ... 10
1
IOT : Internet of Thing (ESP32) / Re: ลายปริ้นวงจรบอร์ดทดลอง IOT ESP32 [V.2027]
« กระทู้ล่าสุด โดย admin เมื่อ กันยายน 03, 2026, 02:24:54 PM »

รายการอุปกรณ์ (คลิกที่รายการเพื่อสั่งซื้อได้)

www.allnewstep.com
ลำดับที่รายการจำนวนตัวหมายเหตุ
1Diode 1N40011
2Pin Header1x28
3Pin Header1x33
4Pin Header1x44
5Pin Header1x4 90 Degree1
6Pin Header1x51
7Pin Header1x81
8Pin Header1x152
9Relay 5V1
10สวิตช์กดติดปล่อยดับ-สีแดง1
11สวิตช์กดติดปล่อยดับ-สีเหลือง1
12สวิตช์กดติดปล่อยดับ-สีเขียว1
13สวิตช์กดติดปล่อยดับ-สีน้ำเงิน1
14R-2206
15R-1k1
16R-4k72
17R-10k1
18R network 5pin-2201
19Potentiometer 10k2
20LDR1
21LED 3mm4
22DS18B201
23DHT111
240.96 OLED i2c1
25LCD 16x2 i2c1
26Mini-Brearboard1 สามารถเลือกใช้สีอื่นที่ขนาดเท่ากันได้
27Screw Terminal KF128-2P1
28Transistor BC3371 สามารถเลือกเบอร์แทนได้โดยขาจะต้องเรียง CBE
29สกรู M3 ยาว 0.6cm4
30น็อตตัวเมียทองเหลืองแบบยาว 10mm2
31ESP32 DOIT NodeMCU ESP32 DEVKIT V11
32Knob WH1482


หมายเหตุ
บางอุปกรณ์สามารถหาซื้อได้จากเว็บ shopee ตัวอย่างเช่น
-ตัวต้านทานปรับค่าได้ ใช้คำค้นหาว่า RV09 คลิก
-จุกหัวหมุนตัวต้านทานปรับค่าได้ ใช้คำค้นหาว่า Knob WH148 คลิก
-โปรโต้บอร์ดขนาดเล็ก ใช้คำค้นหาว่า mini breadboard 170 holes คลิก
-จอ LCD 16 ตัวอักษร 2 บรรทัด สื่อสารแบบ i2c ใช้คำค้นหาว่า lcd 1602 i2c  คลิก
2
IOT : Internet of Thing (ESP32) / ลายปริ้นวงจรบอร์ดทดลอง IOT ESP32 [V.2027]
« กระทู้ล่าสุด โดย admin เมื่อ กันยายน 03, 2026, 01:36:37 PM »
ลายปริ้นวงจรบอร์ดทดลอง IOT ESP32 [V.2027]
  ลายปริ้นที่ใช้ในการศึกษาทดลองค้นคว้าเกี่ยวกับเทคโนโลยี IoT (Internet of Things) โดยบอร์ดทดลองนี้ใช้โมดูลที่ใช้ชิพ ESP32 รุ่นที่มีขาใช้งาน 30 ขา (รุ่น DOIT DevKit)

มีรายละเอียดดังนี้
1. ลายวงจรของบอร์ดทดลอง


3. ตำแหน่งการจัดวางอุปกรณ์




4. ตำแหน่งการวางตัวต้านทาน Network 5 ขา โดยให้ขาร่วม(ขาที่มีจุดกลมบนตัวถัง) อยู่ด้านขอบแผ่น PCB


5. ตัดตุ่มพลาสติกหนุนสวิตช์ด้านใต้ออกก่อนการลงปริ้นบัดกรี เพื่อให้ขาสวิตช์โผล่มากเพียงพอที่จะบัดกรี
   -ตัวอย่างสวิตช์สีฟ้าก่อนตัด
   -ตัวอย่างสวิตช์สีเหลืองหลังตัด


6. ไฟล์ต้นแบบสำหรับส่งโรงงานผลิต (Gerber File)
https://drive.google.com/file/d/1zIHjums4xc0xKm-Rq703mQABSGvPns9o/view?usp=sharing




















3
เปลี่ยน VS Code ให้เป็นสุดยอดเครื่องมือเขียน Arduino พร้อมจำลองวงจรด้วย PlatformIO และ Wokwi

สำหรับนักพัฒนาสาย Embedded หรือผู้ที่เริ่มต้นเขียนโปรแกรม Arduino คงคุ้นเคยกับ Arduino IDE กันเป็นอย่างดี แม้ว่าในเวอร์ชันใหม่ๆ จะมีการพัฒนาขึ้นมาก แต่สำหรับงานโปรเจกต์ที่มีความซับซ้อน มีไฟล์โค้ดจำนวนมาก หรือต้องการระบบ Auto-complete (พิมพ์โค้ดอัจฉริยะ) ที่รวดเร็ว การเปลี่ยนมาใช้ Visual Studio Code (VS Code) ร่วมกับ PlatformIO ถือเป็นจุดเปลี่ยนที่ช่วยให้ชีวิตการเขียนโค้ดง่ายขึ้นแบบก้าวกระโดด

ยิ่งไปกว่านั้น วันนี้เราจะเพิ่มความสะดวกขึ้นไปอีกขั้นด้วย Wokwi ตัวจำลองการทำงาน (Simulator) ยอดนิยมที่จะช่วยให้เราทดสอบโค้ด Arduino ได้ทันทีบน VS Code โดยไม่ต้องต่อบอร์ดจริงหรือต่อสายไฟให้ยุ่งยาก!

ในบล็อกนี้เราจะพาไปดูขั้นตอนการติดตั้งและใช้งานแบบทีละสเต็ป (Step-by-Step) ตั้งแต่ศูนย์จนพร้อมใช้งานกันครับ
ขั้นตอนที่ 1: ติดตั้งโปรแกรม Visual Studio Code
1. พิมพ์คำค้นหาด้วยคำว่า vscode ด้วยกูเกิล แล้วคลิก Download


2. คลิกเลือกไฟล์ติดตั้งให้ตรงกับระบบปฏิบัติการในคอมพิวเตอรืที่ใช้งาน (ตัวอย่างใช้กับ windows)


3. คลิกขวาที่ไฟล์ที่ดาวน์โหลดสำเร็จ เลือก Run as administrator


4. คลิกเลือก I accept...


5. คลิกเลือกรายการติดตั้งที่ต้องการ (ในที่นี้เลือกทุกรายการ)


6. เมื่อติดตั้งเสร็จสิ้นคลิกที่ปุ่ม Finish


ขั้นตอนที่ 2: ติดตั้ง Extension "PlatformIO IDE"
7. คลิกไอคอนดังรูปเพื่อติดตั้งตัวเสริม


8. ตัวแรกติดตั้ง PlatformIO พิมพ์ช่องค้นหาด้วยคำว่า platform เลือกดังรูปแล้วคลิกติดตั้ง


9. คลิกที่ปุ่มดังรูป



ขั้นตอนที่ 3: ติดตั้ง Wokwi Simulator บน VS Code
10. ติดตั้งตัวเสริมตัวที่สอง ค้นหาด้วยคำว่า wokwi  เลือกดังรูปแล้วคลิกติดตั้ง


11.  คลิกที่ปุ่มดังรูป


12. สร้างโฟลเดอร์ใหม่เพื่อไว้สำหรับเก็บไฟล์งานในไดร์ฟอื่นที่ไม่ใช่ไดร์ฟ C (ในที่นี้ตั้งชื่อโฟลเดอร์ว่า PlatformIO)


13. คลิกที่ไอคอนรูปหัวมด (PlatformIO) คลิกที่ Open แล้วสร้างไฟล์งานใหม่โดยคลิกที่ New Project


14. ตั้งชื่อไฟล์, เลือกบอร์ดที่จะใช้งาน, เลือกโฟลเดอร์ที่จะเก็บไฟล์ (เลือกโฟลเดอร์ที่ได้เตรียมไว้จากข้างต้น)


15. รอ...


16. รอ..


17. รอ..


18. รอ..


19. คลิกตามรูป


20. เมื่อเสร็จจะแสดงข้อมูลในไฟล์ ini ดังรูป


21. คลิกที่หัวมด คลิก Device เพื่อดูพอร์ตอนุกรมที่คอมพิวเตอร์กำลังเชื่อมต่อ


22. เมื่อมีการเสียบบอร์ดมาภายหลัง ให้คลิกรูปบ้าน (Home) ก่อน 1 ครั้งแล้วกลับมาคลิกที่ไอคอน Device จะเห็นว่ามีพอร์ตอนุกรมเพิ่มขึ้นมา (จำพอร์ตที่จะใช้เชื่อมต่อไว้)


23. คลิกที่ไฟล์ platformio.ini เพื่อเพิ่มรายการที่จะใช้ดังรูป (จากขั้นตอน 22 พบว่าพอร์ตที่ใช้เชื่อมต่อกับบอร์คือ COM5 ดังนั้นเวลากำหนดในไฟล์ ini จึงใช้ COM5)
โค๊ด: [Select]
upload_port=COM5
upload_speed=115200
monitor_speed=9600


หมายเหตุ
-หากไม่ใส่ค่าดังกล่าวตัวโปรแกรมจะดำเนินการอัตโนมัติ อาจจะทำให้สามารถอัพโหลดได้เช่นกัน



24. ไอคอนบนจะปรากฏตัวเลขขึ้นบนไอคอน เป็นการแจ้งให้รู้ว่ามีไฟล์งานที่ยังไม่บันทึกจำนวนกี่ไฟล์


25. ทำการบันทึก


26. เขียนโค้ดโปรแกรมในไฟล์ main.cpp (จะต้องมี#include <Arduino.h> เมื่อใช้ VS-Code กับ PlatformIO)
โค๊ด: [Select]
#define LED 13
#include <Arduino.h>
void setup() {
  pinMode(LED,OUTPUT);
}
void loop() {
  digitalWrite(LED,HIGH);
  delay(1000);
  digitalWrite(LED,LOW);
  delay(1000);
}


27. เมื่อต้องการคอมไพล์ (แปลงภาษาซีเป็นภาษาเครื่อง) ให้คลิกเครื่องหมายถูกด้านล่าง หากโค้ดที่เขียนขึ้นถูกไวยกรณ์จะมีคำว่า [SUCCESS]


28. เมื่อต้องการอัพโหลดโค้ดลงบอร์ดคลิกที่หัวลูกศรด้านล่าง หากอัพโหลดผ่านจะแสดงผลดังรูป


จำลองการทำงานด้วย wokwi ในโปรแกรม VSCode+PlatformIO
29. สร้างไฟล์ใหม่โดยคลิกขวาบริเวณว่าง เลือกคลิกที่ New File...


30. ตั้งชื่อไฟล์ว่า "diagram.json" ตั้งชื่อเสร็จแล้วคลิกที่ไฟล์จะได้ดังรูป (อย่าเพิ่งคลิกที่ Get your License Key)


31. เปิดโปรแกรมบราวน์เซอร์เปิดเว็บ www.wokwi.com ทำการ sign in


32. sign in ด้วย gmail (เปิดหน้าเว็บค้างไว้)


33. กลับมาที่โปรแกรม VSCode ทำการคลิกที่  Get your License Key


34. คลิกที่ Open


35. กลับไปที่เว็บบราวน์เซอร์จะปรากฏดังรูป ให้คลิกที่ GET YOUR LICENSE


36. หน้าต่างจะปรากฏ key


37. กลับไปที่โปรแกรม VSCode คลิกที่ Open


38. คลิกที่ไฟล์ diagram.json จะยังคงขึ้นมุมขวาบนดังรูป ให้ทำการปิดโปรแกรมแล้วเปิดใหม่


39. เมื่อเปิดโปรแกรมขึ้นมาใหม่แล้วคลิกที่ไฟล์ diagram.json มุมบนจะแสดงชื่อผู้ที่ใช้งานเว็บ wokwi


40. กลับไปที่เว็บ wokwi ดำเนินการดังนี้
   - วาดวงจรเพื่อใช้ทดลองตามต้องการ
   - คลิกที่ไฟล์ diagram.json
   - คลิกในบริเวณโค้ด json แล้วเลือกทั้งหมด (Ctrl+A)
   - คลิกขวาบริเวณที่เลือกแล้วคัดลอก


41. กลับมาที่โปรแกรม VSCode คลิกขวาที่ไฟล์ diagram.json แล้วคลิกตรงคำว่า Open With...


42. คลิกเลือกตรงคำว่า Text Editor


43. คลิกที่บริเวณพื้นที่ว่างแล้ววาง (Ctrl+V)


44. บันทึกไฟล์งาน


45. คลิกที่ไฟล์ diagram.json ตัววงจรจะปรากฏขึ้น


46. ไปที่บราวน์เซอร์เปิดเว็บ https://docs.wokwi.com/vscode/project-config คัดลอกโค้ด


47. กลับมาที่โปรแกรม VSCode สร้างไฟล์ใหม่


48. ตั้งชื่อว่า wokwi.toml แล้ววางโค้ดที่คัดลอกมา


49. คลิกที่ไฟล์ main.cpp ดำเนินการคอมไพล์


50. คลิกที่ไฟล์ wokwi.toml หาที่อยู่ของไฟล์ภาษาเครื่องจากหน้าต่างผลการคอมไพล์


51. คัดลอกมาวางแทนค่าเดิม


52. บันทึกไฟล์งาน


53. คลิกที่ไฟล์ diagram.json คลิกที่ปุ่มเริ่มการจำลอง


54. ผลการจำลอง
4
วงจรการเชื่อมต่อโมดูลต่าง ๆ









5
สายสัญญาณที่เชื่อมต่อไว้แล้ว
วงจรแสดงผล LCD i2c





ตัวอย่างโค้ด
โค๊ด: [Select]
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2);  /* 0x27 for PCF8574 and 0x3F for PCF8574A*/
void setup()
{
  lcd.init();
  lcd.backlight();
  lcd.setCursor(2,0);
  lcd.print("Hello, world!");
  lcd.setCursor(4,1);
  lcd.print("LCD i2c Lab");
}
void loop()
{
}


6
สายสัญญาณที่เชื่อมต่อไว้แล้ว
วงจรแสดงผล OLED





ตัวอย่างโค้ด
โค๊ด: [Select]
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define OLED_RESET    -1 // Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C //Address OLED
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
int x;
void setup() {
  Serial.begin(9600);
  if(!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
    Serial.println(F("SSD1306 allocation failed"));
    for(;;); // Don't proceed, loop forever
  }
}
void loop(){
  display.clearDisplay();
  display.setTextColor(WHITE,BLACK);   //Text is white ,background is black
  display.setCursor(0, 0);
  display.setTextSize(2);
  display.println("OLED ");
  display.setTextSize(1);   
  display.println("Arduino Laboratory");
  display.setTextColor(BLACK,WHITE); // 'inverted' text
  display.print("www.praphas.com");
  display.setTextColor(WHITE,BLACK); // 'inverted' text again
  display.setCursor(60,0);
  display.setTextSize(2); 
  display.println(x,DEC);
  display.display(); //
  x++;
  delay(250);
}


7
สายสัญญาณที่เชื่อมต่อไว้แล้ว
วงจรแสดงผล 7 Segment ชิพ HT16K33(i2c)






ตัวอย่างโค้ด
โค๊ด: [Select]
/* pin connection
  + -> 3.3-5V
  - -> GND
  D -> SDA (A4)
  C -> SCL (A5)
*/
#include <Wire.h>
#include <Adafruit_GFX.h>
#include "Adafruit_LEDBackpack.h"
Adafruit_7segment display = Adafruit_7segment();
void setup() {
  display.begin(0x70);
  display.clear();
}
void loop() {
  byte x, y, d;
  bool blinkColon = false;
  display.println("Abcd");
  display.writeDisplay();
  delay(5000);
  for (int i = 0; i < 99; i++) {
    display.println(i);
    display.writeDisplay();
    delay(50);
  }
  for (float f = 0; f < 5; f += 0.01) {
    display.println(f);
    display.writeDisplay();
    delay(50);
  }
  for (float f = 10; f < 50; f += 0.1) {
    x = int(f) / 10;
    y = int(f) % 10;
    d = int(f * 10) % 10;
    display.println("   C");
    display.writeDigitNum(0, x, false);
    display.writeDigitNum(1, y, true);
    display.writeDigitNum(3, d, false);
    display.writeDisplay();
    delay(50);
  }
  for (int i = 0; i < 10; i++) {
    display.println(1234);
    blinkColon = !blinkColon;
    display.drawColon(blinkColon);
    display.writeDisplay();   
    delay(1000);
  }
}

8
สายสัญญาณที่เชื่อมต่อไว้แล้ว
วงจรคีย์แพด






ตัวอย่างโค้ด
โค๊ด: [Select]
#include <Keypad.h>
#define LED 5
const byte ROWS = 4; //four rows
const byte COLS = 3; //three columns
char keys[ROWS][COLS] = {
  {'1','2','3'},
  {'4','5','6'},
  {'7','8','9'},
  {'*','0','#'}
};
byte rowPins[ROWS] = {6,7,8,9}; // Pins connected to R1, R2, R3, R4
byte colPins[COLS] = {10,11,12};      // Pins connected to C1, C2, C3
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );
void setup()
{
  Serial.begin(9600);
  pinMode(LED,OUTPUT);
}
void loop()
{
  char key = keypad.getKey();
  if (key)
  {
    Serial.println(key);
    digitalWrite(LED,HIGH);delay(200);
    digitalWrite(LED,LOW);
  }
}
9
สายสัญญาณที่เชื่อมต่อไว้แล้ว
วงจรแสดงผล LCD เชื่อมต่อแบบ 4 บิต





ตัวอย่างโค้ด
โค๊ด: [Select]
#include <LiquidCrystal.h>
/* The circuit:
 * LCD RS pin to digital pin 13
 * LCD E  pin to digital pin 12
 * LCD D4 pin to digital pin 4
 * LCD D5 pin to digital pin 5
 * LCD D6 pin to digital pin 6
 * LCD D7 pin to digital pin 7
 * LCD R/W pin to ground
*/
LiquidCrystal lcd(13,12,4,5,6,7);   // set up the LCD's connection pins
void setup()
{
  lcd.begin(16, 2);               // set LCD size
  lcd.print("hello, world!");
}
void loop() {}
10
สายสัญญาณที่เชื่อมต่อไว้แล้ว
วงจรแสดงผล 7 Segment ชิพ MAX7219





ตัวอย่างโค้ด
โค๊ด: [Select]
#include "LedControl.h"
LedControl lc=LedControl(11,13,10,1); // 11->DIN,13->CLK,10->CS,1->1devices
void setup()
{
  lc.shutdown(0, false);   // Enable display
  lc.setIntensity(0, 5);  // Set brightness level (0 is min, 15 is max)
  lc.clearDisplay(0);      // Clear display register
  Serial.begin(9600);
}
void loop()
{
  byte x, y, z;
  int i;
  for (i = 0; i < 1000; i++)
  {
    Serial.println("--" + String(i));
    x = i / 100;                    //hundred digits
    y = (i % 100) / 10;             //tens digit
    z = i % 10;                     //unit digit
    lc.setDigit(0, 3, x, false);
    lc.setDigit(0, 2, y, false);
    lc.setDigit(0, 1, z, false);
    delay(100);
  }
}
หน้า: [1] 2 3 ... 10