บทเรียน 1 พื้นฐาน

ทำไมต้องภาษา Mapo

Mapo (Mapolang) คือภาษาระดับสูงสำหรับเขียนเฟิร์มแวร์ลงบอร์ด ESP32 / ESP8266 / STM32 เขียนโค้ดเป็นภาษาไทยได้ 100% แล้วกดปุ่ม “สร้าง + แฟลช” จากในเบราว์เซอร์ได้เลย — ไม่ต้องติดตั้ง Arduino IDE, ไม่ต้องตั้งค่า toolchain, ไม่ต้องหาสายไฟล์ไหนเพิ่ม

11 บอร์ด
ESP32 / C3 / S2 / S3 / C6 · ESP8266 · STM32 (F103, F401, F411, G4, H7)
100% ไทย
คีย์เวิร์ด ชื่อตัวแปร ชื่อขา ตั้งเป็นภาษาไทยได้ทั้งหมด
0 การติดตั้ง
แฟลชผ่าน Web Serial บน Chrome / Edge
1 ปุ่ม
แปลภาษา → คอมไพล์ → แฟลช พร้อมเติมไลบรารีให้เอง

1 เขียนโค้ดเป็น “ภาษาไทย” ได้จริง ไม่ใช่แค่คอมเมนต์

คีย์เวิร์ดทุกตัวมีคำไทยเทียบเท่า และตั้งชื่อตัวแปร/ขา/งาน เป็นภาษาไทยได้ทั้งหมด — เด็ก ครู หรือช่างที่ไม่ได้ถนัดอังกฤษก็อ่านโค้ดออกทันที

.mapo
english

อ่านแล้วรู้เรื่องเลยว่า “เปิดไฟ → รอครึ่งวินาที → ปิดไฟ → รอครึ่งวินาที” โดยไม่ต้องแปลเป็นอังกฤษในหัว

เทียบคำไทย ↔ คำอังกฤษ (ใช้คำไหนก็ได้)

คำในภาษา Mapoเทียบเท่าภาษาอังกฤษความหมาย
ออกout / OUTPUTตั้งขาเป็นขาส่งออก
เข้าin / INPUTตั้งขาเป็นขารับเข้า
ดึงขึ้นpullupเปิดตัวต้านทานดึงขึ้นในบอร์ด
งานtaskงานหนึ่งชุด (หลายงานทำงานคู่ขนานกันได้)
ทำซ้ำloopวนซ้ำตลอดเวลา
ถ้า … จบถ้าif … endifเงื่อนไข
รอ 500 มิลลิวินาทีdelay(500) แบบไม่ค้างหน่วงเวลาโดยงานอื่นยังทำงานได้
เปิด / ปิดHIGH / LOWจ่ายไฟ / ตัดไฟ
อ่าน 14analogRead(14)อ่านค่าอนาล็อก
ดีเอชที11(4)DHT dht(4, DHT11)สร้างเซนเซอร์อุณหภูมิ/ความชื้น
ไพแอาร์(27)PIR pir(27)เซนเซอร์จับความเคลื่อนไหว
ไวไฟ(…)WiFi.begin(…)เชื่อมต่อ WiFi
เว็บ(80)WebServer server(80)เปิดเว็บเซิร์ฟเวอร์บนบอร์ด
เอ็มคิวทีที(…)PubSubClientต่อ MQTT broker
ส่ง / รับpublish / subscribeส่ง–รับข้อความ (topic)
💡ถนัดอังกฤษก็เขียนอังกฤษได้ — โค้ดไทยและอังกฤษผสมกันในไฟล์เดียวได้ด้วย เช่นใช้ out คู่กับชื่อขาภาษาไทย

2 ไม่ต้องติดตั้งอะไรเลย — เขียนและแฟลชจากเว็บ

ปัญหาใหญ่ของการสอนไมโครคอนโทรลเลอร์คือ “ลงโปรแกรมไม่ผ่าน” ซึ่งกินเวลาครึ่งคาบเรียน — Mapo ตัดขั้นตอนนั้นออกทั้งหมด

ขั้นตอนMapo (เว็บ IDE)Arduino ทั่วไป
ติดตั้งโปรแกรมไม่ต้องติดตั้ง — เปิดเบราว์เซอร์ติดตั้ง Arduino IDE + ไดรเวอร์ USB (CP2102/CH340)
ตั้งค่าเครื่องมือระบบตั้งให้ตามบอร์ดที่เลือกเลือกบอร์ด + พอร์ต + ตั้งค่าให้ถูก
ไลบรารีเติมให้อัตโนมัติ (ค้นหา + ติดตั้งระหว่างคอมไพล์)Library Manager → ค้น → ติดตั้ง → #include เอง
ต่อบอร์ดเสียบ USB แล้วกด “เชื่อมต่อบอร์ด”เสียบ USB + เลือก COM port ให้ถูก
อัปโหลดกดปุ่มเดียว: แปลภาษา → คอมไพล์ → แฟลชกด Upload (เจอ error ก็ต้องอ่านเอง)
ใช้กับเครื่องอื่นเปิดจากเครื่องไหนก็ได้ที่ล็อกอิน (งานอยู่ในบัญชี)ต้องติดตั้งและตั้งค่าใหม่ทุกเครื่อง
✓หมายเหตุ: ใช้ได้กับ Chrome / Edge บนคอมพิวเตอร์ (Web Serial) — ต่อบอร์ดผ่านสาย USB ตัวเดียวกับที่ใช้แฟลชปกติ

3 คุมฮาร์ดแวร์ได้จริง ครอบคลุมอุปกรณ์ที่ใช้บ่อย

ไม่ต้องหาไลบรารีทีละตัว — อุปกรณ์ยอดนิยมมีคำสั่งพร้อมใช้ และตั้งชื่อตัวแปรเป็นไทยได้

หมวดรองรับตัวอย่างคำสั่ง Mapo
จอแสดงผลLCD I2C · OLED (SSD1306 / SH1106) · 7-Segment · NeoPixel · RGB LEDจอ1 = โอแอลอีดี()
ให้ จอ1.แสดง "สวัสดี"
เซนเซอร์DHT11 · DS18B20 · LM35 · LDR · ความชื้นดิน · HC-SR04 (วัดระยะ) · MPU6050 (ไจโร/เอียง) · BMP280 (ความดัน/ความสูง) · Joystick · IR Receiver · PIR (HC-SR501) · Buzzerดี1 = ดีเอชที11(4)
ระยะ = อ่านระยะ(5, 18)
มอเตอร์ / ไฟServo · Stepper · PWMให้ เซอร์โว1.หมุน 90
ระบบในตัวPID Controller (คุมอุณหภูมิ/มอเตอร์) · บันทึก/อ่านค่าถาวร · ตัวจับเวลาให้ พีไอดี1.ตั้งค่า(2.0, 0.5, 1.0)

ตัวอย่างจริง: อ่านอุณหภูมิ + จับคนเดินผ่าน

.mapo
english

4 เน็ตเวิร์กและคลาวด์ “ในตัว” ไม่ต้องหาไลบรารีเพิ่ม

งานไอโอทีส่วนใหญ่ต้องต่อ WiFi แล้วคุยกับเซิร์ฟเวอร์ — ทั้งชุดนี้มีคำสั่งมาตรฐานให้แล้ว

ความสามารถคำสั่งในภาษา Mapoใช้ทำอะไร
WiFiไวไฟ("ชื่อ", "รหัส")เชื่อมต่อ WiFi
Access Pointจุดเชื่อมต่อ("Mapo-AP", "1234")ตั้งบอร์ดเป็น hotspot ให้มือถือต่อ
เวลาจริง (NTP)ให้ เวลา1.ซิงค์()ได้เวลาจริงสำหรับตั้งเวลา/บันทึก log
MQTTคิว = เอ็มคิวทีที("broker", 1883)
ให้ คิว.ส่ง "บ้าน/อุณหภูมิ" ค่า
ส่งค่าเซนเซอร์ขึ้นคลาวด์ / รับคำสั่งกลับ
Web Serverเว็บ1 = เว็บ(80)
ให้ เว็บ1.เส้นทาง "/" "สวัสดี"
ทำหน้าเว็บคุมอุปกรณ์จากมือถือ
HTTP Clientให้ เอชทีทีพี1.รับ("http://…")ดึงข้อมูลจาก API ภายนอก
TCP / UDPทีซีพี1 = ทีซีพี(8080)คุยกับอุปกรณ์/โปรแกรมอื่นแบบ socket
WebSocketให้ ดับบลิวเอส1.เริ่ม()ส่งข้อมูลสองทางแบบเวลาจริง
JSONให้ เจ1.เพิ่ม "อุณหภูมิ" 26.5สร้าง/อ่าน JSON คุยกับระบบอื่นได้
กล้องESP32-CAMสตรีมภาพ / ถ่ายรูป

ตัวอย่างจริง: เปิดเว็บเซิร์ฟเวอร์บนบอร์ด

.mapo
english

5 งานหลายอย่างพร้อมกัน โดยไม่บล็อกกัน

สั่ง รอ ในงานไหน งานนั้นจะหยุดรอโดยไม่แช่ทั้งบอร์ด — ระบบแปลงเป็น state machine แบบ millis() ให้อัตโนมัติ

เรื่องเขียนเองแบบ Arduinoภาษา Mapo
หน่วงเวลา 2 วินาทีdelay(2000) → บอร์ดค้างทั้งใบ เว็บไม่ตอบ เซนเซอร์ไม่อ่านรอ 2 วินาที → พักเฉพาะงานนั้น งานอื่นทำงานต่อ
ทำ 3 อย่างพร้อมกันต้องเขียน millis() เอง 3 ชุด + ตัวแปรเวลา + if ซ้อนกันเขียนเป็น 3 งาน แยกกัน แต่ละงานมี ทำซ้ำ + รอ ของตัวเอง
แก้ไขภายหลังแก้ logic เวลาทีเดียวพังทั้งระบบแก้งานใดงานหนึ่งได้ โดยไม่กระทบงานอื่น
อ่านง่ายแค่ไหนตัวแปร lastRead, prevMillis ปนกันไปหมดอ่านเป็นประโยค: “อ่านค่าทุก 2 วินาที”
.mapo
english

ทั้งสามงานทำงานพร้อมกัน — อ่านเซนเซอร์ทุก 2 วินาที ส่งคลาวด์ทุก 10 วินาที และเว็บตอบสนองตลอดเวลา โดยไม่ต้องเขียน millis() เองแม้แต่บรรทัดเดียว

6 รองรับสไตล์หุ่นยนต์ (แบบ ROS2): topic / pub / recv

แยก “อวัยวะ” (อ่านเซนเซอร์) กับ “สมอง” (ตัดสินใจ) แล้วคุยกันผ่าน topic — เหมาะกับหุ่นยนต์และระบบที่มีหลายส่วน

.mapo
english
🤖แนวคิดเดียวกับ ROS2 แต่ทำงานบนบอร์ดเดียว — แยกส่วนอ่าน (organ) ออกจากส่วนคิด (brain) ทำให้เพิ่มเซนเซอร์ใหม่โดยไม่ต้องแก้สมอง และทดสอบทีละส่วนได้

7 มี AI ผู้ช่วยที่ “รู้จักภาษา Mapo” ในตัว

ในหน้า IDE มีผู้ช่วย AI ที่ถูกป้อนคู่มือภาษา Mapo ไว้แล้ว จึงตอบตรงไวยากรณ์ ไม่เดาแบบ AI ทั่วไป

ถามเป็นภาษาไทยได้เลยได้อะไรกลับมา
“ช่วยเขียนโค้ดอ่าน PIR แล้วส่งขึ้น MQTT”โค้ด Mapo ที่คอมไพล์ผ่านทันที (รู้ทั้งชื่อไทยและอังกฤษ)
“error นี้คืออะไร แก้ยังไง”อธิบายสาเหตุเป็นภาษาไทย + โค้ดที่แก้แล้ว
“ทำไมบอร์ดไม่เชื่อม WiFi”ไล่ตรวจทีละจุด (ชื่อ WiFi / รหัส / ระยะสัญญาณ)
“เพิ่มปุ่มกดให้หยุดมอเตอร์”แก้โค้ดเดิมให้ พร้อมอธิบายว่าอะไรเปลี่ยน

⌨ เขียนโค้ดให้

รู้ไวยากรณ์ Mapo จริง ทั้งคีย์เวิร์ดไทย–อังกฤษ และเทมเพลตอุปกรณ์ทุกตัว

🐞 ช่วยแก้ error

อ่านข้อความ error จากตัวคอมไพล์ แล้วชี้บรรทัดที่ผิดพร้อมวิธีแก้

🇹🇭 ตอบภาษาไทย

อธิบายแนวคิดและศัพท์เทคนิคเป็นไทย เข้าใจได้โดยไม่ต้องแปล

🔎 ตรวจก่อนแฟลช

เช็กไวยากรณ์/พินชนกันให้ก่อน ลดการแฟลชพลาดซ้ำ ๆ

8 เอาไปใช้งานจริงได้ ไม่ใช่แค่ของเล่นในห้องเรียน

สิ่งที่ต้องมีเวลาติดตั้งให้ลูกค้าและดูแลระยะยาว — มีมาให้ตั้งแต่ต้น

ความต้องการหน้างานในภาษา Mapo
แก้โค้ดแล้วดันขึ้นบอร์ดที่ติดตั้งอยู่ ไม่ต้องไปถึงที่อัปเดตเฟิร์มแวร์ทางไกล (OTA) ในตัว — เลือกบอร์ดในเน็ตแล้วกดอัปเดต
คุยกับระบบของลูกค้าMQTT + Web Server + JSON ครบ
จำค่าที่ตั้งไว้ แม้ไฟดับบันทึก/อ่านค่าถาวรในตัว
คุมอุณหภูมิ/ความเร็วให้คงที่PID Controller ในตัว
สอนพนักงาน/ส่งงานต่อโค้ดอ่านเป็นภาษาไทย คนอื่นรับช่วงต่อได้ทันที
เอกสารสำหรับติดตั้งจริงคู่มือแยกจากบทเรียนเด็ก: สเปก · พินเอาต์ · ขั้นตอนติดตั้ง · การดูแล

9 ตารางเทียบกับ Arduino C++ และ MicroPython

งานเดียวกัน เขียนต่างกันแค่ไหน — ดูจากโค้ดจริง

งานสิ่งที่ต้องการ ภาษา Mapoเขียนไทยได้ 100% Arduino C++มาตรฐานเดิม MicroPythonไพธอนบนบอร์ด
ไฟกระพริบ
ไฟ1 2 ออก
งาน หลัก
  ทำซ้ำ
    เปิด ไฟ1
    รอ 500 มิลลิวินาที
    ปิด ไฟ1
    รอ 500 มิลลิวินาที
  จบทำซ้ำ
จบงาน
#define LED 2
void setup() {
  pinMode(LED, OUTPUT);
}
void loop() {
  digitalWrite(LED, HIGH);
  delay(500);
  digitalWrite(LED, LOW);
  delay(500);
}
from machine import Pin
from time import sleep
led = Pin(2, Pin.OUT)
while True:
    led.value(1)
    sleep(0.5)
    led.value(0)
    sleep(0.5)
อ่านอุณหภูมิ DHT11
ดี1 = ดีเอชที11(4)
อุณหภูมิ = ดี1.อุณหภูมิ
#include <DHT.h>
DHT dht(4, DHT11);
void setup(){ dht.begin(); }
float t = dht.readTemperature();
import dht
from machine import Pin
d = dht.DHT11(Pin(4))
d.measure()
t = d.temperature()
หน่วงเวลาโดยไม่ค้างบอร์ด
งาน อ่านค่า
  ทำซ้ำ
    ค่า = อ่าน 34
    รอ 2 วินาที
  จบทำซ้ำ
จบงาน
unsigned long prev = 0;
void loop() {
  if (millis() - prev >= 2000) {
    prev = millis();
    int v = analogRead(34);
  }
}
import asyncio
async def read():
    while True:
        v = adc.read()
        await asyncio.sleep(2)
asyncio.run(read())
ส่งค่าขึ้น MQTT
คิว = เอ็มคิวทีที("broker", 1883)
ให้ คิว.ส่ง "บ้าน/อุณหภูมิ" 26.5
#include <PubSubClient.h>
#include <WiFi.h>
WiFiClient esp;
PubSubClient mqtt(esp);
mqtt.setServer("broker", 1883);
mqtt.publish("บ้าน/อุณหภูมิ", "26.5");
# ติดตั้ง umqtt.simple ก่อน
from umqtt.simple import MQTTClient
c = MQTTClient("id", "broker")
c.connect()
c.publish(b"บ้าน/อุณหภูมิ", b"26.5")

ตารางเทียบคุณสมบัติ

✓ = มีในตัว · △ = ทำได้แต่ต้องประกอบเอง/มีเงื่อนไข · ✗ = ไม่มี
ความสามารถ Mapo Arduino C++ MicroPython Blockly / ลากบล็อก
เขียนภาษาไทยได้ทั้งโค้ด✓✗✗△ บล็อกไทย แต่ไม่เห็นโค้ดจริง
ไม่ต้องติดตั้งเครื่องมือ (ใช้เว็บ)✓✗△ ต้องแฟลชเฟิร์มแวร์ + ใช้ Thonny✓
เติมไลบรารีให้อัตโนมัติ✓✗✗△ บางเจ้า
หน่วงเวลาแบบไม่ค้างบอร์ด✓ ให้เลย✗ ต้องเขียน millis() เอง△ ต้องใช้ asyncio△ ต้องเข้าใจเอง
หลายงานพร้อมกัน✓ เขียนเป็น “งาน”✗ ออกแบบเอง△ asyncio / thread✗
Web Server ในตัว✓△ WiFi + HTTP เขียนเอง△ เขียนเอง✗
MQTT ในตัว✓△ ติดตั้ง PubSubClient△ ติดตั้ง umqtt✗
อัปเดตทางไกล (OTA)✓ ในตัว△ ทำได้แต่ซับซ้อน✗✗
AI ช่วยเขียนที่รู้จักภาษา✓✗✗✗
ใช้ทำงานเชิงพาณิชย์✓✓△ จำกัดด้านประสิทธิภาพ△ จำกัด
ขนาดชุมชน / แหล่งช่วยเหลือ△ ใหม่ กำลังโต✓✓ ใหญ่มาก✓ ใหญ่✓ ใหญ่

10 เหมาะกับใคร

กลุ่มผู้ใช้สิ่งที่ได้ตัวอย่างการใช้งาน
โรงเรียน / ศูนย์ STEMเด็กได้ลองของจริงภายในคาบเรียน เพราะไม่เสียเวลาติดตั้งเครื่องมือต่อเซนเซอร์ → ไฟติด → เขียนเงื่อนไขเอง
ครูผู้สอนสื่อที่อ่านออกทั้งห้อง และอธิบาย error เป็นภาษาไทยแจกบทเรียนเป็นชุด (STEM Kit) ให้ทำตามทีละขั้น
เมกเกอร์ / นักศึกษาทำโปรเจกต์เสร็จไว ได้ทั้ง WiFi, เว็บ, MQTT โดยไม่ต้องประกอบไลบรารีสถานีวัดอากาศส่งขึ้นคลาวด์ในบ่ายเดียว
ช่างเทคนิค / วิศวกรติดตั้งและดูแลระยะยาวได้ด้วย OTA + เอกสารสเปกติดตั้งชุดควบคุมในโรงงานหลายสิบจุด อัปเดตจากออฟฟิศ
ทีมงาน / สตาร์ทอัพโค้ดอ่านง่าย คนใหม่รับช่วงต่อได้เร็วทำต้นแบบไอโอทีให้ลูกค้าดู โดยไม่ต้องรอทีม embedded

ความจริงที่ควรรู้ (ข้อจำกัด)

เรื่องรายละเอียด
ต้องมีอินเทอร์เน็ตตอนคอมไพล์การคอมไพล์เกิดบนเซิร์ฟเวอร์ (หลังเขียนเสร็จแล้ว แฟลชซ้ำไม่ต้องรอ) — ข้อดีคือไม่ต้องติดตั้ง toolchain บนเครื่อง
ภาษาใหม่ ชุมชนยังเล็กยังไม่มีกระทู้/ตัวอย่างเยอะเท่า Arduino ที่มีมานานหลายสิบปี (เรามีบทเรียน + AI ช่วยตอบในตัว)
ความเร็วเทียบเท่า Arduino ทั่วไปโค้ดถูกแปลงเป็น C++ ให้อยู่แล้ว แต่ยังไม่เทียบเท่าโค้ด C++ ที่จูนมือระดับศาสตราจารย์ ด้านความเร็วและขนาดเฟิร์มแวร์
กลุ่มอุปกรณ์เป็นชุดที่คัดไว้ไม่ใช่ Arduino Library ทั้งหมดที่มีในโลก — ตัวที่รองรับถูกทดสอบแล้วว่าใช้ได้จริง ถ้าต้องการตัวอื่นบอกได้
การดีบั๊กยังไม่มีตัวดีบั๊กแบบหยุดทีละบรรทัด (ใช้คอนโซล/แสดงค่า ออกมาช่วยดู)
บอร์ด ESP8266รองรับ แต่ต้องดูสเปกความจำ — งานที่ใช้ WiFi + MQTT + เว็บพร้อมกันควรใช้ ESP32

→ เริ่มต้นใช้งาน 5 ขั้น

  1. ทำความรู้จักภาษาเข้า mapolang.org — ดูภาพรวม ไวยากรณ์ และตัวอย่างจริง
  2. เรียนตามบทเรียน STEMที่ mapolang.org/lessons — แยกเป็น “เรียนรู้ STEM” กับ “ใช้งานจริง” และระดับ พื้นฐาน / กลาง / ชำนาญ
  3. เปิด IDE ต่อบอร์ดเข้า mapo-mcu.mapolang.org ด้วย Chrome/Edge → เสียบ USB → กด “เชื่อมต่อบอร์ด”
  4. เขียน 5 บรรทัดแรกก็อปโค้ดไฟกระพริบด้านบน → กดปุ่มเดียว → LED บนบอร์ดกระพริบ
  5. ต่อยอดเป็นงานจริงเพิ่ม WiFi → ส่งค่าเข้า MQTT → หรือทำเว็บคุมอุปกรณ์จากมือถือ แล้วใช้ OTA อัปเดตระยะไกล
ESP32ESP32-C3ESP32-S2ESP32-S3ESP32-C6ESP8266STM32 F103STM32 F401STM32 F411STM32 G4STM32 H7

สรุปสั้น ๆ

Mapo ทำให้ “คนไทย” เข้าถึงงานฝังโปรแกรม (embedded) ได้จริง เพราะเขียนไทยได้ 100% · ไม่ต้องติดตั้งอะไร · อุปกรณ์และไลบรารีครบ · ใช้งานได้ทั้งในห้องเรียนและหน้างานจริง — เรียนเพื่อเข้าใจ แล้วเอาไปใช้ทำของขายได้เลย