stm32-FreeRTOS-ESP8266-OneNET物联网远程开关,心知天气网络时间,开源代码电路原理图

分享下自己基于OneNet物联网云平台的远程开关,可电脑 / 手机APP远程控制,亦可获取当前时间和近3日天气。

还有好多坑待填,开源仅作学习。

 

实物展示

 

  • 上电自动联网,获取开关状态、时间、天气的过程:(5FPS)

 

  • OLED时间界面:(15FPS)

 

  • OLED整体界面:(15FPS)

 

  • 电脑控制远程开关:(15FPS)

 

  • 手机APP控制远程开关:(15FPS)

 

(现在的远程开关由于是HTTP GET的方式,每隔3S刷新一次,所以有时延)

 

  • 高清图:

 

 

 

 

 

设计概况

 

  • 硬件组成:

主控MCU:stm32F103c8t6

WIFI:ESP8266(ESP-12F/S)、EMW3080【选其一使用】

以太网:W5500

显示:SPI-OLED / SPI-TFT

运行系统:FreeRTOS

功率输出:两路250V/10A继电器、两路600V/6A可控硅(交流)

供电方式:USB / DC-5V / 18650锂电池(备用电源)

通信接口:CAN / RS485 / USB从机 / USB串口 / 2xTTL串口

传感器:红外发射(3W | 120°)、红外接收、APDS-9930(光强、接近)、DHT12(或其他I2C的温湿度传感器)

 

  • 特点:

全,硬件全面,CAN / RS485 / USB从机 / USB串口 / 2xTTL串口,红外发射/接收,满足 家居/轻工控需求。

全,周全,wifi连接 / 以太网连接均可。

全,安全,18650锂电备用电源,从容应对断电情况,亦可随手携带进行场外调试。

 

  • 设计初衷:

最开始只是想设计个远程开关,能放进防水盒可远程遥控,没想那么多功能。可一想打5公分的PCB也是打,打10公分的PCB也是打,干脆集成的东西多一点,可搭配出的功能也多一些。到手后发现,最重要的配网按键忘记搞了,虽然其他的方式也能弥补,例如用红外遥控器做触发,用光强做触发,但总感觉少了那个随心所欲的味道。于是搁置争议,先填好远程开关这个坑,其他功能留着以后有时间再完善。

 

  • 目前实现功能:

stm32F103 运行 FreeRTOS。

ESP8266(ESP-12F/S)wifi,HTTP 连接 OneNET、心知天气。

4路远程开关控制、北京时间、近3日天气。

OLED平移滚动界面:时钟界面、开关状态界面、近3日天气界面。

多种供电方式:USB / DC-5V / 18650锂电池(备用电源)。

 

  • 待填坑:

stm32代码RAM优化,目前已使用19.2KB。(好多其实都是可以省的)

温湿度传感器代码。(DHT12缺货,而其他I2C的温湿度传感器都比较贵。)

红外接收、红外发射代码,遥控记录功能。

CAN / RS485 / USB从机 代码。

APDS-9930代码。

W5500以太网代码。

阿里云物联网平台、MQTT连接。

 

  • 设计缺陷:

RTC晶振不起振,F103的老毛病了。(所以时间计时使用FreeRTOS的软件定时器+每10分钟联网校准)

温湿度传感器,一开始准备用DHT12的,后来发现DHT12缺货,而其他I2C的温湿度传感器都比较贵。

配网按键忘记加了。

备用电源切换方案待优化。(觉得备用电源也没什么用,毕竟要是外部断电了,wifi路由器也会断电。现在来看,只是方便携带,不必担心供电问题,放哪里都可以用)

 

开放代码、电路、资料:

  • 代码、电路、相关资料:

wifi密码修改、OneNet云平台账号、城市天气修改:wifi.h、onenet_http.h、seniverse_http.h 中的宏定义

OLED界面平移、滚动的实现:OLED界面平移滚动实现

OneNET云平台产品创建:OneNET云平台使用

心知天气产品创建:心知天气获取消息

GitHub源码仓库、电路:F103_IOT_DEV

字体、图片的取模方式:

https://blog.csdn.net/Mark_md/article/details/107930207

https://blog.csdn.net/Mark_md/article/details/107932293

 

你可能感兴趣的:(stm32,esp8266,物联网开发,物联网)