基于RT-Thread OS的 迷你时钟项目
近期在自学RT-Thread OS, 这是一个国内团队开发的实时物联网操作系统,具有组件完整丰富、高度可伸缩、简易开发等优点。
RTOS官网
参考学习文档
作品演示
基于RT-Thread OS的网络小时钟
实现功能:
1.联网获取时间;
2.测温测湿度;
3.将天气数据实时显示在一块OLED屏幕上。
主要元件
开发板:STM32L432KC Nucleo
Wi-Fi模块:ESP8266-01S
温湿度传感器模块:SHT31
显示屏:ssd1306 (0.96英寸)
调试工具:USB-UART串口模块
其中,UART1用于串口调试,Wi-Fi模块使用UART2,传感器和屏幕分别挂载于I²C1和I²C2
代码部分
本作品开源地址:Github仓库
参考教程:桌面mini网络时钟
参考数据手册:STM32L432KC
核心部分(oled显示线程)
#include <rthw.h>
#include <rtthread.h>
#include <rtdevice.h>
#include <U8g2lib.h>
#include <stdio.h>
#include <drv_soft_i2c.h>
extern "C"
{
#include <sht3x.h>
}
extern "C"
{
sht3x_device_t sht3x_init(const char *i2c_bus_name, rt_uint8_t sht3x_addr);
rt_err_t sht3x_read_singleshot(sht3x_device_t dev);
}
#define OLED_I2C_PIN_SCL 7 // PA7
#define OLED_I2C_PIN_SDA 20 // PB4
static U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0,\
/* clock=*/ OLED_I2C_PIN_SCL,\
/* data=*/ OLED_I2C_PIN_SDA,\
/* reset=*/ U8X8_PIN_NONE);
#define SUN 0
#define SUN_CLOUD 1
#define CLOUD 2
#define RAIN 3
#define THUNDER 4
static void drawWeatherSymbol(u8g2_uint_t x, u8g2_uint_t y, uint8_t symbol)