- Điều kiện tiên quyết
- Các thành phần bắt buộc
- Cài đặt Node-RED trên Raspberry Pi
- Khởi chạy Node-RED trong Raspberry Pi
- Hiểu giao diện Node-RED
- Sơ đồ
- Tạo luồng trong Node-RED
- Thêm nút / Công tắc trong giao diện Node-RED với Raspberry Pi
Đã bao giờ bạn tự hỏi liệu có cách nào để tạo ra các nguyên mẫu đơn giản của các giải pháp IoT mà không cần phải mất hàng ngày để viết mã hoặc để xây dựng các dự án tiên tiến thực tế mà không cần mã hóa hay không. Có, điều này có thể thực hiện được với Nền tảng Node-Red. Được phát triển bởi IBM, Node-RED là một công cụ lập trình mã nguồn mở để kết nối các thiết bị phần cứng, API và các dịch vụ trực tuyến với nhau theo cách mới và thú vị. Nó cung cấp một trình soạn thảo dựa trên trình duyệt giúp dễ dàng kết nối các ' dòng chảy ' với nhau bằng cách sử dụng nhiều nút trong bảng màu có thể được triển khai cho thời gian chạy của nó chỉ bằng một cú nhấp chuột.
Node-RED là một công cụ mạnh mẽ để xây dựng các ứng dụng Internet of Things (IoT) với mục tiêu đơn giản hóa thành phần lập trình.
Nó sử dụng lập trình trực quan cho phép bạn kết nối các khối mã, được gọi là các nút, với nhau để thực hiện một tác vụ. Đối với hướng dẫn hôm nay, chúng tôi sẽ xem xét cách bạn có thể triển khai các dự án đơn giản trên raspberry pi bằng cách sử dụng Node-RED. Các mâm xôi pi nút đỏ hướng dẫn sẽ bao gồm;
- Cài đặt Node-RED trên Raspberry Pi.
- Giới thiệu về giao diện người dùng Node-RED
- Cách thiết lập luồng Node-RED
- Cách điều khiển các chân GPIO của Raspberry Pi bằng Node-RED
- Cách sử dụng đầu vào, đầu ra của Node-RED và nếu-khác như ra quyết định bằng cách sử dụng công tắc
Điều kiện tiên quyết
Hướng dẫn này sẽ dựa trên hệ điều hành mở rộng Raspbian và tôi sẽ cho rằng bạn đã quen với việc thiết lập Raspberry Pi với nó và bạn biết cách SSH vào Pi bằng phần mềm đầu cuối như putty. Nếu bạn gặp vấn đề với bất kỳ điều nào trong số này, có rất nhiều Hướng dẫn về Raspberry Pi trên trang web này có thể giúp bạn.
Để dễ dàng hoàn thành hướng dẫn, tôi sẽ khuyên bạn sử dụng một màn hình kết nối với raspberry pi hoặc bạn sử dụng phần mềm VNC Viewer. Nếu bạn không có Màn hình và bắt đầu mới với Pi, bạn có thể đọc phần thiết lập Raspberry Pi không đầu này để tiếp tục với hướng dẫn này. Mặc dù Node-Red chạy từ trình duyệt web và có thể được truy cập trên PC của bạn mà Pi được kết nối qua địa chỉ IP của Pi, tôi tin rằng trải nghiệm VNC / màn hình sẽ giúp bạn hiểu rõ hơn.
Như một bản trình diễn để cho thấy Node-Red hoạt động như thế nào, chúng tôi sẽ sử dụng Node-RED để lập trình Raspberry Pi để điều khiển đèn LED được kết nối với GPIO của nó và sau đó sửa đổi chương trình để cho phép điều khiển đèn LED từ một nút ấn xúc giác được kết nối với Pi's GPIO.
Các thành phần bắt buộc
Các thành phần sau được yêu cầu để xây dựng dự án này;
- Raspberry Pi 3 với thẻ SD được tải trước với Raspbian Stretch được tải trước
- Điện trở 100 ohms (1)
- LED (1)
- Bảng mạch (1)
- Dây nhảy nam nữ
- Nút ấn xúc giác (1)
Cài đặt Node-RED trên Raspberry Pi
Mặc dù Node-Red được cài đặt sẵn trên Hệ điều hành Raspbian Stretch, chúng tôi cần nâng cấp nó trước khi có thể tận hưởng một số tính năng mới nhất của nó. Nâng cấp Node-Red sẽ
- Nâng cấp người dùng hiện tại lên LTS 8.x hoặc 10.x Node.js và Node-RED mới nhất
- Di chuyển bất kỳ nút nào đã được cài đặt toàn cầu hiện có vào không gian ~ /.node-red của người dùng để chúng có thể được quản lý thông qua trình quản lý bảng màu, nó KHÔNG cập nhật bất kỳ người dùng nào đã cài đặt các nút hiện có. Điều này phải được thực hiện thủ công bởi người dùng (xem bên dưới).
- Tùy chọn (lại) cài đặt các nút bổ sung đã được cài đặt sẵn trên ảnh Raspbian Pi đầy đủ.
Tuy nhiên, quá trình nâng cấp Node-Red tương tự như cài đặt một cái mới nên vì mục đích của hướng dẫn này, chúng tôi sẽ coi nó như một cài đặt mới để những người sử dụng phiên bản hệ điều hành khác có thể làm theo.
Làm theo các bước bên dưới để Cài đặt / Nâng cấp Node-RED trên Raspberry Pi của bạn.
Chúng tôi bắt đầu bằng cách nâng cấp và cập nhật pi, để đảm bảo mọi thứ trên đó đều được cập nhật và tránh các vấn đề về khả năng tương thích. Làm điều này bằng cách mở một thiết bị đầu cuối hoặc thông qua ssh và chạy;
Cập nhật apt-get Sudo
theo dõi bởi
sudo apt-get nâng cấp
Sau khi hoàn thành, hãy chạy tập lệnh bash bên dưới trên thiết bị đầu cuối;
bash <(curl -sL
Tập lệnh bash sẽ thực hiện những việc sau
- Hỏi xem bạn có muốn (lại) cài đặt thêm các nút Pi không
- Lưu danh sách các nút-red- node được cài đặt toàn cầu được tìm thấy trong / usr / lib / node_modules
- apt-get xóa Node-Red hiện có
- xóa mọi mã nhị phân nút đỏ khỏi / usr / bin và / usr / local / bin
- Xóa bất kỳ mô-đun nút đỏ nào khỏi / usr / lib / node_modules và / usr / local / lib / node_modules
- Phát hiện xem Node.js đã được cài đặt từ gói Node.js hay Debian
- Nếu không phải v8 hoặc mới hơn - hãy gỡ bỏ nếu thích hợp và cài đặt v8 hoặc v10 LTS mới nhất (không sử dụng apt).
- Xóa bộ nhớ cache npm và bộ nhớ cache.node-gyp để xóa bất kỳ phiên bản mã nào trước đó
- Cài đặt Node-RED phiên bản mới nhất
- Cài đặt lại trong tài khoản người dùng bất kỳ nút nào trước đó đã được cài đặt trên toàn cầu
- Cài đặt lại các nút Pi bổ sung nếu cần
- Xây dựng lại tất cả các nút - để biên dịch lại bất kỳ mã nhị phân nào để phù hợp với phiên bản Node.js mới nhất
- Thêm các lệnh node-red-start, node-red-stop và node-red-log vào / usr / bin
- Thêm phím tắt và biểu tượng menu
- Thêm tập lệnh hệ thống và đặt người dùng
- Nếu trên Pi thêm nhiệt độ CPU -> Ví dụ về IoT
Tập lệnh bash ở trên chạy nhiều lệnh dưới dạng sudo và xóa Node.js hiện có và các thư mục Node-RED cốt lõi. Bạn có thể kiểm tra nội dung của script trên trang GitHub này trước khi chạy nó để đảm bảo rằng nó sẽ không ảnh hưởng đến bất kỳ dự án nào bạn đã có trên Pi.
Sau khi cài đặt hoàn tất, bây giờ bạn sẽ thấy biểu tượng Node-Red trong danh sách ứng dụng lập trình của menu.
Khởi chạy Node-RED trong Raspberry Pi
Node-Red có thể được khởi chạy thông qua phần menu từ màn hình raspberry pi của bạn, qua thiết bị đầu cuối hoặc qua ssh.
Để khởi chạy trên màn hình của raspberry pi, hãy nhấp vào biểu tượng Raspberry, di chuột vào Lập trình, nhấp vào Node-RED (Menu> Lập trình> NodeRed) để khởi chạy nó.
Nó cũng có thể được khởi chạy từ ssh hoặc thiết bị đầu cuối bằng cách chạy;
nút-đỏ-bắt đầu
Bạn sẽ thấy một cửa sổ như bên dưới hiển thị nút khởi chạy màu đỏ trên màn hình nền.
Khi bạn thấy điều này, hãy truy cập menu-> internet và khởi chạy trình duyệt web chromium. Mặc dù Raspberry pi của bạn không cần internet để chạy Node-Red, nhưng nó sử dụng trình duyệt làm giao diện.
Khi khởi chạy chromium, hãy nhập localhost: 1880 vào thanh địa chỉ, theo sau là phím enter. 1880 là cổng trên pi raspberry mà Node-Red được cài sẵn để giao tiếp. Điều này sẽ hiển thị giao diện Node-Red như trong hình dưới đây.
Hiểu giao diện Node-RED
Các giao diện Node-đỏ bao gồm các bảng điều khiển dòng chảy, các nút bảng màu, gỡ lỗi giao diện điều khiển và các thông tin điều khiển như đánh dấu trong hình trên.
Các bảng điều khiển dòng chảy là nơi mà các nút được nối với nhau để tạo ra một chương trình mà trong Node-đỏ được gọi là dòng chảy, trong khi bảng Node bao gồm các đối tượng đó là đại diện của phần cứng, các giao thức và phần mềm tính năng kết hợp với các thiết bị. Nó bao gồm các giao thức như MQTT cho IoT và các chế độ đầu ra và đầu vào GPIO cho các bo mạch như raspberry pi. Các thông tin giao diện điều khiển cung cấp thông tin trên nhấn mạnh / đối tượng được chọn trong khi debug consolehoạt động giống như màn hình nối tiếp Arduino và có thể cung cấp phản hồi trong khi luồng đang chạy. Nút triển khai được sử dụng để tải luồng lên phần cứng đích. Nút menu chứa các loại tải lên khác nhau để giúp bạn khai thác tốt nhất dự án của mình. Với việc khởi động và chạy Node-Red, bây giờ chúng ta có thể tiến hành xây dựng dự án demo.
Sơ đồ
Như đã đề cập trong phần giới thiệu, dự án demo của chúng tôi cho ngày hôm nay sẽ là điều khiển GPIO của Raspberry Pi bằng luồng Node-RED. Để hiển thị sự thay đổi trong trạng thái của GPIO, chúng tôi sẽ kết nối một đèn LED với GPIO sao cho khi chân GPIO cụ thể đó được bật, đèn LED sẽ sáng và ngược lại.
Kết nối đèn LED với Raspberry PI như thể hiện trong sơ đồ bên dưới.
Tôi cũng xây dựng tương tự trên phần cứng của mình bằng cách sử dụng bảng mạch, đèn LED, điện trở và một số dây kết nối. Thiết lập phần cứng của tôi trông giống như thế này sau khi các kết nối được thực hiện.
Dự án này có thể dễ dàng chuyển đổi thành dự án Tự động hóa gia đình, chỉ bằng cách thay thế đèn LED bằng rơ le và bất kỳ thiết bị AC nào, hãy tìm hiểu cách thực hiện điều đó bằng cách thực hiện các Dự án Tự động hóa gia đình khác nhau.
Tạo luồng trong Node-RED
Với đèn LED được kết nối, chúng tôi có thể tiến hành phát triển luồng. Các chương trình trong NodeRed được gọi là các luồng giống như Arduino IDE gọi chúng là các bản phác thảo. Các luồng được tạo bằng cách sử dụng kết hợp các nút. Bạn có thể tạo nhiều luồng có thể chạy cùng một lúc, nhưng đối với hướng dẫn này, chúng tôi sẽ tạo một luồng duy nhất để bật / tắt đèn LED.
Để bắt đầu, hãy cuộn xuống dưới cùng của bảng Nodes, bạn sẽ thấy phần các nút pi mâm xôi ở phía cuối với hai nút có nhãn rpigpio. Các nút này được sử dụng để giao tiếp với GPIO của mâm xôi pi. Một trong các nút dành cho đầu vào trong khi nút còn lại dành cho đầu ra được phân biệt bằng vị trí của logo pi của mâm xôi. Đối với nút đầu vào, logo đứng trước văn bản, trong khi đối với nút đầu ra, logo đứng sau văn bản như thể hiện trong hình dưới đây.
Đối với hướng dẫn này, chúng ta sẽ sử dụng nút đầu ra, kéo nó vào phần luồng của giao diện. Bước này tương tự như khai báo một chân cụ thể của Arduino làm Đầu ra bằng lệnh pinMode () . Nhấp đúp vào nút Đầu ra và một cửa sổ bật lên sẽ mở ra như hình dưới đây cho phép bạn chỉnh sửa các thuộc tính của nút.
Trong phần thuộc tính pin, chọn GPIO17 (pin 11). Sau đó, đặt thuộc tính loại thành “ Đầu ra kỹ thuật số ” và đánh dấu vào “ Trạng thái pin khởi tạo?” hộp kiểm để tùy chọn “ mức ghim ban đầu ” ở mức thấp (0). Đặt cho nút bất kỳ tên nào bạn thích và nhấp vào nút hoàn tất.
Tên của nút sẽ tự động thay đổi thành tên bạn đã nhập trong cài đặt thuộc tính. Ví dụ, tôi đặt tên nó là LED và do đó tên nút cũng được thay đổi thành LED như hình dưới đây.
Để bật / tắt đèn LED, chúng ta cần sử dụng một đầu vào, một thứ để thúc đẩy hành động. Mặc dù chúng ta có thể sử dụng nút nhấn, nhưng tôi muốn sử dụng nút này để giới thiệu tính năng trong Node-RED cho phép đưa thông điệp vào các luồng. Tính năng này được gọi là nút tiêm. Chúng tôi sẽ sử dụng hai nút tiêm. Một người sẽ bật đèn LED trong khi người kia sẽ tắt nó.
Đi tới bảng nút và kéo nút tiêm vào luồng. Đây là nút đầu tiên trong bảng màu có mũi tên, nút tiêm được đánh dấu trong hình bên dưới.
Nhấp đúp vào nó để chỉnh sửa các thuộc tính của nó. Thay đổi loại dữ liệu thành chuỗi bằng cách nhấp vào menu thả xuống phía trước trọng tải và Nhập 1 vào hộp Tải trọng. Giá trị trong hộp tải trọng là giá trị sẽ được đưa vào luồng khi nút được nhấn. Đặt tên của nút thành “BẬT” Nhấn nút “Xong” để lưu.
Lặp lại bước trên cho nút thứ hai, đặt giá trị trọng tải thành “0” và tên của nó là “tắt” như hình dưới đây.
Trong chức năng thuộc tính, trình đơn thả xuống lặp lại có thể được sử dụng để tự động tiêm để các nút được nhấn trong khoảng thời gian. Điều này có thể được sử dụng để tạo hiệu ứng nhấp nháy. Nối các nút lại với nhau như hình dưới đây, bằng cách kéo chấm màu xám trên một trong các nút này sang nút kia để tạo luồng.
Sau đó, chúng tôi đã hoàn thành Node-Red Flow đầu tiên của mình.
Bước tiếp theo là chúng ta triển khai luồng trên pi raspberry. Nhấp vào nút triển khai màu đỏ. Bạn sẽ thấy đèn flash “đã triển khai thành công” ở đầu màn hình như hình dưới đây.
Nhấp vào nút màu xám phía sau các nút tiêm để kích hoạt từng nút.
Bằng cách nhấp vào nút tiêm “bật”, bạn sẽ thấy “bật” đã tiêm thành công được hiển thị và đèn LED bật sáng. Đèn LED sẽ tắt khi nhấp vào nút chèn "tắt".
Đó là nó. Hoạt động hoàn chỉnh của thiết lập này có thể được tìm thấy trong video được liên kết ở cuối trang này.
Thêm nút / Công tắc trong giao diện Node-RED với Raspberry Pi
Để giải thích cách kết nối / thêm một phần tử đầu vào vào luồng của bạn, chúng tôi sẽ tiến hành thêm luồng ở trên bằng cách thêm một nút nhấn để thay thế các nút chèn.
Kết nối nút bấm với raspberry pi, sao cho một chân của nút bấm được nối với đất và chân kia được kết nối với chân GPIO 4 (chân 11) của pi raspbery, như được hiển thị trong sơ đồ bên dưới.
Sau khi hoàn tất, hãy quay lại Node-Red và xóa hai nút tiêm mà chúng ta đã sử dụng trước đó, bằng cách nhấp vào các nút và nhấn xóa trên bàn phím của bạn hoặc nhấp đúp vào các nút và nhấn xóa trên cửa sổ bật lên. Sau khi hoàn tất, cuộn bảng nút xuống phần mâm xôi pi và chọn nút đầu vào. Nó là cái có biểu tượng quả mâm xôi pi ở bên trái, trước tên của nút.
Kéo nút vào luồng và nhấp đúp vào nút đó để chỉnh sửa thuộc tính. Đặt chân thành GPIO 4 (chân 11) và đặt trình đơn thả xuống phía trước điện trở để kéo lên. Điều này sẽ "kéo" GPIO 4 lên CAO. Nhấp vào nút hoàn tất sau khi thiết lập thuộc tính.
Để cho phép chúng tôi đưa ra các quyết định hợp lý khi công tắc được nhấn thay vì chỉ rút ngắn GPIO4 xuống đất, chúng tôi sẽ sử dụng nút công tắc. Tìm kiếm nó trong bảng nút, dưới phần chức năng và kéo vào luồng.
Nút chuyển đổi cho phép bạn đưa ra quyết định theo cách tương tự như câu lệnh “if”. Nó có thể được thiết lập để có các đầu ra khác nhau tùy thuộc vào giá trị đầu vào. Đối với hướng dẫn này, chúng tôi sẽ định cấu hình nó với hai đường dẫn đầu ra, sao cho khi thuộc tính msg.payload bằng 1 (công tắc không được nhấn), nó sẽ đi theo đường dẫn đầu tiên và đường dẫn thứ hai sẽ được theo sau nếu có bất kỳ đầu vào nào khác khác với 1 được quan sát ở đầu vào (công tắc được nhấn). Các đường dẫn được thêm bằng nút “+ thêm”. Nhấp đúp vào nút và cấu hình như mô tả ở trên. Nhấp vào hoàn tất khi hoàn tất.
Ngay sau khi bạn nhấn nút xong, bạn sẽ thấy hai đường dẫn phản ánh trong giao diện của nút chuyển đổi, vì bây giờ nó sẽ có hai điểm giao nhau ở đầu ra.
Tiếp theo, chúng ta cần đưa vào một nút "thay đổi". Nút thay đổi sẽ được sử dụng để thiết lập trạng thái của đèn LED dựa trên kết quả của nút đối số.
Chúng tôi sẽ sử dụng hai trong số các nút thay đổi. Trọng tải của cái đầu tiên sẽ được đặt thành 0 như thể hiện trong hình dưới đây và trọng tải của cái thứ hai được đặt thành một. Nhấp vào hoàn tất sau khi chỉnh sửa thuộc tính cho cả hai.
Để giải thích rõ hơn, hãy nhớ chúng tôi đã sử dụng điện trở kéo lên? Do đó, khi nút chưa được nhấn, đầu ra tại chân đó sẽ là CAO (1), có nghĩa là nếu chúng ta đưa nó qua nút chuyển đổi, đèn LED sẽ “bật”, vì điều này không nên như vậy, chúng ta sẽ sử dụng nút "thay đổi" để đặt nó là THẤP (0). Nút “thay đổi” thứ hai được sử dụng để đặt giá trị thành một giá trị sao cho khi phát hiện bất kỳ điều gì khác ngoài trạng thái CAO của chân GPIO 4, nó sẽ bật đèn LED “bật” vì điều này có nghĩa là nút nhấn đã được nhấn. Kết nối các nút thay đổi và phần còn lại của các nút với nhau như trong hình bên dưới.
Với việc này, chúng tôi đã sẵn sàng để triển khai dự án. Đi qua kết nối để đảm bảo mọi thứ như bình thường, sau đó nhấp vào nút triển khai. Như thường lệ, nếu thành công, bạn sẽ thấy cửa sổ bật lên triển khai thành công và bây giờ có thể điều khiển đèn led bằng công tắc.
Mặc dù Node-Red giúp dễ dàng và nhanh chóng tạo mẫu bản dựng của bạn mà không cần lo lắng về mã, nhưng nó có thể không thực sự phù hợp nhất, đặc biệt là đối với các nhà phát triển có kinh nghiệm, những người muốn sự linh hoạt và kiểm soát chương trình. Tuy nhiên, đó là một công cụ tuyệt vời cho phép bạn xây dựng nguyên mẫu trong vài phút.
Cho đến thời điểm tiếp theo!