ข้ามไปที่เนื้อหาหลัก

Arduino to PC through ethernet shield [Part 1 - Arduino as Web server]


Arduino to PC through ethernet shield [Part 1 - Arduino as Web server] 

เข้ามาสู่ขั้นตอนแรก ขั้นตอนนี้อยากจะทดสอบการเสื่อสารระหว่าง Arduino กับ PC ก่อน โดยจะทดสอบให้ Arduino เป็น Web Server และเมื่อ PC เรียกดู ก็จะแสดงอุณหภูมิและความชื้นออกมา



มาดูอุปกรณ์ ที่ต้องใช้กัน

อ่อ แน่นอนว่าต้องมี PC ด้วยนะครับ
ก่อนอื่นก็เขียนคำสั่งให้ Arduino ก่อน 

โดย Code ส่วนใหญ่ก็ได้มาจาก Example ที่ Arduino ให้มา และเพิ่มในส่วน อุณหภูมิความชื้น ขึ้นมา


#include <SPI.h>
#include <Ethernet.h>

//Humidity library
#include <dht.h>

dht DHT;
#define DHT11_PIN 7

byte mac[] = {
  0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
};
IPAddress ip(192, 168, 1, 200);

// Initialize the Ethernet server library
// with the IP address and port you want to use
// (port 80 is default for HTTP):
EthernetServer server(80);

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  // start the Ethernet connection and the server:
  Ethernet.begin(mac, ip);
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}


void loop() {
  // listen for incoming clients
  EthernetClient client = server.available();
  if (client) {
    Serial.println("new client");
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        Serial.write(c);

        if (c == '\n' && currentLineIsBlank) {
        // read humidity and temperature
        int chk = DHT.read11(DHT11_PIN);
        Serial.print("Temperature = ");
        Serial.println(DHT.temperature);
        Serial.print("Humidity = ");
        Serial.println(DHT.humidity);

          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println("Connection: close");  // the connection will be closed after completion of the response
          client.println("Refresh: 5");  // refresh the page automatically every 5 sec
          client.println();
          client.println("<!DOCTYPE HTML>");
          client.println("<html>");
          client.print("Temperature = ");
          client.println(DHT.temperature);   //แสดงค่าอุณหภูมิ
          client.print("Humidity = " );
          client.print(DHT.humidity);   //แสดงค่าความชื้น
          client.println("</html>");
          break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
    Serial.println("client disconnected");
  }
}


พอเริ่มต่อ Arduino กับ Switch ก็พบปัญหา เหมือนว่าตัว Arduino ไม่สามารถต่อกับ Switch ได้
ตัวปัญหา = ="

จึงหาข้อมูลเพิ่มเติมใน google ว่าให้ต่อตัวต้านทาน 110 โอห์ม ระหว่างขา 1-2 กับ 3-6

ก็เลยจัดการไปซื้อตัวต้านทาน 100 โอห์ม มา (ตอนไปซื้อจำไม่ได้ว่าจะซื้อความต้านทานค่าใหน)
และต่อตามที่เขาบอก 
ต่อตัวต้านทาน 100 โอห์ม คร่อมขา 1-2, 3-6 ของ RJ45

จากนั้นทดลองต่อ Arduino กับ Switch อีกครั้ง

มีไฟขึ้นจากสาย LAN ที่ต่อมาจาก Arduino แล้ว (ก่อนหน้านี้ไม่ขึ้น)
เพื่อความแน่ใจ ทดสอบ Ping ดูสักครั้ง

จากนั้นลองเปิด Browser แล้วทดสอบดู

ผลลัพธ์

   ตอนนี้ก็สามารถติดต่อ Arduino ผ่านเครือข่ายได้แล้ว โดยเป็นแบบ Http request 
ในแบบนี้ ไม่แน่ใจว่า พอพัฒนาตัว Software เพื่อติดต่อกันหลาย ๆ ตัวและจัดเก็บข้อมูล การรับค่าที่ Arduino ส่งมามันจะยุ่งยากหรือเปล่า 
ยังไงครั้งต่อไปลองทดลองแบบ Client/Server ดู คิดว่าถ้าทำแบบ Client/Server หรือ Chat server ได้ ก็อาจจะใช้แบบนั้นไปเลย 

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

เทคนิคการสร้าง Folder ลับ (การซ่อน Folder) 2

เทคนิคการสร้าง Folder ลับ (การซ่อน Folder) 2 วันนี้ก็จะเอาเทคนิคการซ่อน Folder มาฝากกันเพิ่มเติมนะครับ จะต่างจากในบทความแรก https://lazedev.blogspot.com/2016/03/folder-folder.html ซึ่งเป็นการเก็บแบบ System file ธรรมดา โดยคราวนี้จะเพิ่มความสามารถให้ Folder ที่เราซ่อนไว้ให้เข้ายากขึ้นไปอีกนิด (ซ่อนได้เนียนขึ้น) นะครับ มาดูขั้นตอนกันเลย

Make BIG checkbox in Excel

ทำ Checkbox ขนาดใหญ่ใน Excel ในบางครั้งเมื่อเราต้องการทำฟอร์มเอกสารให้คนอื่นกรอก ก็มักจะมีตัว Checkbox เพื่อให้คลิ๊กเลือกในรายการที่เรากำหนดไว้ โดยจะเพิ่มจากตัว ActiveX control ที่มีอยู่แล้วใน Excel แต่ปัญหาคือเจ้าตัว checkbox นี้มันปรับขนาดไม่ได้ พอเราปรับขนาดหน้าจอเล็กลง เจ้าตัว checkbox นี่ก็จะเล็กลงตาม ทำให้ความไฮโซของแบบฟอร์มลดลงไป

เอา Password Excel VBA ออก

พอดีว่ากำลังทำโปรเจ็คฐานข้อมูลเกี่ยวกับ Excel VBA แต่ทำ ๆ ไปดันลืม พาสเวิดที่ตัวเองใส่ไว้ซะงั้น เลยต้องลำบากลำบนไปค้นหาวิธีการเอาพาสเวิดนั้นออก ดูไปแล้วก็พอมีวิธีอยู่ ก็เลยทำเป็นบทความเก็บไว้ดีกว่า มาดูกันเลย **เป็นการเอารหัสของ VBA ใน Excel ออกนะครับ ไม่ใช่รหัสของ Excel