ESP32 và kết nối

Với bộ vi điều khiển ESP32 giá rẻ và bản phác thảo ChatterBox cho Arduino, bạn có thể tạo một máy chủ trò chuyện ẩn danh ngoại tuyến để liên lạc với người khác qua văn bản. Miễn là họ có thể kết nối với mạng của ESP32 và truy cập trang trò chuyện của máy chủ, họ có thể để lại tin nhắn cho người khác đọc, cũng như xem mọi thứ đã được viết trong đó.

Sử dụng bảng ESP32 sẽ giảm chi phí của bạn, vì vậy không có Raspberry Pi đắt tiền như PirateBox cần. Năm đô la là tất cả những gì nó cần. Và nó có sức mạnh xử lý cần thiết để đưa lên một máy chủ trò chuyện và tạo một điểm truy cập Wi-Fi để kết nối với nó. Máy chủ trò chuyện hoạt động ngay trong trình duyệt web, vì vậy mọi thiết bị có trình duyệt đều có thể tham gia và tham gia.

Những gì bạn cần

Để làm theo hướng dẫn bên dưới, bạn cần cài đặt Arduino IDE trên máy tính của mình. Bạn cũng sẽ cần một bộ vi điều khiển dựa trên ESP32 rẻ tiền. Một số bảng ESP8266 cũng có thể hoạt động. Bạn cũng sẽ cần cáp Micro-USB để kết nối bo mạch với máy tính của bạn để flash ChatterBox và cấp nguồn cho ESP32.

Bước 1 Cài đặt bảng ESP32 trong Arduino IDE

Để truy cập vi điều khiển ESP32 cần cài đặt gói bao gồm tất cả các bảng tương thích. Mở chương trình Arduino IDE, nhấp vào “Tệp”, sau đó “Tùy chọn”.

Cài đặt bảng ESP32

Tiếp theo, dán URL nhìn thấy bên dưới:

https://dl.espressif.com/dl/package_esp32_index.json

Vào trường “URL Trình quản lý bảng bổ sung” và nhấp vào “OK.” Bạn có thể cần phải thay đổi vị trí của quyển phác thảo của bạn trước khi làm như vậy.

Trình quản lý bảng bổ sung

Bây giờ chúng tôi đã tải xuống gói, chúng tôi cần cài đặt gói, vì vậy hãy chuyển đến “Công cụ”, sau đó “Bảng”. Trong menu con, chọn “Trình quản lý bảng.”

Trong menu con

Tìm kiếm “Esp32”, sau đó cài đặt cái mà chúng tôi đã tải xuống bởi Espressif Systems. Khi đã xong, nhấp vào “Đóng” để hoàn tất.

Espressif Systems

Bước 2 Tải xuống chương trình ChatterBox

Với các bảng ESP32 của chúng tôi đã được cài đặt, đã đến lúc tải xuống chương trình ChatterBox của fenwick67 (https://github.com/fenwick67/esp32-chatterbox) từ GitHub. ESP32 ChatterBox tự quảng cáo là một bảng thông báo công khai ẩn danh, nhưng có rất nhiều thứ chúng ta có thể sử dụng nó cho. Để tải về, sử dụng:

~$ git clone https://github.com/fenwick67/esp32-chatterbox.git

Cloning into 'esp32-chatterbox'...
remote: Enumerating objects: 31, done.
remote: Total 31 (delta 0), reused 0 (delta 0), pack-reused 31
Receiving objects: 100% (31/31), 8.09 KiB | 2.70 MiB/s, done.
Resolving deltas: 100% (12/12), done.

Bây giờ, thay đổi ( cd ) vào thư mục đó với:

~$ cd esp32-chatterbox
~/esp32-chatterbox$

Và liệt kê nội dung của nó với ls .

~/esp32-chatterbox$ ls

build.js  clean.ino  esp32_chatterbox.ino
HTMLPAGE.h  index.html  posts  README.md

Có một vài thứ khác nhau được liệt kê, nhưng những thứ quan trọng nhất là các tệp Esp32_chatterbox.ino và HTMLPAGE.h.

Bước 3 Mở tệp Arduino ChatterBox

Bây giờ, đã đến lúc mở tệp Esp32_chatterbox.ino trong Arduino IDE. Bạn có thể chỉ cần đi đến “Tệp”, sau đó “Mở” trong chương trình, sau đó xác định vị trí và mở tệp. Bạn cũng có thể sử dụng Terminal; sử dụng lệnh sau để làm như vậy. Nếu bạn đang sử dụng macOS, hãy sử dụng open thay vì xdg-open .

~/esp32-chatterbox$ xdg-open esp32_chatterbox.ino

Ngay khi mở ra, Arduino IDE sẽ nói rằng tệp “cần phải nằm trong một thư mục phác thảo có tên ‘Esp32_chatterbox’. Tạo thư mục này, di chuyển tệp và tiếp tục?” Nhấp vào “OK” để làm như vậy. Tuy nhiên, một tệp quan trọng mà chúng tôi cần không được chuyển qua, đó là tệp HTMLPAGE.h, vì vậy chúng tôi phải thực hiện thủ công để đảm bảo không có trục trặc nào trên đường đi.

Liệt kê lại nội dung của thư mục và bạn sẽ thấy rằng nó đã tạo thư mục “Esp32_chatterbox”. Thư mục đó bây giờ chứa tệp phác thảo chúng tôi đã mở.

~/esp32-chatterbox$ ls

build.js  clean.ino  esp32_chatterbox
HTMLPAGE.h  index.html  posts  README.md

Để di chuyển tệp HTMLPAGE.h sang tệp này, hãy sử dụng lệnh sau.

~/esp32-chatterbox$ mv HTMLPAGE.h esp32_chatterbox

Bây giờ thay đổi vào thư mục Esp32_chatterbox với:

~/esp32-chatterbox$ cd esp32_chatterbox
~/esp32-chatterbox/esp32_chatterbox$

Sau đó liệt kê nội dung của nó để xác minh rằng tệp .h đã được di chuyển chính xác.

~/esp32-chatterbox/esp32_chatterbox$ ls

esp32_chatterbox.ino  HTMLPAGE.h

Bước 4 Điều chỉnh Phác thảo nếu cần thiết

Hãy xem mã của bản phác thảo. Nếu bạn muốn, bạn có thể thay đổi một số biến và tùy chỉnh tất cả nếu bạn muốn HTML trông giống như một giao diện cơ bản trên dự án đã hoàn thành, nhưng chúng tôi không lo lắng về điều đó ngay bây giờ. Điều duy nhất tôi sẽ làm ở đây là thay đổi tên điểm truy cập trên dòng 84 từ:

WiFi.softAP("ChatterBox");

Để một tên AP mà tôi muốn mọi người sử dụng:

WiFi.softAP("NullByteNet");

Vì vậy, mã đầy đủ sẽ trông như thế này, với bất kỳ tên AP nào bạn đã chọn trong đó thay vào đó nếu bạn tùy chỉnh nó. Bạn có thể giữ nó là “ChatterBox” và bạn sẽ hoàn toàn ổn.

#include <WiFi.h>
#include <DNSServer.h>
#include <WebServer.h>
#include <SPIFFS.h>
#include <FS.h>
#include "HTMLPAGE.h"

#define FORMAT_SPIFFS_IF_FAILED true
#define RECORD_SEP "\x1E"

const byte DNS_PORT = 53;
IPAddress apIP(192, 168, 1, 1);
DNSServer dnsServer;
WebServer server(80);

const char* filename = "/posts.txt";

void sendPage(){
  Serial.println("GET /");
  server.send(200,"text/html",HTMLPAGE);
}

void sendMessages(){
  Serial.println("GET /posts");
  File file = SPIFFS.open(filename, FILE_READ);
  if(!file){
      Serial.println("- failed to open file for reading");
  }

  server.streamFile(file,"text/plain");

  file.close();
}

void receiveMessage(){
  Serial.println("POST /post");
  int argCount = server.args();
  if (argCount == 0){
    Serial.println("zero args?");
  }

  File file = SPIFFS.open(filename, FILE_APPEND);
  if(!file){
      Serial.println("- failed to open file for writing");
  }
  if(argCount == 1){
    String line = server.arg(0);
    line.replace(String(RECORD_SEP),String(""));
    file.print(line);
    file.print(RECORD_SEP);
    Serial.print("New message: ");
    Serial.println(line);
  }
  file.close();

  server.send(200,"text.plain","");
}

void setup() {
  Serial.begin(115200);
  if(!SPIFFS.begin(FORMAT_SPIFFS_IF_FAILED)){
    Serial.println("SPIFFS Mount Failed");
    return;
  }

  // initialize file (not totally sure this is necessary but YOLO)
  File file = SPIFFS.open(filename, FILE_READ);
  if(!file){
      file.close();
      File file_write = SPIFFS.open(filename, FILE_WRITE);
      if(!file_write){
          Serial.println("- failed to create file?!?");
      }
      else{
        file_write.print("");
        file_write.close();
      }
  }else{
    file.close();
  }

  WiFi.mode(WIFI_AP);
  WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
  WiFi.softAP("NullByteNet");

  // if DNSServer is started with "*" for domain name, it will reply with
  // provided IP to all DNS request
  dnsServer.start(DNS_PORT, "*", apIP);

  // init http server
  server.on("/", HTTP_GET, sendPage);
  server.on("/index.html", HTTP_GET, sendPage);
  server.on("/posts", HTTP_GET, sendMessages);
  server.on("/post", HTTP_POST, receiveMessage);
  server.begin();
}

void loop() {
  dnsServer.processNextRequest();
  server.handleClient();

  // type a "c" in the serial monitor to clean the database
  if (Serial.available() > 0) {
    int incomingByte = Serial.read();
    if(incomingByte == 99){
      Serial.println("overwriting file...");
      File file_write = SPIFFS.open(filename, FILE_WRITE);
      file_write.print("");
      file_write.close();
      Serial.println("file overwritten :)");
    }
  }

}

Bước 5 Flash ChatterBox vào Bảng ESP32 của bạn

Chúng ta gần đến rồi! Bây giờ, kết nối ESP32 của bạn với máy tính bằng cáp USB, sau đó xác định vị trí của nó trong Arduino IDE. Chuyển đến “Công cụ”, sau đó “Bảng” và bạn sẽ thấy một tấn bảng ESP32 được liệt kê. Tìm mô hình của bạn, sau đó nhấp vào nó để chọn nó.

Phần còn lại của các cài đặt này chủ yếu nên mặc định là đúng, nhưng đảm bảo rằng cổng là chính xác. Trong “Công cụ”, chọn “Cổng”, sau đó thay đổi thành chính xác nếu nó chưa được chọn tự động.

Để flash qua ChatterBox tới ESP32 của bạn, nhấp vào nút tải lên (mũi tên phải ở trên cùng bên trái). Bạn sẽ thấy một loạt các công cụ xảy ra. Khi văn bản màu đỏ xuất hiện trên màn hình, bạn sẽ biết nó thực sự nhấp nháy nó. Khi hoàn tất, bạn có thể mở Màn hình nối tiếp bằng Control-Shift-M để đảm bảo không có lỗi điên hoặc mất điện và để tìm kiếm khởi động lại.

Bước 6 Quét địa chỉ IP của trò chuyện

Tiếp theo, chạy quét arp để xác định vị trí địa chỉ IP mà trang web trò chuyện đang bật.

~/esp32-chatterbox/esp32_chatterbox$ arp-scan -l

Interface: en0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.9.5 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.1.1 3c:71:bf:f9:e3:51   (Unknown)

516 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.5: 256 hosts scanned in 1.858 seconds (137.78 hosts/sec). 1 responded

Như bạn có thể thấy, ESP32 của tôi đang sử dụng 192.168.1.1, điều này không đáng ngạc nhiên lắm.

Bước 7 Mở Trò chuyện trong Trình duyệt

Trên điện thoại thông minh hoặc máy tính của bạn, định vị mạng Wi-Fi được tạo bởi ESP32 và kết nối với nó. Sau đó, trong cửa sổ trình duyệt web, điều hướng đến địa chỉ IP bạn đã tìm thấy ở bước trước. Trong trường hợp của tôi, đó là 192.168.1.1. Khi bạn mở trang, bạn sẽ có khả năng đăng và nhận tin nhắn trò chuyện.

ESP32 và kết nối

Nếu bạn gặp phải bất kỳ vấn đề quan trọng nào, hãy đảm bảo rằng ESP32 có đủ năng lượng cho nó. Sau đó, hãy nhờ mọi người khác kết nối với cuộc trò chuyện của bạn để tất cả bạn có thể liên lạc ẩn danh.

Đó là một lựa chọn đơn giản nhưng hữu ích với chi phí nhỏ

ChatterBox không phải là một giao diện trò chuyện siêu tinh vi, nó chắc chắn là một lỗi nhỏ và nó không phải là nhanh nhất. Tuy nhiên, nếu bạn đang ở trong một khu vực không có lựa chọn nào khác, nó sẽ thực hiện thủ thuật.

Điều thú vị về trò chuyện là không có nhiều hạn chế về số lượng bạn có thể nhập hoặc dán, vì vậy nếu bạn muốn đặt vào một khối lớn văn bản, bạn có thể. Nếu bạn muốn xóa cuộc trò chuyện, bạn có thể từ Màn hình nối tiếp bằng cách nhập (c) và nhấn “Gửi”.

Như bạn có thể thấy, một máy chủ trò chuyện ESP32 là một cách chúng ta có thể liên lạc với nhau khi chúng ta không có cơ sở hạ tầng điển hình như tháp di động để thoát khỏi nó về mặt kỹ thuật. Tất cả những gì bạn thực sự cần một bộ vi điều khiển có giá năm đô la, cho hoặc nhận và bạn đã có một cách đơn giản để gửi và nhận tin nhắn cho những người khác ở gần đó.

Bạn có thể để nó ở nơi công cộng như một giọt chết, có thể ở một nơi mà mọi người có thể đến và để lại tin nhắn cho nhau. Bằng cách đó, bạn có một cách tương tác gọn gàng với người khác.

Nếu bạn thích chức năng của dự án này, bạn nên kiểm tra dự án liên lạc bằng giọng nói ngoại tuyến của chúng tôi với Raspberry Pi và PirateBox . Đó là một tĩnh mạch tương tự với nhiều khả năng hơn, như chia sẻ tập tin. ChatterBox trên một chiếc ESP32 giống như của dự án đó, nhưng cả hai đều có lợi ích và sự hấp dẫn của chúng.

Để lại một bình luận