邊緣計算網關二次開發指導手冊
庫函數接口介紹
(適用于: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 <gpio_ops.h>
#include <i2c-sensor.h>
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等)進行初始化和讀寫。
佰馬Baimatech,集M2M產品研發、IoT平臺服務、國際化運營于一體,讓我們聯接,共創未來