在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

電子發燒友App

硬聲App

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

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

3天內不再提示
創作
電子發燒友網>電子資料下載>電子資料>通過Web服務器控制雙直流電機和伺服電機

通過Web服務器控制雙直流電機和伺服電機

2023-06-09 | zip | 0.15 MB | 次下載 | 免費

資料介紹

pcb圖:
pYYBAGSBOb2AJ4BOAAE1BgPlQeE200.png
pYYBAGSBOb-AR5p0AABfaYTc0Wk801.png

描述

通過 Web 服務器控制雙直流電機伺服電機 - ESP8266 DRV8848 電機驅動板

在這個項目中,您將看到如何使用 ESP 構建一個 Web 服務器,該服務器使用四個按鈕和一個滑塊控制雙直流電機方向和一個伺服電機位置。我將使用我上次設計的基于 ESP8266 的 DRV8848 電機驅動器開發板,但該項目的源代碼兼容 L298N 和 L293D 等電機驅動器。

pYYBAGSBOciAHDswAABH8ySf5cM272.png

如果您需要一款可以驅動雙直流電機的ESP8266 WiFi開發板,您可以從PCBWay訂購這款PCB,質優價廉。您可以從鏈接中了解該板的特性,包括焊接和組裝等所有階段

https://www.pcbway.com/project/shareproject/ESP_12F_DRV88xx_Motor_Driver_Development_Board_bc4e7391.html

pYYBAGSBOcqACVVWAACBzSycKZE934.png

讓我們看一下允許通過 Web 服務器控制直流電機方向和伺服電機位置的源代碼。

添加了必要的 WiFi 和伺服庫以使用 Arduino IDE。

?

#include  #include  #include  #include 

?

已創建名為“My Servo”的伺服對象。

?

伺服我的伺服;

?

定義了連接伺服電機和直流電機的 GPIO 引腳。

?

// 伺服器連接到 GPIO static const int servoPin = 0 ; //電機連接到 GPIO static const int M1forwardPin = 14 ; static const int M1backwardPin = 12 ; static const int M2forwardPin = 5 ; static const int M2backwardPin = 4 ; 靜態常量int sleepPin = 16 ;

?

如果您的驅動器不包含“睡眠”引腳,請將“睡眠模式”行更改為注釋行。

?

//static const int sleepPin = 16;

?

電機速度已定義,可根據需要進行更改。

?

#define M1SPEED 200 #define M2SPEED 200

?

用這些行替換您的網絡詳細信息

?

const  char * ssid = "REPLACE_WITH_YOUR_SSID" ; const  char * password = "REPLACE_WITH_YOUR_PASSWORD" ;

?

創建了一個變量來存儲 HTTP 請求的標頭。

?

字符串頭;

?

然后又創建了幾個變量,用于從 HTTP 請求中提取滑塊位置。

?

字符串值字符串 = 字符串( 5 ); int pos1 = 0 ; int pos2 = 0 ;

?

在“設置”部分,啟動串行通信并指定連接引腳的模式。如果不使用“sleep pin”,則可以移除該線。

?

序列號.begin(115200); pinMode(M1forwardPin,輸出);pinMode(M1backwardPin,輸出);pinMode(M2forwardPin,輸出);pinMode(M2backwardPin,輸出);pinMode(sleepPin,輸出);myServo.attach(servoPin); 數字寫入(sleepPin,高);

?

然后 Wi-Fi 連接開始,IP 地址打印在串口監視器上。

?

串行。打印(“連接到”); 序列號.println(ssid); WiFi.begin(ssid, 密碼); while (WiFi.status() != WL_CONNECTED) { delay( 500 ); 串行。打印(“。”); } // 打印本地IP 地址并啟動 Web 服務器 Serial.println( "" ); Serial.println( “WiFi 已連接。” ); Serial.println( "IP地址:" ); Serial.println(WiFi.localIP()); 服務器.開始();

?

最后,在進入循環部分之前,為電機的移動和方向創建了函數。

?

void  forward ()  { analogWrite(M1forwardPin, M1SPEED); 模擬寫入(M2forwardPin,M2SPEED);模擬寫入(M1backwardPin, 0);模擬寫入(M2backwardPin, 0);} void  backward ()  { analogWrite(M1backwardPin, M1SPEED); 模擬寫入(M2backwardPin,M2SPEED);模擬寫入(M1forwardPin, 0);模擬寫入(M2forwardPin, 0);} void  turnLeft ()  { analogWrite(M1backwardPin, M1SPEED); 模擬寫入(M2forwardPin,M2SPEED);模擬寫入(M1forwardPin, 0);模擬寫入(M2backwardPin, 0);} void 右轉() { 模擬寫入(M1forwardPin,M1SPEED);模擬寫入(M2backwardPin,M2SPEED);模擬寫入(M1backwardPin,0);模擬寫入(M2forwardPin,0);} void  stopMotors ()  { analogWrite(M1forwardPin, 0 ); 模擬寫入(M2forwardPin,0);模擬寫入(M1backwardPin,0);模擬寫入(M2backwardPin,0);}

?

在循環部分,定義了當新客戶端首次與 Web 服務器建立連接時會發生什么。當從客戶端收到請求時,傳入的數據將被保存。只要客戶端保持連接,后面的 while 循環就會運行。

?

WiFiClient client = server.available(); 如果(客戶端){ currentTime = millis(); 上一個時間 = 當前時間;Serial.println( “新客戶。” ); 字符串 currentLine = "" ; while (client.connected() && currentTime - previousTime <= timeoutTime) { currentTime = millis(); 如果(client.available()) { char c = client.read(); 串口.write(c); 標題 += c; 如果(c == '\n' ) {如果(currentLine.length() == 0 ) {

?

然后生成 Web 服務器并發送一些 HTML 文本以顯示網頁。使用“客戶端打印”功能將網頁發送到客戶端。您必須輸入要作為參數發送給客戶端的內容。

?

client.println("HTTP/1.1 200 OK"); client.println("內容類型:文本/html"); client.println("連接:關閉"); 客戶端.println(); // 顯示 HTML 網頁 client.println("  < html >< head >< meta  name = \ " viewport \" content = \ " width = device-width,  initial-scale = 1\ "> "); // 按鈕和滑塊的樣式部分。您可以更改自定義設置,例如顏色等。client.println(" <樣式> "); 客戶。顯示:塊;彈性方向:列;對齊項目:居中;}"); client.println(".slider { width : 275px ; accent-color : #ede100 ; cursor : pointer;}"); client.println(".button-container { display : flex ; flex-direction : column; align-items : center;}"); client.println(".row-container { display : flex; flex-direction : row; justify-content : center; align-items : center;} "); client.println(".button {寬度: 135px ;邊界:0;背景色:#ede100;框陰影:插圖2px  2px  3px  #b2b2b2,插圖 - 2px - 2px  3px  #000;填充:10px  25px;文本對齊:居中;顯示:內聯塊;邊界半徑:5px;字體大小:16px;邊距:10px  25px;光標:指針;}"); client.println(".button:hover {背景顏色:#fff200 ;}"); client.println(".button:active{ box-shadow : inset 2px  2px  3px  #000 , inset - 2px - 2px  3px  #b2b2b2 ;}"); client.println(" footer { text-align : center; margin : 50px ; width : 400px ; background-color : #ede100 ;}"); client.println("  style >>< script  src = \ " https: //ajax.googleapis . com /ajax / libs / jquery / 3.3.1 / jquery.min.js \">   " ) ; // 正文部分。包含按鈕和滑塊的功能。client.println(" <正文> "); client.println(" < div  class = \ "容器\"> "); client.println(" < div  class = \ " row-container \">< h2 > ESP8266電機控制面板 h2 >"); client.println(" < div >< div  class = \ " button-container \"> "); client.println(" < div  class = \ " row-container \">< button  class = \ "按鈕\" id = \ " forward-btn \" onmousedown = \ " btnVal (' forward ')\" onmouseup = \ " btnVal ('停止')\">前進

?

" ) ;client.println(" < div class = \ " row-container \">< button class = \ " button \ " id = \ " left-btn \ " onmousedown = \ " btnVal (' left ' )\" onmouseup = \ " btnVal (' stop ' )\"> Left "); client.println("