0%

【Arduino】ESP8266开发实例

ESP8266的Arduino开发环境搭建

有三种常用的环境搭建方法。

1. Arduino下的工具的开发板管理器进行在线下载

步骤:

1/ 首先添加ESP8266板支持

进入首选项(Preferences),找到附加开发板管理器地址(Additional Board Manager URLs),并在其后添加如下信息:

1
http://arduino.esp8266.com/stable/package_esp8266com_index.json

2/ 安装硬件包

点击工具 - 开发板 - 开发板管理器,进入开发板管理器界面: 在搜索栏上面输入ESP8266,选择最新版本点击“安装”,

2. 下载ESP8266的硬件包再离线安装

1
2
3
4
cd E:
mkdir esp8266
cd esp8266
git clone https://github.com/esp8266/Arduino.git esp8266

当clone完毕后,在esp8266文件夹下会有板级工具包的目录。进入tools,运行get.py的python文件

1
2
cd tools
python get.py

3. 直接使用封装好的ESP8266 SDK进行环境配置

点击下方链接下载打包好的esp8266安装包,选择任一版本直接运行并解压即可。

安装说明

无论使用何种方法,只要可以在Arduino IDE中可以看到ESP8266的开发板,开发环境就算搭建好了。可以开始进行开发和学习过程了。

制作一支带逗比功能的笔

材料准备

  • 9g舵机3个

  • 白板笔1支

  • NodeMcu ESP8266开发板一块

  • 舵机拉杆 1.2MM Z字钢丝

  • M3x3 平头螺丝若干

  • M3 螺母若干

  • M3x12 螺丝若干

  • M3x6 对接螺丝若干

  • 亚克力激光切割零件一批

  • 3D打印笔架与笔帽

制作步骤

组装

  • 左右舵机安装

    舵机与板件通过舵机自带的M2螺丝固定(红色框部分),板件中间位置的连接用M3螺丝加螺母固定(橙色框部分)

  • 四杆机械臂安装

    将机械臂所需的板件与舵机自带的连接杆粘合,并用M4x10的螺丝加螺母固定(推荐使用M3x6的对接螺丝)。

    在舵机调式完毕后,用M2.5x10的螺丝将机械臂固定至舵机上。这里如果有较长的M2螺丝效果会更好一些,舵机自带的M2螺丝稍短了一点。

  • 上舵机安装

​ 上龙门架用M3x12的螺丝加螺母连接,舵机与板件用自带的M2螺丝固定

ESP8266的调试

arduinojson5NTPclient添加到arduino libraries中。

利用ESP8266自带示例ESP8266-blink及ESP8266WiFi-NTPClient进行测试,ESP8266模块工作正常

从无线路由器的用户列表中也可以看到ESP8266确实已经连接成功。

ESP8266与舵机的联调

通过坐标的变化来控制笔的行进与书写。

坐标参数的定义如下:

打开程序上传代码成功后,左右臂舵机会左右来回旋转,请注意舵机的旋转方向,并在最左或最右时迅速拔掉供电的USB。断电停机后再安装摆臂。摆臂的安装位置,如下图,最左是灰色,最右是白色,让摆臂尽量停留在0,90,180度位置上。安装好摆臂后,接电继续工作,看舵机是否是在灰色和白色两个位置上往复。差距小时,可以修改程序中下面的4个参数修正,差距太大,请拆掉摆臂重装。

control.h,原始代码中垂直方向共用SERVOFAKTOR来控制,在微调的时候发现效果不好,分别使用SERVOFAKTORLEFTSERVOFAKTORRIGHT来控制。

1
2
3
4
5
6
7
8
9
  // When in calibration mode, adjust the following factor until the servos move exactly 90 degrees
int SERVOFAKTORLEFT = 605;
int SERVOFAKTORRIGHT = 1090;

// Zero-position of left and right servo
// When in calibration mode, adjust the NULL-values so that the servo arms are at all times parallel
// either to the X or Y axis
int SERVOLEFTNULL = 2000;
int SERVORIGHTNULL = 800;

相应地,在control.cpp中,修改

1
2
servo_left.writeMicroseconds(floor(((a2 + a1 - M_PI) * SERVOFAKTOR) + SERVOLEFTNULL));
servo_right.writeMicroseconds(floor(((a1 - a2) * SERVOFAKTOR) + SERVORIGHTNULL));

1
2
3
servo_left.writeMicroseconds(floor(((a2 + a1 - M_PI) * SERVOFAKTORLEFT) + SERVOLEFTNULL));
servo_right.writeMicroseconds(floor(((a1 - a2) * SERVOFAKTORRIGHT) + SERVORIGHTNULL));

调节抬臂舵机的写字,抬笔和抓笔擦位置,。将笔装上后再进行调试,否则因为笔的重量会导致偏差。

1
2
3
int LIFT0 = 1750;   //落笔写字 on drawing surface
int LIFT1 = 1650; //写字时抬臂动作 between numbers
int LIFT2 = 1470; //高抬笔架 going towards sweeper

工作原理

xy坐标到舵机角度转换

演示

制作完成!

制作及演示视频

参考

1/ 如何制作一支带逗比功能的笔 - 知乎 (zhihu.com)

2/ 用stc15w4k32移植arduino小贱钟Plotclock (amobbs.com 阿莫电子论坛)

3/ Plotclock小贱钟的调试方法 - 机械坊 - 极客工坊 - Powered by Discuz! (geek-workshop.com)