开关灯辅助工具+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

暂无评论

相关推荐

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

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

2023-06-22 -  设计经验 代理服务 技术支持 采购服务

利用LESS简单实现网页一键换肤功能, 爱星物联网页换肤原来如此简单

本期分享的内容介绍了用变量来实现快速换肤,目的在于让大家快速适应新品方案的开发,更多资料可从安信可科技官网上获取。

2024-06-23 -  设计经验 代理服务 技术支持 采购服务

【经验】安信可科技LoRa模块Ra-08的固件烧录教程及指令说明示例

Ra-08透传固件主要功能有,设置发送或者接收模式,配置各个射频参数,设置本地地址与发送的目标地址,设置进入睡眠模式等。

2023-05-02 -  设计经验 代理服务 技术支持 采购服务

安信可科技(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  - 安信可科技  - 选型指南 代理服务 技术支持 采购服务

【IC】安信可科技发布2款UWB模组BU03和BU04,实现室内厘米级高精度测距定位

BU03和BU04这两款定位模组使用的芯片都是一样的,不同的是BU03是没有带主控MCU的,并且体积小巧,可以集成到自己的主板上,用主芯片直接驱动。

2024-10-11 -  产品 代理服务 技术支持 采购服务

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

提供安信可科技无线模组选型,封装: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

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

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

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

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

2023-09-20 -  产品 代理服务 技术支持 采购服务

安信可科技AT指令

描述- 本资料提供了一系列针对特定元器件的AT指令,用于控制和配置设备。内容包括通用指令、开发板产测指令、PDOA算法专用指令、TWR算法专用指令以及算法切换指令。这些指令涵盖了设备状态查询、配置修改、功能测试和算法选择等方面,旨在帮助用户高效地管理和操作该元器件。

2024/8/7  - 安信可科技  - 开发环境(软件/固件) 代理服务 技术支持 采购服务

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

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

2024-05-08 -  产品

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

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

2024-08-22 -  产品 代理服务 技术支持 采购服务

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

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

2023-07-30 -  原厂动态 代理服务 技术支持 采购服务

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

目录- 2.4G模组   

型号- 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  - 安信可科技  - 选型指南 代理服务 技术支持 采购服务

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

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

2024-07-04 -  产品 代理服务 技术支持 采购服务

安信可科技推出支持接入Matter协议的Ai-WB2系列模组,硬件封装兼容,实现智能家居互联互通

Ai-WB2系列模组作为安信可科技践行“大连接”理念的首款产品,将支持接入Matter协议;将支持Google Matter;已支持使用苹果Apple设备进行配对和控制;兼容的硬件封装,帮助企业快速进行Matter新产品的迭代。

2022-12-15 -  原厂动态 代理服务 技术支持 采购服务
展开更多

电子商城

查看更多

品牌:安信可科技

品类: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

品牌:安信可科技

品类:蓝牙模组

价格:¥4.6300

现货: 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

收藏
收藏当前页面