Cayenne MQTT và ESP8266 ESP-01
Bạn đã bao giờ nghĩ đến việc sử dụng mô-đun WiFi ESP8266 ESP-01 của mình như một bo mạch độc lập cho ba (3) thành phần là cảm biến DHT11 (cho nhiệt độ và độ ẩm), mô-đun relay 01 kênh và cảm biến âm thanh chưa? Vâng, may mắn cho bạn, điều này là có thể! Ngoài ra, còn có nhiều hơn thế nữa: Tất cả các thành phần này được kiểm soát và giám sát thông qua một trong những nền tảng IoT có sẵn: Nền tảng IoT Cayenne.
Đây là những gì chúng ta cần:
- Mô-đun ESP8266 ESP-01 WiFi
- FTDI Breakout Board + Mini USB cable
- ESP8266 ESP-01 Breakout Board (Tùy chọn)
- Mô-đun 01-Channel Relay
- Cảm biến DHT11 Temperature and Humidity
- Cảm biến Sound Sensor
- Breadboards
- Mô-đun 5V to 3.3V Stepdown Buck (Tùy chọn)
- Dây cắm nhiều màu
Đầu tiên, chúng ta cần nghiên cứu sơ đồ chân cho các thành phần này. Đây là các mô-đun chính mà chúng ta sẽ sử dụng cho bài tập này.
ESP8266 ESP-01 Wifi Module
Chúng ta cần phải cẩn thận vì bo mạch này chạy trên logic 3.3V. Trường hợp nguồn điện của bạn chỉ cung cấp 5V, hãy tham khảo bộ chia điện áp bên dưới. Bạn có thể chọn điện trở chính xác để cung cấp nguồn điện dồi dào cho mô-đun ESP8266 của mình.
01-Channel Relay Module
Khi chân thứ nhất và thứ hai được kết nối, mô-đun FTDI sẽ cung cấp nguồn điện 5 volt (tương tự với chân TX). Khi chân thứ 2 và thứ 3 được kết nối, nó sẽ cung cấp nguồn 3,3 volt (tương tự với chân TX).
5V to 3.3V Stepdown Power Supply Buck Module (OPTIONAL)
- ESP8266 Boards – For step by step instructions, please see next section.
- SimpleDHT Libraries – SimpleDHT libraries can be downloaded here.
- SimpleTimer Libraries – Simple Libraries can be downloaded here.
ESP8266 Boards Set Up in Arduino IDE
Việc thiết lập các bo mạch ESP8266 khá dễ dàng. Vui lòng làm theo các bước dưới đây:
- Mở Arduino IDE của bạn.
- Vào File > Preferences.
- Tại mục Additional Boards Manager URLs, điền vào URL: http://arduino.esp8266.com/stable/package_esp8266com_index.json. Click OK.
- Vàp Tools > Board > Boards Manager.
- Tại hộp thoại Boards Manager, tìm esp8266, và cài đặt esp8266 by ESP8266 Community Version x.x.x. Đóng hộp thoại Boards Manager.
- Vào Tools > Board, tìm và chọn Generic ESP8266 Module.
Thêm thư viện Libraries
- Truy cập liên kết được cung cấp ở trên để biết hai (2) thư viện bắt buộc (SimpleDHT and SimpleTimer.
- Đối với mỗi liên kết, hãy nhấp vào Clone or Download. Một cửa sổ nhỏ xuất hiện, sau đó nhấp vào Download Zip. Tham khảo các hình ảnh hiển thị bên dưới:
- Lưu tệp ZIP cho mỗi thư viện.
- Trong Arduino IDE, đi tới Sketch > Include Library > Add .Zip Library.
- Xác định vị trí và thêm từng thư viện (từng thư viện một).
Thêm Cayenne Libraries
Thư viện Cayenne có thể được cài đặt cho Arduino IDE thông qua Trình quản lý thư viện. Để thực hiện việc này, hãy làm theo các bước bên dưới:
- Trong Arduino IDE, đi tới Sketch > Include Library. Click Manage Libraries.
- Trong cửa sổ sẽ xuất hiện, hãy nhập Cayenne vào trường tìm kiếm. Install the Cayenne by myDevices Version x.x.x and CayenneMQTTby myDevices Version x.x.x. Đóng hộp thoại. Các thư viện này cũng có sẵn tại Github (Cayenne and CayenneMQTT libraries).
Programming Mode
Ban đầu, chúng tôi cần thiết lập ESP8266 ESP-01 sang chế độ lập trình. Chúng tôi chưa cần kết nối các thành phần của mình vì việc kết nối chúng có thể khiến quá trình tải lên bản phác thảo không thành công. Bảng dưới đây nêu chi tiết các chân được kết nối với nhau giữa ESP8266 ESP-01 WiFi module và bộ chuyển đổi FTDI USB to TTL Serial:
Bạn cần đặt jumper của mô-đun FTDI thành 3.3V. Bằng cách này, chúng tôi sẽ không cần bất kỳ bộ chia điện áp nào hoặc mô-đun buck xuống bậc. Bộ chuyển đổi USB to Serial của bạn có thể có các chỉ định pin khác nhau. Mô tả trên được minh họa trong giản đồ dưới đây:
Bây giờ chúng tôi đã sẵn sàng thiết lập dashboard của mình và upload sketches:
Tạo Cayenne Dashboard
- Đăng nhập vào tài khoản Cayenne (đăng ký miễn phí nếu bạn chưa có tại khoản tại link Cayenne Signup Page):
- Sau khi đăng nhập, bước tiếp theo sẽ là chọn thiết bị mà chúng ta sẽ sử dụng. Nếu đây là thiết bị đầu tiên của bạn trong trang tổng quan, hãy chọn All Devices:
Sau đó, chọn Generic ESP8266 dưới phần Microcontrollers:
Nếu trước đây bạn đã thêm các thiết bị hiện có, bạn cần thêm thiết bị bằng cách nhấp vào Add Devices/Widget menu:
Sau đó chọn ESP8266 vì đây là bảng phát triển của chúng tôi:: - Trong trang tiếp theo, bạn được hiển thị với MQTT Username, MQTT Password, and Client ID. Chúng ta cần những chi tiết này trong bản phác thảo sau. Bạn cũng sẽ thấy ở phần dưới cùng của trang rằng nó đang đợi thiết bị kết nối.
- Bây giờ, chúng ta tiến hành Sketch. Mở Arduino IDE. Đi tới File > Examples > Cayenne-MQTT-ESP8266 > ESP8266. Bản phác thảo này sẽ là bản phác thảo cơ sở của chúng tôi.
- Quay lại Cayenne Portal. Hãy lưu ý những điều sau, bởi vì chúng tôi sẽ sử dụng nó trong bản phác thảo của mình::
- MQTT USERNAME
- MQTT PASSWORD
- CLIENT ID
- Bây giờ, quay lại Arduino IDE. Dán các giá trị trong phần được đánh dấu trong ảnh chụp màn hình bên dưới::
- Ngoài ra, cung cấp tên WiFi (SSID) và mật khẩu trong phần này của mã:
- Nhân tiện, chúng ta cần bao gồm các thư viện cần thiết:: SimpleDHT and SimpleTimer. SimpleDHT sẽ cho phép chúng tôi sử dụng DHT Temperature. The SimpleTimer sẽ cho phép chúng tôi thực thi các phương thức bên ngoài loop() method:
- Bây giờ chúng ta cần khai báo các chân sẽ được sử dụng bởi các cảm biến.
- DHT11 Pin = Pin 2 (GPIO2 of ESP8266 ESP-01)
- Sound Pin = Pin 3 (GPIO3 of ESP8266 ESP-01)
- Relay Pin = Pin 1 (GPIO1 of ESP8266 ESP-01)
- Vì chúng tôi sẽ gửi dữ liệu đến Cayenne IoT platform sử dụng MQTT API, chúng ta cần chuyển giá trị cảm biến cho virtual pins. The virtual pins sẽ được sử dụng bởi widgets trong dashboard. Chúng tôi sẽ không sử dụng V1, chúng tôi đã chỉ định điều này như một đầu ra (để điều khiển rơ le - được sử dụng trong Cayenne dashboard widgets):
- V2 – Humidity (data from DHT11)
- V3 – Temperature (data from DHT11)
- V4 – Sound (data from Sound Sensor)
- Tải bản phác thảo lên ESP8266 ESP-01 Board. Hãy chắc chắn rằng board được chọn là Generic ESP8266 Module:
Complete Code
// This example shows how to connect to Cayenne using an ESP8266 and send/receive sample data.
// Make sure you install the ESP8266 Board Package via the Arduino IDE Board Manager and select the correct ESP8266 board before compiling.
//#define CAYENNE_DEBUG
#define CAYENNE_PRINT Serial
#include <CayenneMQTTESP8266.h>
#include <SimpleTimer.h> // Download from https://github.com/jfturcot/SimpleTimer
#include <SimpleDHT.h> // Download from https://github.com/adafruit/DHT-sensor-library
// WiFi network info.
char ssid[] = "<your ssid/wifi name>";
char wifiPassword[] = ""<your ssid/wifi password>"";
// Cayenne authentication info. This should be obtained from the Cayenne Dashboard.
char username[] = "<your MQTT Username>";
char password[] = "<your MQTT Password>";
char clientID[] = "<your client id>";
// DHT11 Pin
int pinDHT11 = 2;
SimpleDHT11 dht11;
// Sound Pin
int soundPin = 3;
// Relay Pin
int relayPin = 1;
// Timer
SimpleTimer timer;
void setup() {
Serial.begin(9600);
Cayenne.begin(username, password, clientID, ssid, wifiPassword);
pinMode(relayPin, OUTPUT); // Relay
digitalWrite(relayPin, HIGH);
pinMode(soundPin, INPUT); // Sound
timer.setInterval(200L, transmitData); // Method to execute every 200ms
}
void loop() {
Cayenne.loop();
timer.run();
}
CAYENNE_IN(relayPin) {
if (getValue.asInt() == 1) { // NOTE: Channel = Virtual Pin
digitalWrite(relayPin, LOW);
}
else {
digitalWrite(relayPin, HIGH);
}
}
void transmitData()
{
byte temperature = 0;
byte humidity = 0;
int err = SimpleDHTErrSuccess;
if ((err = dht11.read(pinDHT11, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
Cayenne.virtualWrite(V4, 0);
Cayenne.virtualWrite(V2, 0);
}
else {
Cayenne.virtualWrite(V4, (int)temperature);
Cayenne.virtualWrite(V2, (int)humidity);
}
if (digitalRead(soundPin) == HIGH) {
Cayenne.virtualWrite(V3, HIGH);
}
else {
Cayenne.virtualWrite(V3, LOW);
}
}
Kết nối Sensors and Modules
Ở giai đoạn này, bạn sẽ có thể tải lên bản phác thảo của mình thành công. Bây giờ, hãy tháo bo mạch khỏi nguồn. Ngoài ra, hãy xóa kết nối GND từ GPIO0. Chúng tôi không cần GPIO0 kết nối tới GND, trừ khi chúng tôi sẽ cập nhật bản phác thảo. Tham khảo bảng cho từng cảm biến và mô-đun bên dưới:
Tất cả các bộ nguồn của các thành phần này được kết nối với điện áp đầu ra của mô-đun bước xuống, nghĩa là chúng được cấp nguồn qua 3,3V. Nguồn điện chính là FTDI breakout board. Sơ đồ bên dưới hiển thị các kết nối hoàn chỉnh, sau khi tải lên thành công bản phác thảo:
Lưu ý: Chân RX vàTX của FTDI mô-đun không được kết nối với chân TX và RX of mô đun wifi, và như vậy là GPIO0 (từ GND).
Hình ảnh dưới đây là thiết lập thực tế của các sơ đồ được hiển thị ở trên:
Đó là nó! Chúng tôi đã hoàn tất các thiết lập này: Boards, Libraries, and Components. Bây giờ chúng tôi đã sẵn sàng để cấu hình dự án của mình với Cayenne bằng cách sử dụng MQTT. Nhân tiện, MQTT là viết tắt của MQ Telemetry Transport. Nói một cách đơn giản, nó là một giao thức truyền tải tin nhắn giữa các máy và Internet of Things! Thêm về điều này tại Cayenne Docs.
Cấp nguồn cho board một lần nữa. The ESP8266 ESP-01 Wifi Module có thể kết nối với Wifi của bạn. Bây giờ, quay trở lại Cayenne portal. Bạn sẽ có thể thấy dashboard with widgets được lập sẵn trước. Bây giờ bạn có thể tùy chỉnh dashboard.
Ban đầu, đây là cách trang tổng quan trông như thế nào khi ESP8266 ESP-01 WiFi module bắt đầu gửi dữ liệu đến Cayenne Dashboard (dưới thiết bị được định cấu hình ở đó):
Add the initial widgets shown above, by clicking the “+” icon at the upper right hand corner of each initial widget:
Once added, we will now customize each widget. This is how it looks like when these initial widgets are added:
To customize each widget, click on the right-most icon, then select Settings. Refer to screenshot below:
A pop-up window appears and will allow us to change the Widget Name, Channel, Widget Icon, and Number of Decimal Places. We will leave Channel as it is. Don’t change the value of Channel, since the value here is the Virtual Pin (V0, V1, V2…) used in the code for this widget. Virtual Pin 4 (V4) is the temperature, Virtual Pin 2 (V2) is the humidity, and Virtual Pin 3 (V3) is the value of the sound sensor (0/1).
Below are the configuration/setting for each initial widget:
Here is how they look afterward:
Now, we still need to add one more widget. This widget is for the relay, to turn it on/off. On the left side portion of the dashboard (upper-left), click Add New, then click Device/Widget:
Scroll down further down, and look for Custom Widgets. Select Button:
We need to change the settings for the Button widget:
- Name = Relay Switch
- Device = Generic ESP8266 (or your named device if you have already)
- Data = Digital Actuator
- Unit = Digital (0/1)
- Channel = 1 (this is GPIO1 of the ESP8266 ESP-01 WiFi Module – review code)
- Choose Icon = Button (you may choose what icon you desire)
Below is the screenshot of the Button settings. Click Add Widget afterwards:
The final dashboard now looks like this:
And we’re DONE! Now, try to switch on/off the Relay Switch. The relay connected to the ESP8266 ESP-01 WiFi Module will turn on or off – you will hear clicking sounds. Try to make some noise. The sound widget will register 1 (if noise is detected, 0 if not). Try observing the Temperature and Humidity widgets – these values change according to what is “sensed” from where the DHT11 module is.
We’ve just used the Cayenne MQTT API to connect our device with components attached to it.
Comments
Post a Comment