1. Chú Ý: Khi copy bài viết sang các diễn đàn khác các bạn nhớ ghi rõ nguồn từ Diễn Đàn Thiết Kế Vi Mạch Việt Nam ICdesignVN.com .

    Dismiss Notice
  2. Hiện tại diễn đàn đã hỗ trợ hiển thị highlight cho các từ khóa của các ngôn ngữ lập trình phổ biến. Chi tiết xem link sau: Sử dụng tính năng Syntax Highlighter cho việc post code
    Dismiss Notice
  3. Chú Ý: Các bạn phải là thành viên hoặc phải đăng nhập mới xem được hình ảnh của bài viết trên Diễn Đàn ICdesignVN.com .

    Dismiss Notice
  4. Đăng ký thành viên để tham gia Diễn Đàn thiết kế Vi Mạch và Vi Điện Tử, chỉ mất 30 giây » ĐĂNG KÝ NGAY

    Khi thấy một bài viết hay, bổ ích thì bạn nên Like và Comment để khích lệ người chia sẻ đó cũng là văn hóa trên Diễn Đàn ICdesignVN.com .

    Dismiss Notice
  1. icdesignvn.com

    icdesignvn.com

    Số Điện Thoại:
    090773724
    Trong thời đại ngày nay, công nghệ có thể nâng cao đời sống con người. Công nghệ đang tiến triển thập kỷ của thập kỷ. Tự động hóa là một khoa học viễn tưởng trước đó nhưng không phải hôm nay. Bằng cách kết hợp công nghệ mới nhất với nhà, chúng tôi có thể xây dựng một ngôi nhà tuyệt vời. Với Raspberry Pi và Windows 10, chúng ta có thể xây dựng một hệ thống tự động hóa, có khả năng của các thiết bị nhà điều hành tự động[​IMG]
    Sơ đồ tổng thể
    Cấu hình cho 1 Phòng
    Bây giờ xem xét tình huống trong 1 phòng, một module Arduino UNO sẽ kiểm soát các thiết bị và đọc dữ liệu cảm biến. Định kỳ, Raspberry Pi gửi yêu cầu cho các dữ liệu cảm biến thu thập bởi Arduino UNO. Hình minh họa "Kiến trúc Phòng" diễn tả làm sao để cho Arduino UNO sẽ kết nối với các thiết bị và cảm biến. Mỗi phòng đều có nhiều thiết bị kiểm soát (tức là Ánh sáng, quạt, ổ cắm điện, vv.. ), một Cảm biến chuyển động PassiveIR (để phát hiện sự hiện diện của con người trong phòng), một bộ cảm biến nhiệt độ (LM35 để thu thập nhiệt độ phòng) và LDR (để phát hiện cường độ ánh sáng gần cửa sổ phòng).
    [​IMG]




    Địa chỉ thiết bị
    Phần quan trọng nhất là làm thế nào chúng ta xác định các thiết bị? Đơn giản thôi. Chúng ta sẽ tạo địa chỉ cho thiết bị cách kết hợp số phòng với số lượng thiết bị. Ví dụ như: Số phòng 1 có ba thiết bị. Địa chỉ thiết bị sẽ là:
    R1\Dev0
    R1\Dev1
    R1\Dev2
    [​IMG]
    Vì vậy, bây giờ chúng ta đã biết cấu hình tổng thể. Tóm lại, một Raspberry Pi sẽ hoạt động như bộ điều khiển chính. Mỗi phòng đều có riêng một Arduino UNO của nó mà hành động phục vụ cho Raspberry Pi. Dữ liệu giữa Raspberry Pi Arduino UNO và sẽ được thực hiện bằng cách sử dụng giao tiếp I2C.
    Sơ đồ
    Để cho dễ dàng hơn, bắt đầu thực hiện cho căn phòng đầu tiên. Hãy tham khảo sơ đồ kết nối các thành phần trong một cách đúng nhất. Lưu ý: địa chỉ I2C cho Arduino Phòng 1 là 0x40. Bạn có thể thay đổi địa chỉ nhưng chắc chắn phải thay đổi lại trong mã nguồn Aruino và cũng thay đổi luôn địa chỉ của phòng cần quản lý trong các ứng dụng được cung cấp dưới đây. Lưu ý rằng mỗi Arduino phải có 1 địa chỉ duy nhất trên giao tiếp I2C.
    [​IMG]
    [​IMG]
    [​IMG]
    Làm thế nào đấu dây với mạch rờ le?
    Cảnh báo: Cẩn thận với điện khi thao tác nếu sử dụng cho điện cao thế và tránh xa trẻ nhỏ. Nếu có vấn đề nguy hiểm nào, nhớ tắt cầu dao điện chính.
    [​IMG]
    Phần mềm
    Dự án này đã bao gồm chương trình cho Raspberry Pi 2 và Arduino UNO 2. Phần mềm Raspberry Pi phát triển trong Visual Studio 2015. Tôi giả định rằng người đọc đã biết lập trình với Visual Studio 2015. Tôi cũng giả định rằng người dùng có kiến thức về Arduino, Visual C # và Windows Universal XAML.
    Nếu bạn mới biết Arduino và WINDOW IOT hãy tham khảo thêm
    Arduino - Tutorials
    Windows IoT - Setup your PC for Raspberry Pi 2
    Hãy tìm hiểu phần mềm theo thông tin sau đây:
    1.Giao thức (Làm thế nào Raspberry Pi 2 và Arduino nói chuyện với nhau)
    2.Cấu trúc lớp (bao Raspberry Pi 2 hình thành phức hợp các thiết bị và phòng )
    3.Giao diện người dùng (Wire-frame)
    Giao thức I2C
    Trước khi đi xa hơn, hãy xem xét Raspberry Pi và Arduino giao tiếp với nhau như thế nào.
    Mục tiêu giao tiếp
    1. Đọc cảm biến
    2. Đọc trạng thái của thiết bị
    3. Cài đặt trạng thái thiết bị
    Quy tắc giao tiếp là truyền những byte dữ liệu nối tiếp nhau. Tôi đã định nghĩa giao thức cho việc gửi và nhận các byte dữ liệu. Việc gửi byte dữ được cố định trong ba lần gửi của một mảng dữ liệu có 14 byte.
    Hãy tham khảo sơ đồ sau đây để hiểu giao thức đã định nghĩa cho dự án này ('X' biểu thị giá trị ngẫu nhiên hoặc '0', nó sẽ bị bỏ qua trong khi giao tiếp):
    [​IMG]
    Điều khiển các byte giữa RP2 và Arduino
    [​IMG]
     
  2. icdesignvn.com

    icdesignvn.com

    Số Điện Thoại:
    090773724
    Tuần tự nhận các byte dữ liệu cho các mode các nhau
    [​IMG]
    Mode 0: đọc cảm biến
    [​IMG]
    Mode 1: Đọc thiết bị
    [​IMG]
    Mode 2: Thiết lập trạng thái thiết bị
    Lớp có tên 'I2C_Helper' thực hiện theo giao thức trong PRi2. Lớp này có sẵn trong Universal Windows Project . Để mở nó: vào Solution Explorer> Library> Communication. Về phía Arduino, nó rất dễ dàng để hiểu thư viện I2C.
    Tham khảo thêm:
    Windows IoT - I2C Accelerometer Sample
    Arduino - Wire
    Arduino I2C communication with Raspi 2 WIOT - Hackster.io
    Bây giờ, chúng tôi đã định ra một chương trình giao tiếp thích hợp mà có thể biết được tình trạng và giá trị của cảm biến, thiết bị và cũng cung cấp khả năng thiết lập trạng thái thiết bị.
    Class Structure (Raspberry Pi 2 Maintain Objects)
    Như đã thảo luận, dự án này được coi là toàn bộ nhà. Nhà gồm nhiều phòng và phòng bao gồm nhiều thiết bị. Như vậy cấu trúc OOP của cấu hình như vậy được hiển thị dưới đây:
    [​IMG]

    [​IMG]
    Lớp "Home" chính bao gồm nhiều đối tượng phòng như danh sách chung của phòng (List <Room>). Lớp Home cung cấp phương thức tĩnh để tải và lưu đối tượng Home trên Pi để sử dụng sau này. Phòng bao gồm các thiết bị như danh sách chung của các thiết bị (List <Device>) và cấu trúc cảm biến để đóng gói tất cả các cảm biến thành một. Thiết bị bao gồm các chi tiết chúng và chức năng để bật và tắt chúng bằng cách sử dụng giao thức theo Mode - 2. Lớp AmbientLight, PassiveIR và lớp Temperature cung cấp dữ liệu môi trường của căn phòng. Đối tượng Room duy trì dữ liệu cảm biến và định kỳ làm mới chúng bằng cách sử dụng chế độ giao thức Mode - 0.
    Lưu ý: Biểu đồ lớp được cung cấp trong dự án. Để xem nó, hãy vào "Solution Explorer" và nhấp đúp chuột vào 'ClassDiagram.cd'.
    Giao diện người dùng
    Bất kỳ ứng dụng phải thân thiện. Để làm cho ứng dụng thân thiện, bắt đầu với mô hình wire-frame. Giả sử rằng bạn đang sử dụng ứng dụng của riêng bạn và tìm hiểu những mục tiêu chính và làm thế nào để tích hợp chúng sao cho dễ dàng nhất cho người dùng cuối.
    Trong kịch bản của ứng dụng này, mục tiêu chính của chúng tôi là:
    • Quản lý phòng
    • Quản lý thiết bị
    • Dịch vụ bên ngoài như GSM truyền thông, truyền thông Internet, vv
    Để làm như vậy, tôi đã tách vấn đề thành:
    • Home Page: Cung cấp thông tin tình trạng thiết bị cơ bản, ngày-thời gian và khóa
    • Thiết bị yêu thích: Truy cập trực tiếp đến các thiết bị yêu thích
    • Trang Room: Cung cấp truy cập đến các phòng cấu hình và các thiết bị của chúng
    • Máy bơm nước
    • Cài đặt / Cấu hình: quản lý của các phòng và các thiết bị
    Wire-frame:
    [​IMG]
    Bảng điều khiển chung

    [​IMG]
    Bảng điều khiển các phòng

    [​IMG]
    Trang chủ

    [​IMG]
    Các chức năng

    [​IMG]
     
  3. icdesignvn.com

    icdesignvn.com

    Số Điện Thoại:
    090773724
    Các thiết bị trong một phòng
    Các thiết bị trong 1 phòng
    Hình ảnh thực tế của ứng dụng
    [​IMG]

    [​IMG]

    [​IMG]

    [​IMG]

    [​IMG]

    [​IMG]

    [​IMG]

    [​IMG]

    [​IMG]

    [​IMG]
     
  4. icdesignvn.com

    icdesignvn.com

    Số Điện Thoại:
    090773724
    [​IMG]

    [​IMG]

    [​IMG]
    Làm thế nào để cấu hình?
    Tôi đã cố gắng để làm cho phần mềm này dễ dàng nhất có thể. Với cấu hình nhỏ, bạn có thể vận hành các thiết bị trực tiếp sử dụng Raspberry Pi 2. Cấu hình từng bước được hiển thị dưới đây:
    [​IMG]
    Chọn Icon config bên phải

    [​IMG]
    Click dấu + để thêm phòng mới

    [​IMG]
    Muốn chon phòng nào thì click lên nó

    [​IMG]
    4a đổi tên phòng, 4b địa chỉ phòng, 4c icon của phòng


    Click dấu + để thêm thiết bị

    [​IMG]
    Chọn 6a để đổi tên trong ô 6b, có kết nối đến thiết bị trên arduino ở chân nào trong danh sách 6c. Cuối cùng nhấn lưu ở số 7

    [​IMG]
    Chọn biểu tượng màu tím để mở trang quản lý các phòng vào chọn phòng cần theo dõi

    [​IMG]
    Trong phòng này sẽ thông báo nhiệt độ, độ sáng, trạng thái thiết bị, nhấp đôi lên thiết bị để tắt hoặc mở thiết bị đó
    Làm thế nào để triển khai giải pháp Raspberry Pi 2?
    Bạn có thể tham khảo link này để hiểu được quá trình triển khai.
    Windows IoT - Blinky Sample
    Làm thế nào để đăng ký ứng dụng này là ứng dụng khởi động?
    Rất nhiều người muốn ứng dụng của họ bắt đầu ngay sau khi Raspberry Pi 2 khởi động. Để làm như vậy, đọc bài viết của tôi: Windows 10 IOT Core: Thiết lập Startup App
    Windows 10 IoT Core : Setting Startup App - Hackster.io
    Các vấn đề đối với Arduino bootup
    Khi Arduino khởi động, nó nhấp nháy chân D13. Không kết nối bất kỳ relay trên D13 khi Arduino khởi động hoặc khởi động lại, D13 sẽ được nhấp nháy một lần và nếu bất kỳ thiết bị kết nối với Relay (điều khiển thông qua D13) cũng sẽ nhấp nháy.
    Tương lai
    Không có giới hạn với tính năng, ý tưởng mới hoặc thậm chí để khắc phục hạn chế hiện có. Nhưng có thể không khả thi với mọi tính năng cùng một lúc. Tại phiên bản này, bài viết này giúp bạn hiểu được sức mạnh thực sự của Raspberry Pi 2 và Windows IOT. Windows Universal XAML là nền tảng tuyệt vời cho Windows 10 IOT & Raspberry Pi 2 có bộ xử lý đồ họa tốt tích hợp sẵn. Bằng cách kết hợp hai điều này, bạn có thể tạo ra nhiều ứng dụng hay. Ngoài ra, Raspberry Pi 2 có tốc 900MHz rất tuyệt vời cho các giải pháp đa luồng. Đây là dự án cơ bản cho những ai muốn tìm hiểu nguyên tắc cơ bản của hệ thống nhúng và phần mềm (tức là giao tiếp I2C, làm thế nào để vận hành các thiết bị, thiết kế giao thức tùy chỉnh, thiết kế OOP cho ứng dụng thực và wire-frame).
    Trong tương lai, chúng ta có thể thêm khả năng để giao tiếp trên thiết bị từ xa bằng cách sử dụng tần số vô tuyến hoặc hồng ngoại thay vì I2C. Cổng thông tin Web quản lý sử dụng Azure có thể được tích hợp cho các thiết bị di động. Hơn nữa việc tự động hóa sẽ được tích hợp như hoạt động sự kiện, hẹn giờ hoạt động với chip RTC. Ví dụ, bật đèn sân sau lúc 07:00 và tắt lúc 10:00 tối; một ví dụ điển hình cho sự kiện là không cho bật đèn vườn khi cường độ ánh sáng môi trường xung quanh giảm xuống dưới mức độ cụ thể. Vì vậy, không có giới hạn cho việc này Windows 10 IOT nền tảng Core mới cho Raspberry Pi 2.
    Link tải mã nguồn chương trình bằng C# và Arduino

    https://github.com/AnuragVasanwala/Home-Automation--RPi2-WinIoT-/zipball/master
    Dịch từ hackster.io / dientunht.blogspot.com
     
  5. nhtrung1980

    nhtrung1980

    Số Điện Thoại:
    0955455363

Chia sẻ trang này