Demo_AP.ino 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /*
  2. --------------
  3. WebSerial Demo
  4. --------------
  5. Skill Level: Beginner
  6. This example provides with a bare minimal app with WebSerial functionality using softAP mode.
  7. Github: https://github.com/ayushsharma82/WebSerial
  8. Wiki: https://docs.webserial.pro
  9. Works with following hardware:
  10. - ESP8266
  11. - ESP32
  12. - RP2040+W
  13. - RP2350+W
  14. WebSerial terminal will be accessible at your microcontroller's <IPAddress>/webserial URL.
  15. Checkout WebSerial Pro: https://webserial.pro
  16. */
  17. #include <Arduino.h>
  18. #if defined(ESP8266)
  19. #include <ESP8266WiFi.h>
  20. #include <ESPAsyncTCP.h>
  21. #elif defined(ESP32)
  22. #include <WiFi.h>
  23. #include <AsyncTCP.h>
  24. #elif defined(TARGET_RP2040) || defined(TARGET_RP2350) || defined(PICO_RP2040) || defined(PICO_RP2350)
  25. #include <WiFi.h>
  26. #include <RPAsyncTCP.h>
  27. #endif
  28. #include <ESPAsyncWebServer.h>
  29. #include <WebSerial.h>
  30. AsyncWebServer server(80);
  31. const char* ssid = "WSLDemo"; // WiFi AP SSID
  32. const char* password = ""; // WiFi AP Password
  33. unsigned long last_print_time = millis();
  34. void setup() {
  35. Serial.begin(115200);
  36. WiFi.softAP(ssid, password);
  37. // Once connected, print IP
  38. Serial.print("IP Address: ");
  39. Serial.println(WiFi.softAPIP());
  40. server.on("/", HTTP_GET, [](AsyncWebServerRequest *request) {
  41. request->send(200, "text/plain", "Hi! This is WebSerial demo. You can access webserial interface at http://" + WiFi.softAPIP().toString() + "/webserial");
  42. });
  43. // WebSerial is accessible at "<IP Address>/webserial" in browser
  44. WebSerial.begin(&server);
  45. /* Attach Message Callback */
  46. WebSerial.onMessage([&](uint8_t *data, size_t len) {
  47. Serial.printf("Received %u bytes from WebSerial: ", len);
  48. Serial.write(data, len);
  49. Serial.println();
  50. WebSerial.println("Received Data...");
  51. String d = "";
  52. for(size_t i=0; i < len; i++){
  53. d += char(data[i]);
  54. }
  55. WebSerial.println(d);
  56. });
  57. // Start server
  58. server.begin();
  59. }
  60. void loop() {
  61. // Print every 2 seconds (non-blocking)
  62. if ((unsigned long)(millis() - last_print_time) > 2000) {
  63. WebSerial.print(F("IP address: "));
  64. WebSerial.println(WiFi.softAPIP());
  65. WebSerial.printf("Uptime: %lums\n", millis());
  66. #if defined(ESP8266)
  67. WebSerial.printf("Free heap: %" PRIu32 "\n", ESP.getFreeHeap());
  68. #elif defined(ESP32)
  69. WebSerial.printf("Free heap: %" PRIu32 "\n", ESP.getFreeHeap());
  70. #elif defined(TARGET_RP2040) || defined(TARGET_RP2350) || defined(PICO_RP2040) || defined(PICO_RP2350)
  71. WebSerial.printf("Free heap: %" PRIu32 "\n", rp2040.getFreeHeap());
  72. #endif
  73. last_print_time = millis();
  74. }
  75. WebSerial.loop();
  76. }