基于Django和TencentOS tiny的IoT智能灯系统设计

如今,工业,农业,生活里面的很多设备已经接入物联网,这些设备通过同一的平台进行管理。但是,每家厂商都自己接入自己的物联网设备,造成了设备与平台的割裂。所以打通设备与云平台成为非常重要的一环。而腾讯云物联网开发平台正是为次孕育而生,为整个行业推出一套解决方案。本文主要依据开发文档,一步步实现基于Django web控制智能灯软硬件系统。
本设计包括3部分组成,用户可以通过web界面进与IoT设备进行简单操作。包括Django web平台,腾讯云平台,IoT设备,其系统架构图如下:

内容:

  • 硬件简介
  • 软件简介
  • 系统功能概述
  • Demo
  • TODO
  • 使用感想

系统架构图

硬件简介

用过STM32板子的同学对于开发这个肯定不陌生,但是对于只用过树莓派的同学,还是有很大区别的。
这个板子长这个样子,看上去跟普通的板子没啥区别,但是盒子里面的东西,以及外设的设置都比较良心。列出以下几点:

  1. 是烧录工具,贴心的4连杜邦线,直接插入即可。妈妈再也不用担心因为插错而烧坏板子!
  2. 串口直接采用usb串口,无需购买额外ttl转串口工具。
  3. 板载电池,更适合物联网需求。
  4. 各种外设,需要的都在,最关键的是支持各种联网外设,符合各种传输需求。

外设1
外设2

软件简介

内核开发环境:

  • Keil5 推荐
  • IAR
  • gcc
    云平台API
  • 数据查询接口
  • 设备管理接口
    软件开发:
  • Django
  • Django REST framework

系统功能概述

内核功能修改

添加智能灯设备初始化与控制,自定义修改OLED显示内容
初始化GPIO
控制灯

云平台配置

云平台提供相应的模版,可以配置需要的状态以及字段,通过上下行数据进行同步。并且可以通过手动去测试api,上手十分方便。
图形化测试平台
api在线测试平台

web服务开发

通过Django搭建基于web服务,通过REST framework存储状态。前端处理用户的控制以及状态、地图的显示。后端处理请求结果,状态同步等工作。

数据同步

借助controller进行硬件、平台和数据库之间状态的转移与同步。并完成发送命令到云平台,进行下发控制。用户根据web界面进行控制操作,并将状态同步到数据库中。控制界面图如下所示:
关灯
开灯

Demo

时间有限,所以录了一个小视频。

链接地址(Youtube):https://www.youtube.com/watch?v=ctormFkCIqU

image.png
image.png

后续改进TODO

由于只开发了2天,所以有多功能每加,列举了之后会加入的想法和功能:

  • 根据光照强度调节
  • 定时开关灯
  • 微信接入,远程控制

试用感受

本次内测由于外设没有那么多,只能够用到现成的资源,修改少部分内核,大部分实现功能在web上面。我之前使用过STM32F103,对于Keil的使用以及配置没有什么太多的问题,如果需要更深修改内核,只需要参考芯片手册即可。所以包括硬件连接,已有内核上代码修改都感觉手难度比较容易。对于腾讯云平台的体验还是不错的,但是网络环境的影响还是稍有些延迟。总体上对于腾讯云平台的调试工具基于好评,支持自动生成代码。生产环境安全性很重要,但对于调试认证过期问题,希望腾讯云平台可以改进、优化调试认证流程。

最后,希望这个开发版可以开发出更多好的应用,希望自己的实践可以为之后的人提供一些思路。

联系方式

邮箱:gzr2008@vip.qq.com
个人主页 WEB PAGE: http://www.ranxiaolang.com | 博客 BLOG: https://nature1995.club

坚持原创技术分享,打赏一杯咖啡钱呗。Donate click here.