基于Arduino的智能家居监测系统简介
Arduino是一个开源的单片机电子设计平台,他包含很多的硬件以及编程软件。同时还有各种各样周边的硬件去兼容Arduino这个平台,并且这些硬件通常都已经带有了兼容Arduino控制器的函数库。
Arduino的优势:
开源,技术架构灵活规范,有扩展性。
开发环境完善,支持多平台开发
封装了很多函数和大量的传感器函数库,降低了开发难度.
n选用ArduinoUNO,其处理器核心是ATmega328,同时具有14路数字输入/输出口(其中6路可作为PWM输出),6路模拟输入,一个16MHz晶体振荡器,一个USB口,一个电源插座,一个ICSPheader和一个复位按钮。
温湿度传感器DHT11:
选用DHT11温湿度传感器。
供电电压:3.3~5.5V
输出:单总线数字信号
测量范围:湿度20-90%RH
温度:0~50℃
测量精度湿度+-5%RH,温度+-2℃
分辨率湿度1%RH,温度1℃
气敏式烟雾传感器MQ-2:
选用DHT11温湿度传感器。
电压:5V
输出TTL信号LED指示
双信号输出,模拟量TTL电平输出
TTL输出有效信号为低电平
模拟量输出0~5V电压,浓度越高电压越高
输出TTL的灵敏度可通过电位器调节
光照度传感器BH1750FV
选用光照度传感器BH1750FV
I2C数字接口,支持速率最大400Kbps
输出量为光照度(Illuminance)
测量范围1~65535lux,分辨率最小到1lux
低功耗(Powerdown)功能
屏蔽50/60Hz市电频率引起的光照变化干扰
较小的测量误差(精度误差最大值+/-20%)
网络模块W5500
5500集成了TCP/IP协议栈,10/100M以太网数据链路层(MAC)及物理层(PHY),使得用户使用单芯片就能够在他们的应用中拓展网络连接。
YeeLink云平台
Yeelink可分为硬件电路接入层、平台数据传递层和具体实现应用层三个不同的层次。接入层将设备通过接入网关介入到平台,实现向平台上传数据和接收平台的控制消息功能。平台层为本项目的核心,主要完成设备信息处理、与社交网络融合的同时为应用层提供接口。应用层使用平台提供的应用沙盒和应用程序接口完成社交、物联网和移动APP融合的应用。
定义设备需要在YeeLink平台申请一个APIKey,并在源程序中对传感器进行配置。服务器指向“api.yeelink.net”,在传感器、串口进行初始化。在loop循环中,编写一个发送数据函数sendData,通过该函数将数据传送至YeeLink。
--------------------end---------------------
每天进步一点点
Makesmallbutdailyprogress返回搜狐,查看更多
Arduino智能物流小车项目(MEGA2560)
因为这是我做的第一个项目,然后平时也不太喜欢拍照。再加上有强迫症,没事喜欢清理文件相册。导致这个项目的材料照片文件十分匮乏(其实几乎都没了)。这是用的一些仅存残余文件,来写本人的第一篇博客,算是留作纪念也算是一个新旅程的开端。另外可以看看我的另一篇博客——Arduino智能物流小车各部分功能代码详解(省工程训练能力综合竞赛)。
https://github.com/A-HUAN/Arduino-Logistics-car
1.项目功能要求去年暑假前报了某比赛(工程训练能力综合竞赛),比赛要求是做一个智能物流小车。项目要求小车实现的功能有—“赛道自主行走、物料扫码识别、规避障碍、跨越减速带和栅格、码垛和规避循迹的功能。”
2.小车组成构架a.小车底盘设计小车底盘主要组成是:直流电机、电机支架、孔平板、联轴器、轮胎组成。b.机械臂及抓取设计考虑到机械臂需要实现的功能以及机械臂与物料台之间的协调性,设计了6自由度的机械臂,并且用舵机来作为机械臂的关节。抓取部件需要—咬合力大;结构简单切材料刚性好;接触点与物料之间的摩擦力大c.物料台设计考虑到小车的车型,以及物料台和机械臂之间的距离,选择在小车旁边加一块小车铝合金板,在铝合金板上固定舵机,舵机上放通过金属舵盘和亚克力物料台固定,从而实现舵机对物料架的控制。d.小车主视图与左视图e.小车爆炸图
3.主要零部件名称型号主控板MEGA2560及扩展板灰度传感器TCRT5000超声波HC-SR04降压模块LM2596直流电机JGB37-520金属舵机D3625MG/PDI6225MG舵机板16位舵机板电池9V电池4.程序流程图5.成品展示1.0初期版本(电线凌乱,布局混乱,物料架仅能放三个物体)
2.0升级版本
6.终极代码#include#include#include#include#defineSTOP0#defineFORWARD1#defineBACKWARD2#defineTURNLEFT3#defineTURNRIGHT4#defineFRAME_HEADER0xFF//帧头#defineCMD_SERVO_SPEED0x01//设置舵机速度#defineCMD_SERVO_PLACE0x02//设置舵机位置#defineCMD_ACTION_GROUP_RUN0x09//运行动作组#defineCMD_STOP_REFRESH0x0b//急停、恢复指令#defineGET_LOW_BYTE(A)(uint8_t)((A))//宏函数获得A的低八位#defineGET_HIGH_BYTE(A)(uint8_t)((A)>>8)//宏函数获得A的高八位intleftMotor1=14;intleftMotor2=15;intrightMotor1=16;intrightMotor2=17;//定义电机inttrac1=11;inttrac2=10;inttrac3=9;inttrac4=8;//定义前侧红外/从车头方向的最右边开始排序inttrac5=7;inttrac6=6;//定义右侧红外intinputPin=4;//定义超声波信号接收接口intoutputPin=5;//定义超声波信号发出接口intleftPWM=3;intrightPWM=2;//定义调速intFlag_1=0;//取物料标志intFlag_2=0;//放物料标志intdis;intq,w,e,r=0;intdata[6];//定义红外读取数组inti,j;intPosition=0;charscanflag=';StringSciString="";booleanflag_SetSeiDecMod=true;booleanflag_StaDec=false;unsignedcharSetSeiDecMod[]={0x07,0xC6,0x04,0x00,0xFF,0x8A,0x08,0xFD,0x9E};unsignedcharStaDec[]={0x04,0xE4,0x04,0x00,0xFF,0x14};SoftwareSerialmySerial(12,13);//TX,RXSoftwareSerialServoSerial(19,18);//RX,TX软串口voidsetup(){Serial.begin(9600);//串口初始化ServoSerial.begin(9600);mySerial.begin(9600);pinMode(leftMotor1,OUTPUT);pinMode(leftMotor2,OUTPUT);pinMode(rightMotor1,OUTPUT);pinMode(rightMotor2,OUTPUT);pinMode(leftPWM,OUTPUT);pinMode(rightPWM,OUTPUT);//测速引脚初始化pinMode(trac1,INPUT);pinMode(trac2,INPUT);pinMode(trac3,INPUT);pinMode(trac4,INPUT);pinMode(trac5,INPUT);pinMode(trac6,INPUT);pinMode(inputPin,INPUT);pinMode(outputPin,OUTPUT);//超声波控制引脚初始化}voidmotorRun(intcmd,intvalue){analogWrite(leftPWM,value);//设置PWM输出,即设置速度analogWrite(rightPWM,value);switch(cmd){caseFORWARD:Serial.println("FORWARD");//输出状态digitalWrite(leftMotor1,HIGH);digitalWrite(leftMotor2,LOW);digitalWrite(rightMotor1,LOW);digitalWrite(rightMotor2,HIGH);break;caseBACKWARD:Serial.println("BACKWARD");//输出状态digitalWrite(leftMotor1,LOW);digitalWrite(leftMotor2,HIGH);digitalWrite(rightMotor1,HIGH);digitalWrite(rightMotor2,LOW);break;caseTURNLEFT:Serial.println("TURNLEFT");//输出状态digitalWrite(leftMotor1,HIGH);digitalWrite(leftMotor2,LOW);Arduino智能小车设计(一)
可接课程设计!!!有需要私聊博主!这一个月来距离实验室纳新后,已经过去一个月左右了。听取了学长的建议,这段时间也一直在搞Arduino这个软件,还算不错的认识了这个开源软件。(自我认为。。)但是现在的依旧是一个小萌新,不说在软件代码的掌握程度,现在连有些最基本的硬件的名字也都叫不上来几个。。。不过还好,自己也不是单打独斗,通过和同组成员的讨论也还算是一点一点进步吧。最幸运的是,每次我遇到不会的东西,他们都可以帮我解答。
从今天开始,就要正式做起Arduino智能小车。因为之前写的博客比较糙,连自己翻的勇气都没有,所以我现在这立个Flag,要认认真真的完成每一篇博客和这次的项目,希望三个周后能对的起自己的这些话。
今天起,正式起步。
自我要求:各功能的介绍,画出小车实现各功能的模块图,所需部件及其介绍和使用方法(我当时就因为一些零件的使用方法而头痛过。。。),各功能的代码。每次博客记录下自己所遇到的问题和解决方案。
智能小车的功能介绍:1、走直线2、寻线(S线)3、避障碍4、蓝牙控制
各功能流程图:学长要求每个功能设计画出流程图,以前学C的时候也没有好好听老师讲,头大。要求提出的时候,咱也不敢说,咱也不敢问,只好硬着头皮做了(当然也会借鉴一下网上的,但我尽量细化,把一些重点单独在流程图标出来,也算以示不同,也可以用作强调,所以流程图我会在小车的设计中,不断加以修改,真正在显示在博客上的,应该就是最终的流程图)。
1.避障碍功能流程图CreatedwithRaphaël2.2.0系统初始化直线走前方是否有障碍物左侧是否有障碍物右侧是否有障碍物掉头右转左转yesnoyesnoyesno2.寻线功能流程图CreatedwithRaphaël2.2.0系统初始化直线走传感器是否检测到黑线左侧是否压线左偏右偏yesnoyesno3.蓝牙控制功能流程图CreatedwithRaphaël2.2.0系统初始化蓝牙配对配对是否成功给出指令指令是否有效控制小车运动yesnoyesno我的想法(这全是我的个人观点,大家看看就好,不要作为重要的参考,因为我也不确定是不是正确的。列出来,是希望可以和大家一起交流,以及获得大家更好的建议):1.在设置避障碍流程图时想到,是否可以实现在小车行走过程中,进行避障碍转弯(即检测到前方有障碍物而左右方无障碍物时,不停止,直接进行转弯)。仔细想了想,智能小车避障碍硬件主要使用的是HC-SR04超声波测距模块,查取资料HC-SR04超声波测距模块的侦测角度不超过15.6°(不太明白为什么会有最大侦测角度。。),侦测距离在2cm-450cm内,而我每次检测的距离为50cm,这个距离很小,导致侦查的距离就很小(勾股定理吧),不太现实。况且如果真的要这样做,那么应该要过滤这部分超声波,即分成直线,左侧边,右侧边,算法可能会很复杂吧。。2.询问了学长寻线功能的原理(具体在后续的博客说),有两个方法可以实现,用两个或者三个红外传感器实现。如果用两种红外传感器的话,小车就会扭来扭去(柯基臀),速度可能也会慢吧。如果用三种,用第三个红外传感器专门检测黑线,这样可以有效的减少小车的扭曲程度,比较美观。