本帖最后由 海神 于 2022-5-17 16:07 编辑
简介
机械臂是目前在机械人技术领域中得到最广泛实际应用的自动化机械装置,在工业制造、医学治疗、娱乐服务、军事以及太空探索等领域都能见到它的身影。比如码垛机械臂、自动焊接机械臂等等~~而在实际应用中,机械臂的形态各有不同,但它们能够接受指令,精确地定位到三维(或二维)空间上的某一点进行作业。
本节我们使用wifiduino及blinker来制作手机控制机械臂抓取方块
硬件清单 三轴机械臂*1套
microusb数据线*1根
硬件连线
将扩展板堆叠在wifiduino主板上,用microUSB数据线给主板上电,将机械臂上的mg995舵机连接在扩展板上的15接口;995舵机上边的9g舵机连接在扩展板上的7接口;另一个9g舵机连接在扩展板上的8接口。
示例代码
- /*S1 >> 7
- *S2 >> 8
- *S3 >> 15
- *S4 >> 16
- */
- #define BLINKER_WIFI
- #include <Wire.h>
- #include "Openjumper_IICMotorDriver.h"
- #include <Blinker.h>
- char auth[] = "exxxxxxxxxx4"; //手机端的设备密钥
- char ssid[] = "opzzzzzzzzzz6"; //无线wifi名称
- char pswd[] = "izzzzzzzzzz5"; //wifi密码
- bool result;//机械臂联网状态
-
- // called this way, it uses the default address 0x40
- //Openjumper_IICMotorDriver pwm = Openjumper_IICMotorDriver();
- // you can also call it with a different address you want
- Openjumper_IICMotorDriver pwm = Openjumper_IICMotorDriver(0x41);//扩展板芯片地址
- // Depending on your servo make, the pulse width min and max may vary, you
- // want these to be as small/large as possible without hitting the hard stop
- // for max range. You'll have to tweak them as necessary to match the servos you
- // have!
- #define SERVOMIN 100 // this is the 'minimum' pulse length count (out of 4096)
- #define SERVOMAX 400 // this is the 'maximum' pulse length count (out of 4096)
- // our servo # counter
- //uint8_t servonum = 0;
- /**
- 舵机角度0-180度对应脉冲角度在0.5到2.5ms,一个脉冲宽度20ms
- **/
- #define LiftingPin 1//抬升舵机
- #define TongsPin 2//夹子舵机
- #define SwingPin 3//转向舵机
- #define StEngDelTim 1300//抬升动作间距时间
- #define LSEUP 360//抬升舵机角度,最高位置
- #define LSEDW 160//最低位置
- #define TSEMI 130//夹子舵机角度,闭合角度
- #define TSEMA 310//张开角度
- #define SSERE 330//转向舵机角度,左边
- #define SSEME 260//中间位置
- #define SSELE 190//右边
- #define BUTTON_1 "Key1"
- #define Slider_1 "ran-wwb"
- #define Slider_2 "ran-p5t"
- #define Slider_3 "ran-uca"
- BlinkerButton Button1(BUTTON_1);
- BlinkerSlider Slider1(Slider_1);//抬升舵机位置控制滑块
- BlinkerSlider Slider2(Slider_2);//夹子舵机位置控制滑块
- BlinkerSlider Slider3(Slider_3);//转向舵机位置控制滑块
- void slider1_callback(int32_t value)//抬升舵机控制
- {
- value = map(value,0,100,LSEDW,LSEUP);
- pwm.setServoPulse(LiftingPin,value);
- BLINKER_LOG("get slider value: ", value);
- }
- void slider2_callback(int32_t value)//夹子舵机控制
- {
- value = map(value,0,100,TSEMI,TSEMA);
- pwm.setServoPulse(TongsPin, value);
- BLINKER_LOG("get slider value: ", value);
- }
- void slider3_callback(int32_t value)//转向舵机控制
- {
- value = map(value,0,100,SSERE,SSELE);
- pwm.setServoPulse(SwingPin, value);
- BLINKER_LOG("get slider value: ", value);
- }
- void button1_callback(const String & state)//夹取物品
- {
- //BLINKER_LOG("get button state: ", state);
- if (state == BLINKER_CMD_BUTTON_TAP) {
- BLINKER_LOG("夹取物品");
- ServoGroup();
- }
- }
- void ServoGroup(){
- pwm.setServoPulse(LiftingPin, LSEUP);//各舵机初始化
- pwm.setServoPulse(TongsPin, TSEMA);
- pwm.setServoPulse(SwingPin, SSEME);
- Blinker.delay(StEngDelTim);
- pwm.setServoPulse(LiftingPin, LSEDW);
- Blinker.delay(StEngDelTim);
- pwm.setServoPulse(TongsPin, TSEMI);
- Blinker.delay(StEngDelTim);
- pwm.setServoPulse(LiftingPin, LSEUP);
- Blinker.delay(StEngDelTim);
- }
-
- void setup()
- {
- Serial.begin(115200);
- pwm.begin();
- //pwm.motorConfig(DIRP,DIRP,DIRP,DIRP);//DIRN
- BLINKER_DEBUG.stream(Serial);
- pinMode(LED_BUILTIN, OUTPUT);//8266模块灯
- digitalWrite(LED_BUILTIN, LOW);
- Blinker.begin(auth, ssid, pswd);
- Button1.attach(button1_callback);
- Slider1.attach(slider1_callback);
- Slider2.attach(slider2_callback);
- Slider3.attach(slider3_callback);
- }
- void loop()
- {
- Blinker.run();
- result = Blinker.connected();//检测小车网络连接状态
- if(result){
- digitalWrite(LED_BUILTIN, HIGH);//若连接成功,则关闭LED
- }
- else{
- digitalWrite(LED_BUILTIN, LOW);
- }
- }
复制代码
手机控制界面制作
添加三个滑块组件,将键名分别改为程序里定义的“ran-wwb”、“ran-p5t”、“ran-uca”,显示文本内容对应改为抬升、夹子、旋转
在添加一个按键组件 ,数据键名改为程序中定义的“Key1”,显示文本内容改成“点击夹取”,可以修改按键图标和颜色。
再添加一个调试组件,完成编辑,点右上角解锁。
效果展示
通过滑动滑块和按键控制机械臂的旋转、抬升和夹取。
视频展示
blinker物联网教程——1、物联网及blinker介绍
blinker物联网教程——2、搭建编程环境
blinker物联网教程——3、主控硬件wifiduino
blinker物联网教程——4、控制开关灯
blinker物联网教程——5、认识传感器
blinker物联网教程——6、wifi智能插座
blinker物联网教程——7、室内温湿度计
blinker物联网教程——8、定时任务-定时震动器
blinker物联网教程——9、blinker语音识别-芝麻开门
blinker物联网教程——10、日照时间分析
blinker物联网教程——11、自动灌溉
blinker物联网教程——12、调色盘
blinker物联网教程——13、公园噪音监测
blinker物联网教程——14、智能停车场
blinker物联网教程——15、智能家居
blinker物联网教程——16、遥控机械臂
blinker物联网教程——17、防疫隔离门磁
blinker物联网教程——18、手机控制空调
blinker物联网教程——19、接入小度智能音箱
blinker物联网教程——20、语音氛围灯
blinker物联网教程——23、wifi智能小车
blinker物联网教程——24、智能宠物喂食器
|