开关灯辅助工具+ESP12F模组,如何实现通过一个手机APP控制寝室灯开关

2024-07-06 安信可科技
ESP12F模组,安信可科技 ESP12F模组,安信可科技 ESP12F模组,安信可科技 ESP12F模组,安信可科技

01 介绍

本项目要实现的是一个通过手机APP控制寝室灯开关的辅助工具。


项目框图如下图所示。

实现原理

手机和本模块都接入同一个wifi网络,手机端发送命令,本模块执行相应的命令。

开关灯,通过舵机来进行实现。


02 硬件设计

2.1 主控

ESP8266串口WIFI ESP-12F
ESP8266-12F是ESP8266-12的增强版。

2.2 原理图设计

2.2.1 控制板

本项目实际上只需要一个GPIO口来控制舵机即可。

将其他的引脚引入是为了后续可能扩展其他功能使用。

2.2.2 电源板

ESP12F模组3.3v供电,舵机5v供电。

使用了一片AMS1117-3.3v和一片AMS1117-5v芯片,实现12v至3.3v和5v的转换。


( 由于寝室开关座子附近有一个插座,所以就直接找了一个输入220v输出12v点的电源线,作为电源板的输入电源 )


2.3 PCB设计

2.3.1 控制板PCB

需要注意ESP12F模组天线部分的布局,与周围的PCB要有大于5mm的间距。

2.3.2 电源板PCB


03 软件设计  

3.1 控制程序

开发环境使用的是Arduino IDE。


要实现的功能有两大块:舵机的控制、UDP网络通信

WiFI-UDP通信参考:ESP8266 – WiFiUDP库 – 太极创客 (taichi-maker.com)


通信协议较为简单,命令长度为2个字节,第1个字节为固定值0xff,第2个字节为相应的控制码( 0x00: 关灯,0x01开灯 )


通信的安全性,在通信过程中并没有做握手、认证等处理。通信用户的有效性是通过wifi密码来鉴别的( 只有成功连接wifi,才可以控制灯的开关 )。



#include <ESP8266WiFi.h>
#include <WiFiUdp.h> 
typedef unsigned char  u8;
typedef unsigned short u16;
typedef unsigned int   u32;
/*********************** 舵机相关 ************************/
// 连接舵机的引脚
#define STEER_PIN 13
typedef enum SWITCH_STATE{
  SWITCH_ON,
  SWITCH_OFF
}SWITCH_STATE;

typedef struct SWITCH_CONTROL{
  u16          switch_on;
  u16          switch_off;
  SWITCH_STATE switch_state;
}SWITCH_CONTROL;

void Steer_Init_PWM(){
  pinMode(STEER_PIN,OUTPUT);
}
/**
 * 根据pwm高电平时间(us)控制舵机
 */
void Steer_SetAngle_PWM(u16 pwm) {
  u8 index = 0;
  // 控制舵机转动
  for(index = 0;index<10;index++){
    digitalWrite(STEER_PIN,HIGH);
    delayMicroseconds(pwm);
    digitalWrite(STEER_PIN,LOW);
    delayMicroseconds(20000 - pwm);
  }
}

SWITCH_CONTROL switch_contrl = {
  .switch_on    = 2300,
  .switch_off   = 1400,
  .switch_state = SWITCH_OFF
};

void Change_Switch_State( u8 switch_state ) {
  if( switch_state == SWITCH_ON){
    Steer_SetAngle_PWM(switch_contrl.switch_on);
    switch_contrl.switch_state = SWITCH_ON;
  }else if(switch_state == SWITCH_OFF){
    Steer_SetAngle_PWM(switch_contrl.switch_off);
    switch_contrl.switch_state = SWITCH_OFF;
  }else{
    
  }
}
/*******************************************************/

/*********************** WIFI相关 ***********************/
typedef enum WIFI_STATE{
  WIFI_OK,
  WIFI_ERROR,
  UDP_OK,
  UDP_ERROR
}WIFI_STATE;

typedef enum USER_CMD {
  CMD_ERROR,
  CMD_SWITCH_ON,
  CMD_SWITCH_OFF
}USER_CMD;

#define UDP_PORT  6666
#define BUF_LEN   20

const char* ssid   = "xxxxx";   //wifi name
const char* passwd = "xxxxx";//wifi passwd

// buf
unsigned char udp_buf[BUF_LEN] = {0};

WiFiUDP Udp;

u8 WIFI_Init(const char* wifi_ssid, const char* wifi_passwd){
  u8 counter = 0;
  WiFi.begin(wifi_ssid, wifi_passwd);

  while (WiFi.status() != WL_CONNECTED) {
    counter++;
    delay(500);
    //10秒后如果还是连接不上,就判定为连接超时
    if (counter > 20) return WIFI_ERROR;
  } 
  return WIFI_OK;
}

u8 UDP_Init(u16 port) {
  if(Udp.begin(port)){  //启动Udp监听服务
    return UDP_OK;
  }else {
    return UDP_ERROR;
  }
}

u8 Get_UDP_Packet(unsigned char * buf,u8 buf_len){
  int packetSize = Udp.parsePacket();//获得解析包
  if(Udp.available()){
    return Udp.read(buf, buf_len);
  }else{
    return 0;
  }
}

/**
 *  定义报文格式
 *   1B   1B
 *  0xff  cmd 
 *  开关灯的cmd: 0x00:关灯 0x01:开灯
*/
u8 Parse_UDP_Packet(unsigned char * data,u8 data_len){
  if( data[0] != 0xff ) return CMD_ERROR;
  if( data[1] == 0x00 ) return CMD_SWITCH_OFF;
  else if( data[1] == 0x01 ) return CMD_SWITCH_ON;
  else return CMD_ERROR;
}

void Execute_Cmd(u8 cmd){
  switch( cmd ) {
    case CMD_SWITCH_ON:
      Change_Switch_State(SWITCH_ON);
      break;
    case CMD_SWITCH_OFF:
      Change_Switch_State(SWITCH_OFF);
      break;
    default:
      break;
  }
}
/*******************************************************/

void setup() {
  Serial.begin(9600); // 波特率9600
  Steer_Init_PWM();
  if(WIFI_Init(ssid,passwd) == WIFI_OK) {
    Serial.println(WiFi.localIP());  // 打印ip地址
    if( UDP_Init(UDP_PORT) ) {
      Serial.printf("UDP监听端口:%d\r\n",UDP_PORT);
    }else{
      Serial.println("UDP Init Failed"); 
    }
  }else{
    Serial.println("WIFI Init Failed"); 
  }


void loop() {
  u8 datalen = Get_UDP_Packet(udp_buf,BUF_LEN);
  if( datalen == 0 ) return ;
  u8 user_cmd = Parse_UDP_Packet(udp_buf,datalen);
  if( user_cmd == CMD_ERROR ) return;
  Execute_Cmd(user_cmd);
}


3.2 手机APP程序

使用Flutter开发手机APP,实现遥控灯的开关。

界面设计较为简单,只有两个功能按键,分别对应灯的开与关。

APP工程代码:wa-kakalala/NanoClient: Flutter App (github.com)



04 外壳设计


05 结果展示

将辅助工具与灯座进行固定,使用的是纳米胶。( 直接粘在灯座上,不要粘在墙上-->直接导致墙皮脱落)


( 这里使用了一块黑色的废PCB板的原因,这个开关座子是一个双开开关,控制两个灯,粘上了一块板子将一个双开开关合成一个整体 )


06 附件

授权代理商:世强先进(深圳)科技股份有限公司
技术资料,数据手册,3D模型库,原理图,PCB封装文件,选型指南来源平台:世强硬创平台www.sekorm.com
现货商城,价格查询,交期查询,订货,现货采购,在线购买,样品申请渠道:世强硬创平台电子商城www.sekorm.com/supply/
概念,方案,设计,选型,BOM优化,FAE技术支持,样品,加工定制,测试,量产供应服务提供:世强硬创平台www.sekorm.com
集成电路,电子元件,电子材料,电气自动化,电机,仪器全品类供应:世强硬创平台www.sekorm.com
  • +1 赞 0
  • 收藏
  • 评论 0

本文由赵优秀转载自安信可科技,原文标题为:【电子DIY作品】开关灯辅助工具+ESP12F模组,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

评论

   |   

提交评论

全部评论(0

暂无评论

相关推荐

安信可星闪模组专属ComboAT初体验:点对点连接实现透传,强抗干扰、超低延迟、超远通讯

Ai-BS21-32S是由深圳市安信可科技有限公司开发的蓝牙星闪模块。本文中安信可科技将为大家介绍星闪模组Ai-BS21-32S的使用方法。

设计经验    发布时间 : 2024-04-10

在爱星物联,如何上传OTA固件,如何对不同类型的OTA进行升级?

安信可科技讲解如何上传OTA固件和不同类型的OTA升级方式,从模组日志和APP上如何查看OTA是否升级成功,开放平台查看升级记录。

设计经验    发布时间 : 2024-07-03

爱星物联——今天给毛坯网页做了精装修

安信可科技给免费分享如何用css调整样式美化页面,增强用户视觉体验。

设计经验    发布时间 : 2024-07-01

安信可科技(Ai-Thinker)物联网专用模组&天线选型指南

目录- LoRa product    Radar product    WiFi+Bluetooth products    2.4G Series Module    GPS Series Module    UWB & 4G series module    GPRS series module    Offline Voice Module Series    Antenna   

型号- RA-01SH,PB-02-KIT,RTL8720 SERIES,AI-WB1,AI-WB2,AI-WB2-M1,HI-07S-KIT,TB-02-KIT,AI-WB2-12F-KIT,AI-WB2-13-KIT,AI-WB2-13U,AI-WB2-01S,A9,SX1268,RA-01SC,TG-02-KIT,PB SERIES,RTL8710BX SERIES,GPS SERIES,AI-WB2-01M,VC-01-KIT,HI-12F,TB SERIES,HI-12F-KIT,BW16,AI-WB2 SERIES,BW15,BW14,TG-12F-KIT,BW12,RTL8710BX,A9G,HI SERIES,AI-WB2-12S,PB-03,SX126X,AI-WB1-32S,HI-07S,HI-07SL-KIT,PB-01,PB-02,RG-02,AI-WB1-32S-KIT,RTL8720DN,AI-WB2-12F,TG-01M,AI-WB1SERIES,NF-05,NF-02-PA,NF-04,NF-03,BW16-KIT,NF-01-S,SX127X,TB-03F-KIT,LLCC68,TG-02,AI-WB2-07S,NF-01-N,NF-02-PE,AI-WB1-32S-CAM,GP-02-KIT,AI-WB2-M1-I,TG-02M-KIT,TG-02M,RA-08-KIT,GP-01,GP-02,CA-01-KITC,CA-01,2.4G SERIES,AI-WB2-13,PB-03F,PB-03M,TG SERIES,TB-04-KIT,TB-05,GPRS SERIES,TB-04,TG-02F,TB-02,RTL8720DN SERIES,TG-02F-KIT,4G SERIES,PB-03M-KIT,AI-WB2-32S-KIT,BU01,RA-01,PB-03-KIT,ESP32-G,RTL8720,RA-08H,NF-04-MI,VC-02-KIT,NF-05-S,RA-01S,HI-12FL,RA-01H,HI-07SL,AI-WB2-32S,RA-01SCH,PB-01-KIT,RTL8720CF,TG-01M-KIT,TG-12F,AI-WB1-A1S,AI-WB1-12F,TB-03F,BW15-KIT,GPRS,UWB SERIES,GP-01-KIT,AI-WB1-12F-KIT,NODEMCU-BU01,RA-08H-KIT,RD-01,RA-02,RTL8720CF SERIES,RA-08,VC-02,VC-01,HI-12FL-KIT,PB-03F-KIT

选型指南  -  安信可科技  - 2023/09/19 PDF 中文 下载

安信可科技上线的LoRa模块Ra-01SCH-P,抗干扰性强,可支持长达10km的远距离传输

Ra-01SCH-P是安信可科技设计开发的LoRa系列模组。该模组用于超长距离扩频通信,其射频芯片LLCC68+主要采用 LoRa™远程调制解调器,用于超长距离扩频通信,抗干扰性强,能够最大限度降低电流消耗。

产品    发布时间 : 2024-08-22

安信可科技无线模组选型表

提供安信可科技无线模组选型,封装:DIP/SMD,尺寸:10.3mm*9.9mm*2.4(±0.2)mm-120.0mm*120.0mm*30.0mm,通信接口:UART/GPIO/ADC/PWM/I?C/SPI/Touch senser/PSRAM/SDIO/Duplex I²S/麦克风/扬声器,最大速率:2.5mW-100mW,参考距离:80m-5km,供电电压:1.9V-5.25V

产品型号
品类
空中速率(Kbps/Mbps)
尺寸(mm)
参考距离(m/km)
供电电压(V)
通信接口
天线形式
工作温度(℃)
最大速率(mW)
封装
NF-01-S
2.4G模组
250Kbps-2Mbps
28.6mm*15.3mm
240m
1.9V-3.6V
SPI
板载天线
-20℃~70℃
5mW
DIP-8

选型表  -  安信可科技 立即选型

【产品】安信可科技WIFI蓝牙二合一模块Ai-WB2系列通过各项性能测试,实测400-500米传输距离

天线作为无线信号辐射和接收的重要器件,有着不可替代的作用。一款天线设计完成后需要经过测试才能确定其性能是否符合设计要求。那么天线性能需要进行哪些性能测试呢?本文以安信可的Ai-WB2-12F模块为例,看看如何测试PCB天线的性能。

产品    发布时间 : 2023-09-20

安信可科技针对物联网设计通用型蓝牙模组符合BLE 5.0,智能手机Mesh组网,可对接天猫精灵

安信可科技针对物联网设计通用型的蓝牙模组,其功能强大、用途广泛。可以用于智能灯、智能插座、智能空调等其他智能家电。同时符合BLE 5.0及SIG Mesh规范,可直接通过智能手机组建Mesh网络,也可对接天猫精灵等智能音箱,适用于多种智能家居应用场景。

产品    发布时间 : 2024-07-04

【元件】安信可科技24G人体存在感应雷达模组Rd-01搭载博流BL602芯片+矽典微的S3KM111L芯片,适用于高精准度场景

安信可自主研发的24GHz雷达模组搭载博流BL602芯片+矽典微的S3KM111L芯片,不仅能够正常检测人体存在、移动及微动,还可以检测出人体完全静止状态,解决了传统PIR人体红外感应在人体处于静止状态时就无法检测的痛点。

产品    发布时间 : 2024-05-08

安信可科技(Ai-Thinker)2.4G模组选型表

描述- 2.4G系列模组是安信可科技有限公司自主设计开发的一系列模组。目前主要有进口,台产和邦定三个系列, 能够满足不同客户群体的需求。可广泛应用于各种物联网场合,适用于无线鼠标、无线遥控、体感设备、有源RFID、 NFC、低功耗自组网无线传感网节点等,是物联网应用的理想解决方案。

型号- NF-02-PA,NF-04,NF-03,NF-01-S,NF-02-SM,NF-04-MI,NF-01-N,NF-02-PE

选型指南  -  安信可科技  - 2017/6/10 PDF 中文 下载

安信可科技Rd-04低成本低功耗雷达模组赋能照明行业,适合嵌入式隐蔽设计

安信可科技Rd-04是基于富奥星的XBR818芯片而设计的微动、运动感知模组。其中心频率为10.525GHz,基于多普勒雷达原理,芯片内置算法,无需外挂单片机,超高性价比。主要针对低成本或低功耗的应用领域,该产品定位为微动、运动感知场景应用,适合壁挂或吸顶安装。

厂牌及品类    发布时间 : 2023-07-30

【经验】如何将安信可科技的PB-03F模块升级DTM固件进行认证测试?

使用安信可科技的蓝牙模组PB-03F进行产品设计后期,部分产品需要连同PB-03F模块一同送去认证机构进行认证测试,此时需要给蓝牙模组PB-03F烧录特殊的测试固件DTM。本文指导如何给PB-03F模块烧写DTM固件。

设计经验    发布时间 : 2023-06-22

【经验】解析Wi-Fi+蓝牙模组Ai-WB2系列二次开发如何定位分析代码里面的静态内存和动态内存情况

本文安信可科技探讨了Ai-WB2系列二次开发如何定位分析代码里面的静态内存和动态内存情况,并给出了具体的代码变动情况及操作步骤。首先打开eclipse工程,导入bl_iot_sdk,这次我们使用的工程aws_iot_core来读取下代码所使用的静态内存大小。

设计经验    发布时间 : 2023-01-14

孩子看电视距离太近了?用安信可科技Rd-03E雷达模组做个距离提醒!

模组通过TTL直接与电脑通信,上位机通过Python开发实现,当检测到孩子趴在电脑前距离太近,则会播放语音(“距离太近了”),以便提醒孩子自己往后挪。如果超过3次,孩子还不动,则直接锁定屏幕,另外还添加了MQTT服务器连接,将每次检测到的距离信息传到MQT服务器上,方便和其他设备联动。来看看是怎么实现的?

应用方案    发布时间 : 2024-06-23

展开更多

电子商城

查看更多

只看有货

品牌:安信可科技

品类:WiFi模块

价格:¥9.3800

现货: 51

品牌:安信可科技

品类:WiFi+蓝牙模块

价格:¥8.5000

现货: 20

品牌:安信可科技

品类:WiFi模块

价格:¥21.8800

现货: 18

品牌:安信可科技

品类:WiFi模块

价格:¥22.1300

现货: 12

品牌:安信可科技

品类:NB-IoT模组

价格:¥17.7500

现货: 10

品牌:安信可科技

品类:Wi-Fi 6+BLE5.3模组

价格:¥16.2500

现货: 10

品牌:安信可科技

品类:雷达模组

价格:¥12.7500

现货: 5

品牌:安信可科技

品类:WiFi+蓝牙模块

价格:¥9.6400

现货: 5

品牌:安信可科技

品类:WIFI模块

价格:¥10.2500

现货: 5

品牌:安信可科技

品类:LoRa模组

价格:¥19.7500

现货: 5

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

暂无此商品

海量正品紧缺物料,超低价格,限量库存搜索料号

服务

查看更多

TFT LCD液晶显示屏/模组定制

可定制显示屏的尺寸0.96”~15.6”,分辨率80*160~3840*2160,TN/IPS视角,支持RGB、MCU、SPI、MIPI、LVDS、HDMI接口,配套定制玻璃、背光、FPCA/PCBA。

最小起订量: 1000 提交需求>

LED组件/LED传感/UV模组定制

可定制LED组件/LED传感/UV模组的电压、电流、波长等性能参数,电压:3-24V,,电流:30-3500mA,波长:270-940nm;材质:食品级POM,阻燃PC;防水等级:IP20-IP68。

最小起订量: 1000 提交需求>

世强和原厂的技术专家将在一个工作日内解答,帮助您快速完成研发及采购。
我要提问

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

研发客服
商务客服
服务热线

联系我们

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

投诉与建议

E-mail:claim@sekorm.com

商务合作

E-mail:contact@sekorm.com

收藏
收藏当前页面