- Thành phần bắt buộc
- Sơ đồ mạch
- Cài đặt Thư viện đám mây MQTT trên Raspberry Pi
- Giải thích mã hóa để điều khiển Raspberry Pi GPIO với MQTT
Trong hướng dẫn trước, chúng tôi đã thảo luận về Giao thức MQTT và cài đặt máy chủ MQTT cục bộ trên Raspberry Pi của chúng tôi để kiểm soát GPIO cục bộ. Nhưng hạn chế của máy chủ MQTT cục bộ là chúng ta không thể kiểm soát các GPIO từ bất kỳ đâu trên thế giới, nó chỉ cung cấp dịch vụ cục bộ. Nhưng nếu máy chủ MQTT này được lưu trữ trên một số đám mây thì mọi thiết bị được kết nối với Raspberry Pi đều có thể được kiểm soát trên toàn cầu.
Ở đây, trong hướng dẫn này, chúng tôi sẽ sử dụng Adafruit IO làm nhà môi giới MQTT để điều khiển thiết bị AC được kết nối với Raspberry Pi GPIO. Ngoài ra, hãy xem các hướng dẫn Tự động hóa gia đình được điều khiển bằng IoT khác:
- Tự động hóa nhà điều khiển bằng giọng nói dựa trên IOT sử dụng ESP8266 và Ứng dụng Android
- Tự động hóa nhà điều khiển bằng điện thoại thông minh bằng Arduino
- Tự động hóa tại nhà được điều khiển bằng web dựa trên IoT sử dụng Vi điều khiển PIC và Adafruit IO
- Tự động hóa ngôi nhà được điều khiển bằng web dựa trên IoT bằng Raspberry Pi
- Tự động hóa ngôi nhà được điều khiển bằng giọng nói dựa trên Trợ lý Google sử dụng Tấm chắn Wi-Fi Arduino DIY
Thành phần bắt buộc
- Raspberry Pi với Raspbian Stretch được cài đặt trong đó.
- Mô-đun chuyển tiếp
- Bóng đèn tròn
- Dây nhảy
Ở đây, chúng tôi sẽ sử dụng SSH để truy cập Raspberry Pi trên máy tính xách tay. Bạn có thể sử dụng kết nối VNC hoặc Remote Desktop trên máy tính xách tay hoặc có thể kết nối Raspberry pi của bạn với màn hình. Tìm hiểu thêm về cách thiết lập Raspberry Pi không cần màn hình tại đây.
Sơ đồ mạch
Sơ đồ mạch cho Thiết bị gia dụng được điều khiển bằng IoT này với đám mây MQTT và Raspberry Pi rất đơn giản, chỉ cần kết nối bóng đèn với mô-đun tiếp điện trên chân GPIO 35 của mâm xôi Pi.
Cài đặt Thư viện đám mây MQTT trên Raspberry Pi
Ở đây, nền tảng Adafruit IO được sử dụng với Raspberry Pi làm nhà môi giới MQTT. Vì chúng tôi đã sử dụng nền tảng Adafruit IO nhiều lần trong các hướng dẫn trước đây của chúng tôi, tương tự, chúng tôi có thể sử dụng nó trong Raspberry Pi.
Chỉ cần tạo tài khoản trên nền tảng Adafruit IO và tạo nguồn cấp dữ liệu, nếu bạn không biết cách tạo nguồn cấp dữ liệu và tùy chỉnh bảng điều khiển Adafruit thì hãy nhấp vào liên kết.
Sau khi tạo bảng điều khiển, hãy cài đặt một vài thư viện trong Raspberry Pi để bắt đầu với MQTT.
1. Đầu tiên, hãy cập nhật Pi và Python của bạn bằng cách đưa ra các lệnh sau
sudo apt-get cập nhật sudo apt-get nâng cấp sudo pip3 install - nâng cấp setuptools
2. Bây giờ, cài đặt thư viện Rpi.gpio và Adafruit nháy bằng các lệnh dưới đây
sudo pip3 install RPI.GPIO sudo pip3 install adafruit-nháya
3. Cài đặt thư viện IO Adafruit bằng lệnh dưới đây
sudo pip3 install adafruit-io
4. Sao chép các ví dụ adafruit từ github bằng lệnh dưới đây
git clone https://github.com/adafruit/Adafruit_IO_Python.git
5. Sau đó, điều hướng đến thư mục ví dụ bằng cách nhập lệnh sau vào thiết bị đầu cuối:
cd Adafruit_IO_Python / example / basics
Nếu bạn không chắc mình đang ở thư mục nào, bạn có thể kiểm tra điều này bằng cách chạy pwd.
6. Đối với tất cả các ví dụ trong thư mục này, bạn sẽ cần đặt ADAFRUIT_IO_KEY và ADAFRUIT_IO_USERNAME, có thể được tìm thấy từ bảng điều khiển Adafruit. Như hình bên dưới
Chuyển nút trên bảng điều khiển IO của Adafruit và bạn sẽ thấy thông tin sau trong thiết bị đầu cuối của Pi.
7. Bây giờ, hãy mở tệp subscribe.py bằng trình soạn thảo nano . Gõ lệnh sau để mở nó
sudo nano subscribe.py
Chúng tôi phải sửa đổi chương trình này để kiểm soát bất kỳ GPIO nào từ bảng điều khiển.
Giải thích mã hóa để điều khiển Raspberry Pi GPIO với MQTT
Đầu tiên, nhập tất cả các thư viện bắt buộc để sử dụng chân GPIO và ứng dụng khách Adafruit MQTT.
nhập RPi.GPIO dưới dạng hệ thống nhập GPIO từ Adafruit_IO nhập MQTTClient
Bây giờ, đặt chế độ GPIO và xác định số chân LED và đặt làm đầu ra.
GPIO.setmode (GPIO.BOARD) GPIO.setwarnings (Sai) ledPin = 12 GPIO.setup (ledPin, GPIO.OUT)
Tiếp theo, chúng tôi phải đặt khóa AIO và Tên người dùng mà chúng tôi đã tìm thấy trong khi tạo bảng điều khiển.
ADAFRUIT_IO_KEY = 'YOUR_AIO_KEY' ADAFRUIT_IO_USERNAME = 'BẠN_AIO_USERNAME'
Nhập tên nguồn cấp dữ liệu mà bạn đã đặt để bật và tắt đèn. Ở đây, nó là "ánh sáng".
FEED_ID = 'light'
Bây giờ, hãy xác định một hàm sẽ được gọi khi có một sự kiện xảy ra. Vì vậy, chúng tôi sẽ đăng ký Nguồn cấp dữ liệu bằng cách sử dụng client.subscribe (FEED_ID)
def kết nối (máy khách): client.subscribe (FEED_ID) print ('Đang đợi dữ liệu nguồn cấp dữ liệu…')
Sau khi đăng ký nguồn cấp dữ liệu, chúng tôi phải kiểm tra giá trị mới và lưu trữ nó vào một biến trọng tải . Đối với chức năng thông báo này được gọi. Vì vậy, bất cứ khi nào có “1” trong biến trọng tải, hãy đặt chân led CAO và đối với “0” hãy đặt nó THẤP.
thông báo def (client, feed_id, payload): print ('Feed {0} đã nhận giá trị mới: {1}'. format (feed_id, payload)) if payload == 1: GPIO.output (ledPin, GPIO.HIGH) else: GPIO.output (ledPin, GPIO.LOW)
Bây giờ, hãy tạo một ứng dụng khách MQTT để kết nối với nền tảng Adafruit IO và gửi tin nhắn qua lại.
client = MQTTClient (ADAFRUIT_IO_USERNAME, ADAFRUIT_IO_KEY) client.on_connect = client đã kết nối.on_disconnect = đã ngắt kết nối
Ngoài ra, hãy quan tâm đến việc thụt lề thích hợp trong mã nếu không nó sẽ hiển thị lỗi. Toàn bộ mã python được đưa ra ở cuối hướng dẫn.
Cuối cùng, lưu chương trình bằng ctrl + x và nhấn enter. Bây giờ, chúng ta phải chạy script để đăng ký các tin nhắn. Vì vậy, trong terminal, nhập python subscribe.py và nhấn enter.
python subscribe.py
Bạn sẽ thấy thông báo Đang chờ Dữ liệu Nguồn cấp dữ liệu … như hình chụp nhanh bên dưới.
Bây giờ, hãy đảm bảo rằng mô-đun chuyển tiếp được kết nối với chân GPIO của Raspberry Pi, sau đó chuyển đến bảng điều khiển Adafruit IO và thay đổi nguồn cấp sáng. Các bóng đèn nên bật khi “1” được nhận và tắt khi “0” nhận được như hình dưới đây.
Bằng cách này, chúng tôi có thể kiểm soát bất kỳ thiết bị nào từ mọi nơi trên thế giới bằng cách sử dụng Raspberry Pi và đám mây MQTT