• 华林优配

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

    • 时间 :2020-10-19
    • 作者 :华林优配科技
    • 浏览数 :3302

    图片11.jpg


    边缘计算网关二次开发指导手册

    库函数接口介绍

    (适用于: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接口及开发指导,为用户的二次开发给予稳定快捷的平台。


    图片22.jpg

    边缘计算网关二次开发,第一时间定义的库函数、宏定义包含在了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平台服务、国际化运营于一体,让我们联接,共创未来