首先准备几个东西,
1,STM32F103ZET6的板子
2,温湿度模块
3,OLED显示屏
4,RFID门禁卡
5,esp8266wifi模块
然后百度下载keil5
然后安装STM32F1的芯片库,在下方链接,安装即可
链接:https://pan.baidu.com/s/1peDh4iBAeh2qj7DvadlDbA?pwd=lkjh
提取码:lkjh
这里再提供一个MDK注册机
链接:https://pan.baidu.com/s/1OtszF1flLWZKuGeEs3S3Lg?pwd=lkjh
提取码:lkjh
然后下载工程
链接:https://pan.baidu.com/s/1he40FEjCn6BhOCT4Jbl3xQ?pwd=lkjh
提取码:lkjh
现在就可以来编程了,首先把我提供的工程打开进入maim.h库进行信息修改(前提是有百度云或者阿里云、腾讯云的账号,并且创建主题)如果不会注册的话可以看我前面(手机APP+MQTT)这个文章有写,
然后你就会看到
#ifndef _MAIM_H_
#define _MAIM_H_
//下面是设备ID和密码(私有服务器才需要的),在onenet平台上面的MQTT连接没用过,只是用它的MQTT协议包
//杰叔叔服务器上自己创建的设备
//#define PROID "f6d61178afa1003ac5d41dc9ae10f0c6" //设备ID
//#define AUTH_INFO "123123" //设备密码
//腾讯云服务器上自己创建的设备
//#define PROID "S2ME0J3F8Xtest2;12010126;35978;1656734400000" //设备ID
//#define AUTH_INFO "b9754b528f07a8b7d3ee37f24ac19c3e777d2eb1d7ce229a8526b25ddcc201e9;hmacsha256" //设备密码
//百度云服务器上自己创建的设备
#define PROID "thingidp@abqzs|MT_A|0|MD5" //设备ID
#define AUTH_INFO "5a2d5186afb852c3f55e287592" //设备密码
#define DEVID "tes2t2" //基本用不到,随便填
#define ESP8266_WIFI_INFO "AT+CWJAP=\"1111\",\"6980061111\"\r\n"
//如果连接的协议是ws或wss的,需要在服务器地址后面加上/mqtt,如果不是前面这两个协议的地址,则直接连接服务器地址即可
//#define ESP8266_ONENET_INFO "AT+CIPSTART=\"TCP\",\"t.yoyolife.fun\",1883\r\n" //杰叔叔服务器地址
//#define ESP8266_ONENET_INFO "AT+CIPSTART=\"TCP\",\"amapfkk.iot.gz.baidubce.com\",1883\r\n" //EMQX服务器地址
//#define ESP8266_ONENET_INFO "AT+CIPSTART=\"TCP\",\"broker.emqx.io\",1883\r\n" //EMQX服务器地址
//#define ESP8266_ONENET_INFO "AT+CIPSTART=\"TCP\",\"S2ME0J3F8X.iotcloud.tencentdevices.com\",1883\r\n" //腾讯云服务器地址
#define ESP8266_ONENET_INFO "AT+CIPSTART=\"TCP\",\"abfeqzs.iot.gz.bauiduce.com\",1883\r\n" //百度云服务器地址
#define CMD_TOPIC_PREFIX "LED"//主题
#endif
所有的MQTT信息在这里修改
然后可以去配置自己的模拟输入了
void ADC_Data(void)
{
u16 adcx1,adcx2,adcx3,adcx4,adcx5;
adcx1=Get_Adc_Average(0,25);
// LCD_ShowxNum(156,50,adcx1,4,16,0);//显示ADC的值
ADC_ConvertedValueLocal1 =(float)adcx1*(3.3/4095);
// LCD_ShowxNum(156,70,(u16)ADC_ConvertedValueLocal1,1,16,0);//显示电压值
// LCD_ShowxNum(172,70,(u16)(ADC_ConvertedValueLocal1*1000)%1000 ,3,16,0X80);
adcx2=Get_Adc_Average(10,25);
ADC_ConvertedValueLocal2 =(float)6.0*adcx2*(3.3/4095);
adcx3=Get_Adc_Average(11,25);
ADC_ConvertedValueLocal3 =(float)adcx3*(3.3/4095);
adcx4=Get_Adc_Average(12,25);
ADC_ConvertedValueLocal4 =(float)adcx4*(3.3/4095);
adcx5=Get_Adc_Average(1,25);
ADC_ConvertedValueLocal5 =(float)adcx5*(3.3/4095);
printf("ADC0=%f\r\n",ADC_ConvertedValueLocal1);
printf("ADC1=%f\r\n",ADC_ConvertedValueLocal2);//不准
printf("ADC2=%f\r\n",ADC_ConvertedValueLocal3);
printf("ADC3=%f\r\n",ADC_ConvertedValueLocal4);
printf("ADC4=%f\r\n\r\n",ADC_ConvertedValueLocal5);
}
这里的通道2不是很准,可以避开用其他的,甚至可以配置更多,当然你厉害的也可以自己修复他;
下面就是RTC的配置了,我设置了一个变量可以恢复初始化,一般我们把代码烧录进去他就会一直技术,所以为了方便修改大家可以修改这两个地方就可以修改时间了,
xgbz这是一个修改标志(表示需要更新时间)
下面这个就可以读取门禁卡的卡号;
接下来大家就可以利用这个模板做一些自己喜欢的作品,我相信这会对部分人会有所帮助的,
有任何问题可以联系我;
如有不足之处请各位大佬批评指正,关注一下吧;