Tạo máy chủ NTP nhúng cho bảng Arduino trong mạng con


7

Tôi có một Bảng nhúng trong đó bản phân phối trên đó là Bản phân phối Linux tùy chỉnh dựa trên Yocto.

Tôi đã thêm ntpvà thông qua ntpdtôi sẽ đồng bộ hóa thời gian với các nhóm ntp chung thông qua UMTS 3G dongle hoặc Ethernet.

Bảng này cùng với một số bảng ESP32 PoE của Olimex được kết nối thông qua Công tắc không được quản lý.

Mục đích

Các bảng ESP32 có các cảm biến thu thập thông tin thêm dấu thời gian cho chúng và gửi nó đến InfluxDB chạy trên bảng nhúng chính thông qua Ethernet, biến nó thành Mạng cảm biến có dây. Các bảng ESP32 này cũng có RTC DS3231 trên chúng, vì vậy tôi muốn chúng nhận được thời gian đầu tiên từ Máy chủ NTP chạy trên bảng nhúng này để đồng bộ hóa RTC và sau đó gửi thông tin đến InfluxDB.

Câu hỏi

  1. Làm thế nào để tạo một máy chủ NTP trên Bảng nhúng? Tôi có thể thêm một dòng trong ntp.conftệp có thể được sử dụng để đẩy mạnh máy chủ với ví dụ máy chủ NTP 192.168.4.11không? Sử dụng địa chỉ IP này trong mã arduino của tôi, tôi có thể yêu cầu dấu thời gian

  2. Trong trường hợp thử nghiệm, nếu tôi bằng cách nào đó thiết lập máy chủ NTP trên Bảng nhúng, ban đầu tôi có thể kiểm tra thời gian đến từ nó như thế nào? Có tiện ích dòng lệnh để thăm dò máy chủ NTP và xem liệu thời gian tới có chính xác hay không trên máy tính thông thường?


1
Tôi biết rằng câu hỏi có câu trả lời được chấp nhận, nhưng tôi cũng đã xem xét mức độ chính xác của dấu thời gian cần phải như thế nào và liệu việc gửi dữ liệu từ bảng ESP32 mà không có dấu thời gian và thêm nó vào chính là đơn giản hơn bảng. Cá nhân, vì tôi thường lưu trữ dữ liệu của mình trong MySQL hoặc SQLite, tôi để cơ sở dữ liệu chăm sóc nó cho tôi bằng cách khai báo một cột giống như thế time_stamp TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP. Trừ khi tôi cần độ chính xác micro giây, mã cơ sở dữ liệu đã được viết và gỡ lỗi tốt; Tại sao mã lỗi của riêng tôi?
Mawg nói rằng phục hồi Monica

Câu trả lời:


4

Mô tả chính xác cho truy vấn

Đồng bộ hóa thời gian NTP ban đầu

  1. Trong hệ thống xây dựng Yocto theo công thức conf/local.confthêm ntpnhư sau:

     IMAGE_INSTALL_append = " ntp"
    
  2. trên bảng Target ban đầu dừng systemddịch vụ:

     systemctl stop ntp
    
  3. Bảng giả sử được kết nối với internet:

      ntpd -gq
    

    Thông tin : Kiểm tra thời gian sử dụngdate

  4. Để an toàn cũng đồng bộ hóa đồng hồ Phần cứng với thời gian NTP:

     hwclock -w --localtime
    
  5. Khởi động lại systemddịch vụ

     systemctl start ntp
    

Thiết lập Máy chủ NTP cục bộ trên Bảng nhúng

  1. Dừng systemddịch vụ:

     systemctl stop ntp
    
  2. Chỉnh sửa /etc/ntp.confđể làm cho bảng nhúng phát các dấu thời gian NTP trên cổng 123. Thêm dòng sau:

     # Here the IP Address could that of your board but make sure to use
     # Broadcast address (x.x.x.255) and if you have a larger network
     # select your subnet masks accordingly
     broadcast 192.168.1.255 
    
  3. Khởi động lại systemddịch vụ:

    systemctl start ntp
    

Đạt được thời gian đồng bộ hóa với Nút cảm biến

  1. Giả sử người ta có các bảng có thể được lập trình với Arduino; tải về NTPClientthư viện Arduino.

  2. Trong Phác thảo của bạn, hãy sử dụng hàm NTPClienttạo để kết nối với máy chủ NTP cục bộ của bạn thông qua địa chỉ IP của nó

    NTPClient timeServer(ntpUDP, "192.168.1.123", 0, 60000);
    

và lấy dấu thời gian từ Máy chủ NTP cục bộ

Người giới thiệu


1

Để trả lời câu hỏi nắm tay của bạn, tôi sẽ chỉ vào câu hỏi này Trả lời Ubuntu:

https://askubfox.com/questions/14558/how-do-i-setup-a-local-ntp-server

Đó là Ubuntu cụ thể nhưng sẽ chỉ cho bạn đúng hướng cho những gói tìm kiếm trên Yocto.

lần thứ hai, ntpdate <ip address of ntp server>có thể được sử dụng để truy vấn máy chủ ntp cho ngày.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.