最好的电子音响科技diy制作网站

haoDIY_音响电子电脑科技DIY小制作发明

当前位置: 主页 > 科技DIY > 机器人/模型 >

Wi-Fi控制FPV机器人(Arduino,ESP8266和直流电机)

时间:2017-05-17 09:03来源:未知 作者:admin 点击:
widc.ino 下载 步骤8:基于Web的控制接口 一个HTML界面的设计,对机器人的控制。 下载interface.rar和提取所有文件到指定的文件夹。 然后打开Firefox。 一个文本框的形式使用,界面进入ESP模块的IP地址和视频/音频
为Wi-Fi控制FPV机器人(Arduino,ESP8266和直流电机)

如何使用远程控制的机器人探索你周围的环境,达到人迹罕至的地方,间谍,拍照,拍电影或广播视频?本教程将告诉你如何为所有这些目的使inexpensible!

下面是我以前的教程的改进(https://www.instructables.com/id/wi-fi-controlled-fpv-rover-robot-with-arduino-esp8/),在我提出了一个更快的自制机器人。它展示了如何设计一个Wi-Fi网络远程控制的两轮机器人,用两个直流电机,Arduino Uno和ESP8266 Wi-Fi模块。

机器人可以从一个普通的互联网浏览器的控制,使用HTML界面设计。Android智能手机可能会去用来播放视频和音频从机器人控制界面。

正如我在以前的教程中,我将展示如何设计和建立一个低成本的框架为机器人项目,只使用普通工具(没有3D打印机、激光切割机、数控路由器需要)。

一个可能会注意到,这里使用的组件可能不被优化为目的。一个nodemcu可以代替Arduino + ESP8266组合,例如。一个带着相机的Rapsberry Pi将取代智能手机和控制电机以及。使用Android智能手机的“你的机器人的大脑”,它甚至有可能。那是真的。

下面是来自另一个项目:Joy Robot(我的一部分https://hackaday.io/project/12873-rob-da-alegria-joy-robothttps://www.hackster.io/igorf2/robo-da-alegria-joy-robot-85e178),和相同的硬件进行简单。Arduino Uno选择因为它是非常方便和易于使用的每个人,我们想给它一个简单的屏蔽设计。在原项目中,当同时控制伺服和LED矩阵,并用特别的智能手机实际上是由一片更换接口,运行其他应用程序以及。你会发现在链接到其他相关Instructables贝娄机器人:

  • Arduino Uno控制LED矩阵阵列:

    https://www.instructables.com/id/controlling-a-led-matrix-array-with-arduino-uno/

  • Wi-Fi浏览器控制伺服电机:

    https://www.instructables.com/id/wi-servo-wi-fi-browser-controlled-servomotors-with/


本指南可能适应,其形状或控制接口的改变来满足你的需要。

步骤1:工具

工具

以下工具进行此原型系统的建设:

工具

  • 手工锯(切割压克力板)
  • 螺丝刀(放置螺栓和螺母)
  • 直尺(模型尺寸测量)
  • 美工刀(切割结构和孔)
  • 钻孔机(用于螺钉安装亚克力钻)
  • 砂纸(平滑粗糙的边缘)
  • 烙铁(焊接电机端子)
  • 计算机(编辑和上传Arduino的代码)

这些工具被用于机器人的机械结构的生产,该机器人和电子元件的连接组件。有些工具不是如果你选择购买结构而不是建立你自己的需要。

你甚至可以使用其他设备(3D打印机或激光刀,例如),取决于你的Makerspace可用的工具。

步骤2:机械结构和材料

机械结构和材料

下面的材料对机械结构:

机械材料:

  • 2mm亚克力板材
  • 轮直流齿轮电机(X2)
  • 30mm脚轮(X1)
  • 平方米×10mm螺丝(X5)
  • 平方米×1,5mm坚果(X5)
  • M3 x 10mm螺丝(X9)
  • M3 x 10mm螺丝(X9)
  • M3 x 40 mm螺钉(X4)
  • M3 x 1,5mm坚果(X12)
  • 5 / 32“x 1”螺丝(X4)
  • 5 / 32“坚果(X12)
  • 万能手机支架
  • 钢角“L”形支架(30 x 30 mm)(X4)

步骤3:电子元件

电子元器件

以下的电子组件,用于机器人:

微控制器
ESP8266
protoshield(一个更紧凑的版本)或一个普通的线路板
•1欧姆电阻(X2)
•10欧姆电阻(X1)
•轮直流齿轮马达(X2)
•H桥模块
•一些跳线
•5V USB电源

你可以找到所有的部件在线容易在你最喜爱的电子商务商店。

因为它是在下面的介绍突出,组件的选择是来自其他项目的设计,可以优化使用不同的单片机,例如。

步骤4:结构设计

结构设计

首先我要我的机器人的机械结构设计。你也可以购买完整的结构在线如果你不想建立自己的自定义结构(有很多机器人套件可用在线)。在这种情况下,你可能会跳到步骤6。

在下面,一个低成本的亚克力相框是专为电机和其他部件的连接。在本教程的结构提出了三维CAD软件使用融合360与普通工具构造设计(没有3D打印机、激光切割机、数控路由器需要)。你可以用同样的原理描述如下设计自定义结构,满足您的需求。

首先我得做一个主要部件的三维模型,以确定的结构安排。他们中的一些人从grabcad社区图书馆下载(https://grabcad.com/library):

  • Arduino Uno(https://grabcad.com/library/arduino-uno-13
  • 齿轮马达(https://grabcad.com/library/bomotor-1
  • H桥(https://grabcad.com/library/motor-driver-l9110-1
  • 电力银行(https://grabcad.com/library/power-bank-7
  • 万能手机支架(https://grabcad.com/library/universal-phone-holder-for-the-gopro-accessories-1

电子元件排列在一个平面上,这样我就可以找到我的机器人需要的足迹。之后,我不得不选择创造一个稳定的结构,电机和车轮的位置。

基于位置,设计了主结构,这是由三个板(底板、两侧板)是利用一些支架的连接。

 
  • 基于信息技术的基于信息技术的
    下载
  • base.svgbase.svg
    下载

步骤5:构建和组装结构

对基础结构的建设分为以下几个步骤:

1。将丙烯酸基根据尺寸在二维绘图:
这可能是做一个激光刀(如果你有一个)或在我的情况下,用普通工具。

首先你需要将你的模型尺寸的亚克力板材。打印您的2D使用不干胶纸普通打印机绘图,然后把纸裁成合适的尺寸,将面膜对丙烯酸表面。

用美工刀和直尺或规模的帮助下,将丙烯酸直线。你不需要把所有的方式通过表,只是得分创造一些条件将后切。将丙烯酸在平坦的表面,把一些夹子和施加一定的压力直到片断裂成两。重复这个过程,直到所有的伤口都做了。在那之后,你可以使用砂纸平滑粗糙的边缘。你也可以使用手工锯切的丙烯酸。

2。在二维图纸所示位置钻孔:
在二维图纸所示位置钻孔(在面具表示)与钻井机。丙烯酸是较为容易钻。所以,如果你不处理钻孔机钻孔,你可以手动用锋利的工具,如美工刀。你也可以用它来扩大小孔安装螺钉尺寸。取下面具,你会准备好的。


三.安装部件的螺钉和螺母根据三维图:
安装部件的螺钉和螺母根据视频,你将准备好的结构。M3螺钉用于固定支架、DC电机的安装。M2螺钉用于电子元件的安装,而5 / 32”的用于前轮的安装和智能卡。

现在休息一下,开始在下面的步骤来组装电路…#p#分页标题#e#

 
  • 基于信息技术的基于信息技术的
    下载

步骤6:组装电子产品

组装的电子产品

这里提出的电路使用一个Arduino Uno作为主控制器,它与Wi-Fi通信ESP8266接口。Arduino是控制直流电动机使用h-brige驱动电路,可控制多达两电机,旋转他们独立的两个方向。

一个电源进行供电的电子产品,直接连接到Arduino的USB端口。这是一个简单的方法:你的Arduino充电方便,容易更换,并提供了一个安全的5V电压。

连接所有的组件根据原理图。你会需要一些跳线连接ESP8266模块,这是不友好的H桥和DC面包板,电机。你可以使用一个protoshield(一个更紧凑的电路),一个普通的线路板,或者设计你自己的Arduino盾。

你会发现esp8266-1不是板友好。它将使用跳线连接,但它不会安装结构。

将USB电缆连接到Arduino板并继续下一步。

 
  • widc_esquem Ático.pdfwidc_esquem Ático.pdf
    下载
  • widc.fzzwidc.fzz
    下载
  • widc_bb.pdfwidc_bb.pdf
    下载

步骤7:Arduino的代码

安装最新的Arduino IDE。没有图书馆与esp-8266模块或电机控制通信需要。
请检查你的波特率设置ESP8266正确的代码。
下载Arduino代码(为。INO)和你的无线路由器的SSID和yyyyy路由器密码更换xxxxx。连接Arduino板到您的计算机的USB端口和上传代码。

将USB电缆连接到Arduino板并继续下一步。

//include libraries
#include <SoftwareSerial.h>

SoftwareSerial esp8266(3, 2); //RX pin = 3, TX pin = 2

//definition of variables
#define DEBUG true //show messages between ESP8266 and Arduino in serial port
int state = 5; //define initial state of the robot (5 = stand-by)
//define motor pins
const int motor1Pin1 = 5;
const int motor1Pin2 = 6;
const int motor2Pin1 = 9;
const int motor2Pin2 = 10;
//define motor speed
int motorSpeed = 150; //motor speed (PWM)

//*****
//SETUP
//*****
void setup()
{
  //set pin modes
  pinMode(motor1Pin1, OUTPUT);
  pinMode(motor1Pin2, OUTPUT);
  pinMode(motor2Pin1, OUTPUT);
  pinMode(motor2Pin2, OUTPUT);
  
  //start communication
  Serial.begin(9600);
  esp8266.begin(9600);
  
  sendData("AT+RST\r\n", 2000, DEBUG); //reset module
  sendData("AT+CWMODE=1\r\n", 1000, DEBUG); //set station mode
  sendData("AT+CWJAP=\"XXXXX\",\"YYYYY\"\r\n", 2000, DEBUG); //connect wi-fi network (replace XXXXX by your Wi-Fi router SSID and YYYYY by its password
  delay(5000); //wait for connecti在
 
 SendData(“+ cifsr \r\n”、1000、调试);//显示IP地址
 SendData(“+ cipmux = 1 \r\n”、1000、调试);//允许多个连接
 SendData(“+ cipserver = 80 \r\n”,1000、调试);/ /在80端口启动
 } 
 
 / ********* 
 /主回路
 / ********* 
无效loop() 
 { 
 
 Web服务器如果(ESP8266。available())/ /验证输入的数据
 { 
如果(ESP8266。找到(“+ IPD,”))/如果有一个消息
 { 
字符串msg;
 ESP8266。找到(“?”; //look for the message
      msg = esp8266.readStringUntil(' '); //read whole message
      String command = msg.substring(0, 3); //first 3 characters = command
      Serial.println(command);
           
      //move forward
      if(command == "cm1") {
          state = 1;
      }

      //move backward
      if(command == "cm2") {
          state = 2;
      }

      //turn right
      if(command == "cm3") {
          state = 3;
       }
       
       //turn left
       if(command == "cm4") {
          state = 4;
       }

       //do nothing       
       if(command == "cm5") {
          state = 5;
       }

    }
  }
  
  //STATE 1: move forward
  if (state == 1) {
    analogWrite(motor1Pin1, motorSpeed);
    digitalWrite(motor1Pin2, LOW);
    analogWrite(motor2Pin1, motorSpeed);
    digitalWrite(motor2Pin2, LOW);
  }
  //STATE 2: move backward
  if (state == 2) {
    digitalWrite(motor1Pin1, LOW);
    analogWrite(motor1Pin2, motorSpeed);
    digitalWrite(motor2Pin1, LOW);
    analogWrite(motor2Pin2, motorSpeed);  }
  //STATE 3: move right
  if (state == 3) {
    analogWrite(motor1Pin1, motorSpeed);
    digitalWrite(motor1Pin2, LOW);
    digitalWrite(motor2Pin1, LOW);
    analogWrite(motor2Pin2, motorSpeed);
  }
  //STATE 4: move left
  if (state == 4) {
    digitalWrite(motor1Pin1, LOW);
    analogWrite(motor1Pin2, motorSpeed);
    analogWrite(motor2Pin1, motorSpeed);
    digitalWrite(motor2Pin2, LOW);
  }
  //STATE 5: do nothing
  if (state == 5) {
    digitalWrite(motor1Pin1, LOW);
    digitalWrite(motor1Pin2, LOW);
    digitalWrite(motor2Pin1, LOW);
    digitalWrite(motor2Pin2, LOW);
  }
  
}

//*******************
//Auxiliary functions
//*******************
String sendData(String command, const int timeout, boolean debug)
{
  String response = "";
  esp8266.print(command);
  long int time = millis();
  while ( (time + timeout) > millis())
  {
    while (esp8266.available())
    {
      char c = esp8266.read();
      response += c;
    }
  }
  if (debug)
  {
    Serial.print(response);
  }
  return re
响应;

 

代码解释:

该代码使用一个串行端口的Arduino和ESP8266之间的通信,和另一个Arduino和计算机之间的通信。一旦Arduino Uno只有一个串口,softwareseial图书馆是用来创建一个辅助端口,使用数字引脚2和3。

/ /包括图书馆
 #包括<< softwareserial。H > 
 
 softwareserial ESP8266(3,2);// RX引脚= 3,TX引脚= 2

安装时,串行通信必须开始,其波特率定义(一个Arduino和串口监控,与其他匹配ESP8266速度)。注意到我ESP8266设置为9600 kbps。默认情况下,大多数这些模块来115200kbps,但softwareserial图书馆不能以这样的速度,你必须改变它的波特率工作。我的9600 kbps的不错。

在这个项目中我没有使用一个特定的库与Wi-Fi模块的通信。相反,只有以下普通AT命令(在ESP8266默认固件定义一套指令)进行:

  • 在RST:复位ESP8266模块
  • 在cwmode:设置模块站模式或接入点
  • 在cwjap:连接Wi-Fi网络的SSID和密码了
  • 在cipmux:多连接或单一的连接设置模块
  • 在cipserver:开始在一个给定的端口/启动通信的Web服务器
串行。开始(9600);
 ESP8266。开始(9600);
 
 SendData(”+ RST \r\n”、2000、调试);/ /复位模块
 SendData(“+ cwmode = 1 \r\n”、1000、调试);//设置站模式
发送数据(“+ cwjap =“xxxxx \”、\“yyyyy“\r\n”、2000、调试);/ /连接无线xxxxx(代替你的Wi-Fi路由器SSID和yyyyy的Wi-Fi网络密码
延迟(5000);//等待连接
 SendData(”在cifsr \r\n”、1000、调试);//显示IP地址
 SendData(“+ cipmux = 1 \r\n”、1000、调试);//允许多个连接
 SendData(“+ cipserver = 80 \r\n”、1000、调试);启动Web服务器/ /

一个辅助功能(发送)用于发送数据(从Arduino ESP8266),读串口监控显示反应。

字符串(字符串发送命令,const int超时,布尔调试)
 { 
字符串响应=“”;
 ESP8266。打印(命令);
时间变量= millis();
而((时间+超时)> millis())
 { 
而(ESP8266。available())
 { 
 char c = ESP8266。read();
响应+ = C;
 } }如果
 
(调试)
 { 
串口打印(。

使用上面的代码使得Arduino复位模块,加入一个网络,等待一段连接,并显示其IP地址和启动Web服务器。之后,主循环将开始,和单片机将等待命令。

无效loop() 
 { 
 
如果(ESP8266。available())/ /验证输入的数据
 { 
如果(ESP8266。找到(“+ IPD,”))//如果有一个消息
 { 
字符串msg;
 ESP8266。找到(“?”;//查找的邮件
味精= ESP8266。readstringuntil();//读整个消息
字符串命令=味精。substring(0,3);//前3个字符=命令
系列。println(命令);
 
 /前进
(= =“如果命令CM1”){ 
状态= 1;} 
 
 
 /向后移动
如果(命令= =“厘米”){ 
状态= 2;} 
 
 
 /右转
如果(命令= =“厘米”){ 
状态= 3;} 
 
 
 /转左
如果(命令= =“CM4”){ 
状态= 4;} 
 
 
 /做什么
如果(= =“CM5”命令){ 
状态= 5;

定义了五种可能的命令(CM1 CM5)。每当Arduino接收的命令,在进入五个可能的状态(向前、向后移动,移动,左移和支持),并继续,直到收到不同的命令。

每个国家确定电机引脚的信号。我用digitalwrite(引脚,低)当我想设置一个PIN 0V和analogWrite(引脚,motospeed)当我想打开一个销。允许我用值来改变电机的转速,使机器人移动速度。

//STATE 1: move forward
  if (state == 1) {
    analogWrite(motor1Pin1, motorSpeed);
    digitalWrite(motor1Pin2, LOW);
    analogWrite(motor2Pin1, motorSpeed);
    digitalWrite(motor2Pin2, LOW);
  }
  //STATE 2: move backward
  if (state == 2) {
    digitalWrite(motor1Pin1, LOW);
    analogWrite(motor1Pin2, motorSpeed);
    digitalWrite(motor2Pin1, LOW);
    analogWrite(motor2Pin2, motorSpeed);  }
  //STATE 3: move right
  if (state == 3) {
    analogWrite(motor1Pin1, motorSpeed);
    digitalWrite(motor1Pin2, LOW);
    digitalWrite(motor2Pin1, LOW);
    analogWrite(motor2Pin2, motorSpeed);
  }
  //STATE 4: move left
  if (state == 4) {
    digitalWrite(motor1Pin1, LOW);
    analogWrite(motor1Pin2, motorSpeed);
    analogWrite(motor2Pin1, motorSpeed);
    digitalWrite(motor2Pin2, LOW);
  }
  //STATE 5: do nothing
  if (state == 5) {
    digitalWrite(motor1Pin1, LOW);
    digitalWrite(motor1Pin2, LOW);
    digitalWrite(motor2Pin1, LOW);
    digitalWrite(motor2Pin2, LOW);
  }

注意,发动机工作3~6V。一旦一个5V电源使用,可以调节电机的平均电压(PWM)在3~5V,从而改变它的速度。它不会让你很好的控制机器人的速度。

 
  • widc.ino#p#分页标题#e#widc.ino
    下载

步骤8:基于Web的控制接口

基于Web的控制接口

一个HTML界面的设计,对机器人的控制。

下载interface.rar和提取所有文件到指定的文件夹。然后打开Firefox。一个文本框的形式使用,界面进入ESP模块的IP地址和视频/音频服务器(从Android IP摄像头应用程序)。有一个测试,但是,这将使机器人旋转直到另一接收到命令。键盘箭头键用于移动机器人前进或后退,并向左或向右旋转。

Android智能手机是用来播放视频和音频从机器人控制界面。你会发现在谷歌Play商店应用程序(https://play.google.com/store/apps/details?ID = com.pas.webcam)。
安装和移动到下一个步骤。

HTML代码解释:

HTML界面有两部:一个音频和视频(从Android IP摄像头服务器)和一个命令。

音频和视频部门有一个文本框的按钮形式。这是作为指定的网络服务器的IP地址和加载它的输入。它配备了一个标准的IP地址(192.168.0.5),但使用可以进入一个不同的IP。视频和音频都装在物体下方的文本框。

<div id="video_and_audio" style="position: absolute; top: 50px; width:25%">
	<form name="myform" action="" method="GET">
		IP Webcam (IP):
		<input type="text" name="inputbox" value="192.168.0.5">
		<input type="button" name="button1" value="Load" onClick="readUrlAV(this.form)">
	</form>
	<object id="video" type="text/html" data="http://192.168.0.5:8080/video" 
		style="position: absolute; width:100%; height:480px;">
	</object>
	<object id="audio" type="text/html" data="http://192.168.0.5:8080/audio.opus"
		style="position: absolute; width:388px; height:30px; left:8px; top:425px;">
	</object>
</div>

其他部门的另一种形式的智慧的一个文本框,以便用户可以通知它ESP8266 IP地址。

<divid=“命令”style=“位置:绝对;顶部:50px;左:35%;宽度:65%”> 
 <表格名称=“myform2”行动=“=”“>方法
 Arduino的IP地址:
 <输入类型“文本”name=“InputBox”价值=“192.168.0.5”> 
 <输入=“按钮”name=“按钮”value=“测试”onclick=“testararduino(的形式)”> 
 <形式> 
 <img src=“图像/键盘。png”style=“margin-left: 100px;边距:50px;“> 
 < h4 >按住键盘箭头键移动机器人< / H4 > 
 < / DIV

JavaScript是用来处理界面和发送数据到Arduino。这些脚本在不同的文件编码,和HTML标题添加。

<head> 
 <meta http equiv =“内容类型”content=“text/html;字符集= UTF-8”/> 
 <meta name=“作者”内容=“Igor Fonseca Albuquerque”> 
 <标题>标题> < /控制接口
 <脚本src=“jQuery JS”> < /脚本> 
 <脚本src=“myscript .js”> < /脚本/头> < > 

JavaScript的解释:

一个函数(readurlav)用于读取HTML形式的IP地址和加载在“视频”和“音频”对象。

功能readurlav(形式){ 
 textvar =形式。InputBox。价值;
 videovar =“http:/ /”+ textvar +”:8080 /视频”;
 audiovar =“http:/ /”+ textvar +”:8080 /音频。作品”;
文件。getElementById(“视频”)。setAttribute(数据,videovar);
文件。getElementById(“声音”)。setAttribute(数据',

脚本读取键盘定期,等着用户按下任意键。如果用户按下任意键(左=“37”上=“38”,右为“39”或“下”= 40),它发送一个命令(“CM1”到“下面”)对于一个给定的IP地址。注意,有一个锁存功能,从而避免了被一遍又一遍地重复同样的命令。数据将被转移时,按下键。

var latch = false;
document.onkeydown = checkKeyDown;
function checkKeyDown(e) {
    e = e || window.event;
    if (e.keyCode == '38') {
        // up arrow
	if (latch == false) {
		TextVar = myform2.inputbox.value;
		ArduinoVar = "http://" + TextVar + ":80";
		$.get( ArduinoVar, { "cm1": 1000 })	;
		{Connection: close};
		latch = true;
	}
    }
    else if (e.keyCode == '40') {
        // down arrow
	if (latch == false) {
		TextVar = myform2.inputbox.value;
		ArduinoVar = "http://" + TextVar + ":80";
		$.get( ArduinoVar, { "cm2": 1000 })	;
		{Connection: close};
		latch = true;
	}
    }
    else if (e.keyCode == '37') {
	// left arrow
	if (latch == false) {
		TextVar = myform2.inputbox.value;
		ArduinoVar = "http://" + TextVar + ":80";
		$.get( ArduinoVar, { "cm3": 1000 })	;
		{Connection: close};
		latch = true;
	}
    }
    else if (e.keyCode == '39') {
        // right arrow
	if (latch == false) {
		TextVar = myform2.inputbox.value;
		ArduinoVar = "http://" + TextVar + ":80";
		$.get( ArduinoVar, { "cm4":1000 });
 {连接:关闭};
闩=真;
 } 

当任何箭头键释放,无为的执行函数时,它发送命令“CM5”(停机),和复位锁存器,允许接口发送不同的命令。

document.onkeyup = checkkeyup;
功能checkkeyup(e){ 
 E = E | |窗口。事件;
 
((如果能= =“38”)| |(妻子= =“40”)| |(妻子= =“37”)| |(妻子= =“39”)){ 
 setTimeout(什么也不做,200);} } 
 
 
 
功能donothing() { 
 textvar = myform2。InputBox。价值;
 arduinovar =“http:/ /”+ textvar +“:80”;
美元。得到(arduinovar,{“CM5”:1000 });
 {连接:关闭
 
  • interface.rarinterface.rar
    下载

步骤9:使用

当Arduino重新启动时,它会尝试连接你的Wi-Fi网络自动。使用串口监控检查是否连接成功,并获得其IP是由路由器分配给你的esp-8266。在浏览器中打开html文件(Firefox),在文本框中告知这个IP地址。

你也可能用户等手段,找出你的路由器的IP地址分配给您的设备。断开Arduino Uno从你的电脑连接到电源。等待它再次连接。在连接到机器人的智能手机的推出,IP摄像头应用程序。型在你的控制接口的视频/音频IP并连接到服务器,你就可以走了。你可能需要减少应用程序中的视频分辨率以减少传输过程中的延迟之间。单击并按住你的键盘箭头按钮旋转机器人移动或前进/后退和乐趣探索你的环境。

注意到机器人运行在开环。这样,它向前移动使它很难。马达,定位差异小,等会造成累积偏差。

机器人开始移动,当它接收到一个给定的命令(“CM1”到“CM4”),并保持,直到接收到命令状态不同(“CM1”到“里”)。有时ESP8266失去一些信息,这可能会造成一些麻烦。如果,例如,一个“朋友”的命令了,机器人将保持移动甚至在任何箭头键被释放。我还在处理这个问题。随意更改命令进行解释,避免这种问题的方法。

 
(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
推荐内容