Thông báo

Collapse
No announcement yet.

Tự chế tạo bộ kiểm cáp mạng với Arduino

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Tự chế tạo bộ kiểm cáp mạng với Arduino


    Nếu là một người quản trị mạng, bất cứ lúc nào cũng cần đến bộ kiểm tra cáp mạng. Dĩ nhiên, ngoài thị trường có bán sẵn, nhưng hôm nay, tôi giới thiệu các bạn cách làm một bộ kiểm tra cáp mạng Ethernet với Arduino.

    Với bộ kiểm này, bạn có thể kiểm tra cáp thẳng lẫn cáp chéo. Kết quả có thể hiển thị bằng LED, LCD hoặc ghi vào thẻ nhớ.
    Phần cứng gồm có:
    • 01 bộ Arduino UNO hoặc bất kỳ
    • 08 đèn LED
    • 08 điện trở 33 ohm
    • 2 đầu cắm mạng loại cái
    • Một công tắc chuyển để kiểm cáp thẳng hoặc cáp chéo.
    • Và một số thành phần liên quan khác
    Chúng ta sẽ làm thành 2 mạch như sau:
    Mạch chủ có Arduino sẽ cắm cáp mạng cần kiểm.
    Mạch phụ để hiển thị các chân của cáp có thông với nhau hay không.
    Sơ đồ mạch như sau



    Viết phần mềm
    Quy trình thực thi của phần mềm rất đơn giản:
    Arduino thiết lập các chân có nối với dây cáp ở mức cao (HIGH) trong 1 giây sau đó sẽ xuống mức thấp (LOW) rồi chuyển sang dây khác trong sợi cáp mạng
    Nếu các sợi dây thông mạch với nhau, bạn sẽ thấy các đèn LED bên mạch phụ sẽ sáng tuần tự từng giây một. Nếu có dây nào đó bị đứt thì bóng LED tương ứng của dây đó sẽ không sáng.
    Nếu có dây nào bị đảo ngược thì đèn LED sẽ sáng không theo thứ tự.
    Công tắc để chuyển qua lại giữa cáp thẳng vào cáp chéo
    Chương trình như sau:
    //#define VERBOSE


    char straight[8] = {2, 3, 4, 5, 6, 7, 8, 9};
    char cross[8] = {4, 7, 2, 5, 6, 3, 8, 9};


    void setup() {
    pinMode(2, OUTPUT);
    pinMode(3, OUTPUT);
    pinMode(4, OUTPUT);
    pinMode(5, OUTPUT);
    pinMode(6, OUTPUT);
    pinMode(7, OUTPUT);
    pinMode(8, OUTPUT);
    pinMode(9, OUTPUT);
    pinMode(12, INPUT); // Straight (normal) cable or cross cable
    pinMode(13, OUTPUT); // Control LED
    #ifdef VERBOSE
    Serial.begin(9600);
    #endif
    }


    void loop() {
    if (digitalRead(12) == LOW) { // Cross cable
    #ifdef VERBOSE
    Serial.println("Cross cable");
    #endif
    for (char n = 0;n < 8;n++) {
    #ifdef VERBOSE
    Serial.print(n+1, DEC);
    Serial.print(": line ");
    Serial.print(cross[n]-1, DEC);
    Serial.print(" (pin ");
    Serial.print(cross[n], DEC);
    Serial.println(")");
    #endif
    PulseOut(cross[n], 1000);
    PulseOut(13, 50);
    }
    } else { // Straight (normal) cable
    #ifdef VERBOSE
    Serial.println("Straight cable");
    #endif
    for (char n = 0;n < 8;n++) {
    #ifdef VERBOSE
    Serial.print(n+1, DEC);
    Serial.print(": line ");
    Serial.print(straight[n]-1, DEC);
    Serial.print(" (pin ");
    Serial.print(straight[n], DEC);
    Serial.println(")");
    #endif
    PulseOut(straight[n], 1000);
    PulseOut(13, 50);
    }
    }
    }


    void PulseOut(char pin, int ms)
    {
    digitalWrite(pin, HIGH);
    delay(ms);
    digitalWrite(pin, LOW);
    }

    nguồn
    http://dandientu.com/blog/tu-che-tao-bo-kiem-cap-mang-voi-arduino
    Attached Files
    Last edited by nhtrung1980; 06-06-2016, 19:50. Lý do: arduino

Về tác giả

Collapse

nhtrung1980 Tìm hiểu thêm về nhtrung1980

Bài viết mới nhất

Collapse

Đang tải...
X