日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2024/8/23 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 1小时打造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/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這個工程。

  • 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子賬號的形式,來對權限進行分離

創建完成后,需要手動分配權限,點擊右側,添加權限。我這里直接選擇了 AdministratorAccess。 添加完成后如下。

  • DeviceName ProducKey

這兩個參數在創建設備時生成。

3.3.4、編譯驗證
點擊小程序IDE右上角“真機調試”按鈕,等待二維碼生成后,使用釘釘APP掃碼,即可發起小程序。

3.4、效果展示

4、開發者技術支持

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的1小时打造HaaS版小小蛮驴智能车的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。