Thêm cổng mạng WIZ820io / USR-ES1 - Wiznet W5500 vào Raspberry Pi của bạn.: 10 bước
Thêm cổng mạng WIZ820io / USR-ES1 - Wiznet W5500 vào Raspberry Pi của bạn.: 10 bước
Anonim
Thêm Cổng mạng WIZ820io / USR-ES1 - Wiznet W5500 vào Raspberry Pi của bạn
Thêm Cổng mạng WIZ820io / USR-ES1 - Wiznet W5500 vào Raspberry Pi của bạn

Một phần là do tôi thích làm điều gì đó như thế này, và một phần vì quan tâm đến Codesys, tôi đã nghĩ đến việc thử kết nối cổng Giao diện mạng thứ hai với Raspberry Pi. Vì vậy, trong khi thực hiện các dự án khác, tôi đã suy nghĩ, đọc, so sánh, lập kế hoạch và mua sắm để cuối cùng tôi có thể tiếp tục và xây dựng một cái gì đó.

Yeah - Tôi biết.. có một vài hệ thống "chìa khóa trao tay" sẵn sàng hoạt động có sẵn để làm điều gì đó tương tự, nhưng thực sự không ai trong số họ đủ hấp dẫn để tách tôi khỏi tiền của tôi.

Trên thực tế, tôi có ít kiến thức và kinh nghiệm về Raspberry Pi và Linux / Raspberry Pi IOS (Raspian) (tôi làm tốt hơn trong thế giới Windows và Android), không có kiến thức chuyên sâu về Mạng (tôi có thể làm cho mọi thứ hoạt động và xây dựng mạng, nhưng ngoài ra thì tôi hơi quá đầu) và tôi chỉ mới bắt đầu làm Bảng mạch. Chắc chắn, tôi không phải là một lập trình viên.

Cuối cùng khi tôi quyết định tiếp tục với ý tưởng xây dựng thứ gì đó và chọn sử dụng mô-đun WIZ820io / USR-ES1, dựa trên Mạch tích hợp Wiznet - W5500. Mô-đun này có thể giao tiếp với Raspberry Pi (và các MCU khác) bằng cách sử dụng bus SPI tiêu chuẩn. Ngoài ra, nó chạy trên 3.3 VDC, vì vậy nó KHÔNG gây ra rủi ro thiệt hại cho Raspberry Pi của tôi.

Khi thiết kế bảng mạch, tôi đã chọn xây dựng nó theo cấu hình "HAT" thích hợp (hình dạng và khả năng) và ngoài việc thêm mạch cho "mô-đun WIZ820io, tôi cũng đã thêm một số mục khác KHÔNG được sử dụng trong này dự án mạng mà tôi có thể và sẽ được sử dụng cho các dự án khác trong tương lai.

Bảng do tôi thiết kế / xây dựng có các mục sau trên đó.

1 - Một ổ cắm để giữ Wiznet - WIZ820io - Mô-đun cổng Ethernet (Tôi đã tạo một Eagle Footprint tùy chỉnh cho cái này).

2 - Quạt làm mát 30 mm - 5 VDC cho CPU Raspberry Pi (Tôi đã tạo Dấu chân Eagle tùy chỉnh cho điều này).

3 - Chip nhớ "CAT24C32" để duy trì các yêu cầu tương thích HAT (cái này tôi chưa lập trình) (Tôi đã tạo một Khối thiết kế Eagle tùy chỉnh cho cái này).

4 - Một bộ chuyển đổi mức mini MAX3232 - UART - TTL sang RS-232 được kết nối với UART0 (Tôi đã tạo một Eagle Footprint tùy chỉnh cho cái này).

5 - Đèn LED màu đỏ (GPIO24), đèn LED màu vàng (GPIO23) và đèn LED màu xanh lá cây (GPIO22) được sử dụng cho các bài tập lập trình Đèn giao thông - Python.

6 - Đèn LED xanh lục (GPIO18) và đèn LED xanh lục (GPIO27) - dành cho các bài tập lập trình và khắc phục sự cố.

7 - Một Công tắc xúc giác được kết nối với GPIO25 - để thực hiện các bài tập lập trình và khắc phục sự cố (Tôi đã tạo một Eagle Footprint tùy chỉnh cho việc này). LƯU Ý rằng GPIO này cũng sẽ được sử dụng với WIZ820io.

Vì vậy, như tôi đã lưu ý trước đây, Có thể hướng dẫn này sẽ chỉ đối phó với Mục số 1 trong danh sách này. Tất cả các mục khác mà tôi đã thêm trên bảng là vì những lý do khác không liên quan đến dự án Giao diện mạng này.

Quân nhu

Raspberry Pi - Tôi đã sử dụng Raspberry Pi 3B cũ hơn. Không có gì sai với điều đó.. Của tôi không có cổng HDMI chết, vì vậy tôi chạy nó "không đầu" bằng cách sử dụng TeamViewer để truy cập nó. Nó hoạt động. Tôi thực sự nghi ngờ rằng hầu hết các phiên bản của Raspberry Pi sẽ hoạt động với CUNG CẤP có thể hướng dẫn này rằng chúng có thể chạy các phiên bản mới hơn của Raspberry Pi IOS (Raspian).

Trước khi bắt đầu tất cả những điều này, tất nhiên tôi đã cập nhật hệ điều hành:

sudo apt-get cập nhật

sudo apt-get nâng cấp

WIZ820io / USR-ES1 - Tài liệu về điều này có sẵn trực tuyến từ OEM

Bo mạch PC - Tôi đã sử dụng Autodesk Eagle để thiết kế PCB và tạo các tệp Gerber cần thiết cho JLCPCB để xây dựng bảng mạch. Như đã lưu ý trước đó, tôi cũng đã thêm Chip nhớ "CAT24C32" để duy trì yêu cầu tương thích HAT.

Bước 1: Raspberry Pi 3b

Raspberry Pi 3b
Raspberry Pi 3b

Đối với Raspberry Pi, tôi thực hiện dự án này bằng cách sử dụng Raspberry Pi 3b tiêu chuẩn, cùng với phiên bản Raspberry Pi IOS (Raspian) mới nhất mà tôi có thể tải xuống và cài đặt.

Không có gì đặc biệt ở đó. Tôi đã sở hữu thiết bị đó trong một vài năm và nó hầu như hoạt động tốt đối với tôi (tốt - đầu ra video HDMI đã chết vì vậy tôi buộc phải chạy không cần đầu bằng TeamViewer). Bạn không cần phải làm điều này.

Tôi nghi ngờ rằng bất kỳ RPi nào cũng có thể kết nối với WIZ820io / USR-ES1 - Wiznet W5500 và làm cho nó hoạt động, cũng như nhiều thương hiệu khác cạnh tranh trên cùng thị trường (Beagle Bone, Orange, Tinker, v.v.) và sử dụng mô hình hệ điều hành dựa trên Linux.

Tôi KHÔNG có kinh nghiệm với bất kỳ cái nào trong số đó. Tôi có ít kinh nghiệm với Raspberry - hãy xem điều đó đã giúp tôi ở đâu:)

Bước 2: Giao diện Mô-đun Wiznet WIZ820io với Bus GPIO Raspberry Pi

Giao diện Mô-đun Wiznet WIZ820io với Bus GPIO Raspberry Pi
Giao diện Mô-đun Wiznet WIZ820io với Bus GPIO Raspberry Pi
Giao diện Mô-đun Wiznet WIZ820io với Bus GPIO Raspberry Pi
Giao diện Mô-đun Wiznet WIZ820io với Bus GPIO Raspberry Pi
Kết nối giữa Mô-đun Wiznet WIZ820io với Bus GPIO Raspberry Pi
Kết nối giữa Mô-đun Wiznet WIZ820io với Bus GPIO Raspberry Pi

Xem lại các hình ảnh đính kèm.

Mô-đun Wiznet WIZ820io cung cấp hai hàng 6 chân mỗi hàng để giao tiếp.

Các hàng được gắn nhãn "J1 và" J2 "tương ứng.

Bảng dữ liệu mà họ cung cấp có một sơ đồ mã màu rất đẹp của mỗi chân. Sơ đồ này nhằm hỗ trợ bạn kết nối các chân đó với các chân GPIO Raspberry PI của bạn. Họ là một trận đấu khá tốt giữa NAME cho NAME.

Anh ấy có thể tìm thấy sơ đồ chân Raspberry Pi ở đây: pinout.xyz

Tôi đã kết nối các chân đó như sau (xem hình ảnh đính kèm):

Tất nhiên, vì tôi đã làm một bảng mạch thực tế, nên tất cả các Căn cứ (GND) đều được kết nối với nhau. Tương tự với các chân 3.3V - bảng mạch của tôi đã kết nối chúng với nhau.

Một số điều lưu ý..

Đầu tiên - J2 Pin # 5 - RSTn - Tôi đã kết nối nó với RPi GPIO # 17 (Pin # 11) - Đó là cảnh báo. Tôi không tin rằng nó được sử dụng.

Thứ 2 - J1 Pin # 6 - INTn - Được kết nối với GPIO25 (Pin # 22). Điều này là bắt buộc, vì trong bước cấu hình Raspberry Pi IOS, chúng tôi sẽ đề cập đến điều này.

Thứ 3 - J1- Pin # 5 - SCNn - Được kết nối với Raspberry Pi "CS0" (Pin # 24). Hiệu quả là cung cấp cho mô-đun này địa chỉ của "Mô-đun 0" trên Bus RPi SPI. Một lần nữa, trong bước cấu hình Raspberry Pi IOS, chúng tôi sẽ đề cập đến điều này.

Bước 3: Bảng mạch của tôi

Bảng mạch của tôi
Bảng mạch của tôi
Bảng mạch của tôi
Bảng mạch của tôi
Bảng mạch của tôi
Bảng mạch của tôi

Đính kèm là sơ đồ Eagle "Point to Point" mà tôi đã tạo ra và với đó tôi đã tạo các Tệp Gerber.

Ngoài ra đính kèm là hình ảnh của "Bảng mạch" tôi đã trang điểm cho dự án này.

Hội đồng quản trị này sẽ chấp nhận một số sản phẩm Wiznet khác nhau theo kiểu WIZ820io.

Bước 4: Cấu hình Raspberry Pi IOS (trước đây là Raspian) - Các mục nhập trong Thư mục "khởi động"

Cấu hình Raspberry Pi IOS (trước đây là Raspian) - Các mục nhập trong
Cấu hình Raspberry Pi IOS (trước đây là Raspian) - Các mục nhập trong

Để Raspberry Pi "nhìn thấy" mô-đun WIZ820io mới được cài đặt trên xe buýt SPI của nó, IOS cần phải được biết để có thể xử lý nó trong quá trình "BOOT Up".

Để thực hiện việc này, chúng tôi chỉ cần thêm hai dòng vào:../../boot/config.txt

Đầu tiên.. Sử dụng ngăn / cửa sổ Terminal ==> ls

cd../boot, điều hướng theo cách của bạn đến../boot và liệt kê (ls) thư mục

Tham khảo hình ảnh đính kèm.. Ở đó bạn cần tìm và xác nhận sự hiện diện của hai mục nhập - Tôi đã khoanh đỏ chúng vào.

Một là tệp có tên: "config.txt"

Thứ hai là một thư mục có tên: "overlays"

== == == ==

Khi bạn đã xác nhận sự hiện diện của cả hai mục này, bạn có thể tiếp tục bước tiếp theo

Bước 5: Cấu hình Raspberry Pi IOS (trước đây là Raspian) - Các mục nhập trong Thư mục "lớp phủ"

Cấu hình Raspberry Pi IOS (trước đây là Raspian) - Các mục nhập trong
Cấu hình Raspberry Pi IOS (trước đây là Raspian) - Các mục nhập trong
Cấu hình Raspberry Pi IOS (trước đây là Raspian) - Các mục nhập trong
Cấu hình Raspberry Pi IOS (trước đây là Raspian) - Các mục nhập trong
Cấu hình Raspberry Pi IOS (trước đây là Raspian) - Các mục nhập trong
Cấu hình Raspberry Pi IOS (trước đây là Raspian) - Các mục nhập trong

Thay đổi Thư mục thành thư mục "lớp phủ""

Loại: lớp phủ cd

Sau khi nhấn phím "enter", phím này sẽ đưa bạn đến thư mục "lớp phủ" (xem hình ảnh đính kèm).

Liệt kê nội dung của thư mục.

Loại: ls

Sau khi nhấn phím "enter", bạn sẽ thấy một danh sách dài các nội dung của thư mục đó. Danh sách có thể theo thứ tự bảng chữ cái.

(xem hình ảnh đính kèm (2 trong số)). Lưu ý rằng gần như TẤT CẢ các tệp được đặt tên với phần mở rộng là: *.dtbo, bạn cũng có thể nhận thấy một số tệp được đặt tên với phần mở rộng là: *.dtb

Đây là TẤT CẢ các tệp lớp phủ "Cây thiết bị"

Bạn cần xác nhận sự hiện diện của hai tệp "lớp phủ" (xem tệp hình ảnh đính kèm).

Thứ nhất - tệp có tên: anyspi.dtbo (đối với tệp này, bạn có thể cần sử dụng thanh cuộn ở lề phải của cửa sổ để cuộn trở lại đầu và tìm anyspi.dtbo được sắp xếp theo thứ tự bảng chữ cái).

Thứ 2 - một tệp có tên w5500.dtbo

== == ==

Nếu bạn có thể xác nhận rằng cả hai tệp này đều có mặt, thì bạn đang ở trạng thái tốt và có thể quay lại thư mục../boot.

Gõ: cd../ sau khi nhấn phím ENTER, bạn sẽ được đưa trở lại thư mục / boot.

Liệt kê thư mục để xác nhận: gõ: ls và nhấn phím ENTER

Bước 6: Cấu hình Raspberry Pi IOS (trước đây là Raspian) - Chỉnh sửa tệp có tên: Config.txt

Cấu hình Raspberry Pi IOS (trước đây là Raspian) - Chỉnh sửa tệp được đặt tên: Config.txt
Cấu hình Raspberry Pi IOS (trước đây là Raspian) - Chỉnh sửa tệp được đặt tên: Config.txt
Cấu hình Raspberry Pi IOS (trước đây là Raspian) - Chỉnh sửa tệp được đặt tên: Config.txt
Cấu hình Raspberry Pi IOS (trước đây là Raspian) - Chỉnh sửa tệp được đặt tên: Config.txt
Cấu hình Raspberry Pi IOS (trước đây là Raspian) - Chỉnh sửa tệp được đặt tên: Config.txt
Cấu hình Raspberry Pi IOS (trước đây là Raspian) - Chỉnh sửa tệp được đặt tên: Config.txt

Trong thư mục../boot, bây giờ chúng ta có thể thực hiện một vài chỉnh sửa nhỏ đối với tệp có tên: config.txt

Đầu tiên chúng tôi sẽ gọi trình chỉnh sửa "nano" là "siêu người dùng" (sudo)

sudo = 'superuser"

nano là trình soạn thảo văn bản mà chúng tôi sẽ sử dụng

và như đã lưu ý, config.txt là tệp chúng tôi muốn chỉnh sửa.

Nhập: sudo nano config.txt và nhấn ENTER.

Thao tác này sẽ hiển thị trình chỉnh sửa và hiển thị nội dung của tệp config.txt. Nếu trình chỉnh sửa không mở hoặc mở trống, hãy thoát (nếu ở dạng nano) và kiểm tra lại chính tả của bạn.

Nếu mọi việc suôn sẻ, bạn sẽ thấy một cái gì đó giống như trong hình ảnh đính kèm thứ hai. "nano" sẽ hiển thị phần "trên cùng" của tệp. bạn sẽ cần phải cuộn xuống dưới cùng.

Ở cuối tệp, thêm hai "câu lệnh dtoverlay" bên dưới:

dtoverlay = anyspi, spi0-0, dev = "w5500", speed = 30000000dtoverlay = w5500

Kiểm tra lại tất cả chính tả và nếu nó khớp, hãy nhấn hai phím "Ctrl-x" để thoát.. và trả lời phù hợp để lưu và thoát.

== == == ==

Ở lần khởi động tiếp theo (và cho tất cả các lần khởi động sau đó nếu hai câu lệnh đó vẫn ở đó) hệ điều hành giờ đây cũng sẽ gọi lớp phủ có tên "anyspi" và lớp phủ có tên "w5500".

Lớp phủ "anyspy" chuẩn bị cho hệ điều hành sử dụng xe buýt SPI0-0 (đó là nơi trước đây chúng tôi đã kết nối vật lý với WIZ820io. "-0" chỉ định nó sử dụng địa chỉ "0" - nhớ lại rằng trước đây chúng tôi đã kết nối chân WIZ820io # J1-6 tới "Giám đốc điều hành" RPi GIPO (Pin # 24).

Lớp phủ "w5500" cho hệ điều hành biết cách xử lý với mạch tích hợp W5500 nằm trong mô-đun WIZ820io. Nó cũng xác định sử dụng RPi GPIO25 (Pin # 22) làm tín hiệu INTn. Nhắc lại một lần nữa rằng chúng tôi đã thực hiện kết nối này trước đây.

Loại thông tin này có thể được tìm thấy trong các tệp khác nhau, như ví dụ này được tìm thấy trên GITHub.

== == ==

Đã đến lúc khởi động lại RPI và làm cho tất cả những điều này có hiệu lực.

Bước 7: Chúng tôi đã khởi động lại. Tôi Hy vọng bạn đang mỉm cười

Chúng tôi đã khởi động lại. Tôi Hy vọng bạn đang mỉm cười
Chúng tôi đã khởi động lại. Tôi Hy vọng bạn đang mỉm cười
Chúng tôi đã khởi động lại. Tôi Hy vọng bạn đang mỉm cười
Chúng tôi đã khởi động lại. Tôi Hy vọng bạn đang mỉm cười

Nếu mọi việc suôn sẻ, RPi của bạn nên khởi động lại bình thường. Nụ cười.

Đã đến lúc kiểm tra xem IOS đã tải hai tệp lớp phủ mới và nó có nhận ra mô-đun WIZ820io được đính kèm hay không.

Một lần nữa mở cửa sổ "Lệnh".

Lần này tại dấu nhắc, hãy nhập ifconfig (hoặc sử dụng lệnh "ip" mới hơn) và nhấn phím Enter.

Có thể bạn sẽ nhận được một phản hồi dài, vì vậy bạn cần phải cuộn lên trên cùng.

Quay lại đầu trang, hãy tìm hai phần:

Một cái tên là eth0 và cái thứ hai tên: eth1 - xem hình ảnh đính kèm.

Trong hệ thống của tôi, eth0 là cổng Ethernet trên RPI. eth1 là Cổng Ethernet WIZ820io mới.

== == ==

Nếu bạn thấy hai cổng, thì RPI cũng vậy. Lưu ý trong hình ảnh đính kèm, eth1 đã gửi gói tin và không có lỗi.

Tôi đã kiểm tra điều này bằng cách ngắt kết nối cáp cổng ban đầu và sử dụng trình duyệt để truy cập YouTube và các trang web khác. Nó hoạt động. Tôi cũng đã "ping'd" nó từ một vài thiết bị khác nhau và nó hoạt động.

== == ==

Nếu bạn không thấy eth1 (hoặc một cái gì đó tương tự) - không phải eth0 trên RPI3 hoặc RPi4, hãy thử quay lại và kiểm tra kỹ xem tệp config.txt đã được chỉnh sửa và lưu đúng cách chưa. Đảm bảo rằng hai lớp phủ được đặt đúng vị trí và chính tả chính xác (không có chữ cái viết hoa nào ở nơi tôi không có chúng - chữ hoa quan trọng trong hệ thống này).

== == ==

Nếu có hai cổng, thì có thể có thêm một chút công việc cấu hình để thực hiện… chuyển sang bước tiếp theo….

Bước 8: Cấu hình Raspberry Pi IOS (trước đây là Raspian) - Đặt địa chỉ IP

Đây là một điểm hơi nằm ngoài khu nhà bánh xe của tôi, vì vậy tại thời điểm này, tôi không thể cung cấp hướng dẫn.

Chỉ cần biết rằng có vô số trang web, video YouTube và bảng tin cung cấp loại thông tin này.

nhưng.. bạn có thể muốn kiểm tra và thực hiện một vài điều ở đây.

1 - Kiểm tra kỹ địa chỉ IP mà cổng mới của bạn hiện có. nó được chỉ định bởi máy chủ DHP của bạn hay nó là IP mặc định - một cái gì đó trong phạm vi: 169.254.xxx.yyy? Nó là cái gì khác ??

2- Bạn muốn địa chỉ IP tĩnh (cố định) hay địa chỉ IP động (được chỉ định bởi máy chủ DHCP của bạn).

Kiểm tra công tắc / bộ định tuyến mà RPI của bạn được kết nối.. nó có thấy cổng mới của bạn không? nó có thể "Ping" nó? (hãy đảm bảo ngắt kết nối cáp cổng ban đầu nếu bạn làm điều này - nếu không RPi có thể đánh lừa bạn).

Sử dụng ifconfig (hoặc lệnh "ip" mới hơn) để thấy rằng dữ liệu đến và đi trông "bình thường" (có thể nói là như vậy) và không có số lỗi quá mức.

== == ==

Cuối cùng.. tôi tin rằng w5500.dtbo chỉ định địa chỉ MAC cho mô-đun WIZ820io / W5500.. nhưng tôi không thể nói chắc chắn nếu đó là nơi nó xảy ra. Tôi không thể tìm thấy chi tiết ngay lập tức về điều đó.

Đối với tôi, dường như một địa chỉ MAC khác được chỉ định mỗi khi nó khởi động. Cá nhân tôi không thích điều đó, và do đó, có những thứ có thể được thực hiện để đặt Địa chỉ Mac (ví dụ như chương trình "macchanger" hoặc đặt nó thông qua các lệnh ip / ifconfig). Nếu bất kỳ ai trong số các bạn tìm thấy giải pháp "khởi động" / "crontab" cho vấn đề này, tôi rất vui được biết cách bạn thực hiện nếu bạn sẵn sàng chia sẻ.

Bạn có thể thấy địa chỉ của tôi trong hình ảnh.. Khi tôi tìm kiếm nhà cung cấp Địa chỉ Mac cho eth0 ==> b827eb, nó xuất hiện dưới dạng Raspberry Pi Foundation. Nhà cung cấp cho eth1 ==> fa9770 xuất hiện là không xác định, vì vậy rõ ràng, nó đã được tạo trên Pi của tôi tại một số thời điểm..

Bước 9: Kết luận

Cảm ơn bạn đã xem có thể giảng dạy này.

Tôi đã học được khá nhiều cách làm việc thông qua dự án nhỏ này.

Nếu bạn có bất kỳ câu hỏi nào, hoặc có thể quan tâm đến việc mua một trong những bảng do tôi tạo ra (có hoặc không), tôi có một số tính năng bổ sung cần bán và chúng ta có thể thảo luận.

Trong mọi trường hợp, tôi mong bạn để lại ý kiến, đề xuất sửa chữa (lỗi chính tả hoặc phương pháp hoặc ??)

Chắc chắn nhất, nếu bạn làm điều này cho chính mình, tôi sẽ rất vui khi xem những bức ảnh về cách bạn giải quyết nó và kết quả / mục đích cuối cùng của bạn.

Cảm ơn.

P. S: Cảm ơn người đồng nghiệp này về sự hướng dẫn và ý tưởng.

Bước 10: Tệp DTBO

Hai tệp để thêm vào thư mục lớp phủ của bạn - Cần thiết cho các Bước # 4 và # 5