Mục lục:
- Bước 1: Trình diễn
- Bước 2: Lắp ráp
- Bước 3: Lắp ráp - Bảng
- Bước 4: Ubidots
- Bước 5: Thư viện SimpleDHT
- Bước 6: Thư viện PubSubClient
- Bước 7: Thư viện TinyGSM
- Bước 8: Thư viện TFT_eSPI
- Bước 9: Thư viện TFT_eSPI
- Bước 10: Ubidots
- Bước 11: Thay đổi dữ liệu trong.ino
- Bước 12: GPRS_ESP32_DHT.ino - Khai báo và biến
- Bước 13: Ghim
- Bước 14: Thiết lập
- Bước 15: SetupDisplay
- Bước 16: Thiết lậpGSM
- Bước 17: ConnectMQTTServer
- Bước 18: Vòng lặp
- Bước 19: ĐọcDHT
- Bước 20: Xuất bảnMQTT
- Bước 21: CreateJsonString
- Bước 22: ShowDataOnDisplay
- Bước 23: Tập tin
2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Hôm nay chúng ta sẽ thảo luận về modem GPRS, hay đúng hơn là ESP32 và việc sử dụng nó với mạng điện thoại di động. Đây là một cái gì đó hoạt động rất tốt. Sử dụng giao thức MQTT, sau đó chúng tôi sẽ gửi dữ liệu đến bảng điều khiển Ubidots. Sử dụng trong cụm này một màn hình hiển thị phản hồi của mạch, ngoài SIM800L và chip điện thoại di động. Do đó, với dự án này, chúng tôi sẽ gửi dữ liệu nhiệt độ và độ ẩm thông qua GPRS và MQTT, đồng thời trực quan hóa dữ liệu dưới dạng biểu đồ đường.
Bước 1: Trình diễn
Bước 2: Lắp ráp
Bước 3: Lắp ráp - Bảng
Bước 4: Ubidots
Bước 5: Thư viện SimpleDHT
Trong Arduino IDE, đi tới Sketch-> Bao gồm Thư viện-> Quản lý Thư viện…
Cài đặt SimpleDHT
Bước 6: Thư viện PubSubClient
Trong Arduino IDE, đi tới Sketch-> Bao gồm Thư viện-> Quản lý Thư viện…
Cài đặt PubSubClient
Bước 7: Thư viện TinyGSM
Trong Arduino IDE, đi tới Sketch-> Bao gồm Thư viện-> Quản lý Thư viện…
Cài đặt TinyGSM
Bước 8: Thư viện TFT_eSPI
Trong Arduino IDE, đi tới Sketch-> Bao gồm Thư viện-> Quản lý Thư viện…
Cài đặt TFT_eSPI
Bước 9: Thư viện TFT_eSPI
Thay đổi các chân hiển thị trong thư mục lib.
Ghim nằm trong tệp User_Setup.h trong
C: / Users / \ Documents / Arduino / library / TFT_eSPI
Thay đổi các giá trị mặc định này thành các giá trị sau trong hình ảnh.
Bước 10: Ubidots
Đăng nhập vào Ubidots bằng tài khoản của bạn và nhấp vào Thiết bị
Nhấp vào nút "+" ở góc trên bên phải
Nhấp vào Trống
Nhập tên thiết bị. Lưu ý "nhãn thiết bị" vì nhãn này sẽ được sử dụng trong "chủ đề" mà chúng tôi sẽ sử dụng trong.ino
Trong danh sách thiết bị, thiết bị bạn vừa tạo sẽ xuất hiện. Nhấn vào nó.
Trên màn hình xuất hiện, nhấp vào "Thêm biến". Một cửa sổ bật lên sẽ xuất hiện. Nhấp vào "Nguyên".
Nhấp vào hộp văn bản và nhập tên của thuộc tính.
Nó phải là chính xác những gì chúng tôi sẽ gửi trong json của.ino. Lặp lại điều này cho thuộc tính khác.
Quay lại trang tổng quan bằng cách nhấp vào biểu tượng Ubidots.
Trong trang tổng quan, nhấp vào "Thêm tiện ích con mới"
Trong danh sách Tiện ích, hãy chọn "Trục kép"
Bước 11: Thay đổi dữ liệu trong.ino
Bước 12: GPRS_ESP32_DHT.ino - Khai báo và biến
#define TINY_GSM_MODEM_SIM800 // Tipo de modem que estamos usando # bao gồm #include #include #include #include // Token de usuário que pegamos no Ubidots #define TOKEN "BBFF-abcdefghijklmnopicoqrstuvwxyz0123" (esp32_gprs é o nome do dispositivo no Ubidots) #define TOPIC "/v1.6/devices/esp32_gprs" // id do dispositivo que pegamos no painel do Ubidots #define DEVICE_ID "5c01234567890abc12345678" // URL do MQTT "Máy chủ #define MQTT" mqtt: //things.ubidots.com "// Porta padrão do MQTT #define MQTT_PORT 1883 // Pino onde está o DHT22 #define DHT_PIN 27
Bước 13: Ghim
// Permanentm em User_Setup.h na pasta da bibliotecaTFT_eSPI display = TFT_eSPI (); // Intervalo entre os envios e refresh da tela #define INTERVAL 10000 // Canal serial que vamos usar para comunicarmos com o modem. Sử dụng semper 1 HardwareSerial SerialGSM (1); Modem TinyGsmGSM (SerialGSM); TinyGsmClient gsmClient (modemGSM); // Cliente MQTT, passamos a url do server, a porta // e o cliente GSM PubSubClient client (MQTT_SERVER, MQTT_PORT, gsmClient); // Tempo em que o último envio / refresh foi feito uint32_t lastTime = 0; độ ẩm nổi; // Variável onde iremos armazenar o valor da umidade float nhiệt độ; // Variável onde iremos armazenar o valor da temperatura SimpleDHT22 dht; // Objeto que realizará a leitura da umidade e temperatura
Bước 14: Thiết lập
void setup () {Serial.begin (115200); setupDisplay (); // Inicializa e configura o display setupGSM (); // Inicializa e configura o modem GSM connectMQTTServer (); // Máy chủ Conectamos ao mqtt // Espera 2 segundos e limpamos o display delay (2000); display.fillScreen (TFT_BLUE); display.setCursor (0, 0); }
Bước 15: SetupDisplay
void setupDisplay () {display.init (); display.setRotation (1); display.fillScreen (TFT_BLUE); // Limpa o display com a cor azul display.setTextColor (TFT_WHITE, TFT_BLUE); // Coloca o texto como cámco com fundo azul display.setTextWrap (true, true); // Ativa quebra de linha display.setTextSize (1); display.setCursor (0, 0, 2); // Posicção x, y e fonte do texto display.println ("Thiết lập Hiển thị Hoàn tất"); }
Bước 16: Thiết lậpGSM
void setupGSM () {display.println ("Thiết lập GSM…"); // Inicializamos a serial onde está o modem SerialGSM.begin (9600, SERIAL_8N1, 4, 2, false); chậm trễ (3000); // Mostra Informação sobre o modem Serial.println (modemGSM.getModemInfo ()); // Inicializa o modem if (! ModemGSM.restart ()) {display.println ("Khởi động lại Modem GSM không thành công"); trì hoãn (10000); ESP.restart (); trở lại; } // Espera pela red if (! ModemGSM.waitForNetwork ()) {display.println ("Không kết nối được với mạng"); trì hoãn (10000); ESP.restart (); trở lại; } // Conecta à red gprs (APN, usuário, senha) if (! ModemGSM.gprsConnect ("", "", "")) {display.println ("Không thành công kết nối GPRS"); trì hoãn (10000); ESP.restart (); trở lại; } display.println ("Thiết lập GSM thành công"); }
Bước 17: ConnectMQTTServer
void connectMQTTServer () {display.println ("Đang kết nối với Máy chủ MQTT…"); // Se conecta ao device que definimos if (client.connect (DEVICE_ID, TOKEN, "")) {// Se a conexão foi bem sucedida display.println ("Đã kết nối"); } else {// Se ocorreu algum erro display.print ("error ="); display.println (client.state ()); trì hoãn (10000); ESP.restart (); }}
Bước 18: Vòng lặp
void loop () {// Faz a leitura da umidade e temperatura readDHT (); // Se desconectar do server MQTT if (! Client.connected ()) {// Mandamos conectar connectMQTTServer (); } // Tempo decorrido desde o boot em milissegundos unsigned long now = millis (); // Se passou o periodo de envio if (now - lastTime> INTERVAL) {// Publicamos para o server mqtt PublishingMQTT (); // Mostramos os dados no display showDataOnDisplay (); // Atualizamos o tempo em que foi feito o último envio lastTime = now; }}
Bước 19: ĐọcDHT
void readDHT () {float t, h; // Faz a leitura da umidade e temperatura e apenas atualiza as variáveis se foi bem sucedido if (dht.read2 (DHT_PIN, & t, & h, NULL) == SimpleDHTErrSuccess) {nhiệt độ = t; độ ẩm = h; }}
Bước 20: Xuất bảnMQTT
void xuất bảnMQTT () {// Cria o json que iremos enviar para o server MQTT String msg = createJsonString (); Serial.print ("Xuất bản thông báo:"); Serial.println (msg); // Publicamos no tópico int status = client.publish (TOPIC, msg.c_str ()); Serial.println ("Status:" + String (status)); // Trạng thái 1 se sucesso ou 0 se deu erro}
Bước 21: CreateJsonString
String createJsonString () {Chuỗi dữ liệu = "{"; if (! isnan (độ ẩm) &&! isnan (nhiệt độ)) {data + = "\" độ ẩm / ":"; data + = String (độ ẩm, 2); dữ liệu + = ","; dữ liệu + = "\" nhiệt độ / ":"; data + = String (nhiệt độ, 2); } data + = "}"; trả về dữ liệu; }
Bước 22: ShowDataOnDisplay
void showDataOnDisplay () {// Reseta a posição do con trỏ e mostra umidade e temperatura lidas display.setCursor (0, 0, 2); display.println ("Độ ẩm:" + String (độ ẩm, 2)); display.println ("Nhiệt độ:" + String (nhiệt độ, 2)); }
Bước 23: Tập tin
Tải xuống các tệp
NS