当前位置: 首页 > news >正文

手机连接ESP8266的WIFI,进入内置网页,输入要显示的内容,在OLED显示屏上显示文本

在这篇技术博客中,我们将探讨如何使用ESP8266 Wi-Fi 模块和SSD1306 OLED显示屏,构建一个简易的信息显示和交互系统。此系统能够让用户通过一个简单的Web界面输入信息,并将其显示在OLED屏幕上。这种设备的应用非常广泛,可以用于智能家居系统、信息提示牌或任何需要远程显示信息的场景。

设备 连线

OLEDESP8266含义
GNDGND地线
VCC3V电源
SCLD1时钟线
SDAD2通信数据线

在这里插入图片描述

web server 效果图

在这里插入图片描述

OLED 显示效果

在这里插入图片描述

只支持英文信息的显示和数字。

硬件组成

本项目主要使用两个核心组件:

  1. ESP8266 Wi-Fi模块:这是一个低成本的Wi-Fi芯片,具备完整的TCP/IP协议栈和微控制器功能。
  2. SSD1306 OLED显示屏:一种小型显示屏,分辨率为128x64,适合显示文本和简单图形。

软件设置

项目的软件部分涉及到几个关键步骤:

  • 初始化显示屏:使用Adafruit的SSD1306库来初始化OLED屏幕。如果初始化失败,程序将不会继续执行。
  • 配置ESP8266为AP模式:将ESP8266配置为接入点(AP)模式,这样用户可以直接连接到由ESP8266创建的Wi-Fi网络。
  • 启动Web服务器:运行一个简单的Web服务器,允许用户通过浏览器与ESP8266进行交互。

功能实现

显示启动信息

一旦设备启动,它会在OLED屏上显示如何连接到Wi-Fi网络的信息,包括网络的SSID和一个基础的Web链接。

Web服务器交互

用户可以通过访问在OLED显示屏上提供的Web地址来输入想要显示的消息。这通过一个简单的HTML表单完成,提交后消息会发送到ESP8266。

消息显示

提交的信息将通过Web服务器的路由处理器接收,并显示在OLED屏幕上。同时,服务器会向用户确认消息已显示。

编程注意事项

在代码中,我们首先定义了所有必要的库和参数,如屏幕尺寸和Wi-Fi设置。主要的逻辑包括设置AP模式、初始化Web服务器,并创建处理HTTP请求的函数。这些功能的实现体现了如何在嵌入式系统中处理网络通信和显示控制的结合使用。

此外,代码中还体现了良好的错误处理机制,如初始化失败时,程序将进入死循环,确保不会执行后续的不稳定操作。

全部代码如下

 
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define OLED_RESET    -1Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);const char* ssid = "ESP8266-AP";
const char* password = "12345678";ESP8266WebServer server(80);void setup() {Serial.begin(115200);// 初始化显示屏if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {Serial.println(F("SSD1306 allocation failed"));for (;;); // 死循环,无法初始化则不继续执行}display.clearDisplay();// 显示启动信息displayStartupMessage();// 设置ESP8266为AP模式WiFi.softAP(ssid, password);IPAddress myIP = WiFi.softAPIP();Serial.print("AP IP address: ");Serial.println(myIP);// 启动Web服务器setupWebServer();
}void loop() {server.handleClient(); // 处理客户端请求
}void displayStartupMessage() {display.setTextSize(1);display.setTextColor(WHITE);display.setCursor(0, 0);display.println("Connect WiFi ");display.println(ssid);display.println("visit");display.println("http://192.168.4.1");display.println("to set content.");display.display();
}void handleRoot() {String message = "Enter message to display: <form action=\"/display\"><input type=\"text\" name=\"message\"><input type=\"submit\"></form>";server.send(200, "text/html", message);
}void handleDisplay() {String message = server.arg("message"); // 获取用户输入的消息display.clearDisplay();display.setTextSize(1);display.setTextColor(WHITE);display.setCursor(0, 0);display.println(message);display.display();server.send(200, "text/plain", "Message displayed: " + message);
}void setupWebServer() {server.on("/", HTTP_GET, handleRoot);server.on("/display", HTTP_GET, handleDisplay); // 处理显示消息的路径server.begin();Serial.println("HTTP server started");
}

结论

通过ESP8266和SSD1306,我们能够创建一个简单而强大的信息显示系统,不仅成本低廉,而且实现了用户与设备的实时交互。这个项目示范了物联网设备开发的基本概念,也提供了一个扩展其他功能和接口的良好起点。

相关文章:

  • 【C++题解】1457 - 子数整除
  • 内存卡执行格式化数据还能恢复吗?
  • qt自适应图片
  • [Vue3:axios]:实现登录跳转页面展示列表(查看教师所承担课程的学生选课情况)
  • 基于springboot实现交通管理在线服务系统项目【项目源码+论文说明】计算机毕业设计
  • [一] 解释自己思维判断与行为 - 《情报分析心理学》读后感
  • Java中如何调用mysql中函数
  • LVGL移植和图片显示
  • 聚焦新版综合编程能力面试考查汇总
  • Vue18-列表渲染
  • 零基础直接上手java跨平台桌面程序,使用javafx(四)用Apache POI读取excel文件。
  • 【Jenkins+K8s】持续集成与交付 (二十):K8s集群通过Deployment方式部署安装Jenkins
  • 三高系统的架构设计方案:高并发、高可用、高性能
  • WebSphere面试题精选和参考答案(3万字长文)
  • 1789. 员工的直属部门
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • CentOS 7 修改主机名
  • C学习-枚举(九)
  • Linux CTF 逆向入门
  • Next.js之基础概念(二)
  • nginx 配置多 域名 + 多 https
  • 包装类对象
  • 计算机常识 - 收藏集 - 掘金
  • 盘点那些不知名却常用的 Git 操作
  • 写代码的正确姿势
  • 用 Swift 编写面向协议的视图
  • 由插件封装引出的一丢丢思考
  • 组复制官方翻译九、Group Replication Technical Details
  • ​zookeeper集群配置与启动
  • #162 (Div. 2)
  • #java学习笔记(面向对象)----(未完结)
  • #pragma pack(1)
  • (1)svelte 教程:hello world
  • (55)MOS管专题--->(10)MOS管的封装
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (Python) SOAP Web Service (HTTP POST)
  • (vue)el-cascader级联选择器按勾选的顺序传值,摆脱层级约束
  • (备忘)Java Map 遍历
  • (五十)第 7 章 图(有向图的十字链表存储)
  • (学习总结)STM32CubeMX HAL库 学习笔记撰写心得
  • (游戏设计草稿) 《外卖员模拟器》 (3D 科幻 角色扮演 开放世界 AI VR)
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)大型网站架构演变和知识体系
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • ****Linux下Mysql的安装和配置
  • .DFS.
  • .net mvc 获取url中controller和action
  • .NET MVC 验证码
  • .Net 访问电子邮箱-LumiSoft.Net,好用
  • .NET 命令行参数包含应用程序路径吗?
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • /*在DataTable中更新、删除数据*/
  • @Responsebody与@RequestBody
  • []指针