Nguyen Hieu gửi vào
- 88325 lượt xem
Giới Thiệu
Ethernet shield là một mạch mở rộng cho arduino, giúp arduino có thể kết nối với thế giới internet rộng lớn. Ứng dụng của shield này là truyền nhận thông tin giữa arduino với thiết bị bên ngoài sử dụng internet, shield này đặc biệt hữu ích cho các ứng dụng IoT, điều khiển và kiểm soát hệ thống vì internet luôn liên tục, dữ liệu truyền đi nhanh, khoảng cách là vô tận( trong Trái Đất thôi, với phải có mạng nữa) ăn đứt sóng RF , rẻ hơn với cách truyền từ xa bằng tin nhắn. Hôm nay mình sẽ hướng dẫn mọi người cách sử dụng nó để điều khiển thiết bị bằng đường truyền internet.
Phần Cứng
- 1 mạch arduino uno hoặc mega.
- 1 shield ethernet
- 1 dây mạng RJ45
- 3 led
- 3 trở 220 hoặc 1K để bảo vệ led
Thực Hiện
Chụp shield ethernet lên uno hoặc mega như hình:
Còn led các bạn nối theo sau
Thực hiện theo 3 bước sau nhé, chúng ta vừa làm vừa tìm hiểu thì sẽ hiệu quả hơn. Theo mình là vậy; :)
Bước 1
Tạo code Web để hiển thị thông tin khi bạn truy cập vào Web, khi đó bạn có thể nhận các tín hiệu và điều khiển thiết bị bằng giao diện web, nó giống như lập trình một trang Web vậy, code ở dưới đây. Bạn tùy biến theo cách của mình và nạp nó vào arduino như bình thường nhé.
Do mình mới tìm hiểu, 1 số khái niêm hiểu theo cách của mình, nếu có dòng nào các pro thấy diễn đạt có sai ý nghĩa thì bình luận ở dưới, mình sẽ sửa ngay.
Sau khi nạp xong các bạn dùng máy tính, truy cập vào địa chỉ ip mà bạn vùa cài đặt( trong code thì truy cập vào 192.168.1.9), nếu hiện ra 1 trang giống này thì là ok rồi. thử điều khiển xem các led có bật tắt theo yêu cầu không, đợi 5s xem có có tự tải lại trang không. nếu ok hết là ngon.
Bước 2: Tạo một Domain và gán ip modem vào đó
Trước tiên, ta nên tìm hiểu 1 chút về mạng internet, thế nào là ip, domain.
IP là địa chỉ của một thiết bị trên hệ thống mạng: một modem, pc, điện thoại khi kết nối mạng đều có một địa chỉ ip, dựa vào ip này mà khi chúng ta truy cập để lấy thông tin từ một " kho nào đó" nào đó thì " kho nào đó " sẽ dựa vào ip từ thiết bị của bạn và gửi thông tin trở lại đúng thiết bị của bạn. giống như số điện thoại vậy, bạn gọi cho mẹ, mẹ sẽ nhìn vào số điện thoại và biết người gọi điện là ai và nên trả lời hay không trả lời.
Ở gia đình của bạn có 1 thiết bị có ip lớn đó chính là ip của modem, các thiết bị còn lại( máy tính, điện thoại, shield ethernet,..) có các địa chỉ ip con khác nhau để kết nối với modem, khi thiết bị yêu cầu nối tới mạng thì thiết bị không tự tìm đến " kho nào đó" để nó tả lại kết quả mà phải thông qua modem, modem sẽ dùng IP của mình để kết nối tới " kho nào đó" rồi khi nhận được tín hiệu từ "kho nào đó" thì nó mới trả về cho thiết bị của bạn theo các ip con ( vì thế nên modem lúc nào cũng nóng toát mồ hôi).
Hiểu theo xã hội phong kiến cho dễ: các thiết bị là dân, modem là quan, còn " cái kho" là vua. nếu có thắc mắc bạn sẽ gửi lời đến quan, quan gửi lên vua, vua trả lời lại cho quan, quan tiếp tục truyền lại cho dân. Như vậy thì tín hiệu truyền đi sẽ có hệ thống và dễ quản lí hơn.
Domain là tên miền của ip của thiết bị bạn cần kết nối, ví dụ ip là số điện thoại thì domain là tên danh bạ của bạn, khi bạn gọi cho mẹ thay vì xem từng số để nhớ xem có phải sđt con trai mình không thì người mẹ đó chỉ cần lưu tên cho sđt đó. khi người con gọi đến thì mẹ biết ngay con trai cưng đấy rồi.nếu không có domaim thì khi truy cập arduino.vn các bạn sẽ phải nhập 1 ip nào đó như 132.152.xxx.xxx. như vậy quá bất tiện, domaim sinh ra để định tên cho ip đó, giúp ta dễ nhớ và truy cập.
Để hiểu rõ hơn thì các bạn vào đây
Ta cùng tạo domain free nào
Đầu tiên, các bạn truy cập: www.no-ip.com (chọn ngôn ngữ tiếng Việt cho dễ đọc, phần language ở góc phải màn hình đó) => tạo một tài khoản trên đó: bấm Sign up và làm theo hướng dẫn (nó yêu cầu gmail nên chưa có gmail thì phải tạo một cái gmail trước đã nhé.) nhận email, tên tài khoản, mật khẩu, và cái cuối là( host name) tên miền.
Nên nhớ, tên miền là cái mình sau này sẽ truy cập, vì thế nên hãy đặt cái tên dễ nhớ đấy. ví dụ như tên bạn, biệt danh, các kiều,... nếu bị trùng thì phải làm cái khác nhé.khi truy cập bạn phải gõ tên bạn vừa nhập vào và thêm mấy cái đuôi của nó vào đấy. khuyên dùng đuôi .ddns.net vì nó dễ nhớ.
Tiếp theo, làm theo hướng dẫn của nó là xác minh tài khoản bằng email, truy cập email để lấy link kích hoạt. sau khi kích hoạt nó bắt tải cái app tên DUC.exe, ae tải về rồi cài đặt vào máy, app nó yêu cầu đợi hơn 4 phút để cập nhật ip lên noip.com. Các bạn cứ đợi hết 4 phút là được, nó làm lại lần 2 thì thoát nó ra, lúc này cũng cập nhật xong rồi.
Ta đăng nhập lại vào https://my.noip.com/#!/ và sẽ thấy có hình "1 active" to đùng vào đấy, nhấp chuột vào ta sẽ thấy tên miền và bên cạnh là cái ip modem nhà bạn.
Lúc này ta truy cập vào cái tên miền đó, nếu thấy xuất hiện một hình đăng nhập vào là ok rồi. ( hình đăng nhập này là tài khoản và mật khẩu để đăng nhập vào để thay đổi cài đặt modem).
Lúc này, chúng ta có thể truy cập mạng ở ngoài để vào được mạng ở nhà bằng tên miền vừa tạo rồi, như nó lại không truy cập đúng vào cái shield để điều khiển thiết bị mà lại truy cập vào đăng nhập của modem, vậy bước tiếp theo là chúng ta phải "NAT PORT" cho shield để có thể truy cập từ tên miền vừa tạo vào shield chứ không phải vào modem,........... ===>>>>và điều khiển thiết bị từ khắp nơi trên trái đất, miễn là có mạng.
Bước 3: NAT PORT
Phần này là phần quan trọng nhất, việc NAT PORT này tùy thuộc vào từng modem mạng, mỗi loại khác nhau sẽ có cách NAT khác nhau mặc dù cùng mạng. Có thể các modem cùng hãng nhưng sau mỗi năm thì họ lại cập nhật lại phần mềm hoặc phần cứng mới nên cách NAT cũng khác nhau, vì vậy nên mình sẽ không hướng dẫn các bạn NAT PORT một cách chung chung, việc NAT PORT các bạn phải tự tìm hiểu . Sau đây mình sẽ đăng các link hướng dẫn các bạn NAT PORT.
Lưu ý:
- Khi NAT các bạn ghi ip của shield (ở code trên là 192.168.1.9)
- Số port của shield là 80, nên các bạn điền là 80 cho " External port start" và cũng 80 cho " External port start", do các clip hướng dẫn chủ yếu là cho camera mà camera lại có nhiều số port nên các bạn đừng hoang mang,họ dùng camera thì mình dùng shield( tức là làm giống camera vậy, chỉ là thay thông số của camera bằng shield thôi) , chỉ cần ghi 1 số port là 80 cho cả port start và port end là được
- Khi NAT một số modem yêu cầu có bước viết tên miền, tài khoản, mật khẩu thì các bạn đăng nhập y như khi đăng kí ở noip.com đó.( như modem của mình chẳng hạn)
Đây là modem của mình, igate gw040: http://www.thuthuatict.com/2016/04/huong-dan-nat-port-camera-modem-gpon.html nhớ nhá, thông số port của shield là 80, nên các bạn điền là 80 cho " External port start" và cũng 80 cho " External port start"
Các modem còn lại hãy tra google với cú pháp: "cách nat port cho modem xxx ", trong đó, xxx là modem của bạn. nếu không có bằng tiếng việt thì hãy tra bằng tiếng anh.
Nếu gặp khó khăn, đừng nản chí, hãy cố gắng hết sức mình, hãy bình luận bên dưới để ace trong cộng đồng trợ giúp. Nếu khó khăn hãy gặp mình, mình teamwiewr hộ cho.
Vấn đề mở rộng
Thực sự hôm nay mình mới làm thành công cái này, thấy hay quá nên đăng lên luôn, còn 1 số vấn đề chưa thể giải quyết và cần mở rộng:
1. Cần tạo một mật khấu khi đăng nhập, nếu không tạo thì ta rất dễ bị mất kiểm soát do bị lộ tên miền, khi đó bất cứ ai biết xũng sẽ có thể điều khiển hệ thống của bạn.
2. Có thể mở rộng không dùng shield mà dùng module wifi thì thật quá tốt
3. Cần tạo giao diện đẹp hơn, màu sắc hơn, gọn gàng hơn.
4. Mở rộng ra các cách khác như điều khiển qua GPRS sử dụng sim900a.
5. Tìm hiểu để sử dụng khe cắm thẻ nhớ, bởi bộ nhớ của arduino là rất ít, vì vậy các bạn nên tìm hiểu để sử dụng thẻ nhớ, như vậy web điều khiển của bạn sẽ rất chuyên nghiệp.
Rất mong các bạn giúp mình hoặc gợi ý để mình tìm hiểu với nhé!