分享下自己基于OneNet物联网云平台的远程开关,可电脑 / 手机APP远程控制,亦可获取当前时间和近3日天气。
还有好多坑待填,开源仅作学习。
实物展示
(现在的远程开关由于是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