Arduino串口初始化时如何防止垃圾数据?
当我使用Arduino Uno时,连接到端口后,我在串行监视器或超级终端中立即收到垃圾数据。这是示例代码: 输出的屏幕截图示例。重新连接端口后,第一个接收到的数据不是Test: 所以我的问题是初始化端口时,收到的第一个数据总是垃圾数据。有办法防止这种情况发生吗?这与引导加载程序的波特率有关吗?我尝试了其他波特率,都存在相同的问题,我想使用57600或115200波特率。
1421 位酷友已加入
电子圈子中包含常用的源代码、电路图、学习教程、产品样本、技术报告等干货资料,加入圈子可以上传、下载资料,也可以使用提问来寻求资料或分享你认为有价值的站外链接~
当我使用Arduino Uno时,连接到端口后,我在串行监视器或超级终端中立即收到垃圾数据。这是示例代码: 输出的屏幕截图示例。重新连接端口后,第一个接收到的数据不是Test: 所以我的问题是初始化端口时,收到的第一个数据总是垃圾数据。有办法防止这种情况发生吗?这与引导加载程序的波特率有关吗?我尝试了其他波特率,都存在相同的问题,我想使用57600或115200波特率。
我正在做一个项目,要求我在一个Arduino Uno板上使用4种不同的传感器,即负载传感器,RFID标签传感器,2个IR传感器和一个霍尔效应传感器,以及L293D电机扩展护罩。这可能吗?或这样做会有问题吗?
需要的元件 Arduino UNO SparkFun按钮开关12mm 杜邦线 面包板 LED 电阻330Ω Arduino IDE 原理及流程 介绍 在这个项目中,你将学习如何构建自己的PCB Car Arduino模块,以了解机器人的控制。通过本模块,你将学习如何打开电动机电源以控制机器人的转轮,照明以及控制机器人的导航方向。 Arduino汽车模块项目 机器人技术中最大的困难之一就是学习控制机器人。因此,使用的第一批机器人之一是两轮机器人。这些机器人使用两个引擎来控制机器人在整个环境中的导航方向。 在开始时,许多用户在控制电动机方面都遇到了很大的困难,因为在学习开始时,电路很复杂。 因此,一种方法是使用Robot Car Arduino模块。在图1中,我们展示了Robot Car Arduino Module 。 图1-机器人汽车Arduino模块的PCB。 在项目中可以看到,用户可以控制汽车的多个部分。用户可以通过后视中的LED来控制LED ,以向汽车发出信号。 此外,用户可以使用后视LED来照亮通孔并打开汽车大灯的LED。每个车轮上都有一个LED。通过导线,用户可以控制车辆的方向,换句话说,用户可以打开电动机电源,使汽车直行,向左,向右或向后。 为了让你了解PCB的连接,你可以看到图2所示的PCB的电子原理图。 图2-机器人车Arduino模块的电子原理图 可以看到,有8个LED和一个GND引脚用于连接并打开Arduino机器人汽车模块中的每个LED的电源。 因此,为了帮助你创建一个好的项目,你可以下载代码并通过Arduino控制自己的汽车。 本代码可用于测试机器人汽车的每个LED并发挥其功能。 结论 因此,通过这个PCB Arduino模块,你可以通过一个简单的模块来教机器人,并使学生更容易学习编程和机器人控制的原理。gerber文件下载区已给出。 最后 所有需要的文件在下载区均可找到。 via:https://www.hackster.io/312676/car-robot-arduino-module-1dd736
需要的元件 Arduino UNO NEO-GM GPS Arduino模块 Arduino的SD卡模块 SparkFun按钮开关12mm 杜邦线 面包板 LED 5mm 电阻221Ω 电容100nF Arduino IDE 原理及流程 介绍 在这个项目中,你将学习如何构建自己的GPS和Arduino车辆位置记录器系统。 项目简介 首先,我们将使用一些模块来创建该项目。根据物料清单中的规定,我们将使用GPS来收集位置数据,并使用存储卡模块来存储GPS读取的位置。 Arduino Nano将在该项目中用于执行编程逻辑的所有控制。 根据该工作原理,电子电路图如图1所示。 图1-GPS系统的电子原理图。 在该项目中可以看到,有两个按钮。每个按钮负责启动和停止SD卡中GPS位置的注册处理。 当数据位置存储在SD卡中时,红色LED将用于发出信号。 根据原型板上的该电路,建立了电子方案。电子方案如图2所示。 图2-GPS寄存器位置的原理图。 此后,设计印刷电路板如图3所示。 图3-带有Arduino的GPS寄存器位置的印刷电路板 根据此项目,创建了下面显示的代码。 该代码用于将Arduino Nano与SD卡模块和GPS模块进行通信。 在第一行中,将声明模块的库以及用于操作项目中数据的变量,如以下代码所示。 此后,系统将执行空隙设置功能。在此功能中,系统将配置用于连接LED ,按钮和其他引脚(如数字输入或输出)的引脚。 稍后,将通过以下代码测试SD卡的初始化过程 如果系统执行测试并且SD卡正确初始化,它将打印以下消息:SD卡准备就绪。否则,它将打印消息SD卡初始化失败。 此后,系统将进入空循环功能。在此功能中,将执行主系统逻辑。 首先,将读取按钮START和END。接下来,如果按下“开始”按钮,则将打开.txt文件并打印纬度和经度名称,以创建两列数据。 该部分代码如下所示。 此后,系统将进入下面显示的下一个条件,因为变量控制等于1。 在这种情况下,系统将设置红色LED并每秒钟在文本文件GPS.txt中打印纬度和经度。系统将存储GPS的数据位置,直到用户按下“结束”按钮为止。 当按下结束按钮时,变量控件将等于0,文件将关闭,红色指示灯将熄灭,如下面代码部分所示。 此后,系统返回循环以开始并再次执行代码。 结论 因此,可以看到,该系统可用于将车辆行驶的位置存储在SD卡模块中。此外,该系统可用于监视承载价值负载的车辆从一个位置到另一位置的行驶路径。gerber文件下载区已给出。 最后 所有需要的文件在下载区均可找到。 via:https://www.hackster.io/312679/arduino-gps-register-with-arduino-5eab87
需要的元件 Arduino UNO(作为USB到串行的转换器) ESP8266(ESP-01)WiFi模块 滑动开关(SPDT开关) 按钮 1KΩ电阻(1/4W) 2.2KΩ电阻(1/4W) 330电阻(1/4W) LED 连接线 迷你面包板 原理及流程 在上一个项目中,我向你展示了**使用ESP8266和ARDUINOWIFI控制LED**的原理。在这个项目中,我将向你展示如何通过Internet控制ESP8266,即从世界各地通过Internet控制ESP8266。 总览 尽管ESP8266 WiFi模块的主要目的是将Internet连接引入我们的小型DIY项目,但我相信到目前为止,我们还没有完全利用ESP8266 WiFi模块的功能,即真正的IoT(物联网)项目。 我想通过实际通过互联网控制ESP8266,使ESP8266项目更进一步。在此过程中,我们将学习如何通过控制通过Internet连接到ESP8266 WiFi模块的GPIO引脚之一的LED(仅用于演示工作原理)来通过Internet控制ESP8266,即连接ESP8266到另一个网络。 这与WiFi控制LED项目有何不同? 实际上,该项目与早期项目之间存在两个差异。第一个区别是ESP8266 WiFi模块的控制方式。在上一个项目中,我通过WiFi网络(即从与ESP8266连接到同一网络的计算机或电话)控制ESP8266。 进入此项目的目的是通过互联网(即,具有互联网连接功能的世界上任何地方的计算机或电话)控制ESP8266。 第二个区别是ESP8266 WiFi模块的配置方式。如果你还记得,我特别提到必须使用AT Commands固件来刷新ESP8266 WiFi模块,我们将通过上载到Arduino的程序来控制ESP8266。 但是,在这个项目中,我将代码直接上传到ESP8266 WiFi模块的ROM中(现有的程序或固件将被删除)。 现在我们已经看到了区别,让我们继续进行项目的电路图和电路设计。 电路图 以下电路用于通过互联网控制ESP8266。首先让我们看一下这些组件,然后再详细解释该电路的设计。 下图显示了电路图中使用的ESP8266 WiFi模块的引脚。有关实际的引脚图,请参考ESP8266和ARDUINO项目入门。 注意: Arduino UNO用作USB到串行转换器。因此,我从Arduino UNO板上移除了ATmega328p微控制器。如果你有专用的USB到串行转换器(USB-to-TTL),则不需要Arduino。 另外,在另一个项目ESP8266 WiFi模块的DIY PCB,我制作了一个简单的ESP8266 Breakout Board 。它包含与ESP8266 WiFi模块相关的所有重要组件。我将在该项目中使用同一块板。 电路设计 将ESP8266的VCC和GND连接到Arduino的3.3V和GND。CH_PD引脚也连接到3.3V电源。复位引脚和GND之间连接了一个按钮。 ESP8266 WiFi模块的TX引脚连接到Arduino的TX引脚,ESP8266的RX引脚通过两个电阻(1KΩ和2.2KΩ)组成的分压器连接到Arduino的RX引脚。 一个LED连接到ESP8266的GPIO2引脚。最后,GPIO0引脚连接到SPDT开关的极点(滑动开关的中心端子)。开关的一个掷端连接到GND,另一个掷端保持开路,但可用于GPIO连接。 代码 以下程序必须上载至ESP8266 WiFi Module。它将建立WiFi连接并创建一个简单的HTML页面,可使用ESP8266的IP地址进行访问。 注意: 在将代码上传到ESP8266之前,请确保在Arduino开发板部分中选择了“通用ESP8266模块”。 有关如何将程序上传到ESP8266的更多信息,请参阅《 ESP8266和Arduino项目入门》。 在代码中输入你的WiFi网络的详细信息。 我为ESP8266 WiFi模块分配了一个静态IP地址,代码为“ 192.168.1.254”。确认没有其他设备使用该IP地址后,我选择了该地址。分配静态IP地址时,请确保相同。 除静态IP地址外,还必须提供其他信息,例如默认网关和子网掩码。你可以通过在Windows的命令提示符下键入“ ipconfig”来找到它。 加工 为了上传代码,将GPIO0引脚滑至编程模式(将GPIO0连接至GND),然后按RESET开关。在Arduino IDE中选择正确的板卡和端口后,上传代码。 上载代码后,将开关滑动到普通模式,然后按一下RESET按钮。打开串行监视器。在那里你可以看到WiFi连接的详细信息。 你还可以查看ESP8266 WiFi模块的IP地址。由于我分配了静态IP地址,因此我将得到相同的地址。如果你选择不分配静态IP地址,请使用路由器分配的地址。 在代码中,我在端口255上创建了服务器。因此,服务器的URL将为http://192.168.1.254:255。 在连接到同一WiFi网络的计算机或电话中打开网络浏览器,然后输入上述URL。将打开一个简单的HTML页面,其中包含少量文本和链接。下图是打开URL的手机的屏幕截图。 你可以单击特定链接以在本地(即WiFi网络内)控制LED。 如何通过互联网控制ESP8266? 现在,通过互联网控制ESP8266 WiFi模块的技巧部分。有两种方法可以实现此目的。一种方法是使用端口转发,我将在本项目中使用该端口,另一种方法是使用专用的远程服务器,如ThingSpeak或aREST。 由于我已经为ESP8266 WiFi模块设置了一个静态IP地址,下一步是继续进行端口转发。 从任何浏览器打开路由器页面,然后使用路由器登录详细信息登录。转到路由器的“端口转发”页面(取决于路由器,在我的情况下是I WAN设置)。 启用端口转发并提供必要的详细信息,例如本地服务器IP地址(ESP8266的静态IP地址),端口号等,并保存设置。 现在,转到具有高级安全设置的Windows防火墙并添加新的入站规则。选择“端口”的规则类型并指定端口号。 打开任何网络浏览器,然后搜索“我的IP地址是什么”。它生成路由器的WAN IP地址。记下来。 现在,从另一台计算机(未与ESP8266连接到同一WiFi网络的任何计算机)中,键入你刚刚记下的IP地址以及端口号。例如,如果你的IP地址为183.92.192.58,端口号为255,则在任何Web浏览器中键入“ 183.92.192.58:255”。现在,你将获得HTML页面来控制LED。 重要的提示: 不建议使用端口转发,因为它可以将计算机开放到外界,并且容易受到病毒或恶意软件的攻击。 另外,许多ISP(Internet服务提供商)都不允许端口转发。 另一种选择是使用专用的安全服务器,如ThingSpeak或aREST。 在下一个项目中,我将向你展示如何使用其中一项服务从互联网控制ESP8266。 最后 所有需要的文件在下载区均可找到。 via:https://www.electronicshub.org/control-esp8266-over-internet/
使用OpenCV的面部识别功能跟踪人脸。 组件和耗材 Arduino UNO ×1个 USB相机 ×1个 SG90微型伺服电机 ×2 跳线(通用) ×8 面包板(通用) ×1个 关于这个项目 面部识别是一种非常有用的工具,已集成在许多现代设备中,用于检测人脸以进行跟踪,生物识别并识别人的活动。在这个项目中,我使用了OpenCV的Harr级联分类器来检测人脸,并使用Arduino UNO进行平移/倾斜伺服机制来跟踪用户的面部。 如何运作? 面部检测可识别和定位人脸并忽略任何背景对象,例如窗帘,窗户,树木等。OpenCV使用Harr分类器级联,其中视频的每一帧都经过分类器的各个阶段,如果该帧通过所有分类器,存在面部,否则将帧从分类器中丢弃,即未检测到面部。 OpenCV返回检测到的图像的笛卡尔坐标以及高度和宽度。根据这些坐标,可以使用x + width / 2和y + height / 2计算图像的中心坐标。 当检测到人脸时,这些坐标将使用pyserial库传递给Arduino UNO。连接到Arduino的伺服器提供了一个平移/倾斜机制,相机连接到其中一个伺服器。当脸部的坐标远离中心时,则伺服器将对齐2度(递增或递减)以使其朝向屏幕的中心。 侦测脸部 我使用了“haarcascade_frontalface_default.xml” ,它是用于检测人脸的经过预先训练的模型,可以从GitHub(这里)下载。 用于面部检测的功能cv2.CascadeClassifier.detectMultiScale()的“比例因子”值为1.1(默认值),“最小邻域”值为6。这将返回图像的笛卡尔坐标以及高度和宽度。增加“ minNeighbour”(最小邻域)可以改善面部检测,但是会牺牲执行速度,这会导致来自伺服器的延迟响应。因此,这似乎是最佳的。 为了获得精确的面部识别,建议使用纯净的背景,因为由于背景中的窗帘,我面临一些错误的检测。 计算坐标 OpenCV返回以像素值表示的面部坐标。默认情况下,视频分辨率设置为640 * 480。坐标描述了左上像素值(x和y)以及高度和宽度。我已将面部的中心坐标用作参考,可以使用x + width / 2和y + height / 2进行计算,并且可以将其视为绿点。这些坐标被发送到arduino,以移动相机的角度。 框架中心的正方形以白色表示区域,该区域是面部中心(即绿点)必须位于的区域。如果在移动脸部时它位于方形区域之外,则伺服器将对齐相机以将其带入该区域内。 将串行数据发送到Arduino 当我尝试了多种方法将坐标顺序发送到arduino时,我发现此部分具有挑战性,但响应速度很慢。在花了几个小时弄清楚之后,我开始在线寻找类似的项目,直到找到这个项目(在这里)。这让我意识到了Serial函数Serial.parseInt(),该函数从传入的字节序列中获取整数输入(在此处检查)。我发送串行数据的方法类似于该项目中使用的方法。 python在单个字符串中发送中心坐标。例如:“ X100Y200”,X后面的值100表示中心x坐标,值200表示中心y坐标。 伺服安装 我已经将水平移动伺服器安装在装有相机的垂直移动伺服器的轴上。所有附件均使用简单的橡皮筋制作(我不推荐使用,因为我使用的是在家中已有的材料)。 由于我使用2个伺服器进行跟踪,因此建议向Arduino提供额外的9V电源(通过适配器),为两个伺服器提供足够的电流。在没有它的情况下,我注意到它们中存在某种振动而不会使其移动。 转载来自https://create.arduino.cc/projecthub/shubhamsantosh99/face-tracker-using-opencv-and-arduino-55412e?ref=platform&ref_id=424_trending___&offset=0
伴随着集成电路技术的发展,电子设计自动化(EDA)技术逐渐成为数字电路设计的重要手段。基于FPGA的EDA技术的发展和应用领域的扩大与深入,使得EDA技术在电子信息,通信,自动控制,计算机等领域的重要性日益突出。 本次设计的电子钟是一种基于FPGA实验平台,实现时、分、秒自然计时的装置,以24小时循环计时的功能。采用FPGA可编程技术,运用自顶向下的设计思想设计数字钟,避免了硬件电路的焊接与调试。由于FPGA的IO端口丰富,内部逻辑可随意更改,使得数字钟的实现较为方便。