Làm thế nào để kết nối RFduino với internet?


7

Tôi đã ủng hộ dự án RFduino trên Kickstarter để sử dụng nó trong dự án tiếp theo của tôi. Về cơ bản, nó là một bo mạch tương thích Arduino nhỏ với Bluetooth LE tích hợp hỗ trợ các tấm chắn bổ sung.

Tôi cũng đã có một Arduino Uno thông thường với Ethernet Shield .

Những gì tôi muốn xây dựng

Tôi đang suy nghĩ về một mạng cảm biến (độ ẩm và nhiệt độ) cho trong nhà bằng cách sử dụng nhiều RFduinos với tấm chắn pin đồng xu nằm quanh nhà. Arduino Uno với tấm chắn ethernet và tấm chắn bluetooth được kết nối với bộ định tuyến sẽ gửi dữ liệu đến máy chủ của tôi, vì vậy tôi có thể theo dõi các số liệu thống kê từ xa.

Câu hỏi

Tôi muốn truyền dữ liệu cứ sau 10 phút để giữ mức tiêu thụ năng lượng thấp. Làm cách nào tôi có thể đánh thức các cảm biến và máy chủ chính (uno) cùng một lúc, truyền dữ liệu (từ cảm biến đến máy chủ và từ máy chủ đến máy chủ của tôi) và đưa chúng trở lại trạng thái ngủ? Có nguy cơ mất dữ liệu vì một trong các cảm biến có thể bị thức khi máy chính vẫn đang ngủ? Tấm chắn Uno Bluetooth có thể can thiệp vào tấm chắn Ethernet không?

Tôi không hỏi mã nhưng ý tưởng có hợp lý không? Liên kết đến các dự án liên quan sẽ giúp rất nhiều. Tôi cũng đã nghĩ đến việc sử dụng xbee để liên lạc dữ liệu nhưng tôi thấy nó khá phức tạp và bây giờ Bluetooth LE cần ít năng lượng hơn nên tôi không thể thấy bất kỳ lợi thế nào của xbee so với Bluetooth LE.

Câu trả lời:


2

Nó có ý nghĩa

Không có vấn đề gì trong việc giữ Uno hoạt động 24/7 (nó không tiêu tốn nhiều năng lượng). Thay vì kết nối nó với pin, hãy lấy một cái mụn cóc tốt cho nó. Bằng cách này, bạn cũng không phải lo lắng nhiều về việc đồng bộ hóa RFduinos. Chỉ cần kiên nhẫn chờ đợi một RFduino kết nối với nó. Tuy nhiên, nếu bạn làm muốn giữ chúng trong đồng bộ, sau đó chỉ cần sử dụng Thời gian thư viện, bằng cách nào đó biến chúng tất cả trên cùng một lúc (dễ dàng nếu bạn sử dụng pin thiết lập lại), và cầu nguyện rằng nguồn năng lượng của họ là không bị gián đoạn.

Về RFduinos: có lẽ bạn cũng có thể bật chúng, trên một vòng lặp cứ sau 10 phút để bật bluetooth và gửi dữ liệu. Thậm chí tốt hơn, sử dụng một thư viện như thế này cung cấp cho bạn một chế độ ngủ hiệu quả năng lượng để làm việc.

Tuy nhiên, nếu bạn không muốn bật RFduinos, một mạch đơn giản sử dụng bộ hẹn giờ 555 và rơle phải đủ để bật nó sau mỗi vài phút (nó có thể tự tắt thông qua chân RESET của 555). Miễn là Uno hoạt động 24/7, bạn không cần sử dụng bất kỳ đồng bộ hóa đặc biệt nào và có thể có các giá trị gửi RFduinos theo các khoảng so le.

Đây là một sơ đồ:

nhập mô tả hình ảnh ở đây

Kết nối phần "Ghim" với một số chân trên RFduino. Gửi một đầu ra CAO không đổi trên đó. Khi bạn muốn tắt, gửi tín hiệu THẤP.

Các phần "To Vin" và "To GND" đi đến các chân tương ứng trên RFduino.

Nếu bạn không thể tìm thấy điện trở 866K, một cái gì đó có giá trị gần đó phải hoạt động. Về cơ bản, ln (2) * R2 * C2 phải là 600 giây.

Lưu ý rằng 555 có hành vi RESET khác nhau. Chúng tôi muốn một trong những chu kỳ THẤP khi thiết lập lại.


Tôi có thực sự cần thêm phần cứng? Tôi đã tìm thấy bài viết thú vị này ngày hôm qua Cách chạy Arduino trên pin 9V trong nhiều tuần hoặc nhiều tháng . Bạn đã bao giờ làm việc với một giải pháp chỉ phần mềm?

@zeMirco: Tôi đã đề cập đến giải pháp phần mềm: Giữ chúng, trong một vòng lặp cứ sau 10 phút để bật Bluetooth (Tôi sẽ chỉnh sửa một chút về thư viện đó nếu bạn muốn). Tôi đã đưa cho bạn giải pháp phần cứng bởi vì bạn đề cập rằng bạn muốn chúng bị tắt trong câu hỏi.
Manishearth

Vâng, bạn đã đề cập đến một giải pháp phần mềm nói chung nhưng không cung cấp bất kỳ chi tiết nào. Nếu bạn có thêm một số hiểu biết sẽ là tuyệt vời. Ví dụ: Làm cách nào tôi có thể chắc chắn rằng bộ hẹn giờ trên máy chủ chính và RFduinos được đồng bộ hóa?

@zeMirco: Đã thêm một chút trong chỉnh sửa. IMO, giữ Uno trên có nghĩa là bạn không cần phải lo lắng về đồng bộ hóa. Tuy nhiên, thư viện Time sẽ cho phép bạn giữ chúng đồng bộ. Tuy nhiên, tôi không có kinh nghiệm về điều đó và tôi không chắc thư viện đó chính xác đến mức nào.
Manishearth

Thư viện thời gian kém chính xác hơn một chút so với độ chính xác của nguồn đồng hồ: Trong trường hợp Arduino, không sử dụng Bộ tạo dao động tinh thể bù nhiệt độ (TCXO), điều này hoàn toàn không chính xác. Ngoài ra, bit kém chính xác hơn vì một số ngắt sẽ bị bỏ qua trong thực tế, thêm không chính xác.
Anindo Ghosh

1

Thay vào đó, bạn có thể phát triển chương trình của mình để lắng nghe các yêu cầu kết nối và thu thập và gửi dữ liệu từ các cảm biến làm giá trị trả về. Điều này sẽ tránh được sự cần thiết của mạch hẹn giờ hoặc vòng lặp, mặc dù nó sẽ phải liên tục để cả Uno và RFduinos liên tục. Với mức tiêu thụ năng lượng, khả năng thay đổi tốc độ lấy mẫu dễ dàng có thể là một lợi ích tuyệt vời cho bạn. Bạn chỉ cần thay đổi tần suất máy tính của bạn bỏ phiếu Uno, không có gì trên Uno hoặc cảm biến sẽ thay đổi.


Một cách tiếp cận thú vị nhưng như bạn đã nói, điều đó có nghĩa là tôi phải để cả hai liên tục giúp giảm thời gian sử dụng pin.

Đúng, nhưng như Manishearth đã đề cập, bạn có thể dễ dàng có được một bức tường tốt cho sức mạnh. Đặc biệt nếu bạn muốn đặt các cảm biến ở những nơi "ẩn" hoặc không thường truy cập.
John

0

Một vài quan sát.
1) uno của bạn sẽ được đặt để nó có thể tiếp cận tất cả các cảm biến thông qua bluetooth?

2) tại sao không chỉ thêm bluetooth vào máy chủ trung tâm của bạn và tránh việc đồng bộ hóa thời gian thức dậy hoàn toàn, vì máy chủ trung tâm sẽ luôn hoạt động.

3) tính toán chết bằng cách sử dụng bộ đếm thời gian cuối cùng sẽ trôi dạt. Bạn sẽ muốn họ có đồng bộ hóa mạng ngang hàng của bạn trên mỗi chu kỳ thức dậy và phối hợp vào giấc ngủ tiếp theo.

Các chi tiết về giấc ngủ của arduino có ở đây, (nhưng tôi không chắc liệu RFDUino có hoạt động theo cách tương tự không):

http://playground.arduino.cc/Learning/arduinoS ngủCode

bạn có thể sẽ nhìn vào việc thức dậy với đồng hồ bấm giờ, vì không có sự kiện cụ thể nào ngoài thời gian kích hoạt bài đọc của bạn.

Tổng quan tốt về điều đó ở đây: http://donalmorrissey.blogspot.com/2010/04/s ngủing -arduino-part-5-wake-up-via.html

Tôi nghĩ rằng bạn có thể loại bỏ uno khỏi kiến ​​trúc của mình và tiết kiệm pin bằng cách tắt phần cứng. Đảm bảo rằng máy chủ trung tâm của bạn có bluetooth và có thể nhìn thấy ít nhất một trong các thiết bị. Tôi sẽ ngang hàng để giải quyết để tất cả các cảm biến tổng hợp thông tin lẫn nhau. Theo cách đó miễn là tất cả các RFDuino có thể nhìn thấy ít nhất một RFDuino khác, họ có thể chuyển thông tin của mình về phía trước.

Trong thiết kế đó, một RFDuino sẽ thức dậy và đăng bài đọc của mình cho bất kỳ người hàng xóm nào mà họ nhìn thấy, sau đó đọc bất kỳ và mọi người hàng xóm về các giá trị mà người hàng xóm đã thu thập cho đến khi có tất cả các bài đọc dự kiến ​​(bạn sẽ cần phải cấu hình trước mạng để bạn biết có bao nhiêu đồng nghiệp mong đợi). Khi mỗi cảm biến đã thu thập tất cả thông tin từ tất cả các cảm biến khác, bạn có thể gửi tín hiệu đồng bộ hóa và tắt máy. Điều đó tránh các cảm biến tắt nếu chúng không có tất cả các bài đọc từ những người khác và đồng bộ hóa sẽ đảm bảo rằng hy vọng các cảm biến không tồn tại quá lâu. Vì vậy, nếu một cảm biến thức dậy sớm, nó sẽ đợi cho đến khi tất cả những người khác đã gửi dữ liệu của họ đến mạng trước khi tắt. Nếu nó thức dậy muộn, tất cả các cảm biến khác sẽ chờ nó.

Trong thiết kế này, nếu một trong các cảm biến của bạn biến mất do tuổi thọ / lỗi pin, tất cả các cảm biến khác sẽ vẫn tỉnh táo chờ đợi nó. Vì vậy, bạn sẽ cần một số mã khẩn cấp khởi động sau khi một cảm biến vẫn chờ đợi trên một dữ liệu cảm biến bị thiếu trong thời gian dài hơn hai khoảng thời gian bình thường. Sau đó xóa ngang hàng đó khỏi danh sách chờ và tiếp tục hoạt động.

Âm thanh như một dự án thú vị, cho chúng tôi biết làm thế nào nó bật ra.

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.