最近参加了一个比赛,拿实验室中的zigbee传感器模块来实现的一个智能大棚系统:这次比赛感觉自己在硬件方面的知识还是欠缺很多,现在zigbee的更新换代很快,然而我还停留在最近出的传感器模块,在实现代码方面做的还可以,但是硬件方面跟他人差距很大。

https://download.csdn.net/download/qq_36819130/10739556  下载地址

环境是ubuntu下 qt4.8 最好是root用户下,因为串口的调用需要权限。

基本功能实现:

温湿度的显示,电机模块的控制,调光装置的控制,socket服务器通信,红外检测,烟雾检测,动态增加节点。

实现界面

串口通信

bool SerialService::openCom() // 打开串口
{if(my_com){closeCom();}else{QString com_name = "/dev/ttyS0"; // 这个是根据自己的串口来的我是在ubuntu下写的my_com = new Posix_QextSerialPort(com_name, QextSerialBase::Polling);}my_com->open(QIODevice::ReadWrite);if(my_com->isOpen()){com_state = 1;my_com->setBaudRate(BAUD115200);my_com->setDataBits(DATA_8);my_com->setParity(PAR_NONE);my_com->setStopBits(STOP_1);my_com->setFlowControl(FLOW_OFF);my_com->setTimeout(50);return true;}else{com_state = 0;return false;}
}
void SerialService::readFromSerial() //从串口接收信息
{if(my_com && 1 == com_state){QByteArray byte = my_com->readAll();if(!byte.isEmpty())emit receiveMsgFromSerial(byte);}
}int SerialService::writeToSerial(const QByteArray &byte)//从串口发送信息
{if(my_com && 1 == com_state){return my_com->write(byte);}return -1;
}

sockt通信

 socket = new QTcpSocket(this);socket->connectToHost(QHostAddress("192.168.1.104"), 8888);thread=new mythread(socket);
// 创建socket 要创建一个新的线程,其中通过槽函数来实现消息的发送和接收ui->msgInfo->append(mesg);if(UPLoad == OPEN){QString str = mesg + "\r\n";socket->write(str.toAscii());socket->flush();}
//发送信息
mythread::mythread(QTcpSocket *sock)
{socket=sock;connect(socket,SIGNAL(readyRead()),this,SLOT(readMsg()));
}void mythread::run()
{qDebug()<<socket->isOpen()<<endl;
}void mythread::readMsg()
{QByteArray qdb=socket->readAll();QString msg = QString(qdb);qDebug()<<msg<<" is the sent msg!"<<endl;emit sendMsg(msg);
}
//接收信息,并调用槽函数来调用相应的函数

串口信息的接收

//一部分的代码的展示,具体的代码可以下载来看
void MainWindow::handleMSG(QByteArray msg)
{if(msg.length() < 6)return ;//温度传感器if(0x02 == msg[3] && 0x01 == msg[4]){QString str = "";if(0x01 == msg[2]) //1号传感器{timer3->start(timeBlock);tempA->ValueOf(msg);templist.replace(0,tempA);if(kas++ >= 10){kas = 0;//emit goMsg("Update temphumlight A value!");}}
}

对于串口接收的数据,有一些需要做一些特殊的处理,例如温湿度模块发送的信息,我们需要经过计算才可以得到信息

void Temp_Humi_Ligh::ValueOf(QByteArray &msg)
{unsigned char XH = msg[5], XL = msg[6];unsigned char YH = msg[7], YL = msg[8];unsigned char GH = msg[9], GL = msg[10];temperature = XH*256 + XL;humidity    = YH*256 + YL;light       = 1.0*(GH*256 + GL)*3012.9/(32768*4);
}

对于qt的背景图的添加我会在另外的一个博客中写到

qt4.8 利用串口实现智能大棚系统相关推荐

  1. 智能大棚系统有哪些优势在

    传统温室大棚会被替代,是因为其存在管理繁琐.耗费人力大等问题,尤其是收益上, 操心不小,收入不高,智能大棚系统的研发就是为了了解决传统大棚的各种问题,在管理的科学性更胜一筹. 智能大棚系统具备自动调控 ...

  2. 利用正高Dolphin智能广告监测系统做好违法广告监测

    随着社会经济文化事业的快速发展,广告媒体日益丰富,广告样式花样繁多.新型广告层出不穷,广告监管工作量大面广.难度加大,仅靠工商食药监部门人力监测难以面面俱到.实现有效监管. <新广告法>对 ...

  3. 利用Python开发智能阅卷系统, 太有趣了!

    随着现代图像处理和人工智能技术的快速发展,不少学者尝试讲CV应用到教学领域,能够代替老师去阅卷,将老师从繁杂劳累的阅卷中解放出来,从而进一步有效的推动教学质量上一个台阶. 传统的人工阅卷,工作繁琐,效 ...

  4. 利用Python开发智能阅卷系统

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 机器学习与统计学 PS:如有需要Python学习资料的小伙伴可以加 ...

  5. 利用Python开发智能阅卷系统(附源代码)

    点击"程序IT圈","置顶"公众号 重磅干货,第一时间送达 随着现代图像处理和人工智能技术的快速发展,不少学者尝试讲CV应用到教学领域,能够代替老师去阅卷,将老 ...

  6. python编写阅卷软件_利用Python开发智能阅卷系统

    1 importnumpy as np2 importargparse3 importimutils4 importcv25 #设置参数 6 ap =argparse.ArgumentParser() ...

  7. 基于Python+Vue+Mysql实现(物联网)智能大棚【100010340】

    SmartGreenhouse 智能大棚(物联网大课设) 技术选型 功能端 技术描述 安卓 flutter, dart 前端 vue, typescript, element-ui, vuex 后端 ...

  8. 中国人工智能学会通讯——机器人组件技术在智能制造系统中的应用

    摘要:随着工业4.0时代的到来,如何将传统工厂改造成为个性化.网络化.柔性生产的智能制造系统成为了当前的研究热点.本文从智能制造系统和智能机器人系统的相似性出发,构建了基于机器人组件技术的智能制造系统 ...

  9. 智能大棚计算机系统,一套智能大棚需要哪些设备?我来告诉你!

    原标题:一套智能大棚需要哪些设备?我来告诉你! 安装一套智能大棚需要哪些设备呢?很多做大棚种植的对于智能大棚都不陌生,智能大棚主要用于帮助大棚种植者管理大棚种植,那么到底什么是智能大棚?如果要安装一套 ...

最新文章

  1. Android 自定义控件 ViewPager头部指示器控件 ViewPagerBelowIndicator
  2. OpenCV3 识别图中表格-JAVA 实现
  3. 在真实工作中的编程是怎么样的,与学校里有什么不同?
  4. 进程共享(读时共享写时复制)
  5. 链表简单实现(增删查改)
  6. 信息学奥赛C++语言:蒙氏数学难题
  7. safari only css hack,css hack将Safari和Chrome同时作为目标单独使用
  8. python安装xlrd和xlwt及应用
  9. c语言多线程详,如何用C语言实现多线程
  10. Prism 的 TabControl 导航
  11. 中恒电气成小鹏汽车充电桩供应商 今日涨停
  12. warframe怒焚者结合目标_【虚荣盒子】设计目标和功能规划
  13. VS2012下基于Glut OpenGL glEdgeFlag示例程序:
  14. Cannot start process,the working directory 'F:\hello\hello'does not exit 问题解决
  15. EXCEL自定义功能区Ribbon
  16. 【三维激光扫描】第二章:国内外三维激光扫描设备简介
  17. 倒酒(拓展欧几里得)
  18. aws ec2 mysql 端口_亚马逊:AWS EC2 的 Linux 服务器 开放端口教程
  19. 字母c代表什么数字_字母C
  20. 互联网日报 | 4月14日 星期三 | 贾跃亭被终身禁入证券市场;天猫4月19日起降低开店门槛;小米正式迈入游戏手机细分赛道...

热门文章

  1. Python第三方库tabulate简单使用说明
  2. 程序员画图利器——Visio
  3. android 动态表情实现,基于Android开发支持表情的实现详解
  4. ONNX YOLOv6目标检测,GitHub搜索引擎,Tooll 3 实时动画创建,汇编通俗入门,AI前沿论文 | ShowMeAI资讯日报
  5. 异或交换两个数的原理证明
  6. 《计算广告》学习笔记(一)
  7. macOS中iTerm或终端字体乱码解决办法
  8. 一个33岁资深自媒体人的思维
  9. linux漏洞知乎_linux系统怎么用
  10. win7下在VMware中设置防火墙打开/关闭