吴忠躺衫网络科技有限公司

電子發燒友App

硬聲App

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示
電子發燒友網>電子資料下載>電子資料>開源硬件之向所有有禮貌的司機表示感謝

開源硬件之向所有有禮貌的司機表示感謝

2022-12-21 | zip | 0.30 MB | 次下載 | 免費

資料介紹

描述

只要我一直在開車,我就希望能夠以更有意義的方式與我周圍的隨機司機進行交流。在我看來,閃光、揮手、比揮手更重要的手勢、按喇叭或猛踩剎車最終都成為一種非常粗糙的交流機制。

其靈感來自詹姆斯·邦德的電影,在影片的開場場景中,他在奧斯汀·馬丁的后窗上展示了一些文字。我想,我真的可以告訴(不僅僅是用波浪形的手表達)另一輛車里的司機我在想什么。

?

還有一個準真人演示:

?
pYYBAGOiaEmAcUHPAAewbtAc6pw735.jpg
?

這是概念草圖:

poYBAGOiaGOAGfrGAAOnszDdHhY298.jpg
這個概念
?

這個項目有一個額外的挑戰,因為 MKR1000 是一個預發布板,沒有正式的文檔。

所以在項目的第一步:?

讓 MKR1000 說話

我很幸運能夠進入由http://arduino.cc贊助的論壇,該論壇為我們每個發行版的所有者提供了一個私人論壇。在一個充實的星期六之后,我設法能夠對電路板進行編程并讓所有組件正常工作。

我當前的設置涉及 Arduino IDE 版本 1.6.9 每小時構建一次。如果你像我一樣,那么在項目中使用“每小時”構建至少會讓你“不舒服”。 ?

安裝 IDE 后,我使用 IDE 的板管理器下載板的驅動程序。我還使用 IDE 庫管理器加載了以下庫:Adafruit DotStar、Adafruit DotStarMatrix、Adafruit GFX、ArduinoJson 和適用于 Arduino 的 Windows Virtual Shields。

當這塊板子正式發布時,流程會簡單很多。所以,我不打算在這里詳細介紹。在文章末尾有一個項目參考可以幫助您做到這一點。

構建電子設備的第一條規則:永遠不要讓魔法冒出電路!

MKR100 是一款基于 3v3 的開發板。沒有我想要的所有文檔,我不知道它們是否能承受 5 伏電壓。不僅一些組件確實需要 5 伏電壓來建立正確的邏輯 1 和 0。

這帶來了 Adafruit 對 4 通道雙向電平轉換的需求。藍牙卡和特別是 DotStar 矩陣都非常像一個完整的 5 伏特。所以,連接這些東西時要小心。

確保組件正常工作

在我擔心讓所有東西一起工作之前,我想確保所有組件都能正常工作。

我從 Adafruit 8x32 DotStar 矩陣開始。我發現我的人際關系有點古怪。為了使這不是問題,我使用了一些我放在周圍的插頭引腳并將它們焊接起來。 ?

pYYBAGOiaKeARBJeAAhyIopEgs4376.jpg
即將焊接頭針
?

牢固連接收割臺銷。我將數據和時鐘輸入路由到 MKR1000 上標有 SDA 和 SCL 的 SPI 引腳。 ?

牢固連接收割臺銷。我將數據和時鐘輸入路由到 MKR1000 上標有 SDA 和 SCL 的 SPI 引腳。 ?

我將示例草圖“文件 > 示例 > Adafruit DotStarMatric > matrixtest”加載到 IDE 中。調整代碼中的DATAPIN為11,CLOCKPIN為12。構建并部署了解決方案。在對矩陣進行了一些選擇之后,我得到了一個可以工作的顯示器。

?

接下來是讓 Virtual Shield 通過藍牙適配器工作。這真的很簡單。我按照 github 存儲庫?https://github.com/ms-iot/virtual-shields-arduino中提到的說明進行操作我唯一需要做的改變是 TX 和 RX 引腳。這些是我板上標記的引腳 14 和 13。 ?

我會注意到,在以前的版本中,我必須斷開 TX/RX 引腳才能上傳新草圖。我很高興地報告,情況已不再如此。

遍歷代碼

現在一切正常,我將花點時間瀏覽一下這個項目的特定代碼。

為了訪問所有功能,您需要包括以下內容:

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

前 5 個包含應該很清楚。 ?

VirtualShield.h 包含通過藍牙適配器進行通信的基本功能。無論您想訪問哪個傳感器,這都是必需的。

Text.h 文件獲取更好的文本,即字符串處理。

Graphics.h、Recognition.h 和 Colors.h 包含訪問虛擬屏幕和啟用語音識別所需的功能。雖然,這個挑戰還沒有完成,但我會在未來編寫語音功能。

接下來是重要代碼行列表,初始化 DotStar 矩陣和初始化 Shield 對象:

Adafruit_DotStarMatrix matrix = Adafruit_DotStarMatrix(
  32, 8, DATAPIN, CLOCKPIN,
  DS_MATRIX_TOP     + DS_MATRIX_LEFT +
  DS_MATRIX_COLUMNS + DS_MATRIX_ZIGZAG,
  DOTSTAR_GBR);

const uint16_t colors[] = {
  matrix.Color(255, 0, 0), matrix.Color(0, 255, 0), matrix.Color(0, 0, 255),
  matrix.Color(255, 0, 255), matrix.Color(255, 0, 106), matrix.Color( 255, 255, 255) };

VirtualShield shield;
Graphics screen = Graphics(shield);
Recognition speech = Recognition(shield);

第一行告訴 DotStar 庫矩陣的大小和布局。有關各種選項,請參閱 matrixtest 示例或 Adafruit_DotStarMatrix.h 文件。

這些顏色適用于 DotStar 庫。

最后 3 行啟動屏蔽并初始化對象,以便與手機中的傳感器一起工作。

接下來像所有 Arduino 草圖一樣,我們需要處理 setup() 方法

void setup() {
  matrix.begin();
  matrix.setTextWrap(false);
  matrix.setBrightness(40);
  matrix.setTextColor(colors[0]);

  DisplayText("Initializing...", 4, 10);

    // set up virtual shield events: 
    shield.setOnRefresh(refresh);
    speech.setOnEvent(onSpeech);
    screen.setOnEvent(screenEvent);   

    // begin the shield communication (also calls refresh()).
    shield.begin(); //assumes 115200 Bluetooth baudrate


  DisplayText("Initializing...finished", 3, 10);
}

“矩陣”行是不言自明的,執行這些行后,我現在可以向矩陣發送一些信息性消息。

“屏蔽”行現在設置回調方法。當事件發生時,將根據需要調用這些方法。 ?

現在是整個草圖最復雜的方法

void loop() {
  // checkSensors() checks for return events and handles them (calling callbacks). This is VirtualShield's single loop() method.
  shield.checkSensors();
}

是的,你明白了。我們不斷檢查傳感器是否已觸發以及需要處理的事件。

現在好了,讓我們真正處理一些事件。首先是 refresh() 方法。當許多不同的事件發生時,它將被調用。我們目前關心的一個事件是藍牙何時連接。我們需要事件,以便我們可以重繪屏幕,使其看起來像它應該的那樣。?

void refresh(ShieldEvent* shieldEvent)
{
  // put your refresh code here
  // this runs whenever Bluetooth connects, whenever the shield.begin() executes, or the 'refresh' button is pressed in the app:
  screen.clear(ARGB(123,86,204));
  screen.drawAt(0,0, "");

  thanksId      = screen.addButton(10, 50,   ". Thank you .");
  welcomeId     = screen.addButton(10, 100,  ".  Welcome  .");
  turnLeftId    = screen.addButton(10, 150,  ".      Left       .");
  stoppingId    = screen.addButton(175, 50,  ". Stopping  .");
  startingId    = screen.addButton(175, 100, ".   Starting  .");
  turnRightId   = screen.addButton(175, 150, ".    Right     .");
  backoffId     = screen.addButton(10, 225,  ".              Back Off                 .");
  calling911Id  = screen.addButton(10, 290,  ".           Calling 911                .");
}

此方法使用淺紫色背景清除屏幕,然后繼續將各種按鈕放在屏幕上。注意單詞周圍的間距。這是虛擬盾牌功能的當前限制,因為我真的很想將事物居中以使其看起來不錯。

那么當我觸摸其中一個按鈕時會發生什么?一個事件被觸發,并在下面的代碼中處理。

void screenEvent(ShieldEvent* shieldEvent) 
{
  if(screen.isPressed(thanksId))
  {
    DisplayText("Thank You", 5, 100);
  }

  if(screen.isPressed(welcomeId))
  {
    DisplayText("You're welcome", 2, 100);
  }
  if(screen.isPressed(backoffId))
  {
    DisplayText("Please back off", 4, 100);
  }
  if(screen.isPressed(stoppingId))
  {
    DisplayText("...stopping...", 0, 100);
  }
  if(screen.isPressed(startingId))
  {
    DisplayText("...starting...", 1, 100);
  }
  if(screen.isPressed(turnLeftId))
  {
    DisplayText("Turning LEFT", 3, 100);
  }
  if(screen.isPressed(turnRightId))
  {
    DisplayText("Turning RIGHT", 3, 100);
  }
  if(screen.isPressed(calling911Id))
  {
    DisplayText("Calling 911", 0, 100);
  }
}

一個事件到來,代碼檢查哪個按鈕被按下,我們調用 DisplayText 方法來顯示內容。

最后,文本如何進入矩陣?DisplayText 方法將為您處理。

void DisplayText(String message, int colorIndex, int currDelay)
{
  int x = matrix.width(); 
  int maxX = -1 * (message.length() * 5 + message.length());
  matrix.setTextColor(colors[colorIndex]);

  while( x > maxX) {
    matrix.fillScreen(0);
    matrix.setCursor(x, 0);
    matrix.print(message);

    --x;

    matrix.show();
    delay(currDelay);
  }
}

這個方法計算出這個字符串到底有多寬。我們需要知道,這樣我們才能確保字符串完全滾動進出視圖。字母之間的間距為 5 寬 + 1。

建造圍欄

構建非常簡單。我找到了一個比矩陣足跡大的大小合適的盒子。拿了一塊 1/4" 的波羅的海樺木,它比我需要的大,然后把它切成合適的尺寸。 ?

專業提示:不要嘗試測量這個。只需將盒子放在臺鋸上,然后將柵欄推緊即可。
?
?
?
poYBAGOiaL6Ab7e9AAV44iqLbkA986.jpg
?
1 / 2
?
專業提示:在臺鋸上切割任何種類的原料時,請將鋸片高度調整到最低限度。它最大限度地減少了木材上的燃燒,并降低了所有額外刀片旋轉的風險。
poYBAGOiaNaAZ-whAARfHTAQtNk846.jpg
?

使用與臺鋸相同的技術。首先將矩陣放在膠合板上。定位好后,再標出接線的水平中心和垂直中心(包括輔助電源接線)。您現在需要做的就是連接線以找到您將要鉆孔的孔的中心。

是的,我說的是“鉆孔”,而不是“鉆孔”。上次我在塑料上“鉆”孔時,得到了一些非常不令人滿意的結果。這次我使用?了 Forestner 鉆頭我在下面有一張他們的照片。注意邊緣是用來切割的,中間有一個刮刀用來挖出不需要的木頭。做一個更好的“洞”。現在,開始“鉆孔”,您可能想繼續鉆懸掛孔。

拿一張 120 號砂紙,輕輕打磨整塊砂紙。確保“緩解”電路板的邊緣包括剛剛制作的所有孔。一定要把板子擦干凈,這樣板上就沒有其他“東西”的鋸屑了。

現在是時候處理塑料盒了。 ?

在盒子的兩端鉆兩個孔。這些用于電源連接器和與矩陣的連接。暫時不要鉆矩陣輔助電源孔。

現在,在盒子背面貼幾條雙面膠帶,然后將盒子貼在膠合板上。因為這是“可重新定位”的膠帶,我真的希望它能永遠粘住。我在上面放了一些沉重的書,并放置了 24 小時。為什么是24小時?磁帶說明說不要。這對我來說是一個足夠好的理由。

最后一個洞的時間。您現在應該有輔助電源連接孔的準確位置。把它弄出來,享受你“精確”的工作。?

?
?
?
poYBAGOiaPmAZRLVAAesmxFDlkc792.jpg
?
1 / 6
?

把智慧放在盒子里

似乎面包板的尺寸正好適合盒子,但我希望能夠從 MKR1000 插入/拔出 USB 連接器所以,我不得不讓面包板更短。

?
?
?
pYYBAGOiaSqAE_MTAAk64VJyPVE690.jpg
?
1 / 4
?

好的,在那次創傷之后,剝下面包板的背面并將其粘住。確保避開輔助電源連接孔。

?
?
?
poYBAGOiaVKAeq4SAAb-bkyFCHI763.jpg
?
1 / 3
?

將矩陣連接到膠合板的正面,將連接穿過孔。用一些熱膠固定矩陣。

讓我們談談權力

即使我將亮度設置為 40%,如果我點亮所有 256 個像素,最大電流大約為 7.5 安培。遠遠超過 MKR1000 所能提供的。對我來說幸運的是,沒有一個顯示是靜態的,我沒有在整個矩陣附近的任何地方點亮。輔助電源連接來救援。我提供高達 4A 的電流我想既然它不是持續的也不是靜態的,電源應該是好的。?

我還有一個備用的壁式電源適配器,當它在車內通電時,我使用它的末端為 MKR1000 供電

?
?
?
pYYBAGOiaXKAVv9gAAYu1Haoqq8189.jpg
?
1 / 2
?

我正在考慮在項目中構建一個電源轉換器,以獲取 12V 汽車電源并將 5V 提供給項目。經過深思熟慮,以 5.00 美元的價格購買一個 5V 4A 交流適配器并使用我已有的交流轉換器在所有方面都更好。當涉及到這些東西時,簡單通常更好。

掛牌子

我曾計劃使用“球彈力繩”和一些吸盤將其固定在后擋風玻璃上。這么說吧,我在該地區還有更多工作要做。

?
?
?
pYYBAGOiaZWAatUHAAYcFqepDnw366.jpg
?
1 / 2
?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
百家乐稳赢秘诀教学| 线上百家乐官网信誉| 百家乐官网代理在线游戏可信吗网上哪家平台信誉好安全 | 棋牌游戏开发| 菲律宾百家乐官网排行| 百家乐网站平台| 体球网比分| 百佬汇百家乐官网的玩法技巧和规则 | 澳门百家乐官网长赢打| 威尼斯人娱乐场 送2688元礼金领取lrm64| 新葡京百家乐官网现金| 在线百家乐大家赢| bet365提款时间| 博彩百家乐官网画谜网| 威尼斯人娱乐城 104| 百家乐官网双人操作分析仪| 百家乐规律打| 百家乐官网最佳投注办法| 麻将百家乐筹码| 博九百家乐官网游戏| 百家乐平注7s88| 太阳城百家乐官网出千技术| 肯博百家乐的玩法技巧和规则| 百家乐官网一般的庄闲比例是多少| 加多宝百家乐的玩法技巧和规则 | 网上百家乐官网网| 百家乐网址| 百家乐官网扑克发牌器| 真人百家乐的玩法技巧和规则| 百家乐官网最低下注| 百家乐博娱乐平台| 博彩qq群| 宝格丽百家乐娱乐城| 全球最大赌博网站| 利记百家乐现金网| 广东省| 赌博百家乐判断决策| 澳门百家乐官网皇冠网| sp全讯网新2| 谁会玩百家乐官网的玩法技巧和规则 | 瑞士百家乐官网的玩法技巧和规则|