4524|15

828

帖子

8

TA的资源

一粒金砂(高级)

楼主
 
2015瑞萨电子设计大赛作品
项目名称: IOT设计之室内气体烟尘网络监测及换气系统
项目实现的功能说明: 本系统以室内换气为主线,通过本地MCU与服务器通信(串口转wifi或转以太网),将本地数据上传,并可通过终端设备访问
项目进展状态: 完成
软硬件设计思路: 以瑞萨开发板为主,采用传感器MQ135进行气体烟尘监测,考虑到经济实力,换气扇用家用风扇代替,根据流体力学可知风扇背部能够抽气,试过可行,风扇的启停可以用继电方式控制,网络编程采用VS2012的MFC编程,单片机程序中采用滞回判断法来进行继电控制,如果时间允许可以将远程控制和安卓app等功能加上
原理图: -
源码: -
相关帖子集锦: 第一篇:刚收到板子,在什么地方跟帖啊,具体地方
https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=471593&fromuid=501860
(出处: 电子工程世界-论坛)
第二篇:给仿真器刷指定的固件时,出现can not open virtual uart com driver
https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=471601&fromuid=501860
(出处: 电子工程世界-论坛)
第三篇:下载失败求解
https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=471604&fromuid=501860
(出处: 电子工程世界-论坛)
第四篇:项目进度1
https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=471607&fromuid=501860
(出处: 电子工程世界-论坛)
第五篇:谁有R7F0C809的头文件包啊
https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=471700&fromuid=501860
(出处: 电子工程世界-论坛)
第六篇:项目进度2---定时器0通道1间隔定时模式之跑马灯程序
https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=472021&fromuid=501860
(出处: 电子工程世界-论坛)
第七篇:为啥定时器0的1通道开了中断,但不进中断函数呢,但中断标志TMIF01会置1
https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=472533&fromuid=501860
(出处: 电子工程世界-论坛)
第八篇:谁能告诉我R7F0C809怎么烧写?come on
https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=473457&fromuid=501860
(出处: 电子工程世界-论坛)
第九篇:Unable to connect E1
https://bbs.eeworld.com.cn/forum.php?mod=viewthread&tid=473647&fromuid=501860
(出处: 电子工程世界-论坛)
作品形象代表照片:
作品总结: 由于前期采购问题,买了块串口转wifi模块,结果调了1个月都没调通,后面有点忙搁置了一段时间,没办法,最后就在从头来过,用串口转以太网方案了,又开始写转换程序,以前是个纯C和汇编出身的,现在开始vc,java,js,php编程的确太难了,迎难而上呗,折腾了许久,初见苗头,要评职称了,没时间搞了,只能暂停一个阶段,后面再搞
最后陈述,为自己的作品拉票: 最后,很感谢EEWorld的信任,以及为我们提供的瑞萨开发板,让我受益匪浅,wugx在这祝EEWorld越办越好;我相信技术是可以服务生活的
演示视频: -

IOT设计之室内气体烟尘网络监测及换气系统 [复制链接]

本帖最后由 wugx 于 2015-10-30 09:31 编辑

题目:IOT设计之室内气体烟尘网络监测及换气系统
作者:Wugx
日期:2015.10.29 pm

软件平台:CubeSuite+
硬件:瑞萨R7F0C809 Target Board

项目简介:本系统以室内换气为主线,通过本地MCU与服务器通信(串口转wifi或转以太网),将本地数据上传,并可通过终端设备访问(同时可以发一些控制指令)

方案论证:以瑞萨开发板为主,采用传感器MQ135进行气体烟尘监测,考虑到经济实力,换气扇用家用风扇代
替,根据流体力学可知风扇背部能够抽气,试过可行,风扇的启停可以用继电方式控制,网络编程采用VS2012
的MFC编程,手机app采用安卓系统开发。

项目结果:目前只完成了室内气体烟尘网络监测,只能本地换气,不能远程控制,pc和安卓软件还有问题,有待完成

项目感悟:由于前期采购问题,买了块串口转wifi模块,结果调了1个月都没调通,后面有点忙搁置了一段时间,没办法,最后就在从头来过,用串口转以太网方案了,又开始写转换程序,以前是个纯C和汇编出身的,现在开始vc,java,js,php编程的确太难了,迎难而上呗,折腾了许久,初见苗头,要评职称了,没时间搞了,只能暂停一个阶段,后面再搞

程序简介:单片机定时10s采集、并通过串口发送一次室内烟尘浓度,本地服务器收到数据暂存下来,并处于监听状态,网络通信采用TCP/IP协议,一旦有客户端发送套接字,服务器接受后,将数据传送数据,方便起见,整个过程都是本地测试的,客户端端口分配为9996,串口波特
率9600,当浓度高于上限值时,继电器吸合风扇打开。

致谢:最后,很感谢EEWorld的信任,以及为我们提供的瑞萨开发板,wugx在这祝EEWorld越办越好

serial转TCP比较大,有需要的朋友可以留言,给你发邮箱

MCU部分代码:

#include "r_cg_macrodriver.h"
#include "r_cg_userdefine.h"


#include "r_cg_cgc.h"
#include "r_cg_port.h"
#include "r_cg_serial.h"
#include "ad.h"
#include "vr.h"
#include"led.h"






/******************************************************************************
Exported global variables and functions
******************************************************************************/
uint8_t g_Uart0RxBuf;       /* uart0 receive buffer */
uint8_t g_Uart0RxErr;       /* uart0 receive error status */
MD_STATUS g_Uart0TxEnd;     /* uart0 transmission end */
boolean g_Flag1s;
boolean g_Flag10s;
boolean g_Flag10ms;


static const uint8_t message[16] = {"WELCOME EEWORD\r\n"};
uint8_t count[10] = {"0123456789"};
uint16_t temp;
uint8_t table[16]={"C:0000.0000000\r\n"};




void delay_1ms(uint16_t x)
{
        uint16_t i,j;
        for(i=0;i         {
                for(j=0;j<256;j++);
        }
}


void main(void)
{
/*initialization programe*/        
   
    MD_STATUS   status;                                         /* UART Status */
    R_Systeminit();
    P0 &= 0xc3;
    g_Flag1s=0;


    /* UART0 receive buffer setting */
    //status = R_UART0_Receive(&g_Uart0RxBuf, 1);


    /* Start the UART0 Tx/Rx operation */
    R_UART0_Start();

    TS0 |= 0x02;                /* Starts TAU01 */
    while ( !(TE0 & 0x02) );    /* Waiting TAU01 works */
   
    /* Main loop */
   
    while (1U)
    {      
        while (TMIF01 == 0)
        {
        }
        TMIF01 = 0;            /* Clears interrupt flag bit */
        
        if(g_Flag10ms == 1)
        {               
                TT0 |= 0x02;           //close timer01
                while(TE0 & 0x02);  
                g_Flag10ms=0;
                temp=AD_In();          //AD sampling
               
                /*data process*/


                temp=temp/8;
                if(temp>120)
                {
                        delay_1ms(5);
                        if(temp>120)
                        {
                                P0.0=1;
                        }
                }
                else if(temp<110)
                {
                        P0.0=0;
                }               
                LED_Display(temp*10);
               
                /*data send to pc COM*/
                if(g_Flag1s == 1)
                {
                        g_Flag1s=0;
               
                        table[2]=count[temp*10/10000];
                        table[3]=count[temp*10%10000/1000];        
                        table[4]=count[temp*10%10000%1000/100];        

                        g_Uart0TxEnd = R_UART0_Send(table,16);
                        while (g_Uart0TxEnd == 0){}   //waiting for sent
                }
               
                TS0 |= 0x02;                      //restart timer01
                    while ( !(TE0 & 0x02) );
        }        
    }
}


MFC--Serial转TCP部分代码:


//********************************************************
//                                       收串口数据处理
//********************************************************
LRESULT CSerialTcpDlg::OnCommunication(WPARAM ch, LPARAM port)
{
        UINT SerialPort = (UINT)port;
        int  DataLen = (int)ch;

        char buf[512];

        memset(buf, 0, 512);

        for(int i=0; i         {
                if(m_arrItem->m_serialPort.m_nPortNr == SerialPort)
                {
                        memcpy(buf, m_arrItem->m_serialPort.m_RXBuff, 512);
                        //*********************** 发送数据 *******************
                        if(m_arrItem->m_dataSockInUse)        //发送到DataPort
                        {
                                m_arrItem->m_sockDateMain.Send(buf, DataLen);

                                char bufTemp[512];
                                //写入日志
                                memset(bufTemp, 0, 512);
                                sprintf_s(bufTemp, 512, "COM%d => TCP %2d]", m_arrItem->m_serialPort.m_nPortNr, DataLen);

                                CTime timer_1;
                                timer_1 = CTime::GetCurrentTime();
                                CString s=timer_1.Format("[%H:%M:%S");

                                char bufTemp1[512];
                                memset(bufTemp1, 0, 512);
                                sprintf_s(bufTemp1, 512, "%s %s", s, bufTemp);

                                CString temp = bufTemp1;

                                if (m_arrItem->m_logFlag)
                                {
                                        FILE* stream = fopen(m_arrItem->m_strLogFileName, "a+");
                                        fwrite(temp, 1, temp.GetLength(), stream);
                                        fclose(stream);

                                        char buf1[5];
                                       
                                        stream = fopen(m_arrItem->m_strLogFileName, "a+");

                                        if (DataLen>16)
                                        {
                                                DataLen = 16;
                                        }

                                        for (int i=0; i                                         {
                                                BYTE hex;
                                                hex = buf;
                                                sprintf(buf1, " %02X", hex);
                                                fwrite(buf1, 1, 3, stream);
                                        }
                                        fclose(stream);

                                        for(int i=0; i<16-DataLen; i++)
                                        {
                                                stream = fopen(m_arrItem->m_strLogFileName, "a+");
                                                fwrite("   ", 1, 3, stream);
                                                fclose(stream);
                                        }

                                        //处理末尾的字符串
                                        stream = fopen(m_arrItem->m_strLogFileName, "a+");
                                        fwrite(" [", 1, 2, stream);
                                        for (int i=0; i                                         {
                                                char temp12 = buf;
                                                if (temp12>= '0' && temp12 <= '9')
                                                {
                                                        fwrite(&temp12, 1, 1, stream);
                                                }
                                                else if (temp12>= 'A' && temp12 <='Z')
                                                {
                                                        fwrite(&temp12, 1, 1, stream);
                                                }
                                                else if (temp12>= 'a' && temp12 <= 'z')
                                                {
                                                        fwrite(&temp12, 1, 1, stream);
                                                }
                                                else if (temp12 == ' ')
                                                {
                                                        fwrite(&temp12, 1, 1, stream);
                                                }
                                                else if (temp12 == '@')
                                                {
                                                        fwrite(&temp12, 1, 1, stream);
                                                }
                                                else if (temp12 == '#')
                                                {
                                                        fwrite(&temp12, 1, 1, stream);
                                                }
                                                else if (temp12 == '$')
                                                {
                                                        fwrite(&temp12, 1, 1, stream);
                                                }
                                                else if (temp12 == '%')
                                                {
                                                        fwrite(&temp12, 1, 1, stream);
                                                }
                                                else if (temp12 == '^')
                                                {
                                                        fwrite(&temp12, 1, 1, stream);
                                                }
                                                else if (temp12 == '&')
                                                {
                                                        fwrite(&temp12, 1, 1, stream);
                                                }
                                                else if (temp12 == '*')
                                                {
                                                        fwrite(&temp12, 1, 1, stream);
                                                }
                                                else if (temp12 == '(')
                                                {
                                                        fwrite(&temp12, 1, 1, stream);
                                                }
                                                else if (temp12 == ')')
                                                {
                                                        fwrite(&temp12, 1, 1, stream);
                                                }
                                                else if (temp12 == '=')
                                                {
                                                        fwrite(&temp12, 1, 1, stream);
                                                }
                                                else
                                                {
                                                        fwrite(".", 1, 1, stream);
                                                }
                                        }
                                        fwrite("]", 1, 1, stream);
                                        fwrite("\r\n", 1, 2, stream);
                                        fclose(stream);
                                }
                        }
                        if(m_arrItem->m_debugSockInUse)        //发送到DebugPort
                        {
                                char bufTemp[512];
                                memset(bufTemp, 0, 512);
                                sprintf_s(bufTemp, 512, "Out—> %s", buf);
                                m_arrItem->m_sockDebugMain.Send(bufTemp, DataLen+7);               
                        }
                        if(m_arrItem->m_debugSockInUse || m_arrItem->m_dataSockInUse)
                        {
                                m_arrItem->m_iTotalSendDate += DataLen;
                        }
                        break;
                }
        }
        return 0;
}





IMG_20151029_223823.jpg (731.74 KB, 下载次数: 0)

IMG_20151029_223823.jpg

IMG_20151029_223834.jpg (691.96 KB, 下载次数: 1)

IMG_20151029_223834.jpg

IMG_20151029_223846.jpg (684.37 KB, 下载次数: 0)

IMG_20151029_223846.jpg

IMG_20151029_223856.jpg (643.34 KB, 下载次数: 0)

IMG_20151029_223856.jpg

IMG_20151029_224950.jpg (586.78 KB, 下载次数: 0)

IMG_20151029_224950.jpg

e1.jpg (164.88 KB, 下载次数: 0)

e1.jpg

serial communication.rar

86.15 KB, 下载次数: 4

最新回复

有空再好好研究研究  详情 回复 发表于 2015-10-31 11:03

赞赏

1

查看全部赞赏

点赞 关注
个人签名人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/

回复
举报

1891

帖子

2

TA的资源

纯净的硅(中级)

沙发
 
 
个人签名
分享铸就美好未来。。。




 

回复

248

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
LZ很厉害

点评

还差的远  详情 回复 发表于 2015-10-30 09:28
 
 
 

回复

6069

帖子

4

TA的资源

版主

4
 
赞一个。
 
 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

5
 

还差的远
 
个人签名人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
 
 

回复

5220

帖子

236

TA的资源

管理员

6
 
老师的演示真棒
有解说,有声音,爆照

By the way,老师去哪里找到了一个这么脏的风扇
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

哈哈,有那么沧桑吗,不是老师,助工,宿舍的,平时就用来抽油烟  详情 回复 发表于 2015-10-30 15:41
 
 
 

回复

5220

帖子

236

TA的资源

管理员

7
 
职称真害人

希望老师赶紧评完职称,继续来论坛和坛友们玩,
最后谢谢wugx的分享
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

不是老师,助工  详情 回复 发表于 2015-10-30 15:43
 
 
 

回复

1158

帖子

2

TA的资源

版主

8
 
很不错啊,给楼主顶一个

点评

thank you  详情 回复 发表于 2015-10-30 15:45
 
 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

9
 
本帖最后由 wugx 于 2015-10-30 17:51 编辑

......
 
 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

10
 
本帖最后由 wugx 于 2015-10-30 17:51 编辑


........
 
 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

11
 
本帖最后由 wugx 于 2015-10-30 17:51 编辑

.........
 
 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

12
 
本帖最后由 wugx 于 2015-10-30 17:52 编辑

.......
 
 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

13
个人签名人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

14
个人签名人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
 
 

回复

539

帖子

3

TA的资源

纯净的硅(初级)

15
 
有空再好好研究研究

点评

是啊,没时间  详情 回复 发表于 2015-10-31 14:55
 
 
 

回复

828

帖子

8

TA的资源

一粒金砂(高级)

16
 
xinmeng_wit 发表于 2015-10-31 11:03
有空再好好研究研究

是啊,没时间
 
个人签名人生有许多选项是灰色的、不可选的,但至少你可以选择生活的态度。。。韬光养晦,志存高远http://www.xzroad.com/
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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

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

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

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