资料介绍
描述
InqSpeedRacer是用于 HotWheels® 的基于网络的电子测速仪。该项目是为学习运动物理主题的 8 年级科学课创建的。它也是创建InqPortal服务器的演示者,该服务器不仅服务于多个客户端,而且客户端可以连接到多个服务器。这可以很容易地用作家庭自动化的模板。创建多种InqPortal “服务器”,使用传感器、继电器和/或执行器来感知和控制环境。可以创建客户端仪表板以连接到所有服务器并监视和控制所有服务器。作为基于浏览器的应用程序的客户端可以在 Windows、Chromebook、Android、Linux 和 Apple 设备上运行。
硬件模块设计
这是一个相对较快的刻录项目。我们想为学生制作六个,并且我们想为后代保留一个……说实话……以防我们不得不支持修复错误。我们不得不订购零件。由于电子产品不是我们天生的强项之一,所以用“ Arduino photo diode ”这个短语搜索了大约三十分钟” 想出一个可行的电路。30 分钟后,我们为 10 个 ESP8266 WeMos 板、电阻红外 LED 和红外光电二极管订购了足够的零件。最后一个我不确定有多少帖子发誓他们是光电晶体管,另一半说是二极管。我决定让我的狗再打一场。我所知道的是它们与 LED 的尺寸相同(5 毫米),并且它们有两根电线,电路显示使用两根电线工作。我们试图在硬件方面牢记 KISS 原则。大约三天后他们出现了,我们把它放在面包板上,原型软件在大约三十分钟后运行。这是我们每个单位使用的零件。
- 1 WeMos ESP8266 D1 Mini – 我更喜欢这些尺寸和防弹 USB 和 3.3v 稳压器。它们甚至可以由最古老、最便宜的 USB 微型交流适配器供电。即使是 250 mW 的功率也足够了。实际上,如果我们必须购买交流适配器,它的成本将超过InqSpeedRacer的其余部分。
- 2 个红外 LED——我想我烧掉了其中的一些以获得正确的限流电阻,因为卖家没有提供或提供任何信息。
- 2 个红外光电二极管 – 同上燃烧
- 3 个电阻器 – (1) 100 Ω 和 (2) 180 Ω
总支出——每台 InqSpeedRacerServer 不到 4 美元。
3D打印房屋
原型是用透明的 ABS 制作的,但它倾向于打印半透明的,你看不到里面的零件。但它的内置蓝色 LED 闪烁,拍出了令人惊叹的画面!其他设计特点包括
- 低调
- 有支架可以滑入轨道底部,以防止它被撞到。
- 重量轻(< 19 克)– 足够轻,即使在没有支撑的下坡上,它也可以安装,不会显着改变轨道曲率。
使用 InqPortal 的服务器软件
服务器端软件使用可在 Arduino IDE 库管理器中轻松找到的InqPortal库。该服务器的设计目的是让开发人员不必弄乱任何 WiFi、WebServer 逻辑。他们可以专注于手头的工作——速度陷阱。以下是有关服务器的一些详细信息。
- 完全注释、完全基于 WiFi 网络的服务器 Sketch 的行数只有 140 行。 其中只有十行与 Web 服务器有关。剩下的就是监控光电晶体管,执行时序计算和注释。
- 一辆车通过并向客户端报告速度后,它会自动重置并准备下一辆车通过。
- 与其他InqPortal示例不同,这个示例实际上在 loop() 方法中做了一些事情。它利用了完全运行时的环路频率约为 100kHz。我用它来检查光束是否被汽车挡住。我最初做了一个中断版本,但代码复杂性并没有真正变得更好。这给出了 1/100, 000 秒的时间分辨率。这比我们向客户报告的毫秒分辨率要好得多。
这是代码,但请节省您的时间... InqSpeedRacer是您将InqPortal库下载到您的 Arduino IDE 后包含的示例之一。这里只是为了让您了解配置基于InqPortal的项目是多么容易。
#include
// Works with InqPortal v5
// Can use NULL if you want to configure via InqPortal Admin
// or hard code your router SSID and Password.
#define YOUR_SSID NULL
#define YOUR_PW NULL
#define DEFALUT_SSID "InqSR"
#define VERSION "3.0.0"
#define LED D4
#define PHOTO1 D1
#define PHOTO2 D2
#define LOG_LEVEL 1
#define CHK_FOR_RUN 50 // Check for a valid run (ms)
#define CHK_FOR_FAULT 1000 // Check to see if there is a fault (ms)
InqPortal svr;
// Published variables
float speed = 0;
u32 finish = 0;
// Working Variables (not published)
u32 tPhoto1Blocked, tPhoto1Unblocked, tPhoto2Blocked, tPhoto2Unblocked;
bool blockage = false; // To detect a continuous blockage and flash LED slowly.
void setup()
{
// Set up Interval callbacks
svr.onInterval(checkForRun, CHK_FOR_RUN);
svr.onInterval(checkForFault, PAUSE);
// Publish runtime and persisted variables
svr.publishRO("V", VERSION, sizeof(VERSION), "InqSpeedRacer Version");
svr.publishRO("S", &speed, "Speed (m/s)");
svr.publishRO("F", &finish, "Finish (ms)");
svr.publishRO("T", NULL, "Server time (ms)",
[]()->u32 { return millis(); });
svr.autoSend(0);
// Start the InqPortal server.
svr.begin(DEFALUT_SSID, NULL, YOUR_SSID, YOUR_PW);
pinMode(LED, OUTPUT);
pinMode(PHOTO1, INPUT_PULLUP);
pinMode(PHOTO2, INPUT_PULLUP);
clear();
}
#define isBlocked(p) digitalRead(p)
#define LED_TOGGLE digitalWrite(LED, !digitalRead(LED))
#define LED_OFF digitalWrite(LED, true)
void loop()
{
// Sensor 1
if (!tPhoto1Blocked)
{
if (isBlocked(PHOTO1))
{
tPhoto1Blocked = micros();
set();
}
}
else if (!tPhoto1Unblocked)
{
if (!isBlocked(PHOTO1))
tPhoto1Unblocked = micros();
}
// Sensor 2
if (!tPhoto2Blocked)
{
if (isBlocked(PHOTO2))
{
tPhoto2Blocked = micros();
set();
}
}
else if (!tPhoto2Unblocked)
{
if (!isBlocked(PHOTO2))
tPhoto2Unblocked = micros();
}
}
void set()
{
svr.onInterval(checkForFault, CHK_FOR_FAULT);
blockage = true;
if (!finish)
finish = millis();
LED_OFF;
}
void clear()
{
tPhoto1Blocked = 0;
tPhoto1Unblocked = 0;
tPhoto2Blocked = 0;
tPhoto2Unblocked = 0;
finish = 0;
svr.onInterval(checkForFault, PAUSE);
blockage = false;
}
void checkForRun(void*)
{
if (!blockage)
LED_TOGGLE;
if (tPhoto1Blocked && tPhoto1Unblocked &&
tPhoto2Blocked && tPhoto2Unblocked)
{
// WARNING - Don't mess with this. Needed to handle wrapping
// of the u32 coming from the micros()!!
s32 t = (abs((s32)(tPhoto1Blocked - tPhoto2Blocked)) +
abs((s32)(tPhoto2Unblocked - tPhoto1Unblocked))) / 2;
// This does the speed calculation based on the distance
// between the two sensors of 19.7 mm and time in micro seconds.
speed = 19700.0 / (float)t; // m/s
// Sends it out the the clients.
svr.send("lflu", "S", speed, "F", finish);
clear();
}
}
void checkForFault(void*)
{
// We added this in case we have false trigger. After duration
// of CHK_FOR_FAULT (ms), it will clear out the times.
// This checks if its still blocked... then we know something
// is in the way. We blink slowly.
blockage = isBlocked(PHOTO1) | isBlocked(PHOTO2); // Still blocked?
if (blockage)
LED_TOGGLE;
else
{
svr.LOG(LOG_LEVEL, "Fault detected and cleared\n");
clear();
}
}
使用 JavaScript 和 InqPortal 的客户端软件
客户端有两个应用程序(网页),JavaScript 编码实际上比服务器端编码长,分别为 105 和 240 行。第一页简单地报告了所有汽车速度的运行记录。它显示实际速度和假设 HotWheels 为 1:64 比例的比例速度。它还做了一些物理操作,并使用 KE = PE 估计掉落汽车的原始高度。单位可以从 mph 更改为 kph 和任何比例因子。
从开发人员的角度和家庭自动化的角度来看,第二页在威廉希尔官方网站 上更有趣。InqPortal有能力编写一个可以与多个InqPortal服务器对话的客户端。服务器不必是同一个项目。家庭自动化的优势很简单……您可以拥有一个仪表板,连接所有各种设备,并从一个客户端检索和控制所有内容……而且由于它是基于浏览器的,它可以在 Windows、Android、苹果和 Linux。在此示例中,我们将其设置为连接到多个InqSpeedRacer服务器充当终点线......就像松木德比。代码有点复杂,不是因为多服务器访问,而是因为客户端必须标准化所有服务器时钟,以便它可以比较汽车穿过各个服务器“终点线”的时间。
开始...
... 构建您自己的InqSpeedRacer ,您首先需要在您的 Arduino IDE 库管理器中下载InqPortal库。它将包含示例中所有必要的服务器和客户端文件的完整副本。有关该项目的更多详细信息,请访问InqSpeedRacer。 有关InqPortal库的更多详细信息,您可以查看我的其他 Project Hub 项目使用 3 行代码制作 WebServer! 完整的交叉参考手册和教程可以在InqOnThat.com/InqPortal/上找到
- LY激光多普勒测速测长系统 3次下载
- 项目实战:51单片机霍尔自行车里程测速仪设计 论文 原理图 程序 PPT 制作详解都有
- 基于单片机霍尔电机测速仪表控制系统设计(毕业设计资料)
- TBR-321 侧装多车道多目标雷达 彩页
- TBR-310 交通信息检测侧装微波雷达 彩页
- 适用于中国国家标准的机动车测速仪 2次下载
- 基于FPGA的电机测速的设计与实现 11次下载
- 使用8031单片机设计低成本智能测速仪的硬件电路和软件的方法说明 1次下载
- 51单片机的红外光电测速仪 6次下载
- 基于MSP430与霍尔传感器的自行车测速仪 33次下载
- 一种低成本单片机智能测速仪的研制 48次下载
- 导航仪电子狗与流动测速电子狗的区别 19次下载
- 采用霍尔元件的测速电路 524次下载
- 雷达探测系统比较及雷达测速 73次下载
- 自确认测速度仪的设计
- 矢量网络分析仪的频率范围解析 1050次阅读
- 基于矢量网络分析仪的时域测量威廉希尔官方网站 851次阅读
- 矢量网络分析仪的工作原理和基本结构 1350次阅读
- 网络测试仪概述及作用 网络测试仪的使用方法及注意事项 931次阅读
- 矢量网络分析仪的用途有哪些 1044次阅读
- 网络分析仪的分类 317次阅读
- 网络分析仪的工作原理 464次阅读
- 什么是网络分析仪 428次阅读
- 矢量网络分析仪使用教程 1.5w次阅读
- 网络测试仪的应用类型及作用特点 5045次阅读
- 测速编码器工作原理 2w次阅读
- 测速传感器的原理_测速传感器分类 1w次阅读
- 电子眼对车辆冲红灯的检测方法 3865次阅读
- 如何自制电动式测速计 测速计电路图解析 3706次阅读
- 网络电缆测试仪工作原理_网络电缆测试仪怎么用 1.9w次阅读
下载排行
本周
- 1山景DSP芯片AP8248A2数据手册
- 1.06 MB | 532次下载 | 免费
- 2RK3399完整板原理图(支持平板,盒子VR)
- 3.28 MB | 339次下载 | 免费
- 3TC358743XBG评估板参考手册
- 1.36 MB | 330次下载 | 免费
- 4DFM软件使用教程
- 0.84 MB | 295次下载 | 免费
- 5元宇宙深度解析—未来的未来-风口还是泡沫
- 6.40 MB | 227次下载 | 免费
- 6迪文DGUS开发指南
- 31.67 MB | 194次下载 | 免费
- 7元宇宙底层硬件系列报告
- 13.42 MB | 182次下载 | 免费
- 8FP5207XR-G1中文应用手册
- 1.09 MB | 178次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 2555集成电路应用800例(新编版)
- 0.00 MB | 33566次下载 | 免费
- 3接口电路图大全
- 未知 | 30323次下载 | 免费
- 4开关电源设计实例指南
- 未知 | 21549次下载 | 免费
- 5电气工程师手册免费下载(新编第二版pdf电子书)
- 0.00 MB | 15349次下载 | 免费
- 6数字电路基础pdf(下载)
- 未知 | 13750次下载 | 免费
- 7电子制作实例集锦 下载
- 未知 | 8113次下载 | 免费
- 8《LED驱动电路设计》 温德尔著
- 0.00 MB | 6656次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935054次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537798次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420027次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234315次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233046次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191187次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183279次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138040次下载 | 免费
评论
查看更多