15.TCP控制智能小车实验(上位机)

合集下载

车联网小车实验报告(3篇)

车联网小车实验报告(3篇)

第1篇一、实验目的本次实验旨在通过搭建车联网小车平台,学习车联网技术的基本原理和实现方法,了解车辆环境感知、通信协议、智能控制等相关知识,培养学生的动手能力和创新思维。

二、实验背景随着物联网技术的飞速发展,车联网已成为未来汽车工业和智能交通领域的重要发展方向。

车联网技术通过将车辆与互联网连接,实现车辆之间的信息共享、协同控制和智能化服务。

本次实验旨在通过搭建车联网小车平台,让学生了解车联网技术的基本原理和实现方法。

三、实验内容1. 车辆环境感知实验(1)实验目的:学习车辆环境感知技术,实现小车对周围环境的感知。

(2)实验内容:使用超声波传感器和红外传感器对小车周围环境进行感知,包括障碍物距离、温度、湿度等。

(3)实验步骤:①搭建小车平台,连接超声波传感器和红外传感器;②编写程序,读取传感器数据,进行数据处理;③实现小车避障、跟随等功能。

2. 监控系统及光纤通信实验(1)实验目的:学习监控系统及光纤通信技术,实现小车信息的实时传输和监控。

(2)实验内容:使用摄像头和光纤通信模块,实现小车信息的实时传输和监控。

(3)实验步骤:①搭建小车平台,连接摄像头和光纤通信模块;②编写程序,实现摄像头图像采集和光纤通信数据传输;③实现小车监控画面实时显示,并对传输数据进行处理。

3. 驾驶行为实验(1)实验目的:学习驾驶行为分析技术,实现小车对驾驶员行为的识别和响应。

(2)实验内容:使用摄像头和加速度传感器,对驾驶员行为进行分析。

(3)实验步骤:①搭建小车平台,连接摄像头和加速度传感器;②编写程序,实现驾驶员行为识别和响应;③实现小车对驾驶员行为的实时反馈。

四、实验结果与分析1. 车辆环境感知实验通过实验,我们成功实现了小车对周围环境的感知。

超声波传感器和红外传感器能够准确测量障碍物距离,摄像头能够实时采集小车周围环境图像。

通过数据处理和图像识别技术,小车能够实现避障、跟随等功能。

2. 监控系统及光纤通信实验通过实验,我们成功实现了小车信息的实时传输和监控。

智能循迹小车实验报告

智能循迹小车实验报告

智能循迹小车实验报告第一篇:智能循迹小车实验报告摘要本设计主要有单片机模块、传感器模块、电机驱动模块以及电源模块组成,小车具有自主寻迹的功能。

本次设计采用STC公司的89C52单片机作为控制芯片,传感器模块采用红外光电对管和比较器实现,能够轻松识别黑白两色路面,同时具有抗环境干扰能力,电机模块由L298N芯片和两个直流电机构成,组成了智能车的动力系统,电源采用7.2V的直流电池,经过系统组装,从而实现了小车的自动循迹的功能。

关键词智能小车单片机红外光对管 STC89C52 L298N 1 绪论随着科学技术的发展,机器人的设计越来越精细,功能越来越复杂,智能小车作为其的一个分支,也在不断发展。

在近几年的电子设计大赛中,关于小车的智能化功能的实现也多种多样,因此本次我们也打算设计一智能小车,使其能自动识别预制道路,按照设计的道路自行寻迹。

设计任务与要求采用MCS-51单片机为控制芯片(也可采用其他的芯片),红外对管为识别器件、步进电机为行进部件,设计出一个能够识别以白底为道路色,宽度10mm左右的黑色胶带制作的不规则的封闭曲线为引导轨迹并能沿该轨迹行进的智能寻迹机器小车。

方案设计与方案选择3.1 硬件部分可分为四个模块:单片机模块、传感器模块、电机驱动模块以及电源模块。

3.1.1 单片机模块为小车运行的核心部件,起控制小车的所有运行状态的作用。

由于以前自己开发板使用的是ATMEL公司的STC89C52,所以让然选择这个芯片作为控制核心部件。

STC89C52是一种低损耗、高性能、CMOS八位微处理器,片内有4k字节的在线可重复编程、快速擦除快速写入程序的存储器,能重复写入/擦除1000次,数据保存时间为十年。

其程序和数据存储是分开的。

3.1.2 传感器模块方案一:使用光敏电阻组成光敏探测器采集路面信息。

阻值经过比较器输出高低电平进行分析,但是光照影响很大,不能稳定工作。

方案二:使用光电传感器来采集路面信息。

智能小车控制实验报告

智能小车控制实验报告

一、实验目的本次实验旨在通过设计和搭建一个智能小车系统,学习并掌握智能小车的基本控制原理、硬件选型、编程方法以及调试技巧。

通过实验,加深对单片机、传感器、电机驱动等模块的理解,并提升实践操作能力。

二、实验原理智能小车控制系统主要由以下几个部分组成:1. 单片机控制单元:作为系统的核心,负责接收传感器信息、处理数据、控制电机运动等。

2. 传感器模块:用于感知周围环境,如红外传感器、超声波传感器、光电传感器等。

3. 电机驱动模块:将单片机的控制信号转换为电机驱动信号,控制电机运动。

4. 电源模块:为系统提供稳定的电源。

实验中,我们选用STM32微控制器作为控制单元,使用红外传感器作为障碍物检测传感器,电机驱动模块采用L298N芯片,电机选用直流电机。

三、实验器材1. STM32F103C8T6最小系统板2. 红外传感器3. L298N电机驱动模块4. 直流电机5. 电源模块6. 连接线、电阻、电容等7. 编程器、调试器四、实验步骤1. 硬件搭建:- 将红外传感器连接到STM32的GPIO引脚上。

- 将L298N电机驱动模块连接到STM32的PWM引脚上。

- 将直流电机连接到L298N的电机输出端。

- 连接电源模块,为系统供电。

2. 编程:- 使用Keil MDK软件编写STM32控制程序。

- 编写红外传感器读取程序,检测障碍物。

- 编写电机驱动程序,控制电机运动。

- 编写主程序,实现小车避障、巡线等功能。

3. 调试:- 使用调试器下载程序到STM32。

- 观察程序运行情况,检查传感器数据、电机运动等。

- 调整参数,优化程序性能。

五、实验结果与分析1. 避障功能:实验中,红外传感器能够准确检测到障碍物,系统根据检测到的障碍物距离和方向,控制小车进行避障。

2. 巡线功能:实验中,小车能够沿着设定的轨迹进行巡线,红外传感器检测到黑线时,小车保持匀速前进;检测到白线时,小车进行减速或停止。

3. 控制性能:实验中,小车在避障和巡线过程中,表现出良好的控制性能,能够稳定地行驶。

基于51单片机WiFi智能小车制作

基于51单片机WiFi智能小车制作

基于51单片机WiFi智能小车制作基于51单片机WiFi智能小车制作一、基本原理51单片机WiFi智能小车是利用PC或手机作为控制端,通过手机连接wifi模块(路由器)以获得wifi信号,同时车载也连接wifi模块以获得和手机相同的IP地址,实现手机和小车的连接,然后利用PC或手机上的控制软件以wifi网络信号为载体发送相关信号,wifi模块接收PC 或手机端发送来的相关信号并分析转换成TTL 电平信号,然后发送给单片机,单片机接收到的电平信号处理、分析、计算,转化成控制指令并发送给电机驱动模块以实现小车的前进、后退、左拐、右拐等功能。

二、购买所需材料了解51单片机WiFi智能小车基本原理后,需要购买所需材料进行制作。

下面列出所需制作材料:序号材料备注图例6 小车底盘7 摄像头 根据固件支持摄像头购买8 电源根据自己需要购买种类9 杜邦线及小配件制作所需工具:序号工具名备注图例称1 电烙铁一套 包括松香焊锡2 螺丝刀 平口、十字等3 微型电钻 可以自制4手工刀5 剪刀6 万用表7 热熔胶枪或快干胶8US B下载器三、开始制作1、制作流程开始制作前,我们首先需要看购买路由器的型号,笔者采用的是703n 路由器,所以需要引出ttl 线。

总体步骤为:路由器引TTL 线→路由器刷OpenWrt 固件→制作51单片机最小系统→下载下位机程序到51单片机→安装上位机程序至PC 或手机→测试上、下位机通信→组装→调试完成。

2、路由器引ttl线首先打开703n路由器,按照下图标示位置焊接ttl线。

注意:1、焊接的时候要小心焊接,焊好后微拉下查看松紧2、焊接最好采用软线焊接,防止意外整块拉掉焊点3、焊好后一定用胶固定,最好采用热熔胶下图为引好ttl线样子3 刷OpenWrt固件何为OpenWrt固件,OpenWrt可以被描述为一个嵌入式的Linux 发行版,(主流路由器固件有dd-wrt,tomato,openwrt三类)而不是试图建立一个单一的,静态的系统。

智能小车实验报告心得(3篇)

智能小车实验报告心得(3篇)

第1篇一、引言随着科技的不断发展,人工智能技术逐渐渗透到我们生活的方方面面。

作为人工智能的一个典型应用,智能小车实验为我们提供了一个将理论知识与实践操作相结合的平台。

在本次智能小车实验中,我深刻体会到了理论知识的重要性,同时也感受到了动手实践带来的乐趣和成就感。

以下是我对本次实验的心得体会。

二、实验目的本次实验旨在通过设计、搭建和调试智能小车,让学生掌握以下知识:1. 传感器原理及在智能小车中的应用;2. 单片机编程及接口技术;3. 电机驱动及控制;4. PID控制算法在智能小车中的应用。

三、实验过程1. 设计阶段在设计阶段,我们首先对智能小车的功能进行了详细规划,包括自动避障、巡线、遥控等功能。

然后,根据功能需求,选择了合适的传感器、单片机、电机驱动器等硬件设备。

2. 搭建阶段在搭建阶段,我们按照设计图纸,将各个模块连接起来。

在连接过程中,我们遇到了一些问题,如电路板布局不合理、连接线过多等。

通过查阅资料、请教老师,我们逐步解决了这些问题。

3. 编程阶段编程阶段是本次实验的核心环节。

我们采用C语言对单片机进行编程,实现了小车的基本功能。

在编程过程中,我们遇到了许多挑战,如传感器数据处理、电机控制算法等。

通过查阅资料、反复调试,我们最终完成了编程任务。

4. 调试阶段调试阶段是检验实验成果的关键环节。

在调试过程中,我们对小车的各项功能进行了测试,包括避障、巡线、遥控等。

在测试过程中,我们发现了一些问题,如避障效果不稳定、巡线精度不高、遥控距离有限等。

针对这些问题,我们再次查阅资料、调整程序,逐步优化了小车的性能。

四、心得体会1. 理论与实践相结合本次实验让我深刻体会到了理论与实践相结合的重要性。

在实验过程中,我们不仅学习了理论知识,还通过实际操作,将所学知识应用于实践,提高了自己的动手能力。

2. 团队合作在实验过程中,我们充分发挥了团队合作精神。

在遇到问题时,我们互相帮助、共同探讨解决方案,最终完成了实验任务。

智能小车实习报告

智能小车实习报告

随着科技的不断发展,智能化技术逐渐渗透到各个领域,智能小车作为人工智能技术在工业、农业、军事、医疗卫生和宇宙探测等领域的重要应用之一,受到了广泛关注。

为了更好地了解和掌握智能小车的相关知识,提高自身的实践能力,我参加了为期一个月的智能小车实习。

二、实习目的1. 学习智能小车的原理和设计方法,掌握智能小车的构造和性能。

2. 了解智能小车在各个领域的应用,提高自身的创新意识和实践能力。

3. 通过实际操作,培养团队协作精神和动手能力。

三、实习内容1. 智能小车基础知识学习实习初期,我们学习了智能小车的定义、分类、组成及工作原理。

智能小车主要由传感器、控制器、执行器、电源和通信模块等组成。

传感器负责收集环境信息,控制器根据收集到的信息进行决策,执行器执行控制器的决策,电源为整个系统提供能量,通信模块实现与其他设备或系统的数据交换。

2. 智能小车硬件设计在硬件设计方面,我们学习了传感器选型、电路设计、电机驱动和电源设计等。

传感器选型主要包括红外传感器、超声波传感器、光电传感器等;电路设计包括单片机电路、驱动电路和电源电路等;电机驱动主要采用L298N驱动模块;电源设计主要考虑电池容量、电压和电流等。

3. 智能小车软件设计软件设计是智能小车实现功能的关键环节。

我们学习了单片机编程语言C语言,掌握了中断、定时器、串口通信等编程技巧。

在软件设计过程中,我们实现了小车的前进、后退、左转、右转、循迹和避障等功能。

4. 智能小车系统集成与调试在系统集成与调试阶段,我们将硬件和软件相结合,完成了小车各个模块的连接和调试。

通过不断调整参数,使小车能够稳定运行,实现了预期的功能。

通过本次实习,我们成功设计并实现了一款基于AT89C52单片机的智能小车。

该小车具备以下功能:1. 循迹功能:小车能够自动跟随黑线前进,实现自动循迹。

2. 避障功能:小车能够检测到前方障碍物,自动避开障碍物。

3. 远程控制功能:通过蓝牙模块,可以实现手机远程控制小车的前进、后退、左转、右转等功能。

智能小车实验报告69844

智能小车实验报告69844

课程设计报告(嵌入式技术实践(一))学院:电气工程与自动化学院题目:智能小车的电路设计与制作专业班级:自动化123班学号: 21学生姓名:谢斌指导老师: 王祖麟、张振利日期:2013年6月18日星期二摘要我们生活在信息与科技高速发展的信息时代,高科技产品的更新的换代也是越来越快.作为21世纪的大学生,我们身处这样的环境中,就必须使自己能够适应这个社会所需.自动化作为处在科技前沿的专业,我们学生就要打好基础,跟上时代的步伐.为了让同学们在做中学.同学们自己设计和制作智能小车,并从中深入了解和理解自动化嵌入式.从而为进一步实现人机对话,测量以及控制这些自动化的基本控制做基础。

从理论到实践,让同学们更好的理解嵌入式,增长同学的实践和设计能力。

应用P89V51RB2微控制器中端口、外部中断、定时器等基本模块,实现核心控制,再结合驱动板来控制电机的转速、转向,最后加上红外传感器,实现小车的智能寻迹。

其中端口结合SPI实现人机对话;定时器与中断结合实现匹配定时,捕获转速;端口、定时器的结合就实现了控制电机的方向与转速;端口与红外传感器结合,让小车可以寻找黑线,这样就实现了智能寻迹。

关键字:自动化;嵌入式;智能寻迹;实践;外部中断;定时器;能力目录第一章绪论 (5)1。

1 课题背景 (5)1。

2 课题概述 (5)1。

3 设计要求 (5)第二章统的系设计 (6)2.1 实践原理 (6)2.2 实践器材 (6)2。

3 实践目的 (7)第三章软件设计 (8)3。

1 硬件开发的软件介绍 (8)3.1。

1 TKStudio................................................................错误!未定义书签。

3。

1.2 原理图的绘制过程 ..........................................错误!未定义书签。

3。

2 编程环境介绍 (9)第四章系统实现 (9)4。

智能循迹小车实验报告

智能循迹小车实验报告

智能循迹小车实验报告一、实验目的本次实验旨在设计并实现一款能够自主循迹的智能小车,通过传感器检测路径信息,控制小车的运动方向,使其能够沿着预定的轨迹行驶。

通过本次实验,深入了解自动控制、传感器技术和单片机编程等方面的知识,提高实际动手能力和问题解决能力。

二、实验原理1、传感器检测本实验采用红外传感器来检测小车下方的黑线轨迹。

红外传感器由红外发射管和接收管组成,当发射管发出的红外线照射到黑色轨迹时,反射光较弱,接收管接收到的信号较弱;当照射到白色区域时,反射光较强,接收管接收到的信号较强。

通过比较接收管的信号强度,即可判断小车是否偏离轨迹。

2、控制算法根据传感器检测到的轨迹信息,采用 PID 控制算法(比例积分微分控制算法)来计算小车的转向控制量。

PID 算法通过对误差(即小车偏离轨迹的程度)进行比例、积分和微分运算,得到一个合适的控制输出,使小车能够快速、准确地回到轨迹上。

3、电机驱动小车的动力由直流电机提供,通过电机驱动芯片(如 L298N)来控制电机的正反转和转速。

根据控制算法计算出的转向控制量,调整左右电机的转速,实现小车的转向和前进。

三、实验器材1、硬件部分单片机开发板(如 STM32 系列)红外传感器模块直流电机及驱动模块电源模块小车底盘及车轮杜邦线、面包板等2、软件部分Keil 等单片机编程软件串口调试助手四、实验步骤1、硬件搭建将红外传感器模块安装在小车底盘下方,使其能够检测到黑线轨迹。

将直流电机与驱动模块连接,并安装在小车底盘上。

将单片机开发板、传感器模块、驱动模块和电源模块通过杜邦线连接起来,搭建好实验电路。

2、软件编程使用单片机编程软件,编写传感器检测程序、控制算法程序和电机驱动程序。

通过串口调试助手,将编写好的程序下载到单片机开发板中。

3、调试与优化启动小车,观察其在轨迹上的行驶情况。

根据小车的实际行驶情况,调整 PID 控制算法的参数,优化小车的循迹性能。

不断测试和改进,直到小车能够稳定、准确地沿着轨迹行驶。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验十五:树莓派平台-TCP控制智能小车实验(上位机)一.实验基本介绍本次实验主要是通过搭建TCP并发服务器,支持多用户连接控制智能小车,客户端上位机通过连接上小车搭建好的TCP_control并发服务器。

通过发送TCP 协议数据控制小车的前进,后退,左转,右转,停止,左旋,右旋,以及前舵机的左中右控制,后面摄像头舵机任意角度的连续控制,还有七彩灯的控制,灭火,鸣笛,小车的加速,减速。

以及树莓派智能小车通过丰富的传感器采集的数据实时的显示在我们的上位机上。

也是通过TCP协议通信。

二.TCP通信模型的设计服务器端:(被动接受请求)socket //电话机|bind(ip+port) //绑定电话号码绑定服务器自己的ip和port等待客户端连接。

|listen //监听有人打电话进来|accept //接听电话|recv/send //通话过程|close //挂机客户端:(主动发起连接)socket //电话机|bind(ip+port) //绑定电话号码|connect //拨打电话|recv/send //通话过程|close //挂机三.TCP常用函数讲解<1>创建流式套接字int socket(int domain, int type, int protocol);功能:创建socket ,返回对应的文件描述符参数:@domain 域(通信的范围)@type SOCK_STREAM 流式套接字: 有序可靠,面向连接字节流SOCK_DGRAM 报文套接字:无连接的,不可靠的SOCK_RAW 原始套接字: 可以访问一些低层的网络协议@protocol 0表示默认的方式SOCK_STREAM TCPSOCK_DGRAM UDP返回值:成功文件描述符失败-1 ,并设置errno<2>把服务器的ip和port和sockfd绑定int bind(int sockfd, const struct sockaddr *addr,socklen_t addrlen);功能:绑定一个地址(ip+port)到一个socket 文件描述符上参数:@sockfd socket 函数获得的文件描述符@addr 地址信息结构体//通用结构体struct sockaddr {sa_family_t sa_family; //地址族char sa_data[14]; //地址信息}//TCP/IP协议的地址结构struct sockaddr_in {sa_family_t sin_family; //协议簇in_port_t sin_port; //端口struct in_addr sin_addr; //ip地址};@addrlen 表示addr 参数对应类型的地址信息结构体的大小返回值:成功0失败-1&errno操作:(1).定义地址结构体变量,清零struct sockaddr_in ser_addr;memset(&ser_addr,0,sizeof(ser_addr));(2).填充地址信息ser_addr.sin_family = AF_INET;//地址协议族ser_addr.sin_port = htons(8888);//端口号ser_addr.sin_addr = inet_addr("192.168.1.7");(3). 绑定if(bind(sockfd,(struct sockaddr*)&ser_addr,sizeof(ser_addr)) < 0){perror("bind fail");exit(EXIT_FAILURE);}<3>获得客户连接请求,创建连接连接套接字,负责数据通信。

int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);功能:获取连接请求,建立连接套接字参数:@sockfd 监听套接字@addr 用来获取对端的地址信息@addrlen 值结果参数(注意:必须自己初始化一个值sizeof(addr)) 返回值:成功新连接的套接字文件描述符失败-1 ,并设置错误码。

---------------------------------------------------------------------------------------------------------------- 特点:1.请求队列中没有请求,阻塞调用者2.每次提取一路请求,就会创建一个新的套接字,我们称为连接套接字,用来和客户端收发数据----------------------------------------------------------------------------------------------------------------- int listen(int sockfd ,int backlog);功能:把同一个时刻来的套接字存放如监听队列中。

<同一个时刻>参数:@sockfd 监听的套接字@backlog 连接请求队列的最大长度。

一般设置为30 以下。

注意:有的时候backlog很小,但是我们也可以了解很多台机器。

服务器机器处理速度很快队列来不及填满就处理完了,而且在同一个时刻到来的连接还是很少的<4>客户端向服务器请求连接的函数int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen); 功能:向服务端发起连接。

参数:@sockfd 客户端的socket文件描述符@addr 代表服务器端的地址信息@addrlen addr 对应的地址结构体类型的大小返回值:成功返回0,失败返回-1<5>发送数据ssize_t send(int sockfd, const void *buf, size_t len, int flags);功能:给指定的sockfd发送数据参数:@scokfd 套接字@ buf 发送数据的缓冲区@len 要发送数据的长度@flags 设置网络标志,常常设置为0返回值:成功,返回值> 0,发送成功的字节数返回值==0,发送超时返回值<0, 发送失败,并设置错误码//在阻塞模式下,下面的公式等价注:send(sockfd, buf, len, 0); <===> write(sockfd, buf, len);<6>接收数据ssize_t recv(int sockfd, void *buf, size_t len, int flags);功能:接收指定的sockfd的数据即连接套接字返回的文件描述符参数:@scokfd 套接字@ buf 接受数据的缓冲区@len 要接受数据的长度@flags 设置网络标志,常常设置为0返回值:成功,返回值> 0,成功接收的字节数返回值==0,对方关闭了连接返回值<0, 发送失败,并设置错误码//在阻塞模式下,下面的公式等价注:recv(sockfd, buf, len, 0); <===> read(sockfd, buf, len); 四.TCP多线程并发服务器设计多线程TCP并发服务器。

//线程处理函数void *do_client(void *age){int connect_fd = *(int *)arg;while(1){//接收客户端数据recv();..}}socket(...);bind(...);listen(...);while(1){pconnect_fd = malloc(sizeof(int)); //在堆区创建空间保持文件描述符*pconnect = accept(...);//创建线程接收数据ret = pthread_creat(&tind,NULL,do_client,pconnect_fd);close(...);exit(...);}pthread_detach(tid);}对于本次实验中我们也是采用了多线程的思维去处理,一路线程负责解析上位机传过来的TCP数据,并执行相应的动作。

一路线程负责将小车传感器采集的数据打包传给上位机显示。

一路线程负责检测舵机的控制状态,并执行相应的舵机动作。

五.操作步骤首先我们连上小车的wifi,通过SSH或者putty远程登录到树莓派。

然后切换root用户。

输入:su,然后输入密码yahboom,这时进入root权限的界面如下:随后输入top可以看到541进程号是蓝牙遥控的进程,554是摄像头进程,注意这里的进程号不同的树莓派是不同的,然后我们要先关闭蓝牙进程这样我们打开TCP进程才不会与蓝牙进程冲突。

输入命令杀掉进程:注意上个界面如何退出呢,输入ctrl+z退出。

命令:kill -9 541如下图所示:然后进到SmartCar目录下:找到TCP_control.c 里面有个ip地址和端口号可以根据树莓派自己的ip进行修改,一般出厂是自带热点所以ip【192.168.0.1】,端口号默认是【8888】我们直接运行TCP进程,如下命令:./TCP_control这样我们的TCP进程就运行成功了。

如下提示Listen:下面我们打开上位机选择4WD-树莓派。

然后点击【连接视频】则可以看到视频,点击【连接控制】则其他所有按键都可以控制。

成功后如下:服务器会有如下提示:至此TCP控制就算完成。

相关文档
最新文档