先准备几件事,
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)00 ,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_ConvertedValueLocal二、//不准确 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这是一个修改标志(表示需要更新时间)
这可以读取门禁卡的卡号;
接下来,你可以用这个模板做一些你喜欢的作品。我相信这会对一些人有所帮助,
有问题可以联系我;
如有不足,请批评指正,关注;