資料介紹
描述
InqSpeedRacer是用于 HotWheels? 的基于網(wǎng)絡(luò)的電子測速儀。該項目是為學(xué)習運動物理主題的 8 年級科學(xué)課創(chuàng)建的。它也是創(chuàng)建InqPortal服務(wù)器的演示者,該服務(wù)器不僅服務(wù)于多個客戶端,而且客戶端可以連接到多個服務(wù)器。這可以很容易地用作家庭自動化的模板。創(chuàng)建多種InqPortal “服務(wù)器”,使用傳感器、繼電器和/或執(zhí)行器來感知和控制環(huán)境。可以創(chuàng)建客戶端儀表板以連接到所有服務(wù)器并監(jiān)視和控制所有服務(wù)器。作為基于瀏覽器的應(yīng)用程序的客戶端可以在 Windows、Chromebook、Android、Linux 和 Apple 設(shè)備上運行。
硬件模塊設(shè)計
這是一個相對較快的刻錄項目。我們想為學(xué)生制作六個,并且我們想為后代保留一個……說實話……以防我們不得不支持修復(fù)錯誤。我們不得不訂購零件。由于電子產(chǎn)品不是我們天生的強項之一,所以用“ Arduino photo diode ”這個短語搜索了大約三十分鐘” 想出一個可行的電路。30 分鐘后,我們?yōu)?10 個 ESP8266 WeMos 板、電阻紅外 LED 和紅外光電二極管訂購了足夠的零件。最后一個我不確定有多少帖子發(fā)誓他們是光電晶體管,另一半說是二極管。我決定讓我的狗再打一場。我所知道的是它們與 LED 的尺寸相同(5 毫米),并且它們有兩根電線,電路顯示使用兩根電線工作。我們試圖在硬件方面牢記 KISS 原則。大約三天后他們出現(xiàn)了,我們把它放在面包板上,原型軟件在大約三十分鐘后運行。這是我們每個單位使用的零件。
- 1 WeMos ESP8266 D1 Mini – 我更喜歡這些尺寸和防彈 USB 和 3.3v 穩(wěn)壓器。它們甚至可以由最古老、最便宜的 USB 微型交流適配器供電。即使是 250 mW 的功率也足夠了。實際上,如果我們必須購買交流適配器,它的成本將超過InqSpeedRacer的其余部分。
- 2 個紅外 LED——我想我燒掉了其中的一些以獲得正確的限流電阻,因為賣家沒有提供或提供任何信息。
- 2 個紅外光電二極管 – 同上燃燒
- 3 個電阻器 – (1) 100 Ω 和 (2) 180 Ω
總支出——每臺 InqSpeedRacerServer 不到 4 美元。
3D打印房屋
原型是用透明的 ABS 制作的,但它傾向于打印半透明的,你看不到里面的零件。但它的內(nèi)置藍色 LED 閃爍,拍出了令人驚嘆的畫面!其他設(shè)計特點包括
- 低調(diào)
- 有支架可以滑入軌道底部,以防止它被撞到。
- 重量輕(< 19 克)– 足夠輕,即使在沒有支撐的下坡上,它也可以安裝,不會顯著改變軌道曲率。
使用 InqPortal 的服務(wù)器軟件
服務(wù)器端軟件使用可在 Arduino IDE 庫管理器中輕松找到的InqPortal庫。該服務(wù)器的設(shè)計目的是讓開發(fā)人員不必弄亂任何 WiFi、WebServer 邏輯。他們可以專注于手頭的工作——速度陷阱。以下是有關(guān)服務(wù)器的一些詳細信息。
- 完全注釋、完全基于 WiFi 網(wǎng)絡(luò)的服務(wù)器 Sketch 的行數(shù)只有 140 行。 其中只有十行與 Web 服務(wù)器有關(guān)。剩下的就是監(jiān)控光電晶體管,執(zhí)行時序計算和注釋。
- 一輛車通過并向客戶端報告速度后,它會自動重置并準備下一輛車通過。
- 與其他InqPortal示例不同,這個示例實際上在 loop() 方法中做了一些事情。它利用了完全運行時的環(huán)路頻率約為 100kHz。我用它來檢查光束是否被汽車擋住。我最初做了一個中斷版本,但代碼復(fù)雜性并沒有真正變得更好。這給出了 1/100, 000 秒的時間分辨率。這比我們向客戶報告的毫秒分辨率要好得多。
這是代碼,但請節(jié)省您的時間... 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 的客戶端軟件
客戶端有兩個應(yīng)用程序(網(wǎng)頁),JavaScript 編碼實際上比服務(wù)器端編碼長,分別為 105 和 240 行。第一頁簡單地報告了所有汽車速度的運行記錄。它顯示實際速度和假設(shè) HotWheels 為 1:64 比例的比例速度。它還做了一些物理操作,并使用 KE = PE 估計掉落汽車的原始高度。單位可以從 mph 更改為 kph 和任何比例因子。
從開發(fā)人員的角度和家庭自動化的角度來看,第二頁在技術(shù)上更有趣。InqPortal有能力編寫一個可以與多個InqPortal服務(wù)器對話的客戶端。服務(wù)器不必是同一個項目。家庭自動化的優(yōu)勢很簡單……您可以擁有一個儀表板,連接所有各種設(shè)備,并從一個客戶端檢索和控制所有內(nèi)容……而且由于它是基于瀏覽器的,它可以在 Windows、Android、蘋果和 Linux。在此示例中,我們將其設(shè)置為連接到多個InqSpeedRacer服務(wù)器充當終點線......就像松木德比。代碼有點復(fù)雜,不是因為多服務(wù)器訪問,而是因為客戶端必須標準化所有服務(wù)器時鐘,以便它可以比較汽車穿過各個服務(wù)器“終點線”的時間。
開始...
... 構(gòu)建您自己的InqSpeedRacer ,您首先需要在您的 Arduino IDE 庫管理器中下載InqPortal庫。它將包含示例中所有必要的服務(wù)器和客戶端文件的完整副本。有關(guān)該項目的更多詳細信息,請訪問InqSpeedRacer。 有關(guān)InqPortal庫的更多詳細信息,您可以查看我的其他 Project Hub 項目使用 3 行代碼制作 WebServer! 完整的交叉參考手冊和教程可以在InqOnThat.com/InqPortal/上找到
- LY激光多普勒測速測長系統(tǒng) 3次下載
- 項目實戰(zhàn):51單片機霍爾自行車里程測速儀設(shè)計 論文 原理圖 程序 PPT 制作詳解都有
- 基于單片機霍爾電機測速儀表控制系統(tǒng)設(shè)計(畢業(yè)設(shè)計資料)
- TBR-321 側(cè)裝多車道多目標雷達 彩頁
- TBR-310 交通信息檢測側(cè)裝微波雷達 彩頁
- 適用于中國國家標準的機動車測速儀 2次下載
- 基于FPGA的電機測速的設(shè)計與實現(xiàn) 11次下載
- 使用8031單片機設(shè)計低成本智能測速儀的硬件電路和軟件的方法說明 1次下載
- 51單片機的紅外光電測速儀 6次下載
- 基于MSP430與霍爾傳感器的自行車測速儀 33次下載
- 一種低成本單片機智能測速儀的研制 48次下載
- 導(dǎo)航儀電子狗與流動測速電子狗的區(qū)別 19次下載
- 采用霍爾元件的測速電路 524次下載
- 雷達探測系統(tǒng)比較及雷達測速 73次下載
- 自確認測速度儀的設(shè)計
- 矢量網(wǎng)絡(luò)分析儀的頻率范圍解析 1050次閱讀
- 基于矢量網(wǎng)絡(luò)分析儀的時域測量技術(shù) 851次閱讀
- 矢量網(wǎng)絡(luò)分析儀的工作原理和基本結(jié)構(gòu) 1350次閱讀
- 網(wǎng)絡(luò)測試儀概述及作用 網(wǎng)絡(luò)測試儀的使用方法及注意事項 931次閱讀
- 矢量網(wǎng)絡(luò)分析儀的用途有哪些 1044次閱讀
- 網(wǎng)絡(luò)分析儀的分類 317次閱讀
- 網(wǎng)絡(luò)分析儀的工作原理 464次閱讀
- 什么是網(wǎng)絡(luò)分析儀 428次閱讀
- 矢量網(wǎng)絡(luò)分析儀使用教程 1.5w次閱讀
- 網(wǎng)絡(luò)測試儀的應(yīng)用類型及作用特點 5045次閱讀
- 測速編碼器工作原理 2w次閱讀
- 測速傳感器的原理_測速傳感器分類 1w次閱讀
- 電子眼對車輛沖紅燈的檢測方法 3865次閱讀
- 如何自制電動式測速計 測速計電路圖解析 3706次閱讀
- 網(wǎng)絡(luò)電纜測試儀工作原理_網(wǎng)絡(luò)電纜測試儀怎么用 1.9w次閱讀
下載排行
本周
- 1山景DSP芯片AP8248A2數(shù)據(jù)手冊
- 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開發(fā)指南
- 31.67 MB | 194次下載 | 免費
- 7元宇宙底層硬件系列報告
- 13.42 MB | 182次下載 | 免費
- 8FP5207XR-G1中文應(yīng)用手冊
- 1.09 MB | 178次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33566次下載 | 免費
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費
- 5電氣工程師手冊免費下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6656次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 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十天學(xué)會AVR單片機與C語言視頻教程 下載
- 158M | 183279次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138040次下載 | 免費
評論
查看更多