22年11月填旧坑
项目地址:myhome: 服务器终端和微信小程序 (gitee.com)
物联网台灯小项目——ILamp
1、主要硬件,STM32,ESP8266;
2、3D打印的外壳,淘宝金属灯杆、灯罩、配重块;
3、喷涂了白色油漆外观,颜值8/10;
4、小程序+web后台。
5、台灯mqtt连接到服务器。服务器使用mosquitto,搭配python的django转发台灯的状态和控制给微信小程序。用户使用微信小程序和台灯交互;
6、一个电容触摸开关;
7、提供三个USB接口的USB HUB;
8、共3块PCB;
9、添加protobuf协议;
10、提供一个光敏电阻,还未开发;
硬件
主控:STM32F042F4P6
联网:ESP-12S
稳压:RT9013-33GB
DC:LM2596S-3.3
灯珠:80~90Lm LED 冷暖光两种
日志——22.11.18
目前进度:
1、解决台灯触摸误触问题;
2、台灯联网运行一段时间后MQTT连接数据异常问题;
3、微信小程序实现用户注册、设备联网、引导添加设备、不同设备的不同控制协议;
4、后台需要实现用户数据库(用户信息,设备信息)、web前端、后台管理;
22.11.20 给单片机添加protobuf——nanopb
日志——22.11.18 微信你小程序绑定用户和设备
问题:设备初始化时需要联网,需要知道自己和哪一个用户ID绑定
拓展:可以使用ESP8266的AP模式,即ESP8266模拟一个WIFI,手机连接到WIFI后使用TCP Scoket进行通信。
参考:3、ESP8266入门(AT模式)——手机与ESP8266通信(AP模式)_haichuangdianzi的博客-CSDN博客_esp8266与手机通信
1、用户首次开机,单片机查找flash标志位,是初次使用,进入激活程序;
2、激活程序下面将ESP8266设置成AP模式,开放wifi和192.168.4.1的5050端口;
3、手机打开wifi连接到esp8266,然后使用微信提供的tcp接口连接到指定的IP端口,实现通信;
参考:TCPSocket | 微信开放文档 (qq.com) 以及 微信小程序创建tcp连接 - 简书 (jianshu.com)
4、通信时,不可以退出微信小程序,使用离线下的模式来将数据发送给ESP8266完成激活;
5、如果防呆模式激活,用户不需要操作数据,一键激活。
日志——22.11.18 后端记录用户数据
问题:解决用户注册登录,Django需要将用户数据存储起来并且将设备和用户绑定起来
1、这里可以使用Django自带的数据库即可,不需要多复杂;Django自带的数据是sqlite3;
在Django的setting.py文件中已经做好了设置:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
1、数据库相关:
Django数据库(SQlite)入门使用教程: https://blog.csdn.net/Gu_amber/article/details/122531578
manage.py ----- Django项目里面的工具,通过它可以调用django shell和数据库等。
settings.py ---- 包含了项目的默认设置,包括数据库信息,调试标志以及其他一些工作的变量。
urls.py ----- 负责把URL模式映射到应用程序。
在项目中,需要在一个实例中建立modes文件来链接数据库;
打开models.py 文件:添加:
from django.db import models
# Create your models here.
# 链接用户数据
class User(models.Model):
s_PhoneNumber = models.CharField(default='',max_length=11)
参考以前的文章:
使用python建立一个网站:笔记4 操作django自带的数据库sqlite_田小呱的博客-CSDN博客
Django生成迁移文件No changes detected报错解决方法
日志——22.11.18 protobuf数据传输和存储
问题:单片机的用户数据等信息保存在flash上,保存数据的格式使用protobuf,传输数据的结构也使用protobuf格式
参考:
python中使用 protocol buffer(Protobuf)_whatday的博客-CSDN博客
————未完待续