使用ESP8266和OLED显示屏构建简易信息显示系统
创作时间:
作者:
@小白创作中心
使用ESP8266和OLED显示屏构建简易信息显示系统
引用
1
来源
1.
https://cloud.tencent.com/developer/article/2436475
本文将介绍如何使用ESP8266 Wi-Fi模块和SSD1306 OLED显示屏,构建一个简易的信息显示和交互系统。此系统能够让用户通过一个简单的Web界面输入信息,并将其显示在OLED屏幕上。这种设备的应用非常广泛,可以用于智能家居系统、信息提示牌或任何需要远程显示信息的场景。
硬件连接
OLED | ESP8266 | 含义 |
---|---|---|
GND | GND | 地线 |
VCC | 3V | 电源 |
SCL | D1 | 时钟线 |
SDA | D2 | 通信数据线 |
硬件组成
本项目主要使用两个核心组件:
- ESP8266 Wi-Fi模块:这是一个低成本的Wi-Fi芯片,具备完整的TCP/IP协议栈和微控制器功能。
- 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 -1
Adafruit_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,我们能够创建一个简单而强大的信息显示系统,不仅成本低廉,而且实现了用户与设备的实时交互。这个项目示范了物联网设备开发的基本概念,也提供了一个扩展其他功能和接口的良好起点。
本文参与 腾讯云开发者社区内容同步计划,文章原文来自腾讯云开发者社区。
热门推荐
如何改善政府行业的洞察能力以提高行政效率?
跨境电商入门指南:从零开始打造全球销售渠道
胃癌的治疗费用是多少
糖尿病饮食推荐:低GI水果清单及科学搭配
混沌初开:原始人类的心性密码
如何排查和解决磁盘读写速度异常的问题
欧洲原住民的最后遗存?欧洲最“孤立”的民族,巴斯克人是谁?
少女前线2追放:幼熙角色解析与配队指南——值得抽吗?
献血献血小板和全血有什么区别
咳黄痰浓稠痰吃什么止咳药
冰心短诗的艺术魅力与情感共鸣
如何计算纯黄金的每克价格?
切片视频如何安全穿越版权雷区
2025年中国负债现状:2亿人负债,年轻人占比40%
保济丸和藿香正气的区别是什么
桥本氏甲状腺炎可以喝纯牛奶吗
带宠物一起旅行,需要注意的十五个细节(关注宠物健康与幸福的旅行小贴士)
寻迹中东铁路 | 松花江上,那些桥的传奇故事
杜甫《蜀相》:咏史怀古,感慨英雄未竟之志
超甲级防盗门:家庭安全的终极守护
肾上腺:解剖学与生理学详解
教师资格证考试能否跨学科报考?2024版指南详解
全面解析:从北京到海南的多样化旅游路线规划与建议
搜索引擎有哪些常用技巧
对梅西的不同使用,是萨韦利亚相对马拉多纳成功的关键
对梅西的不同使用,是萨韦利亚相对马拉多纳成功的关键
法务人员如何制定合同签订流程
决定系数R2能否为负数?
胰腺癌病人肚子胀鼓如何缓解
聚焦3·15 | 如何避开消费陷阱?检察官来支招