ถ้าคุณอยากเริ่มเรียน Java นี่คือแนวทางที่ดีสำหรับผู้เริ่มต้น:
1. ทำความเข้าใจพื้นฐานของ Java
- Java เป็น ภาษาโปรแกรมเชิงวัตถุ (OOP - Object-Oriented Programming)
- ใช้หลักการ Write Once, Run Anywhere (WORA) หมายถึงเขียนโค้ดครั้งเดียวแล้วสามารถรันได้บนหลายแพลตฟอร์ม
- ใช้สำหรับ พัฒนาแอปพลิเคชันเว็บ, โมบาย (Android), เดสก์ท็อป และระบบ backend
2. ติดตั้ง Java และเครื่องมือพัฒนา
- ติดตั้ง JDK (Java Development Kit): ดาวน์โหลดจาก Oracle หรือใช้ OpenJDK
- เลือก IDE สำหรับเขียนโค้ด:
- IntelliJ IDEA (แนะนำสำหรับมือใหม่)
- Eclipse
- VS Code (ใช้ extension Java)
3. เรียนรู้ไวยากรณ์พื้นฐานของ Java
เริ่มต้นจากเรื่องง่าย ๆ ก่อน:
- ตัวแปรและประเภทข้อมูล (
int,double,String,boolean) - คำสั่งควบคุม (
if-else,switch-case) - ลูป (
for,while,do-while) - ฟังก์ชัน (
method) - คลาสและวัตถุ (
class,object,constructor)
ตัวอย่างโปรแกรมแรกใน Java (Hello World)
javapublic class HelloWorld { public static void main(String[] args) { System.out.println("Hello, Java!"); } }
4. ฝึกเขียนโค้ด และทำโจทย์
- ลองแก้โจทย์ง่าย ๆ จาก LeetCode, HackerRank, หรือ CodeWars
- ฝึกเขียน โปรแกรมเล็ก ๆ เช่น เครื่องคิดเลข, เกมทายตัวเลข
5. เรียนรู้แนวคิดเชิงวัตถุ (OOP) ใน Java
เข้าใจ 4 หลักการของ OOP:
- Encapsulation (การห่อหุ้มข้อมูล)
- Inheritance (การสืบทอด)
- Polymorphism (พหุนาม)
- Abstraction (การซ่อนรายละเอียด)
6. เรียนรู้ Java ขั้นสูง
- Collection Framework (List, Set, Map)
- Exception Handling (การจัดการข้อผิดพลาด)
- Lambda Expression & Stream API
- Database (JDBC, Hibernate, JPA)
- Spring Boot (สำหรับเว็บแอปพลิเคชัน)
พัฒนาเว็บ, Android
ถ้าคุณต้องการเรียน Java เพื่อพัฒนาแอป Android นี่คือแนวทางที่แนะนำ:
1. เรียนพื้นฐาน Java ก่อน
ก่อนสร้างแอป Android ควรเข้าใจพื้นฐาน Java เช่น
- ตัวแปรและประเภทข้อมูล:
int,String,boolean - การควบคุมโปรแกรม:
if-else,switch,for,while - การสร้างคลาสและอ็อบเจ็กต์ (OOP)
- การจัดการข้อผิดพลาด (Exception Handling)
2. ติดตั้งเครื่องมือพัฒนา
- ดาวน์โหลดและติดตั้ง Android Studio จาก developer.android.com
- ติดตั้ง JDK (ส่วนใหญ่จะมาพร้อม Android Studio แล้ว)
- ใช้ Android Emulator หรือ มือถือจริง (เปิด USB Debugging)
3. เข้าใจโครงสร้างโปรเจกต์ Android
MainActivity.javaหรือMainActivity.kt→ ไฟล์หลักของแอปactivity_main.xml→ ไฟล์ UI ของแอปAndroidManifest.xml→ กำหนดค่าต่าง ๆ ของแอปres/→ เก็บรูปภาพ ไอคอน และไฟล์ XML อื่น ๆ
4. สร้างแอป Android แรก (Hello World!)
เปิด Android Studio แล้วสร้างโปรเจกต์ใหม่ (เลือก Java)
ตัวอย่าง MainActivity.java:
javapackage com.example.helloworld; import android.os.Bundle; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView textView = findViewById(R.id.textView); textView.setText("Hello, Android!"); } }
5. เรียนรู้ UI และการโต้ตอบ (XML + Java)
- Widgets:
TextView,Button,EditText,ImageView - Layout:
LinearLayout,RelativeLayout,ConstraintLayout - Event Handling: ใช้
setOnClickListener()เพื่อให้ปุ่มทำงาน
6. เรียนรู้ Activity และ Intent
- Activity คือ หน้าจอของแอป
- ใช้ Intent เพื่อเปลี่ยนหน้า
javaIntent intent = new Intent(this, SecondActivity.class); startActivity(intent);
7. เรียนรู้ RecyclerView และการแสดงผลรายการ
ใช้ RecyclerView เพื่อแสดงรายการข้อมูล เช่น รายชื่อสินค้า, ข้อความแชท
8. การจัดเก็บข้อมูล (Database & API)
- SharedPreferences → เก็บค่าต่าง ๆ ในเครื่อง
- SQLite / Room Database → ใช้เก็บข้อมูลแบบออฟไลน์
- Firebase / REST API → ดึงข้อมูลจากเซิร์ฟเวอร์
9. ฝึกสร้างแอปเล็ก ๆ เพื่อทดลอง
✅ แอปเครื่องคิดเลข
✅ แอป To-Do List
✅ แอปแสดงข้อมูลจาก API (เช่น ข่าว, สภาพอากาศ)
10. ศึกษา Android ขั้นสูง
- Jetpack Components → ViewModel, LiveData, Navigation
- MVVM Architecture → โครงสร้างที่ใช้ในแอปจริง
- Android Jetpack Compose → UI แบบใหม่ของ Android
Java for Electronics device
ถ้าคุณต้องการใช้ Java สำหรับพัฒนาอุปกรณ์อิเล็กทรอนิกส์ นี่คือแนวทางที่เหมาะสม:
1. เข้าใจพื้นฐาน Java และฮาร์ดแวร์
- เรียนรู้ Java SE (Standard Edition)
- เข้าใจ การสื่อสารกับฮาร์ดแวร์ เช่น GPIO, Serial Communication (UART), I2C, SPI
2. เลือกแพลตฟอร์มหรือบอร์ดอิเล็กทรอนิกส์
- Raspberry Pi (รองรับ Java ผ่าน Pi4J, JavaFX)
- Arduino (โดยปกติใช้ C/C++ แต่สามารถเชื่อมต่อกับ Java ผ่าน Java Serial)
- ESP32/ESP8266 (รองรับการสื่อสารกับ Java ผ่าน MQTT, WebSockets)
- BeagleBone Black (ใช้ Java กับ Linux-based IoT)
3. ใช้ไลบรารี Java สำหรับอิเล็กทรอนิกส์
- Pi4J → ควบคุม GPIO บน Raspberry Pi
- JSerialComm / RXTX → ใช้สื่อสารผ่าน Serial (UART)
- Java ME Embedded → สำหรับอุปกรณ์ฝังตัวขนาดเล็ก
- Eclipse IoT → พัฒนาแอป IoT ที่ใช้ Java
4. สร้างโปรเจกต์จริง
✅ ควบคุม LED และเซ็นเซอร์ บน Raspberry Pi ผ่าน Java
✅ สื่อสารกับ Arduino ผ่าน Serial (เช่น ควบคุมมอเตอร์, อ่านค่าจากเซ็นเซอร์)
✅ พัฒนา IoT Dashboard เพื่อดูข้อมูลจากเซ็นเซอร์แบบเรียลไทม์
✅ เชื่อมต่อกับคลาวด์ เช่น Google Firebase หรือ AWS IoT
Smart Home
ถ้าคุณต้องการใช้ Java สำหรับพัฒนา Smart Home นี่คือแนวทางที่เหมาะสม:
1. เลือกฮาร์ดแวร์สำหรับ Smart Home
- Raspberry Pi → ใช้ Java ควบคุม Relay, Sensor, Camera
- ESP32/ESP8266 → ใช้ร่วมกับ Java ผ่าน MQTT หรือ REST API
- Arduino + Java → ใช้ JSerialComm เชื่อมกับอุปกรณ์อื่น
- Home Assistant + Java → ใช้ Java พัฒนาส่วนเสริมให้ระบบอัตโนมัติในบ้าน
2. เรียนรู้การสื่อสารกับฮาร์ดแวร์
✅ GPIO → ควบคุมไฟ, มอเตอร์, เซ็นเซอร์
✅ Serial Communication (UART) → เชื่อมต่ออุปกรณ์ภายนอก
✅ I2C / SPI → อ่านค่าจากเซ็นเซอร์ เช่น อุณหภูมิ, ความชื้น
✅ MQTT / HTTP API → ควบคุมอุปกรณ์ผ่านเครือข่าย
3. ใช้ Java Framework สำหรับ IoT และ Smart Home
- Pi4J → ควบคุม GPIO บน Raspberry Pi
- Eclipse Kura → ใช้ Java ใน IoT Gateway
- Spring Boot + MQTT → พัฒนา Backend สำหรับ Smart Home
- Android + Java → ทำแอปควบคุม Smart Home จากมือถือ
4. ตัวอย่างโปรเจกต์ Smart Home ที่ใช้ Java
✅ เปิด-ปิดไฟอัตโนมัติ ผ่านแอปมือถือ
✅ ระบบควบคุมอุณหภูมิ ใช้เซ็นเซอร์ DHT11/DHT22
✅ กล้องวงจรปิดอัจฉริยะ เชื่อมต่อ Java OpenCV
✅ ประตูอัจฉริยะ ใช้ RFID + Java
คุณอยากเริ่มพัฒนา Smart Home ไปทางไหนก่อน เช่น ควบคุมไฟฟ้า, ระบบรักษาความปลอดภัย หรือเซ็นเซอร์อัจฉริยะ?
ถ้าคุณต้องการใช้ Java เพื่อควบคุมไฟฟ้าในระบบ Smart Home นี่คือแนวทางที่แนะนำ:
1. เลือกฮาร์ดแวร์สำหรับควบคุมไฟฟ้า
✅ Relay Module → ใช้เปิด-ปิดไฟฟ้า
✅ Raspberry Pi + Pi4J → ใช้ Java ควบคุมรีเลย์ผ่าน GPIO
✅ ESP32/ESP8266 + MQTT → เชื่อมต่อระบบควบคุมผ่าน WiFi
✅ Arduino + Java Serial → ควบคุมไฟฟ้าผ่านพอร์ต Serial
2. ติดตั้งซอฟต์แวร์และไลบรารีที่จำเป็น
- ติดตั้ง Java 11+ บน Raspberry Pi
- ใช้ Pi4J สำหรับควบคุม GPIO
- ใช้ JSerialComm ถ้าต้องการเชื่อมกับ Arduino
- ใช้ MQTT (Eclipse Paho) ถ้าต้องการควบคุมผ่านเครือข่าย
3. ตัวอย่างโค้ดควบคุมไฟฟ้าด้วย Java + Raspberry Pi
เปิด-ปิดรีเลย์ผ่าน GPIO
javaimport com.pi4j.io.gpio.*; public class LightControl { public static void main(String[] args) throws InterruptedException { final GpioController gpio = GpioFactory.getInstance(); final GpioPinDigitalOutput relay = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_01, "Relay", PinState.LOW); System.out.println("เปิดไฟ"); relay.high(); // เปิดไฟ Thread.sleep(5000); System.out.println("ปิดไฟ"); relay.low(); // ปิดไฟ gpio.shutdown(); } }
4. ควบคุมไฟฟ้าผ่านแอปมือถือ (Android + Java)
- ใช้ Firebase Realtime Database หรือ MQTT Broker เพื่อสื่อสารกับอุปกรณ์
- ใช้แอป Android + Java สั่งเปิด-ปิดไฟผ่านปุ่มในแอป
5. พัฒนาโครงการ Smart Home ที่ซับซ้อนขึ้น
✅ ตั้งเวลาเปิด-ปิดไฟอัตโนมัติ ด้วย Java Scheduler
✅ ควบคุมไฟผ่านเสียง (Voice Control) ด้วย Google Assistant + Java
✅ ควบคุมไฟผ่าน Internet (IoT Dashboard)
คุณอยากให้ระบบควบคุมไฟฟ้าเชื่อมต่อกับอะไร เช่น WiFi, MQTT หรือควบคุมผ่านแอปมือถือ?
Wifi
ถ้าคุณต้องการใช้ Java ควบคุมไฟฟ้าผ่าน WiFi ในระบบ Smart Home นี่คือแนวทางที่เหมาะสม:
1. เลือกฮาร์ดแวร์สำหรับควบคุมไฟผ่าน WiFi
✅ ESP8266 / ESP32 → เชื่อมต่อ WiFi และควบคุมรีเลย์
✅ Raspberry Pi → ใช้เป็นเซิร์ฟเวอร์ Java สำหรับรับคำสั่งจากแอป
✅ Relay Module → ใช้เปิด-ปิดไฟฟ้า
2. วิธีการสื่อสารระหว่าง Java กับอุปกรณ์ผ่าน WiFi
คุณสามารถใช้ 3 วิธีหลัก ในการควบคุมอุปกรณ์ผ่าน WiFi:
✅ (1) HTTP API (RESTful Service)
- ใช้ ESP8266/ESP32 สร้าง Web Server ที่รองรับคำสั่งเปิด-ปิดไฟ
- Java (Android หรือ Desktop) เรียก API เพื่อควบคุม
ตัวอย่าง ESP8266 Web Server (Arduino Code)
cpp#include <ESP8266WiFi.h> #include <ESP8266WebServer.h> const char* ssid = "Your_WiFi"; const char* password = "Your_Password"; ESP8266WebServer server(80); const int relayPin = 5; // กำหนดขา GPIO สำหรับรีเลย์ void handleOn() { digitalWrite(relayPin, HIGH); server.send(200, "text/plain", "ไฟเปิดแล้ว"); } void handleOff() { digitalWrite(relayPin, LOW); server.send(200, "text/plain", "ไฟปิดแล้ว"); } void setup() { pinMode(relayPin, OUTPUT); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); } server.on("/on", handleOn); server.on("/off", handleOff); server.begin(); } void loop() { server.handleClient(); }
Java ส่งคำสั่งไปยัง ESP8266 ผ่าน HTTP:
javaimport java.net.HttpURLConnection; import java.net.URL; public class LightController { public static void main(String[] args) throws Exception { String url = "http://192.168.1.100/on"; // เปลี่ยนเป็น IP ของ ESP8266 HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection(); conn.setRequestMethod("GET"); conn.getResponseCode(); } }
✅ (2) MQTT (Message Queue Telemetry Transport)
- ใช้ MQTT Broker (เช่น Mosquitto, HiveMQ)
- Java ส่งข้อความ MQTT ไปเปิด-ปิดไฟ
ติดตั้ง Mosquitto MQTT บน Raspberry Pi
bashsudo apt update sudo apt install mosquitto mosquitto-clients
ESP8266 รับคำสั่งจาก Java ผ่าน MQTT
cpp#include <ESP8266WiFi.h> #include <PubSubClient.h> const char* ssid = "Your_WiFi"; const char* password = "Your_Password"; const char* mqttServer = "192.168.1.50"; // IP ของ MQTT Broker const int mqttPort = 1883; WiFiClient espClient; PubSubClient client(espClient); void callback(char* topic, byte* payload, unsigned int length) { if (strcmp(topic, "home/light") == 0) { if (payload[0] == '1') { digitalWrite(5, HIGH); } else { digitalWrite(5, LOW); } } } void setup() { WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); } client.setServer(mqttServer, mqttPort); client.setCallback(callback); client.subscribe("home/light"); } void loop() { client.loop(); }
Java ส่งคำสั่ง MQTT ไปเปิด-ปิดไฟ
javaimport org.eclipse.paho.client.mqttv3.*; public class MqttLightController { public static void main(String[] args) throws MqttException { MqttClient client = new MqttClient("tcp://192.168.1.50:1883", "JavaClient"); client.connect(); MqttMessage message = new MqttMessage("1".getBytes()); // 1 = เปิดไฟ, 0 = ปิดไฟ client.publish("home/light", message); client.disconnect(); } }
✅ (3) Firebase Realtime Database
- Java บันทึกค่า
"on"หรือ"off"ลง Firebase - ESP8266 อ่านค่าแล้วสั่งเปิด-ปิดไฟ
3. ควบคุมผ่านแอป Android (Java + Android Studio)
- ใช้
HttpURLConnectionหรือMQTTเพื่อสั่งเปิด-ปิดไฟ - ออกแบบ UI ปุ่มเปิด-ปิดไฟในแอป
- แสดงสถานะไฟ (เปิด/ปิด) บนแอป
4. ขยายโครงการให้ใหญ่ขึ้น
✅ ระบบเปิด-ปิดไฟอัตโนมัติ ตามเวลาหรือเซ็นเซอร์
✅ ใช้ AI หรือเสียงควบคุมไฟ (Google Assistant + Java)
✅ สร้าง IoT Dashboard ดูสถานะอุปกรณ์ Smart Home
คำถาม:
- คุณอยากใช้ HTTP API, MQTT หรือ Firebase ควบคุมไฟผ่าน WiFi?
- สนใจพัฒนาแอปมือถือด้วย Android Studio ด้วยไหม?
ถ้าคุณต้องการใช้ Java + HTTP API ควบคุมไฟฟ้าผ่าน WiFi และพัฒนาแอป Android Studio นี่คือแนวทางที่เหมาะสม:
1. โครงสร้างระบบ
✅ ESP8266/ESP32 → ทำหน้าที่เป็น Web Server สำหรับเปิด-ปิดไฟ
✅ Java (Android App) → ส่ง HTTP Request ไปยัง ESP8266 เพื่อสั่งงาน
✅ WiFi Network → ใช้เป็นช่องทางสื่อสารระหว่างมือถือกับ ESP8266
2. ตั้งค่า ESP8266/ESP32 ให้เป็น Web Server
โค้ดนี้ทำให้ ESP8266 รองรับคำสั่ง HTTP /on และ /off เพื่อควบคุมรีเลย์:
cpp#include <ESP8266WiFi.h> #include <ESP8266WebServer.h> const char* ssid = "Your_WiFi"; const char* password = "Your_Password"; ESP8266WebServer server(80); const int relayPin = 5; // ขา GPIO ที่ใช้ควบคุมรีเลย์ void handleOn() { digitalWrite(relayPin, HIGH); server.send(200, "text/plain", "ไฟเปิดแล้ว"); } void handleOff() { digitalWrite(relayPin, LOW); server.send(200, "text/plain", "ไฟปิดแล้ว"); } void setup() { pinMode(relayPin, OUTPUT); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); } server.on("/on", handleOn); server.on("/off", handleOff); server.begin(); } void loop() { server.handleClient(); }
🔹 เปลี่ยน ssid และ password เป็น WiFi ที่ต้องการใช้
🔹 ESP8266 จะสร้าง HTTP API:
http://<ESP_IP>/on→ เปิดไฟhttp://<ESP_IP>/off→ ปิดไฟ
3. พัฒนาแอป Android (Java) เพื่อควบคุม ESP8266
📌 ใช้ Android Studio พัฒนา UI และ HTTP Request
3.1 ออกแบบ UI (activity_main.xml)
xml<Button android:id="@+id/btnOn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="เปิดไฟ" /> <Button android:id="@+id/btnOff" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="ปิดไฟ" />
3.2 โค้ด Java ใน MainActivity.java
javaimport android.os.Bundle; import android.view.View; import android.widget.Button; import androidx.appcompat.app.AppCompatActivity; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class MainActivity extends AppCompatActivity { private static final String ESP_IP = "http://192.168.1.100"; // เปลี่ยนเป็น IP ของ ESP8266 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btnOn = findViewById(R.id.btnOn); Button btnOff = findViewById(R.id.btnOff); btnOn.setOnClickListener(v -> sendHttpRequest("/on")); btnOff.setOnClickListener(v -> sendHttpRequest("/off")); } private void sendHttpRequest(String path) { new Thread(() -> { try { URL url = new URL(ESP_IP + path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); String response = reader.readLine(); reader.close(); System.out.println("Response: " + response); } catch (Exception e) { e.printStackTrace(); } }).start(); } }
✅ เมื่อกดปุ่ม "เปิดไฟ" → แอปจะส่ง HTTP Request ไปที่ http://192.168.1.100/on
✅ เมื่อกดปุ่ม "ปิดไฟ" → แอปจะส่ง HTTP Request ไปที่ http://192.168.1.100/off
4. ทดสอบระบบ
1️⃣ เปิด ESP8266 และเชื่อมต่อกับ WiFi
2️⃣ ใช้เบราว์เซอร์พิมพ์ http://192.168.1.100/on → ดูว่าไฟติดไหม
3️⃣ เปิด Android Studio และรันแอปบนมือถือ
4️⃣ กดปุ่มในแอปเพื่อลองควบคุมไฟ
5. พัฒนาเพิ่ม
✅ แสดง สถานะไฟ (เปิด/ปิด) ในแอป
✅ ควบคุมหลายอุปกรณ์ (ไฟ, พัดลม, ม่านไฟฟ้า)
✅ ใช้ Google Assistant ควบคุมไฟด้วยเสียง
✅ ตั้งเวลาเปิด-ปิดไฟอัตโนมัติ
สเต็ปถัดไป
- คุณอยากให้แอป แสดงสถานะไฟฟ้า ด้วยไหม?
- ต้องการเพิ่ม ระบบล็อกอิน หรือ เชื่อมกับ Cloud เช่น Firebase ไหม?
ถ้าคุณต้องการให้แอป Android แสดง สถานะไฟฟ้า (เปิด/ปิด) จาก ESP8266 ผ่าน HTTP API นี่คือแนวทาง:
1. อัปเดตโค้ด ESP8266 ให้ส่งสถานะไฟฟ้า
🔹 เพิ่ม API /status เพื่อให้แอปเช็คสถานะรีเลย์
cpp#include <ESP8266WiFi.h> #include <ESP8266WebServer.h> const char* ssid = "Your_WiFi"; const char* password = "Your_Password"; ESP8266WebServer server(80); const int relayPin = 5; // ขา GPIO ควบคุมรีเลย์ bool relayState = false; // สถานะของรีเลย์ void handleOn() { relayState = true; digitalWrite(relayPin, HIGH); server.send(200, "text/plain", "ON"); } void handleOff() { relayState = false; digitalWrite(relayPin, LOW); server.send(200, "text/plain", "OFF"); } void handleStatus() { server.send(200, "text/plain", relayState ? "ON" : "OFF"); } void setup() { pinMode(relayPin, OUTPUT); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(1000); } server.on("/on", handleOn); server.on("/off", handleOff); server.on("/status", handleStatus); server.begin(); } void loop() { server.handleClient(); }
✅ ESP8266 จะรองรับ API:
http://<ESP_IP>/on→ เปิดไฟhttp://<ESP_IP>/off→ ปิดไฟhttp://<ESP_IP>/status→ เช็คสถานะไฟ (ส่ง"ON"หรือ"OFF")
2. อัปเดตแอป Android ให้แสดงสถานะไฟ
📌 เพิ่ม TextView สำหรับแสดงสถานะใน activity_main.xml
xml<TextView android:id="@+id/tvStatus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="สถานะไฟ: ไม่ทราบ" android:textSize="18sp"/>
📌 โค้ด Java (MainActivity.java) เพื่อดึงสถานะจาก ESP8266
javaimport android.os.Bundle; import android.os.Handler; import android.view.View; import android.widget.Button; import android.widget.TextView; import androidx.appcompat.app.AppCompatActivity; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.HttpURLConnection; import java.net.URL; public class MainActivity extends AppCompatActivity { private static final String ESP_IP = "http://192.168.1.100"; // เปลี่ยนเป็น IP ของ ESP8266 private TextView tvStatus; private Handler handler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btnOn = findViewById(R.id.btnOn); Button btnOff = findViewById(R.id.btnOff); tvStatus = findViewById(R.id.tvStatus); btnOn.setOnClickListener(v -> sendHttpRequest("/on")); btnOff.setOnClickListener(v -> sendHttpRequest("/off")); startStatusUpdate(); // อัปเดตสถานะไฟอัตโนมัติ } private void sendHttpRequest(String path) { new Thread(() -> { try { URL url = new URL(ESP_IP + path); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); conn.getResponseCode(); updateStatus(); // อัปเดตสถานะหลังจากกดปุ่ม } catch (Exception e) { e.printStackTrace(); } }).start(); } private void updateStatus() { new Thread(() -> { try { URL url = new URL(ESP_IP + "/status"); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setRequestMethod("GET"); BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); String response = reader.readLine(); reader.close(); runOnUiThread(() -> tvStatus.setText("สถานะไฟ: " + (response.equals("ON") ? "เปิด" : "ปิด"))); } catch (Exception e) { e.printStackTrace(); } }).start(); } private void startStatusUpdate() { handler.postDelayed(new Runnable() { @Override public void run() { updateStatus(); handler.postDelayed(this, 5000); // อัปเดตทุก 5 วินาที } }, 0); } }
3. วิธีใช้งาน
1️⃣ รัน ESP8266 แล้วเชื่อมต่อกับ WiFi
2️⃣ รันแอป Android แล้วกดปุ่ม "เปิดไฟ" หรือ "ปิดไฟ"
3️⃣ แอปจะแสดงสถานะไฟ (สถานะไฟ: เปิด หรือ สถานะไฟ: ปิด)
4. พัฒนาเพิ่ม
✅ แสดงสถานะไฟเป็น ไอคอนไฟ (Light Bulb Icon)
✅ เพิ่ม เสียงแจ้งเตือน เมื่อไฟเปิด/ปิด
✅ ใช้ Firebase หรือ Cloud ให้ควบคุมไฟจากที่ไหนก็ได้
คุณอยากเพิ่มฟีเจอร์อะไรเพิ่มเติมไหม?
