เนื้อหาในบทความ
ภาพรวม SN1 Solar Node
SN1 Solar Node เป็นบอร์ดพัฒนา IoT ที่ออกแบบมาเพื่อการใช้งานกลางแจ้งโดยเฉพาะ โดยใช้ชิป ESP32-C3 ที่มี WiFi และ Bluetooth LE ในตัว พร้อมระบบชาร์จแบตเตอรี่ด้วยพลังงานแสงอาทิตย์และกล่องกันน้ำระดับ IP67 ทำให้เหมาะสำหรับ:
- ระบบวัดอุตสาหกรรมกลางแจ้ง
- สถานีตรวจวัดสภาพอากาศ
- ระบบเตือนภัยน้ำท่วม
- โปรเจกต์ Smart Farm และ Precision Agriculture
- ระบบติดตามพาหนะและ Assets
💡 เกร็ดความรู้: SN1 Solar Node ออกวางจำหน่ายครั้งแรกในเดือนเมษายน 2026 และได้รับความสนใจจากชุมชน IoT ทั้งในและต่างประเทศเนื่องจากความสามารถในการทำงานแบบ batteryless (ไม่มีแบตเตอรี่) หรือใช้แบตเตอรี่เป็นตัวเลือกเสริม
สเปคเทคนิค
Microcontroller
- • Chip: ESP32-C3-WROOM-05
- • Core: RISC-V 32-bit single-core
- • Clock: 160 MHz
- • Memory: 400 KB SRAM, 4 MB Flash
- • Wireless: WiFi 802.11 b/g/n, Bluetooth 5 LE
Power Management
- • Solar Input: 5V-12V, max 2A
- • Battery: Li-Ion/Li-Po 3.7V (optional)
- • Charging: MPPT solar charger built-in
- • Power Consumption: ~50mA (active), ~10µA (deep sleep)
Interfaces
- • GPIO: 22 pins (15 available)
- • ADC: 12-bit, 6 channels
- • UART: 2 ports
- • SPI: 1 port
- • I2C: 1 port
Physical
- • Enclosure: IP67 waterproof
- • Dimensions: 80mm x 60mm x 30mm
- • Mounting: 4 x M3 screw holes
- • Connector: IP67 waterproof cable gland
อุปกรณ์ที่ต้องใช้
Hardware พื้นฐาน
| อุปกรณ์ | จำนวน | ราคาโดยประมาณ |
|---|---|---|
| SN1 Solar Node Board | 1 | ~฿1,200-1,500 |
| แผงโซลาร์เซลล์ 5V-12V | 1 | ~฿300-800 |
| แบตเตอรี่ Li-Ion 18650 (optional) | 1-2 | ~฿100-200/ก้อน |
| Sensor ต่างๆ (ตามโปรเจกต์) | - | แล้วแต่โปรเจกต์ |
Software/Tools
- ✅ Arduino IDE 2.x หรือ PlatformIO
- ✅ USB-C Cable (สำหรับ programming)
- ✅ ESPHome (ถ้าต้องการใช้กับ Home Assistant)
- ✅ CynoIoT Platform account (ฟรี)
การติดตั้งและตั้งค่าเบื้องต้น
Step 1: ติดตั้ง Driver และ Arduino IDE
เริ่มต้นด้วยการติดตั้ง Arduino IDE และเพิ่ม board support สำหรับ ESP32-C3:
// 1. เปิด Arduino IDE
// 2. ไปที่ File > Preferences
// 3. ในช่อง "Additional Boards Manager URLs" ใส่:
https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
// 4. ไปที่ Tools > Board > Boards Manager
// 5. ค้นหา "esp32" และติดตั้ง "ESP32 by Espressif Systems"
// 6. เลือก Board: "ESP32C3 Dev Module"Step 2: เชื่อมต่อและทดสอบ
เชื่อมต่อ SN1 Solar Node เข้ากับคอมพิวเตอร์ด้วยสาย USB-C:
/*
* SN1 Solar Node - First Test
* ทดสอบการทำงานของ GPIO และ Serial
*/
#define LED_PIN 8 // Built-in LED on SN1 Solar Node
void setup() {
Serial.begin(115200); // เปิด Serial Monitor
pinMode(LED_PIN, OUTPUT); // ตั้งค่า LED pin เป็น output
Serial.println("SN1 Solar Node - First Test");
Serial.println("ESP32-C3 initialized!");
}
void loop() {
digitalWrite(LED_PIN, HIGH); // เปิด LED
Serial.println("LED ON");
delay(1000); // รอ 1 วินาที
digitalWrite(LED_PIN, LOW); // ปิด LED
Serial.println("LED OFF");
delay(1000); // รอ 1 วินาที
}การเขียนโปรแกรมสำหรับ IoT
โปรเจกต์: Weather Station พลังงานแสงอาทิตย์
ตัวอย่างการสร้างสถานีตรวจวัดสภาพอากาศที่ส่งข้อมูลไปยัง CynoIoT:
/*
* SN1 Solar Node - Weather Station
* วัดอุณหภูมิ ความชื้น และแรงดันแบตเตอรี่
* ส่งข้อมูลไปยัง CynoIoT Platform
*/
#include <WiFi.h>
#include <DHT.h>
#include <HTTPClient.h>
// WiFi Credentials
const char* ssid = "YOUR_WIFI_SSID";
const char* password = "YOUR_WIFI_PASSWORD";
// CynoIoT Configuration
const char* cynoiot_server = "api.cynoiot.com";
const char* device_id = "YOUR_DEVICE_ID";
const char* api_key = "YOUR_API_KEY";
// Sensor Configuration
#define DHT_PIN 4
#define DHT_TYPE DHT22
DHT dht(DHT_PIN, DHT_TYPE);
// Battery Pin (ADC)
#define BATTERY_PIN 1
// Timing
unsigned long lastSend = 0;
const long sendInterval = 60000; // ส่งทุก 60 วินาที
void setup() {
Serial.begin(115200);
// เริ่มต้นใช้งาน sensor
dht.begin();
// เชื่อมต่อ WiFi
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi connected!");
// เข้าสู่โหมดประหยัดพลังงาน
WiFi.setSleep(true);
}
void loop() {
unsigned long currentMillis = millis();
// ตรวจสอบเวลาส่งข้อมูล
if (currentMillis - lastSend >= sendInterval) {
lastSend = currentMillis;
// อ่านค่า sensor
float temperature = dht.readTemperature();
float humidity = dht.readHumidity();
// อ่านแรงดันแบตเตอรี่
int batteryRaw = analogRead(BATTERY_PIN);
float batteryVoltage = (batteryRaw / 4095.0) * 3.3 * 2; // Voltage divider
// ตรวจสอบว่าอ่านค่าได้หรือไม่
if (isnan(temperature) || isnan(humidity)) {
Serial.println("Failed to read from DHT sensor!");
return;
}
// ส่งข้อมูลไปยัง CynoIoT
sendDataToCynoIoT(temperature, humidity, batteryVoltage);
// แสดงค่าใน Serial Monitor
Serial.printf("Temp: %.2f°C, Humidity: %.2f%%, Battery: %.2fV\n",
temperature, humidity, batteryVoltage);
}
// รอสักครู่ก่อนเข้า deep sleep (ถ้าจำเป็น)
delay(1000);
}
void sendDataToCynoIoT(float temp, float hum, float battery) {
if (WiFi.status() == WL_CONNECTED) {
HTTPClient http;
String url = "http://" + String(cynoiot_server) + "/api/v1/data";
// สร้าง JSON payload
String payload = "{";
payload += "\"device_id\":\"" + String(device_id) + "\",";
payload += "\"api_key\":\"" + String(api_key) + "\",";
payload += "\"data\":{";
payload += "\"temperature\":" + String(temp) + ",";
payload += "\"humidity\":" + String(hum) + ",";
payload += "\"battery\":" + String(battery);
payload += "}}";
// ส่ง HTTP POST
http.begin(url);
http.addHeader("Content-Type", "application/json");
int httpResponseCode = http.POST(payload);
if (httpResponseCode > 0) {
Serial.printf("HTTP Response: %d\n", httpResponseCode);
} else {
Serial.printf("Error sending data: %s\n", http.errorToString(httpResponseCode).c_str());
}
http.end();
} else {
Serial.println("WiFi not connected!");
}
}💡 เกร็ดความรู้: โค้ดนี้ใช้ WiFi sleep mode เพื่อประหยัดพลังงาน และส่งข้อมูลทุก 60 วินาที คุณสามารถปรับเปลี่ยนช่วงเวลาตามความเหมาะสมกับโปรเจกต์ของคุณ
ไอเดียโปรเจกต์ที่ทำได้
🌾 Smart Farm
ระบบวัดความชื้นในดิน อุณหภูมิ และคุณภาพน้ำสำหรับการเกษตร
🌊 Flood Warning
ระบบเตือนภัยน้ำท่วมด้วย ultrasonic sensor และปั๊มน้ำอัตโนมัติ
🏭 Industrial IoT
ระบบตรวจสอบเครื่องจักรและสภาพแวดล้อมในโรงงาน
🚗 Asset Tracking
ระบบติดตามพาหนะและทรัพย์สินที่ต้องการพลังงานยาวนาน
🌡️ Air Quality Monitor
สถานีวัดคุณภาพอากาศกลางแจ้ง PM2.5 และ CO2
⚡ Energy Monitoring
ระบบวัดการใช้พลังงานแสงอาทิตย์และแบตเตอรี่
การแก้ปัญหาที่พบบ่อย
❌ ปัญหา: บอร์ดเปิดไม่ติด
สาเหตุ: แบตเตอรี่หมด หรือแผงโซลาร์ไม่ได้รับแสง
วิธีแก้: เชื่อมต่อ USB-C เพื่อชาร์จ หรือเอาแผงโซลาร์ไปผึ้งแดด
❌ ปัญหา: WiFi เชื่อมต่อไม่ได้
สาเหตุ: สัญญาณอ่อน หรือ password ผิด
วิธีแก้: วางบอร์ดใกล้ access point หรือใช้ external antenna
❌ ปัญหา: Sensor อ่านค่าไม่ได้
สาเหตุ: ต่อสายผิด pin หรือ sensor เสีย
วิธีแก้: เช็กวงจรตาม datasheet หรือลอง sensor ตัวใหม่
❌ ปัญหา: แบตเตอรี่เติมเร็วหมดเร็ว
สาเหตุ: ใช้พลังงานมากเกินไป
วิธีแก้: ใช้ deep sleep mode และลด frequency การส่งข้อมูล
สรุป
SN1 Solar Node เป็นตัวเลือกที่น่าสนใจสำหรับโปรเจกต์ IoT กลางแจ้งที่ต้องการ:
- ✅ พลังงานแสงอาทิตย์ - ไม่ต้องกังวลเรื่องสายไฟ
- ✅ กันน้ำ IP67 - ใช้งานได้ทุกสภาพอากาศ
- ✅ ESP32-C3 - WiFi และ Bluetooth LE ในตัว
- ✅ ราคาย่อมเยา - เหมาะกับทั้งเรียนและใช้งานจริง
ถ้าคุณกำลังมองหาบอร์ด IoT สำหรับโปรเจกต์กลางแจ้ง SN1 Solar Node เป็นตัวเลือกที่ควรพิจารณา!