Mục lục:

Arduino 1-dây Chung thiết bị khách / Slave (Cảm biến): 4 bước
Arduino 1-dây Chung thiết bị khách / Slave (Cảm biến): 4 bước

Video: Arduino 1-dây Chung thiết bị khách / Slave (Cảm biến): 4 bước

Video: Arduino 1-dây Chung thiết bị khách / Slave (Cảm biến): 4 bước
Video: Học lập trình Arduino KHÔNG HỀ KHÓ - Bộ KIT học tập Arduino Uno R3 BLK 2024, Tháng mười một
Anonim
Arduino 1-dây Chung thiết bị khách / Slave (Cảm biến)
Arduino 1-dây Chung thiết bị khách / Slave (Cảm biến)

Vui lòng đọc Phần giới thiệu và Bước 2 trong tài liệu hướng dẫn của tôi về cách xây dựng Màn hình 1 dây Arduino (144 Chars) để biết thêm thông tin về tình hình và các thư viện có sẵn. Như đã giải thích ở đó, chúng tôi sẽ sử dụng thư viện OneWire-Hub (trình giả lập thiết bị nô lệ OneWire) của orgua (chú ý rằng có các nhánh rẽ khác xung quanh) để xây dựng các thiết bị 1 dây chung (ví dụ: cảm biến) bằng Arduino.

Bước 1: Phần mềm

Điều quan trọng nhất là tạo ra một thiết bị có thể trả về cơ bản bất kỳ loại giá trị nào một cách đơn giản. Có nghĩa là phần mềm tiêu chuẩn có thể được sử dụng để đọc trực tiếp tất cả các giá trị (không cần hội thoại hoặc thao tác nhị phân). Để làm được điều đó, chúng tôi cần một thiết bị 1 dây mặc định rất đơn giản có thể trả về phao và được hỗ trợ rộng rãi. Sự lựa chọn duy nhất mà tôi biết là Nhiệt kế DS18B20 (Màn hình Pin DS2438 cũng thú vị và hữu ích nhưng khá phức tạp và do đó chậm trong số các nhược điểm khác). Thư viện OneWire-Hub chứa một ví dụ có tên là DS18B20_asInterface thực hiện chính xác những gì chúng ta cần. Nó tạo ra một loạt DS18B20 trong đó mỗi DS18B20 đại diện cho một giá trị float mà chúng tôi muốn trả về từ (các) cảm biến của chúng tôi. Các hạn chế ở đây là độ phân giải và các giá trị phải nằm trong phạm vi -55, 0… 125, 0. Điều đó có thể dễ dàng đạt được - trong trường hợp xấu nhất là thay đổi tỷ lệ - và thực sự tốt hơn các giá trị có thể được biểu thị bằng ví dụ: giá trị DS2438 (1,5 đến 10V). Ngoài ra, bạn có thể đặt phạm vi giá trị lớn hơn bằng cách sử dụng:

setTempenticRaw (static_cast (value * 16.0f));

nhưng việc đọc và xử lý các giá trị này có thể không được hỗ trợ bởi tất cả các phần mềm vì nó nằm ngoài thông số kỹ thuật.

Điều bạn phải biết là ban đầu, số lượng nô lệ tối đa bị giới hạn ở 8 nhưng có thể thay đổi trong "OneWireHub_config.h" bằng cách tăng HUB_SLAVE_LIMIT lên đến 32. Ngoài ra, bạn phải đảm bảo sử dụng ONEWIRE_TIME_MSG_HIGH_TIMEOUT nếu bạn cần Mạng 1 dây (ví dụ: x10), như được giải thích trong Bước 2 của Màn hình 1 dây Arduino (144 Chars). Và sử dụng Phiên bản IDE> = 1.8.3 để biên dịch và tải mã lên Arduino của bạn.

Đây là một ví dụ về mã của thiết bị mà tôi xây dựng gần đây. Vì tôi cho rằng bạn không sử dụng cùng một tổ hợp cảm biến mà tôi sử dụng, tôi sẽ không đi sâu vào chi tiết ở đây, hãy kiểm tra mã và đặt câu hỏi nếu bạn cần trợ giúp.

Bước 2: Phần cứng

Phần cứng
Phần cứng

Về cơ bản, bất cứ thứ gì bạn có thể kết nối với Arduino đều có thể được sử dụng làm cảm biến mà bạn lựa chọn. Hạn chế duy nhất là việc đọc cảm biến phải nhanh nhất có thể để có nhiều thời gian còn lại cho giao tiếp 1 dây diễn ra (trình bày Bước 2 trong tài liệu hướng dẫn của tôi về Màn hình 1 dây Arduino (144 Mã) theo thứ tự để lấy một ví dụ).

Một ví dụ về phần cứng khả thi có thể là một trạm thời tiết như ví dụ:

https://shop.boxtec.ch/wetter-messer-p-41289.html

Ngoài ra hoặc thay vì bạn chỉ có thể muốn sử dụng chính Arduino làm cảm biến của mình. Bạn có thể đọc thêm về điều đó trong tài liệu hướng dẫn của tôi về Các tính năng ít được biết đến của Arduino - các giá trị có thể có là điện áp nguồn và nhiệt độ bên trong.

Đây là một ví dụ về hình ảnh của thiết bị mà tôi xây dựng gần đây. Vì tôi cho rằng bạn không sử dụng cùng một tổ hợp cảm biến mà tôi sử dụng, tôi sẽ không đi sâu vào chi tiết ở đây, hãy kiểm tra mã và đặt câu hỏi nếu bạn cần trợ giúp.

Bước 3: Kiểm tra thiết bị

Kết nối nó với mạng của bạn và kiểm tra phần mềm của bạn để tìm tất cả các ID ROM và các giá trị mà chúng trả về dưới dạng nhiệt độ.

Bước 4: Phụ lục: ATtiny85

Phụ lục: ATtiny85
Phụ lục: ATtiny85

Các thiết bị đơn lẻ (giới hạn bộ nhớ) cũng có thể được thực hiện trên ATtiny85. Điều này cần một vài bước khi chúng tôi lập trình ATtiny85 sử dụng Arduino Uno làm ISP với sự trợ giúp của Arduino IDE:

  • Liên kết

    • https://playground.boxtec.ch/doku.php/arduino/att…
    • https://sebastian.expert/could-not-find-usbtiny-d…
    • https://learn.sparkfun.com/tutorials/tiny-avr-pro…
    • https://forum.arduino.cc/index.php?topic=425532.0
    • https://forum.arduino.cc/index.php?topic=128963.0
  1. sử dụng Arduino IDE> = 1.8.3
  2. cài đặt tùy chọn ATtiny vào IDE

    1. Tệp> Tùy chọn> URL trình quản lý bảng bổ sung:
    2. Công cụ> Bảng: ??? > Quản lý hội đồng quản trị…
    3. tìm kiếm: "tiny" và cài đặt
  3. tải bản phác thảo ISP lên Uno

    Tệp> Ví dụ> ArduinoISP> ArduinoISP

  4. chèn ATtiny85 vào ổ cắm lập trình (lực không) và nối dây:

    1. Pin Arduino MOSI D11 đến Pin ATtiny 5
    2. Pin Arduino MISO D12 đến Pin ATtiny 6
    3. Pin Arduino SCK D13 đến Pin ATtiny 7
    4. Đặt lại Pin Arduino D10 thành Pin ATtiny 1
    5. Arduino Pin GND sang ATtiny Pin 4
    6. Arduino Pin VCC sang ATtiny Pin 8
    7. (> = Nắp 10uF trên chân Arduino Uno RESET có thể cần thiết)
  5. chọn ATtiny85 (xem hình):

    • Bảng: "ATtiny25 / 45/85"
    • Đồng hồ hẹn giờ 1: "CPU"
    • B. O. D: "Đã tắt B. O. D."
    • LTO (chỉ 1.6.11 +): "Đã tắt"
    • Chip: "ATtiny85"
    • Đồng hồ: "8 MHz (nội bộ)" (tương thích ATtiny85 và ATtiny84)
    • Đồng hồ: "16 MHz (PLL)" (cài đặt thay thế chỉ dành cho ATtiny85)
    • Hải cảng: ???
  6. chọn Lập trình viên:

    Công cụ> Lập trình viên: "Arduino as ISP" (KHÔNG PHẢI "ArduinoISP"!)

  7. đặt cài đặt cầu chì (đồng hồ, v.v.):

    Công cụ> Ghi Bootloader

  8. tải lên mã này (đèn LED báo lỗi của lập trình viên cần phải tắt, nếu không hãy đặt lại nó)
  9. Bố cục chân ATtinyX5 (ATtiny85):

    1. Chân 1: PB5 (RST)
    2. Chân 2: PB3 (A3) - kết nối tùy chọn qua 220ohm đến 1 <-TX
    3. Chân 3: PB4 (A2) - kết nối với DATA 1 dây
    4. Chân 4: GND - được kết nối với GND
    5. Chân 5: PB0 (PWM) - kết nối với cảm biến I2C SDA
    6. Chân 6: PB1 (PWM) - kết nối với đèn LED với 4,7k đến GND
    7. Chân 7: PB2 (A1) - kết nối với cảm biến I2C SCL
    8. Chân 8: VCC - kết nối với 5V

Làm việc với ATTiny85 cần nhiều công việc hơn một chút vì bạn cần có thêm các thư viện cho I2C comm (adafruit / TinyWireM) và đầu ra nối tiếp (TinyDebugSerial). Ngoài ra, vì bộ nhớ khá hạn chế, bạn có thể muốn làm việc nhiều với #define, ví dụ: để loại bỏ gỡ lỗi nối tiếp. Trong ví dụ, bạn có thể thấy tất cả điều này được kết hợp với nhau.

Để kiểm tra, bước đầu tiên là kiểm tra xem đèn LED có nhấp nháy với tần số chính xác 0,5Hz hay không. Sau đó kết nối nó với bus 1wire và kiểm tra thiết bị mới.

Đề xuất: