步驟1:我們需要的電子設(shè)備
為簡(jiǎn)單起見,我們將項(xiàng)目分為三個(gè)部分
·傳感器板
為此,我們需要兩種類型的傳感器及以下組件
1。彎曲傳感器2個(gè)單元,用于測(cè)量手指的彎曲程度
2。 ADXL 335獲取手的x和y軸x坐標(biāo)
3。 10K歐姆電阻2個(gè)單位,與撓性傳感器一起形成分壓器偏置
4。小型PCB(覆銅2英寸X 2英寸)以構(gòu)建傳感器電路
5。連接的錯(cuò)誤條
·控制器部分
我們嘗試使用兩種方法使用Arduino UNO板來實(shí)現(xiàn)該原型,而另一種方法是為Atmega制作自己的分線板328,但我們?nèi)栽谑褂肁rduino UNO燒寫引導(dǎo)程序并在Atmega 328中上載代碼。
所以這里我們需要
1。 Arduino UNO
2。 Atmega 328p-pu
4。 16 MHz晶振1個(gè)單元,用于Atmega 328
5的工作頻率。 10K歐姆電阻1個(gè)單位復(fù)位電阻
6。重置按鈕1個(gè)單位以重置Atmega 328
7。連接錯(cuò)誤條
8。 7805 5V電壓調(diào)節(jié)器可從9V電池獲得5V調(diào)節(jié)電壓。
9。 BC 547 npn晶體管8個(gè)單元,用于控制音頻處理器IC
10的通道。 1K歐姆電阻8個(gè)單元,用于將Atmega 328的端口引腳連接到晶體管的基極
·音頻處理和LCD單元
1。 APR 33A3音頻處理器存儲(chǔ)和播放聲音1個(gè)單位
2。 LCD 16X2 1個(gè)單元來顯示消息
3。麥克風(fēng)1個(gè)單元,用于錄制音頻消息
4。揚(yáng)聲器16歐姆1個(gè)單位播放音頻信號(hào)
5。 10K歐姆電位器1個(gè)單位,用于控制LCD的亮度
6。并且所有支持APR 33A3的其他組件
·47K歐姆電阻
·4.7K歐姆電阻
·100K歐姆電阻
· 470歐姆電阻
·1nF電容器
·100nF電容器
·100 microF電解電容器
·10 microF電容器
·1個(gè)微型F電容器
·連接線
其他組件數(shù)量請(qǐng)參考APR 33A3的電路圖或數(shù)據(jù)表
步驟2:準(zhǔn)備好硬件。。..
使用PCB WIZARD軟件進(jìn)行PCB設(shè)計(jì),您可以從此鏈接下載
軟件http://pcb-wizard.software.informer.com/4.0/
PCB向?qū)窃O(shè)計(jì)電路最簡(jiǎn)單的軟件,即使初學(xué)者也可以使用它直接因?yàn)樵撥浖浅R子谑褂谩?.。.它具有許多功能,可減少設(shè)計(jì)時(shí)間電路,例如DRAG和Drop選項(xiàng)。..。
一旦電路設(shè)計(jì)完成,我們就將.pcb文件附加到設(shè)計(jì)好的PCB上
從該電路布局的藝術(shù)作品中取出印刷品在照片紙或光面紙上,然后通過熨燙工藝跟蹤覆銅板上的電路印刷圖稿。
在熨燙過程中,您必須注意,所有電路布局圖稿應(yīng)完全在覆銅板上跟蹤在完全跟蹤覆銅箔上的電路布局圖稿后,用水制成Fecl3溶液,并將其跟蹤到覆銅箔中約30至40分鐘。..。..。在此過程中,您應(yīng)連續(xù)檢查其中的覆銅箔一定間隔后,覆銅板的銅應(yīng)消失,除了電路布局圖的痕跡部分……意味著僅應(yīng)保留電路。..
一旦從溶液中取出板然后清洗鉆孔后涂助焊劑并完成并用砂紙打磨鉆孔。在鍍錫開始安裝組件并進(jìn)行焊接操作之后,借助烙鐵進(jìn)行鍍錫過程。..。..。..
使用圖像跟蹤各個(gè)組件的所有過程和位置。
請(qǐng)按照電路圖制作自己的PCB。
如果我們?cè)谧约褐谱鞯姆志€板上使用Arduino UNO,則只有Atmega 328控制器部分被忽略,其余的連接都相同并進(jìn)行連接
步驟3:在ATmega 328、168、8中刻錄Bootloader
這里有我們學(xué)習(xí)使用Arduino IDE和Arduino UNO在空白的ATmega 328/168/8芯片上刻錄引導(dǎo)程序。
所以,我們需要什么
第一步連接硬件
用于ATmega 328/168/8的空白芯片的分線板
在這里,我們也可以在面包板上進(jìn)行連接,我也可以根據(jù)需要選擇制作一塊特殊的板,這樣就無需做sa我一次又一次地處理,只是節(jié)省您的時(shí)間。進(jìn)行如圖1所示的連接
觀看圖2。這是我用來燒寫引導(dǎo)程序的板。
在購(gòu)買ATmega 328空白芯片時(shí)請(qǐng)注意
您可能已經(jīng)注意到,
ATMega328P-PU
ATMega328-PU
兩者之間的區(qū)別只是328之后的P。是ATMEL開發(fā)的一項(xiàng)技術(shù),它允許微控制器以更低的功率運(yùn)行。
這對(duì)于小型應(yīng)用程序至關(guān)重要,但是伙計(jì)們?cè)诳啼浺龑?dǎo)加載程序時(shí)每個(gè)芯片都有其唯一的密鑰簽名,因此需要在刻錄之前編輯該密鑰簽名引導(dǎo)加載程序。
那么這些IC的密鑰簽名是什么
ATmega328 0x1E 0x95 0x14
ATmega328P 0x1E 0x95 0x0F
所以我們需要要在刻錄引導(dǎo)程序之前更改這些簽名,請(qǐng)遵循以下基本步驟
·導(dǎo)航至。.. arduino-1.0.5 hardware tools avr etc
·進(jìn)行備份文件的副本:avrdude.conf
·在文本編輯器中打開avrdude.conf文件r
·搜索:“ 0x1e 0x95 0x0F”(這是ATmega328P簽名)
·替換為:“ 0x1e 0x95 0x14”(這是ATmega328簽名)
·保存文件
·重新啟動(dòng)Arduino IDE
·繼續(xù)進(jìn)行引導(dǎo)程序的其余步驟,一旦引導(dǎo)加載完成,請(qǐng)還原您制作的備份副本。
使連接與圖3所示相同
現(xiàn)在,我們已經(jīng)完成了硬件設(shè)置
2步驟準(zhǔn)備軟件
打開Arduino IDE,確保您已根據(jù)目標(biāo)AVR ATmega
1更改了您的簽名。打開Arduino IDE
2。文件》示例》 Arduino ISP
3。從工具》板中選擇Arduino328
4。選擇您的串行端口。
5。在Arduino板上燒錄。
6。從工具》編程器
7中選擇Arduino作為ISP。選擇Burn Bootloader
步驟4:上傳代碼并使之運(yùn)行
在我們加載的引導(dǎo)中使用Arduino UNO加載以下代碼芯片(Atmega 328)
//GESTURE
VOCALIZER進(jìn)行人與人互動(dòng)
#include
//伙計(jì)們從arduino.cc下載此庫(kù)
LiquidCrystal lcd(13,12,11,10,9,8);//檢查引腳連接的電路圖
void setup()
{
lcd.begin(16,2);
}
void loop()
{
lcd.clear();
int val0 = AnalogRead(0);//讀取輸入引腳柔性傳感器引腳1
val0 = map(val0,465,590,0,9);//將其轉(zhuǎn)換為0到9的窗口
int val1 = AnalogRead(1);//讀取輸入引腳柔性傳感器引腳2
val1 = map(val1,435,535,0,9);
//讀取輸入引腳
int val2 = AnalogRead(2);//讀取輸入引腳X軸引腳
val2 = map(val2,260,415,0,9);
int val3 = AnalogRead(3);//讀取輸入引腳y軸引腳
val3 = map(val3,260,420,0,9);
如果(val0》 = 0 && val0 《= 0 && val1》 = 3 && val1 《= 4 && val2》 = 7 && val2 《= 8 && val3》 = 4 && val3 《= 5)//將符號(hào)與標(biāo)準(zhǔn)存儲(chǔ)值相匹配,取決于佩戴者的雙手
{
lcd.print(“我是__________________”);//在LCD上顯示消息
digitalWrite(0,HIGH);//在APR 33A3上選擇語(yǔ)音命令1
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW) ;
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(100);
digitalWrite(0,LOW);//將其關(guān)閉
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7, LOW);
delay(5000);
}
否則,如果(val0》 = 6 && val0 《= 7 && val1》 = 1 && val1 《= 2 && val2》 = 7 && val2 《= 8 && val3》 = 2 && val3 《= 3)
{
lcd.print(“ sorry”);
digitalWrite(0,LOW);//在APR 33A3上選擇語(yǔ)音命令2
digitalWrite(1,HIGH);
digitalWrite(2,LOW);
digitalWrite(3,LOW) ;
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
延遲(100);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5, LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(5000);
}
否則,如果(val0》 =-1 && val0 《= 0 && val1》 = 3 && val1 《= 4 && val2》 = 1 && val2 《= 3 && val3》 = 0 && val3 《= 2)
{
lcd.print(“ Hello”);
digitalWrite(0,LOW);//在APR 33A3上選擇語(yǔ)音命令3
digitalWrite(1,LOW);
digitalWrite(2,HIGH);
digitalWrite(3,LOW) ;
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
延遲(100);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5, LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(5000);
}
否則,如果(val0》 = 0 && val0 《= 0 && val1》 = 0 && val1 《= 1 && val2》 = 5 && val2 《= 6 && val3》 =-0 && val3 《= 1)
{
lcd.print(“謝謝”);
digitalWrite(0,LOW);//在APR 33A3上選擇語(yǔ)音命令4
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,HIGH) ;
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
延遲(100);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5, LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(5000);
}
否則,如果(val0》 = 2 && val0 《= 3 && val1》 = 1 && val1 《= 1 && val2》 = 3 && val2 《= 5 && val3》 = 1 && val3 《= 2 )
{
lcd.print(“ drink”);
digitalWrite(0,LOW);//在APR 33A3上選擇語(yǔ)音命令5
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW) ;
digitalWrite(4,HIGH);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
延遲(100);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5, LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(5000);
}
否則,如果(val0》 = 4 && val0 《= 5 && val1》 = 2 && val1 《= 3 && val2》 = 4 && val2 《= 6 && val3》 = 0 && val3 《= 2 )
{
lcd.print(“ beautiful”);
digitalWrite(0,LOW);//在APR 33A3上選擇語(yǔ)音命令6
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW) ;
digitalWrite(4,LOW);
digitalWrite(5,HIGH);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
延遲(100);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5, LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(5000);
}
否則,如果(val0》 = 0 && val0 《= 0 && val1》 = 4 && val1 《= 6 && val2》 = 4 && val2 《= 5 && val3》 = 1 && val3 《= 2 )
{
lcd.print(“ bye”);
digitalWrite(0,LOW);//在APR 33A3上選擇語(yǔ)音命令7
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW) ;
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,HIGH);
digitalWrite(7,LOW);
延遲(100);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5, LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(5000);
}
否則,如果(val0》 = 0 && val0 《= 1 && val1》 = 0 && val1 《= 1 && val2》 = 7 && val2 《= 8 && val3》 = 1 && val3 《= 2 )
{
lcd.print(“ sick”);
digitalWrite(0,LOW);//在APR 33A3上選擇語(yǔ)音命令8
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW) ;
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW);
digitalWrite(7,HIGH);
delay(100);
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5, LOW);
digitalWrite(6,LOW);
digitalWrite(7,LOW);
delay(5000);
}
else
{
lcd.print(“ System on”);//初始消息
digitalWrite(0,LOW);
digitalWrite(1,LOW);
digitalWrite(2,LOW);
digitalWrite(3,LOW);
digitalWrite(4,LOW);
digitalWrite(5,LOW);
digitalWrite(6,LOW) );
digitalWrite(7,LOW);
}
delay(200);//延遲200毫秒
}
責(zé)任編輯:wv
-
聲控器
+關(guān)注
關(guān)注
0文章
3瀏覽量
6612
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論