Mục lục:

Garden Train - Arduino Wireless NMRA DCC: 4 bước (có hình ảnh)
Garden Train - Arduino Wireless NMRA DCC: 4 bước (có hình ảnh)

Video: Garden Train - Arduino Wireless NMRA DCC: 4 bước (có hình ảnh)

Video: Garden Train - Arduino Wireless NMRA DCC: 4 bước (có hình ảnh)
Video: #4.c - Adding Wi-Fi to DCC-EX 2024, Tháng sáu
Anonim
Image
Image
Thiết kế hệ thống
Thiết kế hệ thống

Hơn nữa với hướng dẫn trước đây với DCC trên hệ thống đường sắt chết, tôi đã phát triển thêm ý tưởng với Trạm chỉ huy DCC cầm tay có bàn phím và màn hình LCD. Trạm chỉ huy chứa tất cả mã hóa cần thiết cho các lệnh NMRA DCC, tuy nhiên thay vì kết nối với đường ray, dữ liệu được chuyển bằng mô-đun vô tuyến RF24L01 + đến một bộ thu gắn trong xe tải hoặc dưới loco - bất cứ nơi nào phòng cho phép.

Tất nhiên, locos của bạn phải được gắn bộ giải mã khả năng chịu tải phù hợp với động cơ máy.

Bước 1: Thiết kế hệ thống

Thiết kế hệ thống
Thiết kế hệ thống

Arduino Pro Mini là trung tâm của thiết kế. Sử dụng Fritzing để phát triển mạch và sản xuất PCB.

Tôi đã có thể sử dụng cùng một PCB cho cả máy phát và máy thu do đó tiết kiệm được một số chi phí.

Máy phát có các kết nối cho bàn phím và LCD trong khi máy thu không yêu cầu những kết nối này và sử dụng cầu H để cung cấp đầu ra DCC cho loco.

Một sự phát triển hơn nữa bao gồm các kết nối cho cầu nối H lớn hơn nếu được yêu cầu cho các locos mạnh hơn.

PCF8574 có thể bị xóa nếu bạn sử dụng màn hình LCD đi kèm với ba lô cho phép kết nối SCA / SCL trên Arduino để cấp nguồn cho màn hình chỉ bằng 2 dây. = Khoảng £ 10,00 mỗi cái. + pin

Arduino Pro Mini. x 2 = £ 4,00

Bàn phím màng 4x3 = £ 3,00

Màn hình LCD 20 x 4 = £ 7,00

PCF5874 = £ 1,80

NRF24L01 +. mô-đun radio x 2 = £ 5,80

Sản xuất PCB với giá 10 lần giảm giá (hoặc có thể sử dụng bảng Vero) = £ 24 hoặc £ 4,80 cho 2 lần giảm giá

3,3 v Regulator = £ 0,17 (gói 25 từ RS Comp)

Bộ điều chỉnh 5v LM7805 = £ 0,30

Cầu H SN754410ne = 3,00 bảng

Pin AA 2700 maH có thể sạc lại Lloytron x 12 = £ 22,00. (pin được đánh giá maH thấp hơn sẽ rẻ hơn)

Tụ điện, bình, chân, đầu nối, v.v. = khoảng £ 2,00

Bao vây 190x110x60 mm = £ 8,00

Máy phát - bộ sạc điện thoại / pin = £ 2,00

Bước 2: Máy phát

Hệ thống điều khiển
Hệ thống điều khiển

Sơ đồ mạch được hiển thị nơi các chân D2 đến D8 trên Arduino Pro Mini được kết nối với bàn phím. Chiết áp 100k ohm được kết nối với chân Analog A0 để điều chỉnh tốc độ. Các chân SDA và SCL tạo thành chip PCF8574 được kết nối với chân A4 và A5 trên Arduino Pro Mini bằng cách hàn dây vào các chân ở lớp trên cùng của Pro Mini.

Bản phác thảo Arduino được đính kèm để tải xuống.

Tôi đã sử dụng màn hình LCD 20 x 4 cho phép 4 dòng thông tin với 20 ký tự mỗi dòng. Bàn phím cung cấp menu sau:

1 đến 9 = địa chỉ loco * = hướng 0 = đèn # = Menu chức năng cho các phím từ 1 đến 8

Mô tả cơ bản về Arduino Pro Mini sketch: Dòng mã này sắp xếp thông báo DCC ở định dạng HEX. struct Message msg [MAXMSG] = {

{{0xFF, 0, 0xFF, 0, 0, 0, 0}, 3}, // tin nhắn không hoạt động

{{locoAdr, 0, 0, 0, 0, 0, 0}, 3} // địa chỉ 3 byte

};

Để lưu các cài đặt cho mỗi loco, một loạt các mảng được thiết lập như sau:

int la [20]; // mảng chứa số loco

int sa [20]; // mảng để giữ giá trị tốc độ

int fda [20]; // mảng để chứa dir

int fla [20]; // mảng giữ đèn

int f1a [20]; // mảng chứa fun1…..

int f8a [20]; // mảng chứa fun8

Để cho phép các hướng dẫn DCC được sửa đổi khi chúng tôi thực hiện:

Để biết hướng dẫn về tốc độ: void sửa đổi_speed (struct Message & x) {

x.data [0] = locoAdr;

x.data [1] = 0x40; // locoMsg với 28 bước tốc độ}

Đối với hướng dẫn chức năng:

void sửa đổi_group1 (struct Message & x) {

x.data [0] = locoAdr;

x.data [1] = 0x80; // locoMsg với lệnh nhóm một 0x80}

Vòng lặp chính của bản phác thảo:

void loop (void) {if (read_locoSpeed ()) {assembly_dcc_msg_speed ();

send_data_1 (); // gửi dữ liệu qua mạng không dây

chậm trễ (10);

send_data_3 (); // hiển thị dữ liệu trên màn hình LCD

send_data_4 (); // hiển thị dữ liệu trên màn hình nối tiếp}

if (read_ function ()) {

assembly_dcc_msg_group1 ();

send_data_1 ();

chậm trễ (10);

send_data_3 (); }}

Cập nhật dữ liệu khi tốc độ thay đổi:

boolean read_locoSpeed () Điều này sẽ phát hiện địa chỉ loco mới, thiết lập tốc độ hoặc hướng và sửa đổi 'dữ liệu' HEX cho phù hợp. Ở đây tôi đã chỉ định 28 bước tốc độ và để đáp ứng tiêu chuẩn NMRA S 9.2, dữ liệu tốc độ phải được tìm thấy từ bảng tra cứu trong 'speed_step ()'

void speed_step () {switch (locoSpeed) {

case 1: data | = 0x02; nghỉ;

trường hợp 2: dữ liệu | = 0x12; nghỉ;

trường hợp 3: dữ liệu | = 0x03; nghỉ;

………

trường hợp 28: dữ liệu | = 0x1F; nghỉ; }}

Cập nhật dữ liệu khi các chức năng thay đổi:

boolean read_ Chức năng ()

if (fla [locoAdr] == 0) {data = 0x80;

} // đèn đầu tắt

if (fla [locoAdr] == 1) {

dữ liệu = 0x90;

} // đầu đèn sáng

Đối với mỗi chức năng:

if (f2a [locoAdr] == 0) {data | = 0; }. // Chức năng 2 tắt

if (f2a [locoAdr] == 1) {

dữ liệu | = 0x02; // Hàm 2 trên} 'dữ liệu' được xây dựng bằng cách kết hợp ['| =' ghép theo bitwise hoặc] mã HEX cho mỗi Hàm.

Bước 3: Người nhận

Người nhận
Người nhận

Sơ đồ mạch được hiển thị nơi các chân 5 và 6 của Arduino Pro Mini được sử dụng để cung cấp tín hiệu DCC được cung cấp cho cầu H. Các cặp cầu H được mắc song song để tăng công suất dòng điện. Tùy thuộc vào dòng điện do loco rút ra, một bộ tản nhiệt có thể được yêu cầu gắn vào thiết bị DIP 16 chân, hoặc một cầu H hạng nặng có thể được kết nối bên ngoài.

Bản phác thảo Arduino được đính kèm để tải xuống. Tín hiệu DCC được tạo ra từ một đồng hồ chạy ở 2MHZ

void SetupTimer2 () thực hiện công việc này.

Đồng hồ bao gồm 'xung ngắn' (58us) cho '1' trong dữ liệu DCC và 'xung dài' (116us) cho '0' trong dữ liệu DCC.

Khoảng trống vòng lặp, lấy dữ liệu từ radio và nếu tìm thấy một chuỗi hợp lệ, dữ liệu sẽ được chuyển đổi thành dữ liệu DCC.

void loop (void) {if (radio.available ()) {bool done = false; done = radio.read (inmsg, 1); // đọc dữ liệu đã nhận

char rc = inmsg [0]; // đặt ký tự đã đọc vào mảng này

if (rc! = 0) {. // nếu ký tự không bằng 0

inString.concat (rc); // xây dựng thông báo}

if (rc == '\ 0') {// nếu ký tự là '/ 0' cuối tin nhắn

Serial.println (inString); // in thông báo đã lắp ráp

dây(); // hủy cấu trúc thông báo chuỗi để nhận hướng dẫn DCC

} } }

Bước 4: Chạy Locos

Chạy Locos
Chạy Locos

Để tránh gián đoạn dữ liệu do chạy nhiều đoàn tàu trên cùng một đường ray, bạn phải ngắt kết nối các điểm tiếp xúc giữa các bánh xe và đường ray cho mỗi xe tải và xe tải được sử dụng.

Tận hưởng những chuyến tàu chạy miễn phí bất kể điều kiện đường ray - thật là khác biệt! Không phức tạp, không bắt đầu dừng và không cần làm sạch.

Pin tôi đã sử dụng là loại LLoytron AA x 12. Có thể sạc lại được. Tôi đã chế tạo một bộ sạc đặc biệt dành cho chúng có thể sạc 6 pin cùng một lúc. (xem có thể hướng dẫn)

Đề xuất: