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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

边缘计算网关linux开发,边缘计算网关(BMG800系列)二次开发指导手册

發布時間:2025/3/21 linux 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 边缘计算网关linux开发,边缘计算网关(BMG800系列)二次开发指导手册 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

邊緣計算網關二次開發指導手冊

庫函數接口介紹

(適用于:BMG800系列)

目錄

1. 獲取溫濕度(硬件設備為sht10)

2. 獲取大氣壓(硬件設備為bmp180)

3. 讀取ADC值(硬件設備為ms1112)

4. 狀態燈控制(硬件設備為pcal6416)

5. GPIO控制繼電器

5.1設置繼電器狀態

5.2 查詢繼電器狀態

6. DI控制操作

7. COM口

BMG800邊緣計算網關,是一款功能強大的智能網關。該系列網關盒子,采用工業級ARM處理器, DDR3 內存最大1GB(可選),和大容量 FLASH,為邊緣節點業務提供強大計算資源, 有效分擔云端負荷。BMG800系列邊緣計算網關采用Linux 操作系統,集成Python開發環境和C語言開發環境,提供標準API接口及開發指導,為用戶的二次開發提供穩定快捷的平臺。

邊緣計算網關二次開發,首先定義的庫函數、宏定義包含在了libgeneral.so動態庫中,其次使用時需要包含頭文件:

#include

#include

1.?獲取溫濕度(硬件設備為sht10)

原型:int get_humidity_tempareture(sht10_st *value)

參數:sht10_st結構體指針,讀取的結果填充該結構體。結構體定義見后面

返回值:0-成功,-1 - 參數錯誤,-2 - 設備節點不存在,-3 - 讀取失敗

typedef struct{

int humidity; ?//?單位:mRH到RH得除以1000

int temperature;//單位:m℃到℃得除以1000

}sht10_st;

2.獲取大氣壓(硬件設備為bmp180)

原型:int get_pressure_temparature(atmos_st *value)

參數:atmos_st結構體指針,讀取的結果填充該結構體。結構體定義見后面

返回值:0-成功,-1 - 參數錯誤,-2 - 設備節點不存在,-3 - 讀取失敗

typedef struct{

int temperature;

int pressure;? //單位:Pa

}atmos_st;

3.讀取ADC值(硬件設備為ms1112)

原型:int adc_channel_get(int channel_no,int *value)

參數:channel_no - 通道 (取值范圍1-8),int型指針-adc采樣結果。

返回值:0-成功,-1 - 參數錯誤,-2 - 設備節點不存在,-3 - 讀取失敗

該函數原始的adc,還需要原始值轉為采樣電壓。

采樣電壓 = ( (*value) * 2.048)/32768/0.4,單位= V

若輸入的為電流模式,需進一步換算,輸入電流 = 采樣電壓/250,電流單位為A

4.狀態燈控制(硬件設備為pcal6416)

原型:int led_control_set(led_num_e led_no,led_state_e enable)

參數: led_no - led編號,enable - led設置狀態

返回值:0-成功,-1 - 參數錯誤,-2 - 設備節點不存在,-3 - 設置失敗

typedef enum {

LED_SINGAL_C,

LED_SINGAL_B,

LED_SINGAL_A,

LED_WIRELESS,

LED_GPS,

LED_ONLINE,

}led_num_e;

typedef enum{

LED_OFF,

LED_ON,

}led_state_e;

5.GPIO控制繼電器

5.1設置繼電器狀態

原型:int gpio_direction_output(int gpio_no,int state)

參數:gpio_no: gpio編號,state: 0 斷開(低電平),1 閉合(高電平)

返回值:0-成功,負數-失敗

5.2 查詢繼電器狀態

原型:int? gpio_get_value(int gpio_no,int *gpio_state)

參數:gpio_no: gpio編號,int型指針: 存放讀取結果,*gpio_state=0 當前繼電器斷開(低電平), *gpio_state =1 當前繼電器閉合(高電平)

返回值:0-成功,負數-失敗

繼電器對應的GPIO編號:(內核中已經注冊了繼電器管腳,可直接用提供的gpio函數控制):

#define RELAY_1_BY_GPIO? GET_CPU_RELAY_GPIO(3)

#define RELAY_2_BY_GPIO? GET_CPU_RELAY_GPIO(2)

#define RELAY_3_BY_GPIO? GET_CPU_RELAY_GPIO(4)

#define RELAY_4_BY_GPIO? GET_CPU_RELAY_GPIO(1)

RELAY_1_BY_GPIO - RELAY_4_BY_GPIO分別對應繼電器1到繼電器4

6. DI控制操作

DI對應的GPIO編號:

#define GPIO(n,x)? ? ? ?((n-1)*32 + x)

#define GPIO_DI1_IN_EN? ? ? ? ? GPIO(4,28)

#define GPIO_DI2_IN_EN? ? ? ? ? GPIO(4,27)

#define GPIO_DI3_IN_EN? ? ? ? ? GPIO(4,26)

#define GPIO_DI4_IN_EN? ? ? ? ? GPIO(4,25)

GPIO_DI1_IN_EN - GPIO_DI4_IN_EN分別對應DI1到DI4

linux應用控制gpio的方法如下:

以下為控制DI1的操作過程參考:

6.1 進入 /sys/class/gpio/ 目錄

6.2 其次如下

echo 124 > export

//124=(4-1)*32 + 28

//GPIO(n,x)->((n-1)*32 + x)

//GPIO_DI1_IN_EN->GPIO(4, 28)

6.3 此時會產生一個gpio124 的目錄.

6.4? cd gpio124

6.5 關注以下幾個文件:

direction ????這個文件是控制你是輸出還是輸入模式

如果想設置為輸入:echo in > direction

如果想設置為輸出:echo out > direction

value? ? ????這個文件記錄當前狀態

為輸出時:

輸出高電平:echo 1 > value

輸出低電平:echo 0 > value

為輸入時:

當前的輸入狀態

edge ????????這個控制中斷觸發模式

無: echo none > edge

上升沿觸發:echo rising > edge

下降沿觸發:echo falling > edge

輪詢:echo both >edge

6.6 關閉這個GPIO控制。

cd /sys/class/gpio/

echo 124 > unexport

以上為控制DI1的操作過程參考

7.COM口

各com口對應的設備節點如下:

Com2-"/dev/ttymxc1"

Com3-"/dev/ttymxc2"

Com4-"/dev/ttymxc3"

Com5-"/dev/ttymxc6"

Com6-"/dev/ttymxc4"

Com7-"/dev/ttymxc5"

Com口可以直接用文件操作函數處理(open/read/write/close等)進行初始化和讀寫。

總結

以上是生活随笔為你收集整理的边缘计算网关linux开发,边缘计算网关(BMG800系列)二次开发指导手册的全部內容,希望文章能夠幫你解決所遇到的問題。

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