Mục lục:

Xây dựng mô-đun độ sáng với AtHome: 7 bước
Xây dựng mô-đun độ sáng với AtHome: 7 bước

Video: Xây dựng mô-đun độ sáng với AtHome: 7 bước

Video: Xây dựng mô-đun độ sáng với AtHome: 7 bước
Video: Robot Codey Rocky dạy các cảm biến trong sáng tạo , ứng dụng môn học Stem 2024, Tháng mười một
Anonim
Xây dựng mô-đun độ sáng với AtHome
Xây dựng mô-đun độ sáng với AtHome

AtHome là một dự án nguồn mở hoàn toàn dành cho sinh viên và phần mềm mở được thực hiện bởi nhóm AtHome từ E Lipitch, nhằm mục đích phát triển một giải pháp kết nối của một số mô-đun cảm biến riêng lẻ giao tiếp với cơ sở dữ liệu tự lưu trữ, cung cấp một API được sử dụng để cung cấp ứng dụng điện thoại thông minh và ứng dụng web. Các mô-đun giám sát môi trường trong nhà của ngôi nhà và có thể đưa ra phản hồi trực quan cho người dùng, chuyển từ màu xanh lá cây (tốt) sang màu đỏ (xấu) và dữ liệu được truyền đi sẽ được người dùng nhìn thấy thông qua giao tiếp nối tiếp của một mô-đun hoặc trên các ứng dụng của chúng tôi nếu bạn sử dụng chúng.

Mặc dù dự án này vẫn đang trong quá trình phát triển tích cực, các chức năng cơ bản của các mô-đun của chúng tôi hiện đã sẵn sàng và được cho là dễ sử dụng để phát triển các mô-đun tùy chỉnh. Vì vậy, đó là lý do tại sao tôi đề xuất bạn xem cách xây dựng mô-đun đơn giản của riêng bạn với ví dụ về mô-đun độ sáng này.

Các mô-đun này về cơ bản được xây dựng với bảng tương thích với Arduino (lõi Arduino một phần phải đủ miễn là nó có hỗ trợ Luồng, Dây và luồng UART), đèn LED (màu đỏ hoặc RGB) chuyển sang màu đỏ trong trường hợp có sự cố, cảm biến, nguồn điện (nguồn điện trên tường hoặc pin) và vỏ máy cắt laser.

Có, nó chắc chắn không phải là mới, có rất nhiều dự án cảm biến nhưng chúng tôi hy vọng các tính năng khác như phát hiện các vấn đề sức khỏe, giao tiếp và lưu trữ thông tin trên máy chủ tự lưu trữ và ứng dụng hình ảnh hóa sẽ giúp ích cho bạn. Hoặc nếu bạn chỉ muốn giám sát ngôi nhà của mình, những dự án đơn giản hoặc không kém phần thú vị:)

Bước 1: Thu thập các thành phần

Thu thập các thành phần
Thu thập các thành phần

Đối với dự án này, bạn sẽ cần một số thành phần để xây dựng mô-đun AtHome của mình:

  • 1x Bo mạch tương thích Arduino: Ở đây tôi sẽ sử dụng Arduino UNO (nhưng nó cũng hoạt động với các bo mạch khác như TI Launchpads và bo mạch ESP8266)
  • Cảm biến 1x: Tôi sẽ sử dụng cảm biến độ sáng TSL2561 (danh sách các cảm biến được hỗ trợ có sẵn trong tài liệu của thư viện của chúng tôi)
  • 1x led: Tôi sẽ sử dụng đèn LED RGB Grove Chainable ở đây (nhưng nó cũng có thể là đèn LED đơn giản màu đỏ hoặc NeoPixel)
  • Dây Dupont

Danh sách các thành phần tương thích có sẵn trong tài liệu của dự án của chúng tôi.

Bước 2: Cài đặt Thư viện của chúng tôi

Cài đặt Thư viện của chúng tôi
Cài đặt Thư viện của chúng tôi
Cài đặt Thư viện của chúng tôi
Cài đặt Thư viện của chúng tôi

Để cài đặt thư viện của chúng tôi, bạn cần tải xuống từ kho lưu trữ của chúng tôi (chúng tôi sẽ xuất bản nó sau trên danh sách Arduino IDE và PlatformIO) với liên kết sau:

gitlab.com/Woodbox/Framework/-/jobs/artifacts/master/download?job=deploy

Sau đó, vào Arduino IDE và chọn "Phác thảo> Bao gồm Thư viện> Thêm Thư viện. ZIP…". Sau đó, chọn tệp zip có tên "Artifact.zip" và nhấp vào "OK".

Bước 3: Cài đặt Thư viện Bắt buộc

Cài đặt Thư viện Bắt buộc
Cài đặt Thư viện Bắt buộc
Cài đặt Thư viện Bắt buộc
Cài đặt Thư viện Bắt buộc
Cài đặt Thư viện Bắt buộc
Cài đặt Thư viện Bắt buộc

Để hoạt động, thư viện của chúng tôi cần một số thư viện khác được cài đặt trên máy tính của bạn:

  • Thư viện Arkhipenko TaskScheduler
  • Thư viện bộ cảm biến ánh sáng kỹ thuật số đã được SEEED Studio Grove
  • Thư viện đèn LED RGB có thể hỗ trợ được trong Studio Grove
  • Thư viện Adafruit NeoPixel

Bạn có thể cài đặt chúng thông qua trình quản lý thư viện của Arduino IDE, bằng cách vào "Phác thảo"> "Bao gồm Thư viện"> "Quản lý thư viện…".

Trong cửa sổ mới sẽ mở ra, hãy viết vào thanh tìm kiếm màu trắng tên của thư viện bạn muốn cài đặt, sau đó nhấp vào khối của nó. Một nút "Cài đặt" sẽ hiện ra, bạn chỉ cần click vào đó là IDE sẽ tải về máy và cài đặt cho bạn.

Bước 4: Lắp ráp mô-đun

Lắp ráp mô-đun
Lắp ráp mô-đun

Chúng ta sẽ bắt đầu với cảm biến. Kết nối qua một dây, chân VCC của TSL2561 với chân 5V của Arduino, chân GND của cảm biến với một trong các chân GND của Arduino và chân SDA và SCL của cảm biến với chân SDA và SCL của Arduino. Bây giờ bạn đã hoàn tất!

Bây giờ, kết nối chân VCC của LED RGB Grove Chainable với chân 5V của Arduino và chân GND của LED với GND thứ hai của Arduino. Nếu bạn là Arduino chỉ có một chân 5V, bạn có thể sử dụng bảng mạch để kết nối 5v của Arduino với hàng + của bảng mạch và kết nối tất cả các chân 5V linh kiện của bạn trên đó hoặc hàn chúng lại với nhau trên một miếng bảng mạch hoặc sử dụng kết nối wago hoặc bất cứ thứ gì bạn thích. Bây giờ, hãy kết nối chân CI của đèn LED với chân 7 của Arduino và chân DI của đèn LED với chân 8 của Arduino. Nếu bạn không có đèn LED như vậy, đừng lo lắng, bạn có thể sử dụng đèn LED tích hợp trên bảng Arduino của bạn hoặc đèn LED cổ điển chỉ với một thay đổi nhỏ trong mã.

Bước 5: Viết bản phác thảo mô-đun độ sáng

Viết bản phác thảo mô-đun độ sáng
Viết bản phác thảo mô-đun độ sáng

Hãy tạo một bản phác thảo mới và viết mã cho mô-đun của chúng ta.

Nếu bạn không quan tâm đến lời giải thích của bản phác thảo, bạn có thể sao chép và dán nó vào Arduino IDE của mình:

#bao gồm

sử dụng LightModule = AtHomeModule; Luồng * luồng = {& Serial, nullptr}; GroveChainableLED:: Pins grovePins = {7, 8}; GroveChainableLED dẫn đầu (& grovePins); LightModule * module = LightModule:: getInstance (); void setup () {// đặt mã thiết lập của bạn ở đây, để chạy một lần: Serial.begin (9600); module-> setStreams (luồng); GroveDigitalLightSensor * lightSensor = new GroveDigitalLightSensor (); module-> setSensor (lightSensor); module-> setDisplay (& led); module-> setup (); } void loop () {// đặt mã chính của bạn ở đây, để chạy lặp lại: module-> run (); }

Nếu bạn muốn hiểu tất cả những gì mã này đang làm, bạn có thể đọc phần sau hoặc nếu bạn không quan tâm, bạn có thể chuyển trực tiếp sang bước tiếp theo.

Để bắt đầu, chúng ta cần đưa thư viện của mình vào bản phác thảo bằng cách viết dòng này ở đầu bản phác thảo:

#bao gồm

Bây giờ, chúng ta cần tạo một bí danh cho đối tượng mô-đun mà chúng ta sẽ sử dụng. Bạn có thể xem nó như một chiếc hộp với một số nút dùng để thay đổi các thành phần của nó, khởi động nó, dừng nó,… vv. Vì nó là một hộp được tạo bởi một mẫu (giống như mẫu thông thường mà chúng ta sử dụng cho các dự án với tư cách là con người, nó có cơ sở khởi động và trình biên dịch của Arduino xây dựng mã cuối cùng dựa trên các thông số mà chúng tôi cung cấp cho anh ta) xác định loại đại diện cho giá trị cảm biến và số lượng giá trị cảm biến mà chúng ta muốn giữ trong bộ nhớ, nó được chỉ định trong tên của nó và thường phải được lặp lại mỗi khi chúng ta muốn sử dụng nó. Điều này hơi khó chịu, đó là lý do tại sao chúng tôi sẽ liên kết một tên mới, một bí danh, với tên đầy đủ của hộp này.

Ví dụ, tôi muốn hộp này được đặt tên là "LightModule", vì nó sẽ được sử dụng để triển khai mô-đun giám sát độ sáng và tôi chỉ muốn giữ 1 giá trị tại một thời điểm. Độ sáng được biểu thị bằng lux như một loại tích hợp bởi cảm biến TSL2561 của chúng tôi, được biểu thị dưới dạng uint16_t bởi máy tính. Bí danh của chúng tôi sẽ trông như thế này:

sử dụng LightModule = AtHomeModule;

từ khóa "using" có nghĩa là chúng tôi đang tạo một bí danh và tên chúng tôi đặt cho nó ngay sau đó tương ứng với chuỗi sau ký tự "=".

"AtHomeModule" là tên thực của hộp này mà chúng tôi đang đặt tên mới và các tham số xác định biểu diễn giá trị và số lượng giá trị được lưu trong bộ nhớ được liệt kê giữa "".

Bây giờ, khi chúng ta sử dụng tên "AtHomeModule" sau này, Arduino sẽ biết nó đề cập đến tên đầy đủ "AtHomeModule".

Nếu bạn muốn hộp của mình có thể giữ 5 giá trị trong bộ nhớ thay vì 1, bạn chỉ cần thay thế "1" bằng "5" và Arduino sẽ tạo cho bạn một loại hộp khác có thể làm những gì bạn muốn. Tuy nhiên, lưu ý rằng nếu mô-đun được lập trình để gửi các giá trị của nó trước khi có thời gian đo lường hiệu quả 5 giá trị của cảm biến, bạn sẽ không bao giờ thấy 5 giá trị trong số đó được gửi đi vì nó chỉ gửi các giá trị mới kể từ lần tải lên cuối cùng.

Tiếp theo, chúng ta cần tạo một mảng con trỏ chứa con trỏ trên các luồng Arduino được mô-đun sử dụng để giao tiếp, luôn được kết thúc bằng keyworkd "nullptr". Ở đây, tôi chỉ sử dụng luồng "Nối tiếp" của Arduino giao tiếp với máy tính bằng cổng USB, vì vậy mảng trông như thế này:

Luồng * luồng = {& Serial, nullptr};

Ký tự "*" có nghĩa là kiểu là một con trỏ (vị trí của phần tử, không phải chính phần tử) và dấu ngoặc "" có nghĩa là trong Arduino đó là một mảng, vì vậy chúng ta có thể đặt nhiều giá trị.

Tiếp theo, chúng ta cần tạo đèn LED. Để làm điều này, chúng ta cần viết hai dòng sau;

GroveChainableLED:: Pins grovePins = {7, 8};

GroveChainableLED dẫn đầu (& grovePins);

Nếu bạn không có đèn LED RGB Grove nhưng vẫn muốn phản hồi trực quan, bạn có thể thực hiện bằng một thay đổi đơn giản trong bản phác thảo. Thay thế hai dòng trước bằng dòng này:

LED đơn sắcLED (LED_BUILTIN);

Trong cấu hình này, đèn LED tích hợp màu xanh lá cây sẽ bật miễn là giá trị được giám sát phù hợp với tình trạng sức khỏe và tắt khi nó không liên kết. Nếu bạn muốn bật nó khi nó không hoạt động (vì bạn đang sử dụng ví dụ như đèn LED màu đỏ thay vì đèn màu xanh lá cây trên chân 13), bạn có thể sử dụng dòng này để thay thế:

LED LED đơn sắc (LED_BUILTIN, true);

Bước tiếp theo là tạo mô-đun của chúng tôi. Nó được thực hiện lần đầu tiên khi chúng tôi lấy vị trí của nó trong bộ nhớ bằng cách gọi phương thức "getInstance", như thế này:

LightModule * module = LightModule:: getInstance ();

Sau đó, chúng ta cần thiết lập các tham số trong hàm "setup ()" của Arduino, bắt đầu bằng cách khởi tạo cổng "Serial" như bình thường trong các bản phác thảo Arduino:

Serial.begin (9600);

Chúng tôi tạo cảm biến ánh sáng bằng cách viết dòng này:

GroveDigitalLightSensor * lightSensor = new GroveDigitalLightSensor ();

Sau đó, chúng tôi yêu cầu mô-đun của chúng tôi sử dụng mảng con trỏ trên Arduino Stream để giao tiếp thông qua chúng:

module-> setStreams (luồng);

Chúng tôi cũng yêu cầu mô-đun của mình sử dụng cảm biến ánh sáng để theo dõi cường độ ánh sáng tại vị trí của mô-đun:

module-> setSensor (lightSensor);

Chúng tôi yêu cầu mô-đun của chúng tôi sử dụng đèn LED của chúng tôi để cung cấp cho chúng tôi phản hồi trực quan:

module-> setDisplay (& led);

Cuối cùng, chúng tôi nói với mô-đun của chúng tôi rằng nó đã sẵn sàng để thực hiện bất kỳ cấu hình nội bộ nào mà nó cần thực hiện bằng cách gọi chức năng "thiết lập" của chính nó:

module-> setup ();

Bước cuối cùng của chúng ta bây giờ là gọi hàm "run ()" của mô-đun, được thiết kế để gọi mỗi lần lặp lại hàm "vòng lặp" của Arduino bằng cách viết dòng này bên trong hàm "vòng lặp":

module-> run ();

Bây giờ, bản phác thảo của chúng tôi cuối cùng đã sẵn sàng để tải lên Arduino và kiểm tra mô-đun của chúng tôi!

Bước 6: Kiểm tra mô-đun AtHome của chúng tôi

Kiểm tra mô-đun AtHome của chúng tôi
Kiểm tra mô-đun AtHome của chúng tôi
Kiểm tra mô-đun AtHome của chúng tôi
Kiểm tra mô-đun AtHome của chúng tôi

Để tải bản phác thảo lên Arduino, hãy chọn bảng Arduino UNO của bạn bằng cách vào "Công cụ"> "Cổng"> "[COMx hoặc / dev / x] (Arduino / Genuino UNO)".

Điều cuối cùng, chỉ cần nhấp vào nút "Tải lên" (nút hình tròn có mũi tên hướng sang phải, biểu tượng thứ hai của thanh công cụ) để tải lên bản phác thảo trong bảng của bạn.

Xong rôi! Bây giờ mô-đun của bạn sẽ hoạt động và gửi các giá trị đến máy tính của bạn có thể nhìn thấy trong Màn hình nối tiếp của Arduino. Bạn có thể kiểm tra nó bằng cách mở "Serial Monitor" của Arduino trong menu "Tools" và bạn sẽ có một đầu ra giống như hình ảnh tiêu đề thứ hai của bước này:)

Bước 7: Xây dựng trường hợp cho mô-đun

Xây dựng trường hợp cho mô-đun
Xây dựng trường hợp cho mô-đun

Bạn có thể tạo một hộp hộp đơn giản cho mô-đun của mình bằng cách cắt laser nó trên một tấm ván ép 3mm.

Để tạo hộp đựng, chúng tôi sử dụng makercase để chuẩn bị một mẫu ở các kích thước mong muốn mà chúng tôi tùy chỉnh sau này. Bạn sẽ tìm thấy tệp svg của mô-đun độ sáng được đính kèm trong bước này.

Sau đó, chỉ cần dán các mặt lại với nhau, trừ một mặt để bạn có thể mở nó sau này, đặt mạch của bạn vào bên trong và dán đèn LED vào lỗ của vỏ (chúng tôi sử dụng băng keo trong suốt để lấp đầy lỗ và khuếch tán ánh sáng ngoài việc dán đèn LED ở phía trước của nó).

Bây giờ chỉ cần thêm pin để cấp nguồn cho Arduino của bạn, đóng vỏ và mô-đun của bạn đã sẵn sàng và trông đẹp:)

Đề xuất: