乐趣区

关于jquery:1小时打造HaaS版小小蛮驴智能车

简介:2020 年云栖大会上,阿里云公布了一款机器人“小蛮驴”,霎时激发千层浪,无人车,智能物流,机器人等一些概念又炽热了一把。借“小蛮驴”的东风以及炽热的 HaaS,咱们推出了更加亲民的“小小蛮驴”,丰盛 HaaS 的场景打造,全面凋谢的云、端、钉示例也能助力开发者学习全链路常识,吸引更多的开发者和企业来退出 HaaS 的生态建设。

1、认识一下小小蛮驴真面目

1.1、组件局部

HaaS100 外围板
HaaS100 是一款物联网场景中的规范硬件,并配套嵌入到硬件中的软件驱动及功能模块,为用户提供物联网设施高效开发服务。

HaaS100 外围板有着丰盛的外设接口,如下所示:

智能车底板电路

  • 红外接管头子,实现红外遥控小车
  • 5V 电源稳压芯片
  • 电机驱动芯片,电流可达 2A,为小车提供弱小的能源
  • 电源指示灯
  • 爱护二极管

其余丰盛接口

  • 电机接口
  • 超声波模块接口
  • 舵机模块接口
  • 测速模块接口
  • 红外避障模块接口
  • 电池座接口
  • HaaS 连贯接口

1.2、重要模块介绍
1.2.1、驱动电机
驱动电机芯片是小车最重要的模块之一,2A 的弱小输入电流为小车提供满满的能源。
驱动模块的接口定义

其中,IN1 和 IN2 是管制小车的左电机,IN3 和 IN4 是管制小车的右电机,ENA 和 ENB 引脚为输入使能管脚,高电平无效,IN1、IN2、IN3 和 IN4 能够通过 PWM 脉冲调速。

电机管制:
IN1 高电平,IN2 低电平,左电机正传;
IN1 低电平,IN2 高电平,左电机反传;
IN3 高电平,IN4 低电平,右电机正传;
IN3 低电平,IN4 高电平,右电机反传。

1.2.2、超声波测距模块

超声波测距个别有 4 个管脚:
GND:接公共地
VCC:供 5V 电源
Trigger:触发管制,信号输出引脚
Echo:回响信号输入引脚
超声波测距原理是当发送的超声波遇到物体被发射回来,被接收端接管,而后通过发送信号到接管到回响的信号工夫距离能够测算出间隔。

测距过程如下:HaaS100 给 Trigger 引脚至多 10uS 的脉冲触发信号,这时候超声波模块发射 8 个 40KHz 的方波,而后模块自动检测是否有信号返回。若检测到回响信号,会通过 Echo 引脚输入一个高电平脉冲,脉冲的宽度就是超声波从发射到返回的工夫 t。假如小车间隔障碍物间隔 L,2L=vt,L=vt/2,其中 v 声音的传播速度 340m/s。

1.2.3、红外避障模块

红外避障原理就是当障碍物凑近的时候,红外接管到的发射光强度越来越大,所以增大了输入的模拟信号,模拟信号接入比拟器,通过比拟器解决,输入数字信号。读取数字信号电平,就能够判断后方是否有障碍物。

1.2.4、测速模块

测速模块次要原理是由码盘联合光电传感器,传感器一端为发射光,另一端接管光,通过测量单位工夫内脉冲个数得出小车的速度,本模块采纳施密特触发器输入的信号十分稳固(去抖)。

2、云端小小蛮驴产品创立

参考基于《一步步打造能手机远程管理的 HaaS 花卉养植零碎》系列文章,一步步在物联网平台创立产品、对应的物模型以及设施。也能够通过载入 TSL 文件,一键生成物模型。

2.1、云端产品创立展现
创立了 HaaS 电动车的产品名称,而后定义了后退、后退、暂停、左转、右转等物模型属性。

依照一步步操作,云端创立产品、物模型以及设施当前,咱们能够获取对应的四元组信息。

3、HaaS 电动小车软件开发

3.1、配置初始化
HaaS100 设施端电动小车参考代码的门路在:/application/example/auto_demo 下。
从物联网云平台创立的产品时候,能够获取调试设施的四元组信息。如下所示:

// 四元组信息初始化

#define PRODUCT_KEY "*******"

#define PRODUCT_SECRET "*******"

#define DEVICE_NAME "*******"

#define DEVICE_SECRET "*******" 

对驱动电机芯片管制引脚配置

int auto_gpio_init(void)

{

temp_gpio.port = IN1_PIN;

temp_gpio.config = OUTPUT_OPEN_DRAIN_PULL_UP;

hal_gpio_init(&temp_gpio);

temp_gpio.port = IN2_PIN;

temp_gpio.config = OUTPUT_OPEN_DRAIN_PULL_UP;

hal_gpio_init(&temp_gpio);

temp_gpio.port = IN3_PIN;

temp_gpio.config = OUTPUT_OPEN_DRAIN_PULL_UP;

hal_gpio_init(&temp_gpio);

temp_gpio.port = IN4_PIN;

temp_gpio.config = OUTPUT_OPEN_DRAIN_PULL_UP;

hal_gpio_init(&temp_gpio);

temp_gpio.port = ENA_PIN;

temp_gpio.config = OUTPUT_OPEN_DRAIN_PULL_UP;

hal_gpio_init(&temp_gpio);

temp_gpio.port = ENB_PIN;

temp_gpio.config = OUTPUT_OPEN_DRAIN_PULL_UP;

hal_gpio_init(&temp_gpio);

GPIO_Set(ENA_PORT,1); // 使能驱动电机左

GPIO_Set(ENB_PORT,1);// 使能驱动电机右

stop_ctl();

}
3.2、接管云端管制命令
承受解决云端的管制命令,包含后退、左转、右转、进行、后退等。

char *auto_temp[5]={"back","left","right","stop","front"};
static int user_property_set_event_handler(const int devid, const char *request, const int request_len)
{
int res = 0;

char i =0,*auto_c;

cJSON *root = cJSON_Parse(request)

for(i=0;i<5;i++){auto_c = auto_temp[i];

    cJSON *value = cJSON_GetObjectItem(root,auto_c);

    if (value == NULL || !cJSON_IsNumber(value)) {EXAMPLE_TRACE("not find %d",i);        

    }

    else{goto hass_send;}

}

cJSON_Delete(root);

if(i == 5){EXAMPLE_TRACE("not find %d",i);       

    return -1;

}

hass_send:

switch(i){

    case 0:

        back_ctl();

        EXAMPLE_TRACE("---back");

    break;

    case 1:

        left_ctl();

        EXAMPLE_TRACE("---left");

    break;

    case 2:

        right_ctl();

        EXAMPLE_TRACE("---right");

    break;

    case 3:

        stop_ctl();

        EXAMPLE_TRACE("---stop");

    break;

    case 4:

        front_ctl();

        EXAMPLE_TRACE("---front");

    break;

    default:

        break;

}

res = IOT_Linkkit_Report(EXAMPLE_MASTER_DEVID, ITM_MSG_POST_PROPERTY,

                         (unsigned char *)request, request_len);

return 0;

}

3.3、HaaS 电动车小程序开发
3.3.1、云端钉一体小程序 SDK 获取

git clone -b dev_3.1.0_haas https://github.com/alibaba/AliOS-Things.git 

SDK 相干代码及操作 readme 在 application/miniapp/ 目录下。

3.3.2、SDK 目录构造

/

├─ lib (寄存依赖库的文件夹,用户无需关怀)

│ ├─ @alicloud/pop-core(https://github.com/aliyun/ope…)

│ ├─ kitx

│ └─ iot-packet.js(封装给用户的文件)

├─ pages(页面文件夹,用户在这里自定义页面,示例继续更新中)

│ └─ index(首页 抉择进入不同示例)

│ ├─ index.axml

│ ├─ index.js

│ ├─ index.acss

│ └─ index.json

│ └─ HaasCar(示例 1 HaaS 小小蛮驴)

│ ├─ HaasCar.axml(页面布局文件)

│ ├─ HaasCar.js(管制逻辑,用户在这里定义交互行为)

│ ├─ HaasCar.acss(页面款式)

│ ├─ HaasCar.json(页面配置,用于配置页面题目等)

│ └─ HaasCar.TSL.json(示例对应的 TSL 文件,用户能够在物联网平台上导入该文件生成物模型)

│ └─ HaasFlower(示例 2 HaaS 养花,目录构造同 HaasCar)

├─ app.js(注册小程序,在这里进行全局参数配置,如 AccessKey)

├─ app.acss(小程序全局款式)

├─ app.json(小程序全局配置,能够在这里设置小程序关上的默认页面)

└─ others

3.3.3、SDK 应用
应用小程序开发工具关上 miniapp 这个工程。

  • step1 在 app.js 填写 AccessKeyID 以及 AccessKeySecret,获取云端 API 调用权限
  • step2 填写指标设施 DeviceName 以及 ProductKey,这里是待管制的设施
// app.js
let accessKey = {
accessKeyId: '<- accessKeyId ->', // 填入阿里云平台生成的 assessKeyId 以及 Secret
accessKeySecret: '<- accessKeySecret ->',
}
// HaasCar.js
let device = {
DeviceName: '<- DeviceName ->', // 填入指标设施 DeviceName 以及 ProductKey
ProductKey: '<- ProductKey ->'
}

代码中提到的几个要害参数:

  • AccessKeyID AccessKeySecret

云账号 AccessKey 是用户拜访阿里云 API 的密钥。(https://usercenter.console.al…)
平安起见,咱们能够采取创立 RAM 子账号的模式,来对权限进行拆散

创立实现后,须要手动调配权限,点击右侧,增加权限。我这里间接抉择了 AdministratorAccess。增加实现后如下。

  • DeviceName ProducKey

这两个参数在创立设施时生成。

3.3.4、编译验证
点击小程序 IDE 右上角“真机调试”按钮,期待二维码生成后,应用钉钉 APP 扫码,即可发动小程序。

3.4、成果展现

作者:AIoT 产品小助手
原文链接
本文为阿里云原创内容,未经容许不得转载

退出移动版