91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

怎樣用語音命令控制直流電機(jī)

454398 ? 來源:工程師吳畏 ? 2019-07-31 11:36 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

電路圖

建立連接如下:

ENA L298N到Arduino 11的引腳

L298N的ENB到Arduino的10號引腳

L298N的IN1到Arduino的9號引腳

L298N的IN2到Arduino的第8針

L298N的IN3到Arduino的第7針

L298N的IN4到Arduino的第6針

將正在使用的電池電源正極連接到L298N的12V連接器,電池到L298N的GND,以及L298N的GND到GND of Arduino

最后,連接L298N兩端的兩個(gè)電機(jī)

怎樣用語音命令控制直流電機(jī)

如何運(yùn)行程序

首先,在Arduino IDE的帖子末尾復(fù)制并粘貼Arduino代碼并上傳代碼。

然后從Wekinator的示例頁面下載草圖。

下載MFCC的可執(zhí)行文件(mel-frequency cepstral coefficient)。我有一個(gè)64位操作系統(tǒng),所以我下載了“win64”。

下載后,將其解壓縮并運(yùn)行“.exe”文件。它將如下所示。現(xiàn)在您需要一個(gè)麥克風(fēng)來為Wekinator提供輸入。如果已連接外接麥克風(fēng),請確保在聲音設(shè)置中選擇了該麥克風(fēng)。

您需要另一個(gè)草圖來獲取Wekinator的輸出。該草圖在本文末尾給出。將其粘貼到新的處理窗口并運(yùn)行草圖。

打開Wekinator并進(jìn)行如下圖所示的設(shè)置。將輸入設(shè)置為13,將輸出設(shè)置為1.將類型設(shè)置為“所有動(dòng)態(tài)時(shí)間扭曲”,使用5種手勢類型,然后單擊“下一步”。

現(xiàn)在按住output_1前面的“+”按鈕并說“前進(jìn)”。

然后按住output_2前面的“+”按鈕并說出“向后”。

然后按住output_3前面的“+”按鈕并說出“right”。

然后按住output_4前面的“+”按鈕并說“左”。

然后按住“ outpu前面的+“按鈕t_5并說“停止”。

然后,單擊“Train”,然后單擊“Run”。確保已上載Arduino代碼并且處理草圖正在后臺運(yùn)行。現(xiàn)在電機(jī)應(yīng)根據(jù)您的聲控命令移動(dòng)。嘗試用你的聲音進(jìn)行測試,并在需要時(shí)重復(fù)上述步驟進(jìn)行重新訓(xùn)練。

它是如何工作的?

總之,這個(gè)項(xiàng)目有三個(gè)部分:Wekinator,Processing和Arduino。使用機(jī)器學(xué)習(xí),Wekinator正在告訴處理它正在收聽的語音是否是預(yù)先訓(xùn)練好的語音命令。然后處理讀取該消息并將其傳遞給Arduino,然后Arduino決定是否順時(shí)針/逆時(shí)針轉(zhuǎn)動(dòng)電機(jī)。 Wekinator和處理之間發(fā)生的所有通信都是通過OSC(開放式聲音控制)協(xié)議。處理和Arduino之間的通信是通過串口完成的。

Arduino代碼

#include //Including the library that will help us in receiving and sending the values from processing

ValueReceiver《1》 receiver; /*Creating the receiver that will receive only one value.

Put the number of values to synchronize in the brackets */

/* The below variable will be synchronized in the processing

and it should be same on both sides. */

int output;

//Motor Pins

int EN_A = 11;

int IN1 = 9;

int IN2 = 8;

int IN3 = 7;

int IN4 = 6;

int EN_B = 10;

void setup()

{

/* Starting the serial communication because we are communicating with the

Processing through serial. The baudrate should be same as on the processing side. */

Serial.begin(19200);

//Initializing the motor pins as output

pinMode(EN_A, OUTPUT);

pinMode(IN1, OUTPUT);

pinMode(IN2, OUTPUT);

pinMode(IN3, OUTPUT);

pinMode(IN4, OUTPUT);

pinMode(EN_B, OUTPUT);

digitalWrite(EN_A, HIGH);

digitalWrite(EN_B, HIGH);

// Synchronizing the variable with the processing. The variable must be int type.

receiver.observe(output);

}

void loop()

{

// Receiving the output from the processing.

receiver.sync();

// Matching the received output to light up led‘s

if (output == 1)

{

//Forward

digitalWrite(IN1, LOW);

digitalWrite(IN2, HIGH);

digitalWrite(IN3, LOW);

digitalWrite(IN4, HIGH);

}

else if (output == 2)

{

//Backward

digitalWrite(IN1, HIGH);

digitalWrite(IN2, LOW);

digitalWrite(IN3, HIGH);

digitalWrite(IN4, HIGH);

}

else if (output == 3)

{

//Right

digitalWrite(IN1, LOW);

digitalWrite(IN2, HIGH);

digitalWrite(IN3, LOW);

digitalWrite(IN4, LOW);

}

else if (output == 4)

{

//Left

digitalWrite(IN1, LOW);

digitalWrite(IN2, LOW);

digitalWrite(IN3, HIGH);

digitalWrite(IN4, LOW);

}

else if (output == 5)

{

//Stop

digitalWrite(IN1, LOW);

digitalWrite(IN2, LOW);

digitalWrite(IN3, LOW);

digitalWrite(IN4, LOW);

}

}

處理代碼

import vsync.*; // Importing the library that will help us in sending and receiving the values from the Arduino

import processing.serial.*; // Importing the serial library

// Below libraries will connect and send, receive the values from wekinator

import oscP5.*;

import netP5.*;

// Creating the instances

OscP5 oscP5;

NetAddress dest;

ValueSender sender;

// This variable will be syncronized with the Arduino and it should be same on the Arduino side.

public int output;

void setup()

{

// Starting the serial communication, the baudrate and the com port should be same as on the Arduino side.

Serial serial = new Serial(this, “COM10”, 19200);

sender = new ValueSender(this, serial);

// Synchronizing the variable as on the Arduino side.

sender.observe(“output”);

// Starting the communication with wekinator. listen on port 12000, return messages on port 6448

oscP5 = new OscP5(this, 12000);

dest = new NetAddress(“127.0.0.1”, 6448);

}

//This is called automatically when OSC message is received

void oscEvent(OscMessage theOscMessage) {

if (theOscMessage.checkAddrPattern(“/output_1”)==true)

{

output = 1;

}

else if (theOscMessage.checkAddrPattern(“/output_2”)==true)

{

output = 2;

}

else if (theOscMessage.checkAddrPattern(“/output_3”) == true)

{

output = 3;

}

else if (theOscMessage.checkAddrPattern(“/output_4”) == true)

{

output = 4;

}

else if (theOscMessage.checkAddrPattern(“/output_5”) == true)

{

output = 5;

}

else

{

}

}

void draw()

{

// Nothing to be drawn for this example

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 直流電機(jī)
    +關(guān)注

    關(guān)注

    36

    文章

    1783

    瀏覽量

    74070
  • 語音控制
    +關(guān)注

    關(guān)注

    5

    文章

    513

    瀏覽量

    29718
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    為什么驅(qū)動(dòng)直流電機(jī)跟振動(dòng)直流電機(jī)對電源的干擾不一樣,怎么解決。

    有大佬知道為什么驅(qū)動(dòng)直流電機(jī)跟振動(dòng)直流電機(jī)對 12 伏電源的干擾不一樣嗎,怎么解決
    發(fā)表于 03-31 13:53

    四線的直流電機(jī)該如何接線

    直流電機(jī)的接線方式直接關(guān)系到其運(yùn)行性能和控制效果,尤其是四線直流電機(jī)(通常指帶有兩個(gè)獨(dú)立繞組的雙通道電機(jī)或串/并勵(lì)可切換電機(jī)),其接線邏輯需
    的頭像 發(fā)表于 03-05 16:58 ?477次閱讀

    直流電機(jī)接線的相關(guān)問題

    直流電機(jī)作為工業(yè)生產(chǎn)和日常生活中常見的動(dòng)力裝置,其接線方式的正確性直接影響電機(jī)性能、使用壽命甚至安全。本文將從直流電機(jī)的基本結(jié)構(gòu)、接線原理、常見接線方法、注意事項(xiàng)及故障排查五個(gè)方面展開詳細(xì)解析,并
    的頭像 發(fā)表于 12-31 07:43 ?767次閱讀
    <b class='flag-5'>直流電機(jī)</b>接線的相關(guān)問題

    流電機(jī)直流電機(jī)調(diào)速方法

    流電機(jī)直流電機(jī)作為現(xiàn)代工業(yè)中應(yīng)用最廣泛的兩種電動(dòng)機(jī)類型,其調(diào)速技術(shù)直接關(guān)系到生產(chǎn)效率、能源消耗和設(shè)備性能。隨著電力電子技術(shù)、微處理器控制技術(shù)的快速發(fā)展,電機(jī)調(diào)速方法已從傳統(tǒng)的機(jī)械式
    的頭像 發(fā)表于 12-19 07:39 ?1077次閱讀
    交<b class='flag-5'>流電機(jī)</b>與<b class='flag-5'>直流電機(jī)</b>調(diào)速方法

    探索用于Arduino的TLE94112ES直流電機(jī)控制盾牌

    探索用于Arduino的TLE94112ES直流電機(jī)控制盾牌 引言 在電子工程領(lǐng)域,電機(jī)控制一直是至關(guān)重要的部分。對于Arduino開發(fā)者而言,一款功能強(qiáng)大且易于使用的
    的頭像 發(fā)表于 12-18 16:35 ?421次閱讀

    CW32電機(jī)控制基礎(chǔ)——無刷直流電機(jī)換相控制原理

    與有刷直流電機(jī)相比,無刷直流電機(jī)除使用電子換相器取代有刷直流電機(jī)電刷機(jī)械換向,使用永磁體產(chǎn)生轉(zhuǎn)子磁場外,從結(jié)構(gòu)和工作原理上都和有刷直流電機(jī)相類似,故其
    的頭像 發(fā)表于 10-09 17:15 ?4894次閱讀
    CW32<b class='flag-5'>電機(jī)</b><b class='flag-5'>控制</b>基礎(chǔ)——無刷<b class='flag-5'>直流電機(jī)</b>換相<b class='flag-5'>控制</b>原理

    單片機(jī)直流電機(jī)調(diào)速原理

    在工業(yè)自動(dòng)化、智能設(shè)備等領(lǐng)域,直流電機(jī)的調(diào)速控制至關(guān)重要,而單片機(jī)憑借其靈活的控制能力,成為實(shí)現(xiàn)直流電機(jī)精準(zhǔn)調(diào)速的核心部件。單片機(jī)直流電機(jī)調(diào)
    的頭像 發(fā)表于 07-17 13:42 ?812次閱讀

    浮思特 | 無刷電機(jī)與有刷直流電機(jī)的區(qū)別是什么,該如何選擇?

    在精密運(yùn)動(dòng)控制領(lǐng)域,永磁直流電機(jī)因其優(yōu)于交流電機(jī)的可控性,被廣泛應(yīng)用于需精準(zhǔn)調(diào)節(jié)速度、扭矩或位置的場景。美蓓亞三美有刷直流電機(jī)當(dāng)前主流直流電機(jī)
    的頭像 發(fā)表于 07-16 10:15 ?3629次閱讀
    浮思特 | 無刷<b class='flag-5'>電機(jī)</b>與有刷<b class='flag-5'>直流電機(jī)</b>的區(qū)別是什么,該如何選擇?

    無刷直流電機(jī)雙閉環(huán)控制的仿真研究

    摘 要:為了便于對無刷直流電機(jī)的運(yùn)行特性和控制策略的研究,文章詳細(xì)的介紹了無刷直流電機(jī)工作原理和數(shù)學(xué)模型,提出無刷直流電機(jī)控制策略,采用電
    發(fā)表于 07-08 18:33

    無刷直流電機(jī)模糊自適應(yīng)PID控制的研究

    摘要:為了提高無刷直流電機(jī)控制系統(tǒng)的動(dòng)、靜態(tài)性能,將模糊控制結(jié)合PID控制算法應(yīng)用到無刷直流電機(jī)速度控制
    發(fā)表于 07-07 18:29

    無刷直流電機(jī)改進(jìn)型直接轉(zhuǎn)矩控制研究

    摘要:研究了120”導(dǎo)通方式下的無刷直流電機(jī)直接轉(zhuǎn)矩控制策略。通過分析了無刷直流電機(jī)轉(zhuǎn)矩特性知道,只要保持定子磁鏈幅值恒定并控制其旋轉(zhuǎn)速度就可使電機(jī)
    發(fā)表于 06-27 16:45

    無刷直流電機(jī)控制研究

    摘一要:設(shè)計(jì)了一種采用 TMS320LF2407DSP作為主控制器,集成 IGBT 作為功率驅(qū)動(dòng)元件的無刷直流電機(jī)控制器,對電機(jī)轉(zhuǎn)速和電流的雙閉環(huán) PID 調(diào)節(jié)。通過在跑步機(jī)上的試驗(yàn)表
    發(fā)表于 06-26 13:39

    EtherCAT科普系列(10):EtherCAT技術(shù)在無刷直流電機(jī)驅(qū)動(dòng)系統(tǒng)領(lǐng)域應(yīng)用

    直流無刷電機(jī)是通過電子控制器實(shí)現(xiàn)換向取代傳統(tǒng)帶碳刷的直流電機(jī)。常用電機(jī)類型多樣,主要可以分為無刷電機(jī)
    的頭像 發(fā)表于 05-29 17:05 ?1067次閱讀
    EtherCAT科普系列(10):EtherCAT技術(shù)在無刷<b class='flag-5'>直流電機(jī)</b>驅(qū)動(dòng)系統(tǒng)領(lǐng)域應(yīng)用

    直流電機(jī)EMC整改:怎么選擇?功率多少?

    南柯電子|直流電機(jī)EMC整改:怎么選擇?功率多少?
    的頭像 發(fā)表于 05-29 09:36 ?1169次閱讀
    <b class='flag-5'>直流電機(jī)</b>EMC整改:怎么選擇?功率多少?

    電機(jī):無刷直流電機(jī)的原理

    運(yùn)動(dòng)的原理都是依靠磁場,要么利用磁場的異性相吸,要么利用磁場的同性互斥。無刷直流電機(jī)和有刷直流電機(jī)的主要區(qū)別在于,無刷電機(jī)電流的大小和方向是通過控制器來改變的。通常,定
    的頭像 發(fā)表于 05-23 21:00 ?8451次閱讀
    <b class='flag-5'>電機(jī)</b>:無刷<b class='flag-5'>直流電機(jī)</b>的原理