3777|5

28

帖子

10

TA的资源

一粒金砂(中级)

楼主
 

在线扬尘监测系统 [复制链接]

随着国家房地长建设的大力发展,建筑工程的增多,由建筑施工造成的扬尘污染问题日趋严重,为了有力快捷的对施工现场的扬尘状况进行监控,我们利用硬件平台采集施工现场扬尘pm2.5/pm10含量信息,点阵屏在现场显示含量信息,并通过GPRS网络将pm颗粒物(PM10/PM2.5)含量信息传输给中国移动OneNet平台,扬尘监管部门就可以通过平台查看扬尘含量信息,并可以通过手机端查看,极大方便了对于扬尘污染情况的监控与控制.
  • 系统框图


  2.功能介绍硬件整体实物图:

OneNet平台创建设备(通信协议采用MQTT格式):

通过平台查看PM10和PM2.5含量数据:


手机端数据查看(中移OnetNet平台提供手机APP安装包,利用PC端注册账号登录APP即可):

组成一:GD32F350小红板(板载CMSIS-DAP下载调试接口,USB虚拟串口,所有IO引出,用户按键,指示灯)


组成二:PMS3003颗粒物传感器
(攀藤出品,可以检测输出PM1.0/PM2.5/PM10颗粒物含量,接口方式为TTL串口,主动输出(1S))
连接核心板PA10(串口0 RXd)
串口接收传感器数据处理:
  1. void USART0_IRQHandler(void)
  2. {
  3.     if(RESET != usart_interrupt_flag_get(EVAL_COM1, USART_INT_FLAG_RBNE))
  4.                         {
  5.         /* receive data */
  6.           receiver_buffer[rxcount] = (usart_data_receive(EVAL_COM1) & 0x7F);
  7.                                  if(receiver_buffer[0]==0x42)//传感器数据的首字节
  8.                                  {
  9.                                           rxcount++;
  10.                                         if(rxcount==2)
  11.                                         {
  12.                                                  if(receiver_buffer[1]!=0x4d)//传感器数据的第二个字节
  13.                                                     rxcount=0;        
  14.                                   }
  15.                                     if(rxcount==24)//一帧数据接收完成
  16.                                                 {
  17.                                                         rxcount=0;
  18.                            Rec_Uart0_Flag=1;        
  19.                                                 }                                                        
  20.                                  }
  21.     }
  22. }
复制代码

接收解析获取数据:
  1.                                 if(Rec_Uart0_Flag==1) //接收到一帧传感器数据
  2.                                 {
  3.                                         Rec_Uart0_Flag=0;
  4.                                         Pm1_0=receiver_buffer[10]<<8|receiver_buffer[11];
  5.                                         Pm2_5=receiver_buffer[12]<<8|receiver_buffer[13];
  6.                                         Pm10=receiver_buffer[14]<<8|receiver_buffer[15];
  7.                                        
  8.                                 }
复制代码


组成三:AIR202GPRS模块
(来自合宙,十几块钱的高性价比模块,串口波特率自适应,支持移动联通卡,在本系统中起联网交互作用)
与核心板PA15/PA3连接(串口1的 Rxd/Txd)
在调试串口1时,遇到问题:核心板硬件将PA2/PA3通过CH340转换输出的,开始我将GPRS模块的串口和PA2/PA3连接使用,发现串口1的接收端数据传输时,低电平时不能将电平拉低到0V,后来怀疑是作为虚拟串口使用的问题,所以将接收口IO与CH340中间连接的电阻R31去掉,避免其受到CH340的影响,去掉后果然解决了问题,但其中的原因还没有清楚!

单片机与AIR202通信,要对串口接收到的数据进行处理,采用空闲中断处理更为合理,即当串口接收完一帧数据后置位一个标志,根据这个标志来判断接收数据完成,从而开始解析数据处理判断.
串口中断处理代码如下:
  1. void USART1_IRQHandler(void)
  2. {
  3.     if(RESET != usart_interrupt_flag_get(EVAL_COM2, USART_INT_FLAG_RBNE))//接收一字节完成中断
  4.                         {
  5.                                   if(m6312_cnt>=128)
  6.                                     m6312_cnt=0;
  7.         /* receive data */
  8.         m6312_buf[m6312_cnt] = (usart_data_receive(EVAL_COM2) & 0x7F);
  9.                                 m6312_cnt++;
  10.      
  11.        }
  12.    if(RESET != usart_interrupt_flag_get(EVAL_COM2, USART_INT_FLAG_IDLE)) //串口空闲中断
  13.                         {
  14.                                  usart_interrupt_flag_clear(EVAL_COM2,USART_INT_FLAG_IDLE); //清除标志
  15.         /* receive data  */
  16.         RecUart1Finish=1;  //置位标志供判断
  17.      
  18.        }
  19. }
复制代码



组成四:点阵屏
两块HUB-08接口的16*64点阵屏(单色红)
驱动单屏原理:四组IO控制使能十六行点阵,一组IO向每行传输数据,CLK IO一个,锁存IO一个,数据使能IO一个.
驱动两个单屏,除了数据IO不同外,其他控制IO均可共用.




点阵屏驱动核心是需要不停的向两个屏幕送数据,所以要开启一个定时器,利用定时器中断服务来执行送数据函数,本系统利用timer1定时器,

定时时间为4ms.定时器配置代码如下:
  1. /*
  2. 计一个数的时间=(sys/prescaler)/TIMER_CKDIV_DIV1
  3. 定时时间=计一个数的时间*自动重载值=100us*500=50ms;
  4. */
  5. void timer1_init()
  6. {
  7.     timer_parameter_struct timer_initpara;
  8.         
  9.     rcu_periph_clock_enable(RCU_TIMER1);

  10.     timer_deinit(TIMER1);
  11.         
  12.                 timer_initpara.prescaler = 10800- 1;               //预分频器
  13.                 timer_initpara.alignedmode = TIMER_COUNTER_EDGE;  //边沿对齐模式
  14.                 timer_initpara.counterdirection = TIMER_COUNTER_UP;//向上计数
  15.                 timer_initpara.period = 10;                       //自动重载值
  16.                 timer_initpara.clockdivision = TIMER_CKDIV_DIV1;   //分频
  17.     timer_initpara.repetitioncounter =0;            //计数器重复值 0-255
  18.         
  19.     timer_init(TIMER1, &timer_initpara);
  20.     timer_interrupt_enable(TIMER1, TIMER_INT_UP);
  21.     nvic_irq_enable(TIMER1_IRQn, 1, 1);
  22.   
  23.     timer_enable(TIMER1);
  24. }
复制代码



在定时器中断执行点阵驱动代码如下:(注意:在中断执行的函数一定要保证在中断时间内执行完成,否则会影响主程序的代码执行,所以本例采用的是每进中断一次只送一行点阵数据,下一次就发送下一行数据,目的就是可以在中断时间内代码足以执行完毕)
  1. //4ms进中断一次
  2. void TIMER1_IRQHandler()
  3. {
  4.           timer_interrupt_flag_clear(TIMER1, TIMER_INT_FLAG_UP);
  5.     gd_eval_led_toggle(LED1);
  6.    
  7.           test_led();           //使能某一行点阵,并发送该行数据
  8.           create_show(0);//产生该屏数据
  9. }
复制代码


接下来要写一下关于上传OneNet平台使用MQTT协议的内容........未完待续

作品演示视频链接:
https://training.eeworld.com.cn/video/15939


此帖出自GD32 MCU论坛

最新回复

是否需要物联网手机卡?  详情 回复 发表于 2018-9-28 16:35
点赞(1) 关注(1)
 

回复
举报

229

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
不错哦,这个工地需要
此帖出自GD32 MCU论坛
 
 
 

回复

111

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
是否需要物联网手机卡?
此帖出自GD32 MCU论坛
 
 
 

回复

28

帖子

10

TA的资源

一粒金砂(中级)

4
 
serialworld 发表于 2018-9-28 16:35
是否需要物联网手机卡?

是的,最好是物理网卡,只要开通流量.
此帖出自GD32 MCU论坛
 
 
 

回复

28

帖子

10

TA的资源

一粒金砂(中级)

5
 
作品演示视频链接:
https://training.eeworld.com.cn/video/15939
此帖出自GD32 MCU论坛
 
 
 

回复

28

帖子

10

TA的资源

一粒金砂(中级)

6
 
源代码文件:

GD32F3x0_Firmware_Library_V1.0.0.rar

8.61 MB, 下载次数: 744

工程源代码

此帖出自GD32 MCU论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表