天天看點

1小時打造HaaS版小小蠻驢智能車1、認識一下小小蠻驢真面目2、雲端小小蠻驢産品建立3、HaaS電動小車軟體開發4、開發者技術支援

1、認識一下小小蠻驢真面目

1.1、元件部分

1小時打造HaaS版小小蠻驢智能車1、認識一下小小蠻驢真面目2、雲端小小蠻驢産品建立3、HaaS電動小車軟體開發4、開發者技術支援

HaaS100核心闆

HaaS100是一款物聯網場景中的标準硬體,并配套嵌入到硬體中的軟體驅動及功能子產品,為使用者提供物聯網裝置高效開發服務。

1小時打造HaaS版小小蠻驢智能車1、認識一下小小蠻驢真面目2、雲端小小蠻驢産品建立3、HaaS電動小車軟體開發4、開發者技術支援

HaaS100核心闆有着豐富的外設接口,如下所示:

1小時打造HaaS版小小蠻驢智能車1、認識一下小小蠻驢真面目2、雲端小小蠻驢産品建立3、HaaS電動小車軟體開發4、開發者技術支援

智能車底闆電路

  • 紅外接收頭子,實作紅外遙控小車
  • 5V電源穩壓晶片
  • 電機驅動晶片,電流可達2A,為小車提供強大的動力
  • 電源訓示燈
  • 保護二極管

其他豐富接口

  • 電機接口
  • 超音波子產品接口
  • 舵機子產品接口
  • 測速子產品接口
  • 紅外避障子產品接口
  • 電池座接口
  • HaaS連接配接接口

1.2、重要子產品介紹

1.2.1、驅動電機

驅動電機晶片是小車最重要的子產品之一,2A的強大輸出電流為小車提供滿滿的動力。

驅動子產品的接口定義

1小時打造HaaS版小小蠻驢智能車1、認識一下小小蠻驢真面目2、雲端小小蠻驢産品建立3、HaaS電動小車軟體開發4、開發者技術支援

其中,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:回響信号輸出引腳

超音波測距原理是當發送的超音波遇到物體被發射回來,被接收端接收,然後通過發送信号到接收到回響的信号時間間隔可以測算出距離。

1小時打造HaaS版小小蠻驢智能車1、認識一下小小蠻驢真面目2、雲端小小蠻驢産品建立3、HaaS電動小車軟體開發4、開發者技術支援

測距過程如下: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電動車的産品名稱,然後定義了前進、後退、暫停、左轉、右轉等物模型屬性。

1小時打造HaaS版小小蠻驢智能車1、認識一下小小蠻驢真面目2、雲端小小蠻驢産品建立3、HaaS電動小車軟體開發4、開發者技術支援

按照一步步操作,雲端建立産品、物模型以及裝置以後,我們可以擷取對應的四元組資訊。

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這個工程。

1小時打造HaaS版小小蠻驢智能車1、認識一下小小蠻驢真面目2、雲端小小蠻驢産品建立3、HaaS電動小車軟體開發4、開發者技術支援
  • 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子賬号

的形式,來對權限進行分離

1小時打造HaaS版小小蠻驢智能車1、認識一下小小蠻驢真面目2、雲端小小蠻驢産品建立3、HaaS電動小車軟體開發4、開發者技術支援

建立完成後,需要手動配置設定權限,點選右側,添權重限。我這裡直接選擇了 AdministratorAccess。 添加完成後如下。

1小時打造HaaS版小小蠻驢智能車1、認識一下小小蠻驢真面目2、雲端小小蠻驢産品建立3、HaaS電動小車軟體開發4、開發者技術支援
  • DeviceName ProducKey

這兩個參數在建立裝置時生成。

3.3.4、編譯驗證

點選小程式IDE右上角“真機調試”按鈕,等待二維碼生成後,使用釘釘APP掃碼,即可發起小程式。

1小時打造HaaS版小小蠻驢智能車1、認識一下小小蠻驢真面目2、雲端小小蠻驢産品建立3、HaaS電動小車軟體開發4、開發者技術支援

3.4、效果展示

1小時打造HaaS版小小蠻驢智能車1、認識一下小小蠻驢真面目2、雲端小小蠻驢産品建立3、HaaS電動小車軟體開發4、開發者技術支援

4、開發者技術支援

如需更多技術支援,可加入釘釘開發者群,或者關注微信公衆号

1小時打造HaaS版小小蠻驢智能車1、認識一下小小蠻驢真面目2、雲端小小蠻驢産品建立3、HaaS電動小車軟體開發4、開發者技術支援

更多技術與解決方案介紹,請通路

阿裡雲AIoT首頁