找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10101|回复: 30
收起左侧

STM32智能家居控制系统程序

  [复制链接]
ID:428407 发表于 2020-1-8 12:33 | 显示全部楼层 |阅读模式
一、 自动模式
1.温湿度、气压、烟雾浓度、一氧化碳浓度、光照强度检测;
2.当光照强度大于所设定的阈值时,会自动打开客厅灯和窗帘(步进电机);
3.当温湿度、气压、烟雾浓度、一氧化碳浓度任意的数据大于所设定的阈值时,会启动声光报警(蜂鸣器)

二、手动模式
1.上位机(机智云)的APP 可以控制窗帘和客厅灯的开关,可以调节各个传感器的阈值;
2.传感器所检测到的数据会实时传送到上位机(机智云)的APP显示

制作出来的实物图如下:
51hei图片20200108123123.jpg 51hei图片20200108123132.jpg 51hei图片20200108123141.jpg

单片机源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "timer.h"
  6. #include "ADC.h"
  7. #include "usart3.h"
  8. #include "key.h"
  9. #include "rtc.h"
  10. #include "oled.h"
  11. #include "stmflash.h"
  12. #include "math.h"
  13. #include "dht11.h"
  14. #include "bmp280.h"
  15. #include "exti.h"
  16. #include "gizwits_product.h"

  17. u8 buff[30];//参数显示缓存数组
  18. u8 count;
  19. dataPoint_t currentDataPoint;//云端数据点
  20. u8 wifi_sta;//wifi连接状态标志
  21. u8 mode=0;//模式控制自动和手动
  22. u8 NTP_sta=0;//网诺时间获取状态
  23. u8 display_contrl=0;
  24. u8 curtain_flag=0;
  25. u8 last_curtain_flag=0;

  26. extern u8 DHT11_Temp,DHT11_Hum;                //温湿度
  27. u16 Pre;                                                        //气压检测值
  28. u16 gz_value;                                                //光照检测值                       
  29. u16 m2_value;                                                //烟雾检测值
  30. u16 m7_value;                                                //一氧化碳检测值
  31. u16 m135_value;                                                //空气质量检测值

  32. u16 A_DHT11_Temp=25;                                //温度阈值
  33. u16 A_DHT11_Hum=50;                                        //湿度阈值
  34. u16 A_pre=1500;                                                //气压阈值
  35. u16 A_gz_value=2000;                                //光照强度阈值
  36. u16 A_m2_value=1500;                                //烟雾阈值
  37. u16 A_m7_value=2000;                                //一氧化碳阈值
  38. u16 A_m135_value=4000;                                //空气质量阈值
  39. /************************************************
  40. ALIENTEK精英STM32开发板实验1
  41. 跑马灯实验
  42. 技术支持:www.openedv.com
  43. 淘宝店铺:http://eboard.taobao.com
  44. 关注微信公众平台微信号:"正点原子",免费获取STM32资料。
  45. 广州市星翼电子科技有限公司  
  46. 作者:正点原子 @ALIENTEK
  47. ************************************************/
  48. //协议初始化
  49. void Gizwits_Init(void)
  50. {       
  51.         TIM3_Int_Init(9,7199);//1MS系统定时
  52.     usart3_init(9600);//WIFI初始化
  53.         memset((uint8_t*)¤tDataPoint, 0, sizeof(dataPoint_t));//设备状态结构体初始化
  54.         gizwitsInit();//缓冲区初始化
  55. }

  56. //数据采集
  57. void userHandle(void)
  58. {
  59.         currentDataPoint.valueLED=!LED0;
  60.         currentDataPoint.valueCurtain=curtain_flag;
  61.         currentDataPoint.valueTemp=DHT11_Temp;
  62.         currentDataPoint.valueHum=DHT11_Hum;
  63.         currentDataPoint.valuePre=Pre;
  64.         currentDataPoint.valueGZ_Val=gz_value;
  65.         currentDataPoint.valueMQ2_Val=m2_value;
  66.         currentDataPoint.valueMQ7_Val=m7_value;
  67.         currentDataPoint.valueMQ135_Val=m135_value;
  68.        
  69. }

  70. void Get_Data(u16 count);//获取传感器数据
  71. void WIFI_Contection(u8 key);//WiFi连接控制
  72. void Canshu_Change(u8 key);//系统参数调节
  73. void Mode_Change(u8 key);//模式切换
  74. void BUJING_Cotrol(u8 mode,u16 time,u16 count);
  75. int main(void)
  76. {       
  77.         u8 t=0;
  78.         int key_value;                //按键值
  79.         delay_init();            //延时函数初始化
  80.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置中断优先级分组为组2:2位抢占优先级,2位响应优先级
  81.         uart_init(115200);                         //串口初始化为115200
  82.         Adc1_Channe_Init();                        //ADC通道初始化
  83.         KEY_Init();                                        //按键引脚初始化
  84.         //EXTIX_Init();
  85.         bmp280Init();
  86.         while(DHT11_Init());       
  87.         LED_Init();                                          //初始化与LED连接的硬件接口
  88.         OLED_Init();                                //OLED初始化
  89.         OLED_Clear();                                //OLED清屏
  90.         Gizwits_Init();               
  91.        
  92.         STMFLASH_Read(FLASH_SAVE_ADDR+10,&A_DHT11_Temp,2);        //开机读取温度阈值
  93.         STMFLASH_Read(FLASH_SAVE_ADDR+12,&A_DHT11_Hum,2);        //开机读取湿度阈值
  94.         STMFLASH_Read(FLASH_SAVE_ADDR+14,&A_pre,2);                        //开机读取气压阈值
  95.         STMFLASH_Read(FLASH_SAVE_ADDR+18,&A_gz_value,2);        //开机读取光照强度阈值
  96.         STMFLASH_Read(FLASH_SAVE_ADDR+20,&A_m2_value,2);        //开机读取烟雾阈值
  97.         STMFLASH_Read(FLASH_SAVE_ADDR+22,&A_m7_value,2);        //开机读取一氧化碳阈值
  98.         STMFLASH_Read(FLASH_SAVE_ADDR+24,&A_m135_value,2);        //开机读取空气质量阈值

  99.         while(1)
  100.         {
  101.                 Get_Data(0);
  102.                 if(gz_value<=A_gz_value&&mode==0)
  103.                 {
  104.                         LED0=0;
  105.                         curtain_flag=0;
  106.                 }else if(gz_value>A_gz_value&&mode==0){
  107.                         LED0=1;
  108.                         curtain_flag=1;
  109.                 }
  110.                 if(last_curtain_flag!=curtain_flag&&mode==0)
  111.                 {
  112.                         BUJING_Cotrol(curtain_flag,3,180);
  113.                         //                BUJING_Cotrol(curtain_flag,4,180);
  114.                         last_curtain_flag = curtain_flag;
  115.                 }
  116.                 if(last_curtain_flag!=currentDataPoint.valueCurtain&&mode==1)
  117.                 {
  118.                         BUJING_Cotrol(currentDataPoint.valueCurtain,3,270);
  119.                         curtain_flag = currentDataPoint.valueCurtain;
  120.                         last_curtain_flag = currentDataPoint.valueCurtain;
  121.                 }       
  122.                 if(mode==1)
  123.                 {
  124.                         LED0=!currentDataPoint.valueLED;
  125.                 }
  126.         //        if(Pre>=A_pre||m135_value<=A_m135_value||m2_value>=A_m2_value||m7_value>=A_m7_value)
  127.                 if(Pre>=A_pre||m135_value>=A_m135_value||m2_value>=A_m2_value||m7_value>=A_m7_value)
  128.                 {
  129.                         BEEP=        !BEEP;
  130.         //                BEEP=        1;
  131.                 }else BEEP = 0;

  132.                 key_value = KEY_Scan(0);
  133.                 if(key_value==3)
  134.                 {
  135.                         display_contrl++;
  136.                 }
  137.                 if(display_contrl%2==0&&t>=10)
  138.                 {
  139.                         OLED_ShowCHinese(0,0,0);
  140.                         OLED_ShowCHinese(16,0,2);
  141.                         sprintf((char*)buff,":%2dC",DHT11_Temp);
  142.                         OLED_ShowString(32,0,buff,16);        //显示温度   
  143.                         OLED_ShowCHinese(82,0,2);
  144.                         sprintf((char*)buff,":%2d%%",DHT11_Hum);
  145.                         OLED_ShowString(96,0,buff,16);//显示湿度       
  146.                        
  147.                         OLED_ShowCHinese(0,2,3);
  148.                         OLED_ShowCHinese(16,2,4);
  149.                         sprintf((char*)buff,":%2dpa     ",Pre);
  150.                         OLED_ShowString(32,2,buff,16);//显示气压
  151.                        
  152.                         OLED_ShowCHinese(0,4,5);
  153.                         OLED_ShowCHinese(16,4,6);
  154.                         OLED_ShowCHinese(32,4,7);
  155.                         OLED_ShowCHinese(48,4,8);
  156.                         sprintf((char*)buff,":%4dppm",gz_value);
  157.                         OLED_ShowString(64,4,buff,16);//显示光照强度
  158.                        
  159.                         OLED_ShowCHinese(0,6,9);
  160.                         OLED_ShowCHinese(16,6,10);
  161.                         OLED_ShowCHinese(32,6,11);
  162.                         OLED_ShowCHinese(48,6,12);
  163.                         sprintf((char*)buff,":%4dppm",m135_value);
  164.                         OLED_ShowString(64,6,buff,16);//显示空气质量
  165.                 }else if(display_contrl%2==1&&t>=10)
  166.                 {
  167.                         OLED_ShowCHinese(0,0,13);
  168.                         OLED_ShowCHinese(16,0,14);
  169.                         OLED_ShowCHinese(32,0,15);
  170.                         OLED_ShowCHinese(48,0,16);
  171.                         sprintf((char*)buff,":%4dppm",m2_value);
  172.                         OLED_ShowString(64,0,buff,16);//显示M2数据
  173.                        
  174.                         OLED_ShowCHinese(0,2,17);
  175.                         OLED_ShowCHinese(16,2,18);
  176.                         OLED_ShowCHinese(32,2,19);
  177.                         OLED_ShowCHinese(48,2,20);
  178.                         sprintf((char*)buff,":%4dppm",m7_value);
  179.                         OLED_ShowString(64,2,buff,16);//显示M7数据
  180.                        
  181.                         OLED_ShowCHinese(0,4,5);
  182.                         OLED_ShowCHinese(16,4,6);
  183.                         OLED_ShowCHinese(32,4,7);
  184.                         OLED_ShowCHinese(48,4,8);
  185.                         sprintf((char*)buff,":%4dppm",gz_value);
  186.                         OLED_ShowString(64,4,buff,16);//显示光照强度
  187.                        
  188.                         OLED_ShowCHinese(0,6,9);
  189.                         OLED_ShowCHinese(16,6,10);
  190.                         OLED_ShowCHinese(32,6,11);
  191.                         OLED_ShowCHinese(48,6,12);
  192.                         sprintf((char*)buff,":%4dppm",m135_value);
  193.                         OLED_ShowString(64,6,buff,16);//显示M135数据
  194.                 }

  195.                 userHandle();                                        //用户数据采集
  196.                 gizwitsHandle((dataPoint_t *)¤tDataPoint);//机智云协议处理

  197.                 WIFI_Contection(key_value);//WiFi连接控制
  198.                 Canshu_Change(key_value);
  199.                
  200.                 t++;
  201.                 delay_ms(100);
  202.         }
  203. }

  204. void WIFI_Contection(u8 key)//WiFi连接控制
  205. {
  206.         if(key==4)
  207.         {
  208.                 printf("WIFI进入AirLink连接模式\r\n");
  209.                 gizwitsSetMode(WIFI_AIRLINK_MODE);//Air-link模式接入
  210.         }                       
  211.         if(key==1)
  212.         {  
  213.                
  214.                 printf("WIFI复位,请重新配置连接\r\n");
  215.                 gizwitsSetMode(WIFI_RESET_MODE);//WIFI复位
  216.         }
  217.        
  218. }

  219. void Canshu_Change(u8 key)
  220. {
  221.         u8 obj=7;
  222.         if(key==2)
  223.         {
  224.                 BEEP=0;
  225.                 OLED_Clear();
  226.                 while(1)
  227.                 {
  228.                         key = KEY_Scan(0);
  229.                         if(key==2)
  230.                         {
  231.                                 obj++;
  232.                                 if(obj>=8)
  233.                                 {
  234.                                         obj=0;
  235.                                 }
  236.                         }
  237.                         sprintf((char *)buff,"Working md:%4d",mode);
  238.                         OLED_ShowString(8,0,buff,12);
  239.                         sprintf((char *)buff,"A_Temp    :%4d",A_DHT11_Temp);
  240.                         OLED_ShowString(8,1,buff,12);
  241.                         sprintf((char *)buff,"A_Hum     :%4d",A_DHT11_Hum);
  242.                         OLED_ShowString(8,2,buff,12);
  243.                         sprintf((char *)buff,"A_pre     :%4d",A_pre);
  244.                         OLED_ShowString(8,3,buff,12);
  245.                         sprintf((char *)buff,"A_gz_val  :%4d",A_gz_value);
  246.                         OLED_ShowString(8,4,buff,12);
  247.                         sprintf((char *)buff,"A_m2_val  :%4d",A_m2_value);
  248.                         OLED_ShowString(8,5,buff,12);
  249.                         sprintf((char *)buff,"A_m7_val  :%4d",A_m7_value);
  250.                         OLED_ShowString(8,6,buff,12);
  251.                         sprintf((char *)buff,"A_m135_val:%4d",A_m135_value);
  252.                         OLED_ShowString(8,7,buff,12);
  253.                         if(obj==0)
  254.                         {
  255.                                 OLED_ShowString(0,0," ",12);
  256.                                 OLED_ShowString(0,1,">",12);
  257.                                 OLED_ShowString(0,2," ",12);
  258.                                 OLED_ShowString(0,3," ",12);
  259.                                 OLED_ShowString(0,4," ",12);
  260.                                 OLED_ShowString(0,5," ",12);
  261.                                 OLED_ShowString(0,6," ",12);
  262.                                 OLED_ShowString(0,7," ",12);
  263.                         }
  264.                         if(obj==1)
  265.                         {
  266.                                 OLED_ShowString(0,0," ",12);
  267.                                 OLED_ShowString(0,1," ",12);
  268.                                 OLED_ShowString(0,2,">",12);
  269.                                 OLED_ShowString(0,3," ",12);
  270.                                 OLED_ShowString(0,4," ",12);
  271.                                 OLED_ShowString(0,5," ",12);
  272.                                 OLED_ShowString(0,6," ",12);
  273.                                 OLED_ShowString(0,7," ",12);
  274.                         }
  275.                         if(obj==2)
  276.                         {
  277.                                 OLED_ShowString(0,0," ",12);
  278.                                 OLED_ShowString(0,1," ",12);
  279.                                 OLED_ShowString(0,2," ",12);
  280.                                 OLED_ShowString(0,3,">",12);
  281.                                 OLED_ShowString(0,4," ",12);
  282.                                 OLED_ShowString(0,5," ",12);
  283.                                 OLED_ShowString(0,6," ",12);
  284.                                 OLED_ShowString(0,7," ",12);
  285.                         }
  286.                         if(obj==3)
  287.                         {
  288.                                 OLED_ShowString(0,0," ",12);
  289.                                 OLED_ShowString(0,1," ",12);
  290.                                 OLED_ShowString(0,2," ",12);
  291.                                 OLED_ShowString(0,3," ",12);
  292.                                 OLED_ShowString(0,4,">",12);
  293.                                 OLED_ShowString(0,5," ",12);
  294.                                 OLED_ShowString(0,6," ",12);
  295.                                 OLED_ShowString(0,7," ",12);
  296.                         }
  297.                         if(obj==4)
  298.                         {
  299.                                 OLED_ShowString(0,0," ",12);
  300.                                 OLED_ShowString(0,1," ",12);
  301.                                 OLED_ShowString(0,2," ",12);
  302.                                 OLED_ShowString(0,3," ",12);
  303.                                 OLED_ShowString(0,4," ",12);
  304.                                 OLED_ShowString(0,5,">",12);
  305.                                 OLED_ShowString(0,6," ",12);
  306.                                 OLED_ShowString(0,7," ",12);
  307.                         }
  308.                         if(obj==5)
  309.                         {
  310.                                 OLED_ShowString(0,0," ",12);
  311.                                 OLED_ShowString(0,1," ",12);
  312.                                 OLED_ShowString(0,2," ",12);
  313.                                 OLED_ShowString(0,3," ",12);
  314.                                 OLED_ShowString(0,4," ",12);
  315.                                 OLED_ShowString(0,5," ",12);
  316.                                 OLED_ShowString(0,6,">",12);
  317.                                 OLED_ShowString(0,7," ",12);
  318.                         }
  319.                         if(obj==6)
  320.                         {
  321.                                 OLED_ShowString(0,0," ",12);
  322.                                 OLED_ShowString(0,1," ",12);
  323.                                 OLED_ShowString(0,2," ",12);
  324.                                 OLED_ShowString(0,3," ",12);
  325.                                 OLED_ShowString(0,4," ",12);
  326.                                 OLED_ShowString(0,5," ",12);
  327.                                 OLED_ShowString(0,6," ",12);
  328.                                 OLED_ShowString(0,7,">",12);
  329.                         }
  330.                         if(obj==7)
  331.                         {
  332.                                 OLED_ShowString(0,0,">",12);
  333.                                 OLED_ShowString(0,1," ",12);
  334.                                 OLED_ShowString(0,2," ",12);
  335.                                 OLED_ShowString(0,3," ",12);
  336.                                 OLED_ShowString(0,4," ",12);
  337.                                 OLED_ShowString(0,5," ",12);
  338.                                 OLED_ShowString(0,6," ",12);
  339.                                 OLED_ShowString(0,7," ",12);
  340.                         }
  341.                         if(obj==0)
  342.                         {
  343.                                 if(key==4)
  344.                                 {
  345.                                         A_DHT11_Temp+=1;
  346.                                 }
  347.                                 if(key==1)
  348.                                 {
  349.                                         A_DHT11_Temp-=1;
  350.                                 }
  351.                         }
  352.                         if(obj==1)
  353.                         {
  354.                                 if(key==4)
  355.                                 {
  356.                                         A_DHT11_Hum+=1;
  357.                                 }
  358.                                 if(key==1)
  359.                                 {
  360.                                         A_DHT11_Hum-=1;
  361.                                 }
  362.                         }
  363.                         if(obj==2)
  364.                         {
  365.                                 if(key==4)
  366.                                 {
  367.                                         A_pre+=20;
  368.                                 }
  369.                                 if(key==1)
  370.                                 {
  371.                                         A_pre-=20;
  372.                                 }
  373.                         }
  374.                         if(obj==3)
  375.                         {
  376.                                 if(key==4)
  377.                                 {
  378.                                         A_gz_value+=50;
  379.                                 }
  380.                                 if(key==1)
  381.                                 {
  382.                                         A_gz_value-=50;
  383.                                 }
  384.                         }
  385.                         if(obj==4)
  386.                         {
  387.                                 if(key==4)
  388.                                 {
  389.                                         A_m2_value+=50;
  390.                                 }
  391.                                 if(key==1)
  392.                                 {
  393.                                         A_m2_value-=50;
  394.                                 }
  395.                         }
  396.                         if(obj==5)
  397.                         {
  398.                                 if(key==4)
  399.                                 {
  400.                                         A_m7_value+=50;
  401.                                 }
  402.                                 if(key==1)
  403.                                 {
  404.                                         A_m7_value-=50;
  405.                                 }
  406.                         }
  407.                         if(obj==6)
  408.                         {
  409.                                 if(key==4)
  410.                                 {
  411.                                         A_m135_value+=50;
  412.                                 }
  413.                                 if(key==1)
  414.                                 {
  415.                                         A_m135_value-=50;
  416.                                 }
  417.                         }
  418.                         if(obj==7)
  419.                         {
  420.                                 if(key==4)
  421.                                 {
  422.                                         mode+=1;
  423.                                 }
  424.                                 if(key==1)
  425.                                 {
  426.                                         mode-=1;
  427.                                 }
  428.                         }
  429.                         if(key==3)
  430.                         {
  431.                                 STMFLASH_Write(FLASH_SAVE_ADDR+10,&A_DHT11_Temp,2);        //开机读取温度阈值
  432.                                 STMFLASH_Write(FLASH_SAVE_ADDR+12,&A_DHT11_Hum,2);        //开机读取湿度阈值
  433.                                 STMFLASH_Write(FLASH_SAVE_ADDR+14,&A_pre,2);                        //开机读取气压阈值
  434.                                 STMFLASH_Write(FLASH_SAVE_ADDR+18,&A_gz_value,2);        //开机读取光照强度阈值
  435.                                 STMFLASH_Write(FLASH_SAVE_ADDR+20,&A_m2_value,2);        //开机读取烟雾阈值
  436.                                 STMFLASH_Write(FLASH_SAVE_ADDR+22,&A_m7_value,2);        //开机读取一氧化碳阈值
  437.                                 STMFLASH_Write(FLASH_SAVE_ADDR+24,&A_m135_value,2);        //开机读取空气质量阈值
  438.                                 OLED_Clear();
  439.                                 break;
  440.                         }
  441.                
  442.                 }
  443.         }
  444. }

  445. void Get_Data(u16 count)//获取传感器数据
  446. {
  447.         static float bmp280_press,bmp280;                                //气压
  448.        
  449.         DHT11_Read_Data(&DHT11_Temp,&DHT11_Hum);
  450. ……………………

  451. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
2.程序源码.7z (292.51 KB, 下载次数: 512)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:428407 发表于 2020-5-13 08:29 | 显示全部楼层
统一回复,先把所有传感器连接好后,烧录程序,OLED才能有显示;对于联网功能,使用的是机智云网站,先把WIFI模块ESP8266烧录机智云固件,再入网即可,度娘机智云官网   官网有固件和使用教程
回复

使用道具 举报

ID:693699 发表于 2020-2-15 22:07 | 显示全部楼层
楼主 这个单片机类型为啥
回复

使用道具 举报

ID:699194 发表于 2020-3-11 20:19 | 显示全部楼层
alilialilili 发表于 2020-2-15 22:07
楼主 这个单片机类型为啥

STM32f10x






.
回复

使用道具 举报

ID:706683 发表于 2020-3-12 08:54 来自手机 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

ID:591735 发表于 2020-3-12 14:55 | 显示全部楼层
请问wifi模块使用的esp8266吗
回复

使用道具 举报

ID:699194 发表于 2020-3-12 18:30 | 显示全部楼层
程序显示不了效果






.
回复

使用道具 举报

ID:116773 发表于 2020-3-12 21:12 | 显示全部楼层
能分享线路结构图吗?
回复

使用道具 举报

ID:699194 发表于 2020-3-12 22:31 | 显示全部楼层
学习了,谢谢谢谢




。我会好好努力学习的
回复

使用道具 举报

ID:295874 发表于 2020-3-15 22:06 | 显示全部楼层
此原理图中出现3路电源标识:VCC、VCC3.3V、5V,其中VCC是几伏?
回复

使用道具 举报

ID:318162 发表于 2020-3-19 22:21 | 显示全部楼层
搂住你好  你的一氧化碳是怎么检测的 然后公式是啥?
回复

使用道具 举报

ID:318162 发表于 2020-3-19 22:28 | 显示全部楼层
你好 你的一氧化碳怎么检测
回复

使用道具 举报

ID:699194 发表于 2020-3-25 11:58 | 显示全部楼层
这是这个程序的原理图,

免费分享

stm32_智能家居(原理图).pdf

260.93 KB, 下载次数: 97, 下载积分: 黑币 -5

回复

使用道具 举报

ID:428407 发表于 2020-5-13 08:02 | 显示全部楼层
zhenguansinian 发表于 2020-3-12 14:55
请问wifi模块使用的esp8266吗

对的,ESP8266
回复

使用道具 举报

ID:428407 发表于 2020-5-13 08:03 | 显示全部楼层
回复

使用道具 举报

ID:428407 发表于 2020-5-13 08:03 | 显示全部楼层
liyongan_1985 发表于 2020-3-15 22:06
此原理图中出现3路电源标识:VCC、VCC3.3V、5V,其中VCC是几伏?

VCC是5V,V303V是303V供电
回复

使用道具 举报

ID:428407 发表于 2020-5-13 08:04 | 显示全部楼层
Dear贾哥哥 发表于 2020-3-19 22:21
搂住你好  你的一氧化碳是怎么检测的 然后公式是啥?

ADC转换
回复

使用道具 举报

ID:428407 发表于 2020-5-13 08:05 | 显示全部楼层

怎么会显示不了呢,有问题可以加我QQ  2808368554   联系我
回复

使用道具 举报

ID:116773 发表于 2020-5-13 09:20 | 显示全部楼层
我也在做类似的实验,使用的是STM32G431RB,感觉GPIO引脚不够用。
回复

使用道具 举报

ID:428407 发表于 2020-5-21 10:22 | 显示全部楼层
hujj 发表于 2020-5-13 09:20
我也在做类似的实验,使用的是STM32G431RB,感觉GPIO引脚不够用。

嗯嗯,是的,功能多了,引脚感觉不够用了,对于这种引脚少的,内部资源也不是很多
回复

使用道具 举报

ID:591170 发表于 2020-6-2 12:14 | 显示全部楼层
..\..\HARDWARE\USART3\usart3.c(69): error:  #20: identifier "USART3_IRQn" is undefined
..\..\USMART\usmart.c(254): error:  #20: identifier "TIM4_IRQn" is undefined
楼主,为何程序编译之后会出现这样错误
回复

使用道具 举报

ID:497661 发表于 2021-1-19 09:22 | 显示全部楼层
啊哈哈哈哈,编程5分钟组装2小时
回复

使用道具 举报

ID:894943 发表于 2021-5-7 11:41 | 显示全部楼层
给楼主大赞,有助于新手练习!
回复

使用道具 举报

ID:81196 发表于 2021-5-11 16:47 | 显示全部楼层
很好的一个历程
回复

使用道具 举报

ID:242753 发表于 2021-5-12 07:21 | 显示全部楼层
空气质量用什么测的?
回复

使用道具 举报

ID:286053 发表于 2021-5-15 22:08 | 显示全部楼层
牛啊牛啊,跟我想的一样,先学习了
回复

使用道具 举报

ID:1066368 发表于 2023-3-13 16:18 | 显示全部楼层
oled屏用六脚的可以吗
回复

使用道具 举报

ID:291668 发表于 2023-3-14 09:28 | 显示全部楼层
好!实用小东西
回复

使用道具 举报

ID:291668 发表于 2023-4-20 14:45 | 显示全部楼层
有图有真相,实力证明!
回复

使用道具 举报

ID:641483 发表于 2023-5-12 14:32 | 显示全部楼层
楼主牛  我就是为了想自己能做个简单的半自动系统学单片机,还在研究51
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表