全國熱線電話:

0519-8918 1758
產(chǎn)品中心PRODUCT SHOW
聯(lián)系我們CONTACT US

    聯(lián)系人:聶經(jīng)理

    手機:18605199068  18602586200

    電話:0519-89181758  83700750  

    Q Q:710285815

    郵箱:18605199068@126.com

    地址:江蘇省常州市武進區(qū)大通西路200號。

直流無刷電機和無刷直流電機信息智能網(wǎng)

如何用智能手機Wi-Fi控制機器人
2022-06-20

步驟1:工具和材料 此項目使用了以下工具: 焊鐵和焊絲直流電機已經(jīng)將電線焊接到其端子上。..。..但它最終會斷裂,您可能需要重新焊接它。所以考慮一下好的烙鐵和電線neaby。 EVA泡沫板(或其他非導電材料)。本項目中使用的機器人底盤由鋁制成,電路板安裝在此金屬部件上。我在電路板和金屬板之間使用了一層泡沫板,以避免可能的短路。 雙面膠帶。它用于將泡沫板粘合到電路板上,以及用于安裝H橋模塊。 剪刀,用于剪切一些泡沫板矩形。 我在項目中使用了以下硬件部件: Wemos D1 ESP8266開發(fā)板(鏈接/鏈接)。 Wemos D1板非常易于使用,并且可以使用Arduino IDE進行編程。它與普通的Arduino Uno具有相同的足跡!這樣,大多數(shù)Arduino防護罩也可以與這塊板一起使用。它有內(nèi)置的Wi-Fi模塊,因此您可以在各種項目中使用它。您還可以使用其他基于ESP8266的板(鏈接/鏈接)。 L298N雙通道H橋模塊(鏈接/鏈接)。該模塊允許來自Wemos(或Arduino)的3.3V信號被放大到電機所需的12V。 DIY機器人底盤坦克(鏈接)。這個真棒套件具有制造水箱所需的一切:兩個直流電機,齒輪,軌道,螺栓,螺母等。它已經(jīng)配備了組裝機箱所需的工具,這對初學者來說非常棒! 18650 3.7V電池(x3)(鏈接)。我曾經(jīng)給整個電路供電。這個油箱使用12V電機。我使用了三節(jié)串聯(lián)的3.7V電池給它們供電。 3S 18650電池座(鏈接)。它可以容納三個18650電池系列,并且可以很容易地安裝在水箱后部。 18650電池充電器(鏈接)。你的電池最終會耗盡電量。當發(fā)生這種情況時,電池充電器將為您解救。 跳線(鏈接)。我用了6個男女跳線來測量h-bridge和Wemos之間的信號,以及2個用于5V和Gnd的男性 - 男性跳線。如果您計劃添加一些傳感器,則可能需要更多。 Micro USB線。您需要這個來上傳您的代碼。大多數(shù)電路板已經(jīng)有自己的電纜。 上面的鏈接只是建議您可以在哪里找到本教程中使用的項目(也許可以支持我以后的教程)。您可以隨意在其他地方搜索,并在您最喜歡的本地或網(wǎng)上商店購買。 第2步:組裝機器人 該項目的第一部分是機器人結(jié)構的組裝。 在以前的項目中,我使用易于獲取的材料(不需要復雜的工具,3D打印機或激光切割機)開發(fā)了我自己的機器人結(jié)構。您可以在以下鏈接中找到該項目: https://www.instructables.com/id/WiDC-Wi-Fi-Controlled-FPV-Robot-with-Arduino-ESP82/ 這一次,我決定給一個從網(wǎng)上商店獲得的機器人工具包。您可以通過以下鏈接找到機器人機箱的鏈接:http://bit.ly/2ycI8fP。如果你正在尋找一個套件,我認為這是一個不錯的選擇!。 起初看起來裝配會很復雜,或者我會遇到缺少部件等問題(考慮到數(shù)量)組成套件的部件。但是這個套件讓我很驚訝!在我看來,所有的部件質(zhì)量都很好,并配有幾個備件。因此,在工作臺下方丟失的螺絲將不會使您的項目無法實現(xiàn),我發(fā)現(xiàn)這是非常好的(特別是在丟失幾個螺釘后)。 另一個積極的一點是,所有的安裝機器人所需的工具包含在套件中(一對艾倫扳手和螺絲刀)。我相信這使得該套件非常適合沒有大量工具的初學者! 作為一個消極的方面,我會強調(diào)缺乏文檔。機器人的裝配手冊(中文電子表格文件)不是非常用戶友好,并且沒有很多在線教程。所以我決定在上面的視頻中記錄組裝機器人的過程!另一個關注點涉及機器人結(jié)構的材料。底座完全由鋁制成,如果印刷電路板的插針接觸框架,可能會導致短路。 您可以使用其他在線套件。你甚至可以制作自己的結(jié)構,如下所述。 第3步:接線電路(Wemos D1) 在上面的視頻中,我將向您展示如何在機器人結(jié)構中組裝電子設備。 電源由三個18650電池組成的包安裝在機器人的背面。它為機器人提供11.1V(3 x 3.7V)。這足以為12V直流電機供電。 L298N雙通道H橋用于控制電機。它接收Wemos板的一些3.3V信號,并為電機提供更高的電壓。它還允許電機在兩個方向上運行,取決于這些輸入信號的組合。 每個設備都是根據(jù)原理圖連接的。 按照您的引腳列表需要連接: Wemos D1輸入/輸出: 數(shù)字引腳D3(GPIO5)=》 H橋ENB引腳 數(shù)字引腳D4(GPIO4)=》 H橋IN4引腳 數(shù)字引腳D5(GPIO14)=》 H橋IN3引腳 數(shù)字引腳D6( GPIO12)=》 H橋IN2引腳 數(shù)字引腳D7(GPIO13)=》 H橋IN1引腳 數(shù)字引腳D8(GPIO0)=》 H橋ENA引腳 5V引腳=》 H橋5V引腳 Gnd引腳=》 H橋Gnd引腳 H橋輸入/輸出: ENB引腳=》 Wemos D3引腳 IN4引腳=》 Wemos D4引腳 IN3引腳=》 Wemos D5引腳 IN2引腳=》 Wemos D6引腳 IN1引腳=》 Wemos D7引腳 ENA引腳=》 Wemos D8引腳 5V引腳=》 Wemos 5V引腳 Gnd引腳=》 Wemos Gnd引腳 Gnd引腳=》電池組負極線 12V引腳=》電池組正極線 OUT1 =》右電機負極線 OUT2 =》右電機正極線 OUT3 =》左電機正極線 OUT4 =》左電機負極線 步驟4:在Arduino IDE上設置ESP8266板 對于這個項目,我使用Arduino IDE編程我的Wemos。如果您之前已經(jīng)使用過Arduino,那么這是更簡單的方法,您不需要學習新的編程語言,例如Python或Lua。 如果您以前從未這樣做過,首先您必須為Arduino軟件添加ESP8266板支持。 的 1。下載并安裝Arduino IDE最新版本 您可以在Arduino的網(wǎng)站上找到適用于Windows,Linux或MAC OSX的最新版本:https://www.arduino.cc/en/main/software 免費下載,將其安裝到您的計算機上并啟動它。 2。添加ESP8266主板 Arduino IDE已經(jīng)支持很多不同的主板:Arduino Nano,Mine,Uno,Mega,Yún等。不幸的是ESP8266默認不是那些被支持的人開發(fā)板。因此,為了將代碼上傳到ESP8266基板,您必須首先將其屬性添加到Arduino的軟件中。 導航到文件》首選項(Ctrl +,在Windows操作系統(tǒng)上); 將以下URL添加到Additional Boards Manager文本框(Preferences窗口底部的文本框): http://arduino.esp8266.com/stable/package_esp8266com_index.json 如果文本框不是空白,則表示之前已經(jīng)在Arduino IDE上添加了其他板。在上一個URL和上面的URL末尾添加一個逗號。 點擊“確定”按鈕并關閉“首選項”窗口。 導航工具》 Board》 Boards Manager 以添加ESP8266板。 在搜索文本框中鍵入“ESP8266”,選擇“ESP8266社區(qū)的esp8266”并安裝它。 現(xiàn)在您的Arduino IDE已準備好使用許多基于ESP8266的開發(fā)板,如通用ESP8266,NodeMcu(我在本教程中使用),Adafruit Huzzah,Sparkfun Thing,WeMos等。 第3。添加庫 在這個項目中,我使用了Blynk庫。 應手動安裝Blynk庫。從https://github.com/blynkkk/blynk-library/releases/tag/v0.5.0下載Blynk庫。解壓縮文件,并將文件夾復制到Arduino IDE庫/工具文件夾。 your_sketchbook_folder的結(jié)構現(xiàn)在應如下所示: your_sketchbook_folder/libraries/Blynk your_sketchbook_folder/庫/BlynkESP8266_Lib your_sketchbook_folder/工具/BlynkUpdater your_sketchbook_folder/工具/BlynkUsbScript 。..。..。.. 。.. 現(xiàn)在您的開發(fā)環(huán)境已準備就緒,讓我們繼續(xù)下一步! 步驟5:設置Blynk Blynk是一項旨在通過互聯(lián)網(wǎng)連接遠程控制硬件的服務。它使您可以輕松創(chuàng)建物聯(lián)網(wǎng)小工具,并支持多種硬件,如Arduinos,ESP8266,Raspberry Pi等。 您可以使用它從Android或iOS智能手機發(fā)送數(shù)據(jù)(或平板電腦)到遠程設備。例如,您還可以讀取,存儲和顯示由harware傳感器獲取的數(shù)據(jù)。 Blynk App 用于創(chuàng)建用戶界面。它有各種各樣的小部件:按鈕,滑塊,操縱桿,顯示器等。用戶可以將小部件拖放到儀表板并為多個項目創(chuàng)建自定義圖形界面。 它有一個‘能源的概念。用戶從2000個自由能點開始。使用的每個小部件(在任何項目中)都會消耗一些能量,從而限制了項目中使用的最大小部件數(shù)量。例如,按鈕消耗200個能量點。這樣,人們可以創(chuàng)建一個最多包含10個按鈕的界面。用戶可以購買額外的能量點,并創(chuàng)建更復雜的界面和/或幾個不同的項目。 Blynk App的命令通過互聯(lián)網(wǎng)上傳到 Blynk服務器。另一個硬件(例如NodeMCU)使用 Blynk Libraries 從服務器讀取這些命令并執(zhí)行操作。硬件還可以向服務器提供一些數(shù)據(jù),這些數(shù)據(jù)可能會顯示在應用程序上。 從以下鏈接下載適用于Android或iOS的Blynk應用程序: https://play。 google.com/store/apps/details?id=cc.blynk https://itunes.apple.com/us/app/blynk-control-arduino-raspberry/id808760481?ls=1&mt= 8 安裝應用并創(chuàng)建一個新帳戶。之后,您將準備好創(chuàng)建第一個項目。 您還需要安裝Blynk庫并獲取身份驗證代碼。上一步描述了安裝庫的過程。我將向您展示如何在下一步獲取身份驗證令牌。 第6步:Blynk應用程序 - 創(chuàng)建新項目 現(xiàn)在,我將向您展示如何使用Blynk設計我的遙控器應用程序。您可以將它作為自己創(chuàng)作的基礎。 創(chuàng)建新項目 創(chuàng)建新項目; 添加項目名稱( Wifi robot ),選擇開發(fā)板( Wemos D1 )和連接類型( WiFi )并單擊創(chuàng)建按鈕; 身份驗證令牌將發(fā)送到您的電子郵件; 使用身份驗證令牌,使用Arduino代碼。它允許ESP8266板到達Blynk服務器以發(fā)送和接收數(shù)據(jù)。 為了創(chuàng)建儀表板,您可以拖放多個對象。按鈕,滑塊和操縱桿可用于創(chuàng)建不同的控制界面。您可以根據(jù)需要調(diào)整大?。ù蟛糠郑┎⑴渲闷湓O置。 在接下來的步驟中,我將展示使用不同小部件控制機器人的四種不同選擇。 第7步:Blynk App#1 - 四個按鈕 這第一個應用程序我使用四個簡單的按鈕進行簡單的控制,向前,向右,向左或向后移動機器人。為此,我在Blynk App上使用了“樣式按鈕”小部件。在小部件框上選擇此選項,拖放,并根據(jù)需要調(diào)整按鈕大小。 在按鈕設置下,您必須為每個按鈕命名(向前,向右,向左移動)并為每個引腳分配一個虛擬引腳作為輸出。我使用了以下虛擬引腳: 正向:V0引腳 右:V1引腳 左:V2引腳 向后:V3 pin 您還必須配置開/關標簽。默認情況下,它們被命名為On和Off,但我更改了以便更好地理解每個按鈕的含義。您可以在上面的圖片上看到最終應用的屏幕截圖。 如您所見,每個按鈕都是二進制的。一旦點擊它們,電機就會全速運轉(zhuǎn)。 如果按照我的原理圖連接所有電機,你將得到以下輸出: Arduino代碼: 下載代碼并在Arduino IDE上打開它。在上傳代碼之前,您必須更新Blynk身份驗證密鑰和WiFi憑據(jù)(ssid和密碼)。 要上傳代碼,請選擇“Wemos D1 R2&mini”(如果您使用的是NodeMCU)上傳速度為921600 kbps。在計算機的USB端口上插入電路板并上傳代碼。 這需要一段時間(遠遠超過為Arduino編寫和上傳草圖。..。..請耐心等待。..。..)?,F(xiàn)在是你在等待的時候給這個教練們一個喜歡的好時機! :D 上傳完成后,拔下USB電纜,然后放入電池。代碼將開始運行,Wemos板將自動嘗試連接Wi-Fi路由器并等待來自Blynk服務器的命令。 代碼說明: 在這個項目中我只不得不使用ESP8266和Blynk庫。它們是在代碼的開頭添加的。 #include #include 您必須配置Blynk授權密鑰和Wi-Fi憑證。通過這種方式,您的ESP8266將能夠到達您的Wi-Fi路由器并等待來自Blynk服務器的命令。將XXXXX,YYYYY和ZZZZZ替換為您的驗證密鑰(您將通過電子郵件收到),您的Wi-Fi網(wǎng)絡的SSID和密碼。 char auth[] = “XXXXX”; char ssid[] = “YYYYY”/ char pass[] = “ZZZZZ”; 定義引腳Wemos連接到h橋。您可以使用每個引腳的GPIO編號的文字值(D1,D2,De等)。 #define ENB D3 #define MOTORB_1 D4 #define MOTORB_2 D5 #define MOTORA_1 D7 #define MOTORA_2 D6 #define ENA D8 pinMode(ENA, OUTPUT); pinMode(MOTORA_1, OUTPUT); pinMode(MOTORA_2, OUTPUT); pinMode(ENB, OUTPUT); pinMode(MOTORB_1, OUTPUT); pinMode(MOTORB_2, OUTPUT); digitalWrite(ENA,LOW); digitalWrite(ENB,LOW); 然后啟動串口通信(用于驗證代碼)和Blynk通信(此處將執(zhí)行Wi-Fi連接)。 Serial.begin(9600); Blynk.begin(auth, ssid, pass); 主循環(huán)包括僅在運行Blynk.run函數(shù)時。它將檢查來自服務器的傳入命令,并在發(fā)生某些事情時調(diào)用其他函數(shù)。 // MAIN CODE void loop() { Blynk.run(); } 應用程序上的每個按鈕都映射到虛擬引腳(V0到V3)。 BLYNK_WRITE函數(shù)檢查是否單擊了給定的引腳,然后執(zhí)行某些操作。為每個虛擬按鈕定義了相同的塊。當按下按鈕時,它們會讓機器人沿其中一個方向移動。 // FORWARD BLYNK_WRITE(V0) { int button = param.asInt(); // read button if (button == 1) { Serial.println(“Moving forward”); digitalWrite(ENA,HIGH); digitalWrite(ENB,HIGH); digitalWrite(MOTORA_1,HIGH); digitalWrite(MOTORA_2,LOW); digitalWrite(MOTORB_1,LOW); digitalWrite(MOTORB_2,HIGH); } else { Serial.println(“Stop”); digitalWrite(ENA,LOW); digitalWrite(ENB,LOW); digitalWrite(MOTORA_1,LOW); digitalWrite(MOTORA_2,LOW); digitalWrite(MOTORB_1,LOW); digitalWrite(MOTORB_2,LOW); } } 如果你按照我的方式連接引腳,你將得到以下輸出: 輸出ENAIN1IN2ENBIN3IN4 FORWARDHIGHHIGHLOWHIGHLOWHIGH BACKWARDHIGHLOWHIGHHIGHHIGHLOW RIGHTHIGHLOWHIGHHIGHLOWHIGH LEFTHIGHHIGHLOWHIGHHIGHLOW STOPLOW**LOW** 第8步:Blynk App#2 - 滑動條 在之前的應用程序中,我使用簡單的按鈕來控制機器人。正如我之前解釋的那樣,當按下按鈕時,電機將全速運轉(zhuǎn)。這次我做了一個使用兩個滑桿的實驗。每一個都將設置給定電機的速度和方向。根據(jù)每個軌道的速度,可以使機器人向前移動,向左/向右轉(zhuǎn)或以可變速度返回。 為此,我在Blynk App上使用了“Vertical Slider”小部件。在窗口小部件框中選擇此選項,拖放,并根據(jù)需要調(diào)整按鈕的大小。后來我意識到普通的’Slider‘會是一個更好的選擇(握住手機并同時移動兩個電機會更舒服)。 在按鈕設置下你必須命名每個按鈕(向右或向左),指定虛擬引腳作為輸出,并設置值的范圍。我使用了以下虛擬引腳: 左:V0引腳,從-1023到1023 右:V1引腳,從-1023到1023 您可以在上面的圖片上看到最終應用的屏幕截圖。 請記住將“僅發(fā)布時發(fā)送值”設置為“關閉”。這樣,當您更改滑塊位置時,Blynk將向機器人發(fā)送命令,而不僅僅是在釋放時。 Arduino代碼: 代碼初始化與描述的幾乎相同之前。 以下幾行被添加到初始化中。 Blynk.virtualWrite(V0, 0); Blynk.virtualWrite(V1, 0); 這樣滑塊在啟動過程中將轉(zhuǎn)到零位(機器人將停止移動)。 為每個電機創(chuàng)建了以下代碼。微控制器將讀取每個滑塊的值,該值將轉(zhuǎn)換為每個軌道的速度。定義了死區(qū)(介于-500和500之間),以便機器人在低速時停止。 如果它接收到負速度,則切換到motor1和motor2引腳的信號。速度還決定了模擬輸出中使用的PWM信號的占空比。絕對值越大,機器人運行得越快。 // LEFT TRACK BLYNK_WRITE(V0) { int speedL = param.asInt(); // read button Serial.print(“Left speed: ”); Serial.println(speedL); if (speedL 》 500) { analogWrite(ENB,speedL); digitalWrite(MOTORB_1,LOW); digitalWrite(MOTORB_2,HIGH); } else if (speedL 《 -500) { analogWrite(ENB,-speedL); digitalWrite(MOTORB_1,HIGH); digitalWrite(MOTORB_2,LOW); } else { digitalWrite(ENB,LOW); digitalWrite(MOTORB_1,LOW); digitalWrite(MOTORB_2,LOW); } } 步驟9:Blynk App#3 - Accelerometer 智能手機的某些傳感器也可以與Blynk一起使用。這次我想用它的加速度計來控制我的機器人。傾斜手機,機器人將向左/向右轉(zhuǎn)動或向前/向后移動。 從窗口小部件框中拖動加速度計對象并將其放在儀表板上。在按鈕設置下,將虛擬引腳指定為輸出。我使用虛擬引腳V0。您可以在上面的圖片上看到最終應用的屏幕截圖。 Arduino代碼: 代碼的初始化與之前描述的幾乎相同。 BLYNK_WRITE(V0)函數(shù)用于讀取加速度計值。 y軸上的加速度用于控制機器人是否應該向右/向左轉(zhuǎn),并且使用z軸加速度來查看機器人是否應該向前/向后移動。 代碼驗證是否加速度高于/低于給定的閾值,以便選擇電機的速度/方向。 BLYNK_WRITE(V0) { float y = param[1].asFloat(); // read y-axis acceleration float z = param[2].asFloat(); // read z-axis acceleration if (y 》 0.5) { Serial.println(“Turning left”); digitalWrite(ENA,HIGH); digitalWrite(ENB,HIGH); digitalWrite(MOTORA_1,HIGH); digitalWrite(MOTORA_2,LOW); digitalWrite(MOTORB_1,HIGH); digitalWrite(MOTORB_2,LOW); } if (y 《 -0.5) { Serial.println(“Turning right”); digitalWrite(ENA,HIGH); digitalWrite(ENB,HIGH); digitalWrite(MOTORA_1,LOW); digitalWrite(MOTORA_2,HIGH); digitalWrite(MOTORB_1,LOW); digitalWrite(MOTORB_2,HIGH); } if (z 《 -0.9) { Serial.println(“Moving forward”); digitalWrite(ENA,HIGH); digitalWrite(ENB,HIGH); digitalWrite(MOTORA_1,HIGH); digitalWrite(MOTORA_2,LOW); digitalWrite(MOTORB_1,LOW); digitalWrite(MOTORB_2,HIGH); } if (z 》 0) { Serial.println(“Moving backward”); digitalWrite(ENA,HIGH); digitalWrite(ENB,HIGH); digitalWrite(MOTORA_1,LOW); digitalWrite(MOTORA_2,HIGH); digitalWrite(MOTORB_1,HIGH); digitalWrite(MOTORB_2,LOW); } if ((y 《 0.5) and (y 》 -0.5) and (z 》 -0.9) and (z 《 0)) { Serial.println(“Stop”); digitalWrite(ENA,LOW); digitalWrite(ENB,LOW); digitalWrite(MOTORA_1,LOW); digitalWrite(MOTORA_2,LOW); digitalWrite(MOTORB_1,LOW); digitalWrite(MOTORB_2,LOW); } } 如果未超過閾值,電機將停止。 第10步:Blynk App#4 - 操縱桿 在這個應用程序中,我使用一個操縱桿來控制機器人。定義每個軌道的速度在操縱桿的x和y位置上降低。這樣,就可以在每個軌道上應用不同的速度,并以不同的速度/方向移動機器人。

相關行業(yè)新聞

電機驅(qū)動保護的智能化的影響 無刷電機的兩種控制方式 直流無刷電機的控制原理 直流電動機PWM控制電路圖 無位置傳感器無刷直流電機的控制 大幅提高BLDC電機控制性能 直流電機正反轉(zhuǎn)控制PLC調(diào)速模塊 永磁無刷直流電機控制器的原理及電路 直流電機非常容易控制的原因 無傳感器無刷直流電機控制 電機與DSP控制相結(jié)合是電機發(fā)展重要方向 各種直流電機的控制技術 PWM波控制舵機類型及控制系統(tǒng)詳解 直流電弧爐電極升降控制系統(tǒng)的問題分析與技術改進 直流調(diào)速器就是調(diào)節(jié)直流電動機速度的設備, 由于直流電動機具有低轉(zhuǎn)速大力矩的特點,是交流電動機無 法取代的, 因此調(diào)節(jié)直流電動機速度的設備—直流調(diào)速器,具有廣闊的應用天地。 直流調(diào)速器的工作原理: 直流調(diào)速器就是調(diào)節(jié)直流電動機速度的設備,上端和交流電源連接,下端和直流電動機連接。直流調(diào)速器將交流電轉(zhuǎn)化成兩路輸出直流電源,一路輸入給直流電機礪磁(定子),一路輸入給直流電機電樞(轉(zhuǎn)子),直流調(diào)速器通過控制電樞直流電壓來調(diào)節(jié)直流電動機轉(zhuǎn)速。 同時直流電動機給調(diào)速器一個反饋電流,調(diào)速器根據(jù)反饋電流 淺談PWM波控制舵機以及舵機控制方法總結(jié) 永沛電機永磁無刷直流電機驅(qū)動的無傳感器控制 無刷電機重要發(fā)展方向 低壓直流電機調(diào)速器24v 2kw直流馬達控制器 盤點機器人常用的三種電機
0519-8918 1758
聯(lián)系人:聶經(jīng)理 郵箱:niejli@126.com 地址:江蘇省常州市武進區(qū)大通西路200號。 電話:0519-8918 1758

版權所有 ? 常州永沛機電技術有限公司 直流無刷電機|無刷直流電機|直流防爆電機|常州永沛機電技術有限公司|電動平車電機|電動船電機|直流減速電機


蘇ICP備13004000號