不想错过我的推送,记得右上角-查看公众号-设为星标,摘下星星送给我
当wifi网络遇到了一些不稳定性问题,常常会让人暴躁。有了这个 Internet 指示器来监控路由器,也就是wifi 指示器,可以随时查看网络是否已连接或不可用,简单明了。几年前,我们分享过一个wifi 信号强度检测仪,原理是类似的。
wiFi 指示器涉及到的硬件重点有:XIAO ESP32 C3 微控制器板以及两个定制 PCB ,其中一个 PCB 是 XIAO 的分线板,连接四个 WS2812B LED,另一个 PCB 是电源板,有一个电源管理 IC,用于使用 3.7V 锂电池作为电源。电路图设计如下:
为这个项目开发了两个单独的板:一个用于 XIAO 和 WS2812B RGB LED,另一个用于 IP5306 电源管理 IC,它将用于对锂电池进行正确充电和放电,甚至提供电池指示。
首先,来看一下 XIAO RGB 分线板。以标准配置连接 WS2812B LED,其中包括并联每个 LED 的 GND 和 VCC。第一个 LED 的 din 将与 XIAO 的 GPIO0 相连。第一个 LED 的 Dout 将连接到第二个 LED 的 Din,第二个 LED 的 Dout 连接到第三个 LED 的 Din,第三个 LED 的 Dout 连接到第四个 LED 的 Din。
然后,电源板的原理图以 IP5306 电源管理 IC 为中心,该 IC 通过 3.7V 锂电池提供稳定的 5V/2A 电源。并且添加 Type C 端口、直角开关和 LED 等元件。
然后,根据原理图打样出PCB板:
PCB打样之后,就是焊接和简单的测试:
硬件完成之后,就是要给wiFi 指示器设计一个外壳。首先创建了 3D 模型,其中包括一个小盒子外壳,外壳顶部附有盖子。为了将其固定到主体上,在盖子上插入了四个孔。
在外壳内部模拟了两个 PCB:电源板和用于安装 SMD RGB LED 和 XIAO 微控制器的 PCB。此外,还创建了一个锂电池模型,作该项目的电源。
此外,还设计了锂电池固定条,并创建了用于安装电源板和 XIAO LED 板的螺丝凸台。
最后,使用橙色 PLA 0.4 毫米喷嘴和 0.2 毫米层高 3D 打印外壳主体,并使用两种不同的灯丝颜色来打印外壳的盖子:透明 PLA 用于底座,黑色 PLA 用于 Wi-Fi 图形。
所有硬件准备完成之后,就是要编写代码了。在 LED 板上添加了 XIAO ESP32 C3 的位置,并将下面的代码上传到其中。
#include <WiFi.h>
#include <Adafruit_NeoPixel.h>
#define LED_PIN D0 // GPIO pin connected to the LEDs
#define NUM_LEDS 4 // Number of WS2812B LEDs
#define WIFI_SSID "Ur SSID" // Replace with your WiFi SSID
#define WIFI_PASSWORD "Ur PASS" // Replace with your WiFi Password
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
Serial.begin(115200);
strip.begin();
strip.show(); // Initialize all pixels to 'off'
// Connect to Wi-Fi
Serial.print("Connecting to WiFi...");
WiFi.begin(WIFI_SSID, WIFI_PASSWORD);
int attempts = 0;
while (WiFi.status() != WL_CONNECTED && attempts < 20) {
delay(500);
Serial.print(".");
attempts++;
}
if (WiFi.status() == WL_CONNECTED) {
Serial.println("Connected to WiFi");
} else {
Serial.println("Failed to connect to WiFi");
}
}
void loop() {
if (WiFi.status() == WL_CONNECTED) {
setLEDColor(strip.Color(0, 255, 0)); // Green
} else {
setLEDColor(strip.Color(255, 0, 0)); // Red
}
delay(10000); // Check the connection every 10 seconds
}
void setLEDColor(uint32_t color) {
for (int i = 0; i < NUM_LEDS; i++) {
strip.setPixelColor(i, color);
}
strip.show();
}
调试完成之后,接下来的工作就是组装。
最后的成品:
原文链接:
https://www.hackster.io/Arnov_Sharma_makes/wi-fi-status-box-f3d24f
版权所属:Arnov Sharma