1小时打造HaaS版小小蛮驴智能车

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

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

1.1、组件部分
image.png

HaaS100核心板
HaaS100是一款物联网场景中的标准硬件,并配套嵌入到硬件中的软件驱动及功能模块,为用户提供物联网设备高效开发服务。
image.png

HaaS100核心板有着丰富的外设接口,如下所示:
image.png

智能车底板电路

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

其他丰富接口

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

1.2、重要模块介绍
1.2.1、驱动电机
驱动电机芯片是小车最重要的模块之一,2A的强大输出电流为小车提供满满的动力。
驱动模块的接口定义
下卖牛.png
其中,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:回响信号输出引脚
超声波测距原理是当发送的超声波遇到物体被发射回来,被接收端接收,然后通过发送信号到接收到回响的信号时间间隔可以测算出距离。image.png

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

1.2.3、红外避障模块

红外避障原理就是当障碍物靠近的时候,红外接收到的发射光强度越来越大,所以增大了输出的模拟信号,模拟信号接入比较器,经过比较器处理,输出数字信号。读取数字信号电平,就可以判断前方是否有障碍物。

1.2.4、测速模块

测速模块主要原理是由码盘结合光电传感器,传感器一端为发射光,另一端接收光,通过测量单位时间内脉冲个数得出小车的速度,本模块采用施密特触发器输出的信号非常稳定( 去抖)。

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

一步步在物联网平台创建产品、对应的物模型以及设备。

2.1、云端产品创建展示
创建了HaaS电动车的产品名称,然后定义了前进、后退、暂停、左转、右转等物模型属性。
image.png
按照一步步操作,云端创建产品、物模型以及设备以后,我们可以获取对应的四元组信息。

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/openapi-core-nodejs-sdk

│ ├─ 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这个工程。

image.png

  • 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.aliyun.com/#/manage/ak
安全起见,我们可以采取创建RAM子账号的形式,来对权限进行分离
image.png

创建完成后,需要手动分配权限,点击右侧,添加权限。我这里直接选择了 AdministratorAccess。 添加完成后如下。
image.png

  • DeviceName ProducKey

这两个参数在创建设备时生成。

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

image.png

3.4、效果展示

144444444.JPG

4、开发者技术支持

如需更多技术支持,可加入钉钉开发者群,或者关注微信公众号
image.png

更多技术与解决方案介绍,请访问阿里云AIoT首页

相关实践学习
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
机器学习/深度学习 算法 数据可视化
无监督学习的集成方法:相似性矩阵的聚类
在机器学习中,术语Ensemble指的是并行组合多个模型,这个想法是利用群体的智慧,在给出的最终答案上形成更好的共识。
460 0
|
移动开发 JavaScript
H5唤起手机打电话(拨号)和发短信功能
H5唤起手机打电话(拨号)和发短信功能
1310 0
|
开发框架 JavaScript 前端开发
HaaS200 硬件介绍
HaaS200是一款阿里云智能HaaS团队认证、高性能、多连接的物联网开发板。内嵌HaaS201核心模组,包含一个KM4内核的高性能MCU和一个KM0内核的低功耗MCU;自带512KB SRAM,4MB PSRAM和外置4MB FLASH;集成有双频Wi-Fi 2.4G/5G 和蓝牙5.0。HaaS200搭载全新的AliOS Things 3.3操作系统和HaaS轻应用开发框架,支持Python和JavaScript快速开发,免除编译烧录等的繁琐,轻松实现云端一体物联网开发,是IOT开发神器。
HaaS200 硬件介绍
|
JavaScript 前端开发 小程序
HaaS UI - 轻量级IoT小程序解决方案
HaaS UI是一套应用在HaaS硬件上的轻量级IoT小程序解决方案,支持AliOS Things内核,支持用JS开发UI应用,同时也支持Native App(不做主要推荐)。
HaaS UI - 轻量级IoT小程序解决方案
|
安全 网络协议 物联网
AliOS Things开发前准备 |《AliOS Things快速开发指南》
在运行AliOS Things系统之前,您需要做好一系列准备工作,包括搭建环境、安装驱动设备、下载AliOS Things系统源码、安装开发工具AliOS Studio等。本文详细介绍如何完成这些准备工作。
AliOS Things开发前准备 |《AliOS Things快速开发指南》
|
3月前
|
人工智能 Linux API
【养“龙虾”🦞教程】10分钟上手OpenClaw:全平台部署(阿里云/Win11/MacOS/Linux)+API配置+Skill安装+避坑指南
“听说OpenClaw能自动干活,兴冲冲部署完,却只会让它陪聊?”——这是2026年无数“龙虾养殖户”(OpenClaw用户昵称)的入门困境。其实OpenClaw的核心魅力不在基础对话,而在Skills(技能)生态——就像给“龙虾”装APP,装上之后就能自动查资料、整理文件、处理PDF、总结内容,真正实现“解放双手”。
1058 24
|
11月前
|
JSON 数据格式 Docker
higress请求返回503 Service Unavailable
higress请求返回503 Service Unavailable
222 0
|
Java 应用服务中间件 开发者
【实战指南】Java Socket编程:构建高效的客户端-服务器通信
【6月更文挑战第21天】Java Socket编程用于构建客户端-服务器通信。`Socket`和`ServerSocket`类分别处理两端的连接。实战案例展示了一个简单的聊天应用,服务器监听端口,接收客户端连接,并使用多线程处理每个客户端消息。客户端连接服务器,发送并接收消息。了解这些基础,加上错误处理和优化,能帮你开始构建高效网络应用。
902 10
|
11月前
|
人工智能 自然语言处理 网络安全
云上玩转Qwen3系列之四:构建AI Search RAG全栈应用
本文介绍如何利用人工智能平台 PAI-LangStudio、Qwen3 大模型与 AI 搜索开放平台结合 Elasticsearch,构建高效、精准的 AI Search RAG 智能检索应用。通过混合检索技术及 Agentic Workflow 编排,实现自然语言驱动的精准查询,并支持灵活扩展与二次开发,满足多样化场景需求。
464 0
|
数据采集 监控 数据可视化
场景解决方案丨突破成本限制,中小企业如何快速搭建后台管理系统
在信息化时代,业务数据激增及技术成本下降推动了数字化转型。大型企业凭借经济和技术优势巩固市场地位,而中小企业则需寻找新的增长点以保持竞争力。企业后台管理系统涵盖行政、财务、人力资源等功能,旨在提高运营效率和优化资源配置。然而,中小企业面临预算有限、开发时间紧迫、技术资源匮乏及维护成本高昂等问题。易知微提供的解决方案通过低代码平台简化配置操作,覆盖多种应用场景,如办公OA、采购管理和物流运输等,助力中小企业快速搭建后台管理系统,降低成本并提升效率。

热门文章

最新文章