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.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
关注
打赏