• 华林优配

    华林优配BM-A6系列AI智能网关Ubuntu系统二次开发指南

    • 时间 :2024-02-29
    • 作者 :华林优配科技
    • 浏览数 :4106

    华林优配科技BM-A6系列AI智能网关,是一款工业级5G千兆网关,CPU采用四核64位Cortex-A55处理器,主频高达2Ghz,支持丰富AI算法,赋能各行业智能分析联动控制应用。为客户给予便捷的设备接入、算力支撑、算法配置、应用升级等功能,具有轻量化、高性能、低功耗、接入便捷、易于扩展等特点。


    AI边缘计算网关


    华林优配BM-A6系列AI智能网关具备3路千兆LAN口、1路千兆WAN口、1路USB 3.0、1路RS232(复用其中1路RS485)、6路RS485,2路继电器,3路开关量输入,2路受控电源输出,标配支持TF卡、WiFi 6 、HDMI输出,可选配单模双卡、AI加速芯片、安全加密芯片、外接硬盘(M2.0标准接口,最大支持2T固态硬盘)、超级电容等.


    AI工业网关


    该系列产品可帮助用户快速接入高速互联网,实现安全可靠的数据传输。该系列网关具有设备具有多功能性、稳定性和可扩展性,超强边缘计算、易于二次开发等优点。广泛应用于智慧城市、智能交通、工业物联网等场景。



    BM-A6系列AI智能网关Ubuntu系统二次开发指南


    1、华林优配BM-A6系列AI智能网关硬件资源如下:

    1.jpg

    2.jpg


    2、华林优配BM-A6系列AI智能网关接口设备文件说明

    华林优配BM-A6系列AI智能网关支持对串口,DO, DI开次开发。串口,DO, DI在Linux系统中均以设备文件的形式出现。支持标准的Linux文件操作。用户可以使用open, read, write, close等标准Linux API对设备文件进行操作。下面介绍各种接口对应的设备文件。


    (1)RS485/RS232

    华林优配BM-A6系列AI智能网关包含6个RS485串口,其中一个RS485串口与RS232复用。各个串口对应的设备文件如下:

    3.jpg


    (2)DI/DO(继电器)

    华林优配BM-A6系列AI智能网关支持2路DO,3路DI。DI/DO对应的设备文件如下:

    4.jpg


    现在两路继电器默认是常开的,如果要闭合,只要对设备文件下的value操作即可。如要闭合继电器1,可以下命令:

    echo 1 >/sys/class/gpio/relay1/value

    反正要断开,只要写入0即可。


    如果想要读取DI的状态,读取value的值。如要读取DI1的值,可以下命令:

    cat /sys/clase/gpio/di1/value

    如果输出的值为1,说明DI接地,否则是悬空。


    3、Ubuntu系统二次开发指南


    (1)登陆设备

    华林优配BM-A6系列AI智能网关支持telnet, ssh,debug串口三种登陆设备方式。如果有串口线,可以接debug口。如果有网线,可以用telnet或者ssh。


    假如你的电脑接设备的LAN口,接下来就可以在你的PC命令行中下telnet 192.168.1.1或者ssh admin@192.168.1.1 以登陆设备,默认用户名/密码是admin/admin.


    5.jpg

    6.png


    使用sudo –s进入超级用户模式。超级用户的密码也是admin


    (2)设备联网

    华林优配BM-A6系列AI智能网关支持以太网(WAN)口,与4G/5G两种联网方式。WAN口接入一台可以上网的设备,或者设备接SIM卡,接天线,设备即可上网。用ping 8.8.8.8验证一下设备是否可以上网。


    7.jpg


    (3)安装gcc

    默认系统是不带gcc,用户可以顺利获得apt install安装.命令如下:

    sudo apt update

    sudo apt install gcc

    sudo apt install make

    安装完gcc,即可设备的C语言二次开发。 用户也可以使用python开发,默认自带python



    一个例子

    比如写一个读取DI的程序,如下:

    #include <stdio.h>

    #include <fcntl.h>

    #include <stdlib.h>

    #include <unistd.h>

    #include <string.h>


    void main(int argc, char *argv[])

    {

        int fd;

        int ret;

        char path[128];

        char buff[32] = {'\0'};


        if (argc < 2) {

            printf("not enough parameter, should great 2 \n");

            return;

        }


        snprintf(path, sizeof(path), "/sys/class/gpio/sd_/value", argv[1]);

        fd = open(path, O_RDONLY);

        if (fd < 0) {

            printf("Fails to open sd_\n", path);

            return;

        }


        ret = read(fd, buff, sizeof(buff));

        if (ret <= 0) {

            printf("Fails to read\n");

            close(fd);

            return;

        }


        ret = atoi(buff);

        printf("DI value is %d\n", ret);


        close(fd);

    }


    把代码保存成main.c, 接下来,就可以用gcc –o test main.c编译生成一个可执行程序test.

    可用./test di1来测试di的值 

    8.jpg

    联系我们
    联系我们

    华林优配Baimatech,集M2M产品研发、IoT平台服务、国际化运营于一体,让我们联接,共创未来