Sipeed矽速科技
直播中

soon顺soon

4年用户 305经验值
擅长:嵌入式技术
私信 关注
[经验]

【Longan Pi 3H 开发板试用连载体验】基于 Longan Pi 3H 开发板完成智能家居控制小型项目

很高兴这次能申请到 Longan Pi 3H 的试用机会,今天终于收到板子了,拿到板子当然要先来个开箱啦

一、开箱

拆开快递后,有个很小的塑料盒子(比想想中的小),盒子上有板子型号、CPU、WiFi6+BLE5.4、4GB LPDDR4等信息,上照片
开箱_盒子.jpg

打开盒子后是气泡垫包这主板,核心板和底板已经组装好了,板子正面,有wifi和蓝牙模组、已经IPEX天线坐着,1个HDMI接口、1个网口、2个USB接口、1个Type-C接口、调试串口、以及GPIO排针

板子正面面.jpg
顺带贴上GPIO说明如下图
Gpio.jpeg
pin_num.png
板子背面图片
PCB_Back.jpg
板子背面是核心板和两个按键以及SD卡接口、核心板用螺丝固定在底板上面。
小小建议下,可以在配一个天线及4个铜柱

与树莓派3B来个对比,尺寸差不多只有树莓派3B的三分之一,性能可是提升不少
与树莓派3B比较.jpg

详细板卡介绍可以看官网板卡介绍

二、开机

手头上有一个带触摸的HDMI 7寸屏幕,接上HDMI和USB数据线,Type-C接电源后,如图开机
HDMI点亮.jpg
显示和触摸功能正常可以兼容,出厂已经烧录了Debin 64bit系统kernel 6.7.0-rc3+
在接上无线键鼠看了下,free -m和dh -f命令看了下内存和存储空间显示为4GB+32G,如图
点亮图片2.jpg

三、项目计划

我的试用项目是基于 Longan Pi 3H 开发板完成智能家居控制小型项目目标如下:

  1. 通过 Longan Pi 3H 开发板实现模拟家庭设备控制(如灯光)、对接传感器等设备

  2. 实现家居设备的自动化管理,如定时开关、光线感应等。

  3. 探索 Longan Pi 3H 开发板在智能家居领域的应用潜力和性能表现。

    后续的试用过程将在本帖更新,期待大家的关注!

点灯

回帖(6)

soon顺soon

2024-4-5 22:23:51
本帖最后由 soon顺soon 于 2024-4-6 08:59 编辑


  • 官方镜像烧录实践

一、官方镜像下载

下载地址:
百度网盘:点我提取码: cd68

本文下载了LPi3H>image>20240228测试
LPI3H_20240228_EMMC.img.zip
LPI3H_20240228_SD.img.zip
分为EMMC和SD两种烧录镜像
二、下载烧录工具
如果用linux系统可以跳过这步用dd命令,因本人是用windows11所以下载 balenaEtcher
下载完成后按引导安装即可,软件图标如下。


三、制作SD启动卡
建议选择一张大于8G的内存卡(至少要4G),SD启动卡后续可以用于烧录EMMC镜像,将SD卡接到电脑。

3.1、打开 balenaEtcher,先选择要LPI3H_20240228_SD.img.zip镜像文件:

3.2 选择要烧录的目标设备

3.3 点击烧录
烧录


校验

等待烧录完成后,就得到了包含启动镜像的 SD 卡


四、从SD卡启动
如图将SD卡插入卡槽

接通电源,接上串口工具(不接也行默认是从SD卡开机,接了是为了看日志),接线如图板子上RX接串口工具TX,板子上TX接窗口工具RX,




从串口登录及查看存储空间(4GSD卡)


默认镜像的帐号密码配置如下:
账户:root,密码: root;
账户: sipeed,密码:licheepi;

以上官方镜像烧录实践分享,如遇到问题欢迎一起讨论。


2 1 举报

soon顺soon

2024-4-7 22:18:20
本帖最后由 soon顺soon 于 2024-4-8 19:44 编辑

GPIO控制实践-点灯


1、检查GPIO是否被占用
通过串口或者桌面进入终端,执行
  1. sudo cat /sys/kernel/debug/gpio
系统显示,166、194、196已在使用中

2、硬件连接
手头上有一块之前试用的HiSpark_WiFi_IoT_SSL_VER.A红绿灯板

LED控制部分原理图如下


接线示意图如下



GND接9,3.3V接1

红灯接29 既PG0 对应gpio192



黄灯接16 既PG1 对应gpio193


绿灯接31既PG3对应gpio195


3、使用命令确认是否可以正常控制
需要切换到root账号否则会出现以下权限问题



切换方式,输入su然后输入root密码

  1. 测试红灯
  2. echo 192 >/sys/class/gpio/export  
  3. echo out >/sys/class/gpio/gpio192/direction
  4. echo 0 >/sys/class/gpio/gpio192/value
  5. echo 1 >/sys/class/gpio/gpio192/value
  6. 测试黄灯
  7. echo 193 >/sys/class/gpio/export  
  8. echo out >/sys/class/gpio/gpio193/direction
  9. echo 0 >/sys/class/gpio/gpio193/value
  10. echo 1 >/sys/class/gpio/gpio193/value
  11. 测试绿灯
  12. echo 195 >/sys/class/gpio/export  
  13. echo out >/sys/class/gpio/gpio195/direction
  14. echo 0 >/sys/class/gpio/gpio195/value
  15. echo 1 >/sys/class/gpio/gpio195/value
  16. // 0 关灯  1开灯
4、通过C语言来实现红绿灯效果
以下均在LonganPI 3H上操作
4.1首先安装需要的依赖库
  1. sudo apt update
  2. sudo apt install build-essential libgpiod-dev gpiod
4.2编写红绿灯C程序
实现循环红灯亮5秒后亮2秒黄灯再亮5秒绿灯,TrafficLights.c代码如下
  1. /*
  2. * @Author: soon.liao
  3. * @Date: 2024-04-06 21:49:48
  4. * @LastEditors: soon.liao
  5. * @LastEditTime: 2024-04-06 21:58:35
  6. * @FilePath: \longanpi3h_demo\TrafficLights.c
  7. * @Description: NA
  8. * NA
  9. * Copyright (c) 2024 by soon.liao  , All Rights Reserved.
  10. */
  11. #include
  12. #include
  13. #include
  14. #include
  15. #define LED_RED 192
  16. #define LED_GREEN 195
  17. #define LED_YELLOW 193
  18. int main(int argc, char **argv)
  19. {
  20.     int i;
  21.     int ret;
  22.     struct gpiod_chip *chip;
  23.     struct gpiod_line *led_red;
  24.     struct gpiod_line *led_green;
  25.     struct gpiod_line *led_yellow;
  26.     chip = gpiod_chip_open("/dev/gpiochip0");
  27.     if (chip == NULL)
  28.     {
  29.         printf("gpiod_chip_open error\n");
  30.         return -1;
  31.     }
  32.     led_red = gpiod_chip_get_line(chip, LED_RED);
  33.     if (led_red == NULL)
  34.     {
  35.         printf("gpiod_chip_get_line error\n");
  36.         gpiod_line_release(led_red);
  37.     }
  38.     led_green = gpiod_chip_get_line(chip, LED_GREEN);
  39.     if (led_green == NULL)
  40.     {
  41.         printf("gpiod_chip_get_line led_green error\n");
  42.         gpiod_line_release(led_green);
  43.     }
  44.     led_yellow = gpiod_chip_get_line(chip, LED_YELLOW);
  45.     if (led_yellow == NULL)
  46.     {
  47.         printf("gpiod_chip_get_line led_yellow error\n");
  48.         gpiod_line_release(led_yellow);
  49.     }
  50.     ret = gpiod_line_request_output(led_red, "gpio", 0);
  51.     if (ret < 0)
  52.     {
  53.         printf("gpiod_line_request_output error\n");
  54.         gpiod_chip_close(chip);
  55.     }
  56.     ret = gpiod_line_request_output(led_green, "gpio", 0);
  57.     if (ret < 0)
  58.     {
  59.         printf("gpiod_line_request_output led_green error\n");
  60.         gpiod_chip_close(chip);
  61.     }
  62.     ret = gpiod_line_request_output(led_yellow, "gpio", 0);
  63.     if (ret < 0)
  64.     {
  65.         printf("gpiod_line_request_output led_yellow error\n");
  66.         gpiod_chip_close(chip);
  67.     }
  68.     gpiod_line_set_value(led_red, 0);
  69.     gpiod_line_set_value(led_green, 0);
  70.     gpiod_line_set_value(led_yellow, 0);
  71.     while (1)
  72.     {
  73.         gpiod_line_set_value(led_red, 1);
  74.         sleep(5);
  75.         gpiod_line_set_value(led_red, 0);
  76.         gpiod_line_set_value(led_yellow, 1);
  77.         sleep(2);
  78.         gpiod_line_set_value(led_yellow, 0);
  79.         gpiod_line_set_value(led_green, 1);
  80.         sleep(5);
  81.         gpiod_line_set_value(led_green, 0);
  82.     }
  83.     gpiod_line_release(led_red);
  84.     gpiod_line_release(led_green);
  85.     gpiod_line_release(led_yellow);
  86.     gpiod_chip_close(chip);
  87.     return 0;
  88. }
4.2 编译运行程序
编译指令
  1. gcc TrafficLights.c -I /usr/include/ -L /usr/lib/aarch64-linux-gnu/ -lgpiod -o TrafficLights
运行指令
  1. su
  2. 输入root密码
  3. ./TrafficLights
此处与官网有点区别需要进入root账号才能运行成功,重新开机sudo执行概率性会提示打开失败。



点灯效果如底部视频



举报

soon顺soon

2024-4-8 22:43:26

主线linux系统开发
202446
22:08

主要参考https://wiki.sipeed.com/hardware/zh/longan/h618/lpi3h/7_develop_mainline.html

本人环境编译环境
Windows11+WSL2+Ubuntu22.04
现将踩坑步骤整如下
1、环境配置
官方给出如下指导
  1. sudo apt install gcc-aarch64-linux-gnu mmdebstrap git debian-archive-keyring
github不稳定,如果网络状况不佳可能得多尝试几次,或者换网络环境,
我更新到的版本是db28b3197b1c8b553d1be9d8d86dd35dcd0252d4这个版本,版本信息和目录情况如下:



2.编译
进入LonganPi-3H-SDK目录依次编译以下

2.1编译arm-trusted-firmware
  1. ./mkatf.sh
这步没有有太大问题,就是如果前面提到的如果下载不下来多执行几次。

2.2编译kernel
  1. ./mklinux.sh


这个也蛮顺利的没遇到什么问题,同样如果遇到网络问题代码下载不下来多执行几次就行。

2.3编译uboot
  1. ./mkuboot.sh

发生“error:command 'swig' failed: Permission denied”解决方法安装swig
  1. sudo apt install swig




2.4编译rootfs
最新的这一版本可以执行以下脚本编译不同的文件系统
  1. # for Debian desktop
  2. sudo ./mkrootfs-debian-gui.sh
  3. # for Debian without gui
  4. # sudo ./mkrootfs-debian-cli.sh
  5. # for Ubuntu without gui
  6. # sudo ./mkrootfs-ubuntu-cli.sh




这边遇到的是以下问题,提示
  1. update-binfmts: warning: qemu-aarch64 not in database of

  2. installed binary formats.

  3. update-binfmts: exiting due to previous errors
  4. W: qemu-aarch64 is not a supported binfmt name
  5. E: arm64 can neither be executed natively nor via qemu

  6. user emulation with binfmt_misc at /usr/bin/mmdebstrap line 184.

  7.       

  8. main::error("arm64 can neither be executed natively nor via qemu
  9. user emul"...) called at /usr/bin/mmdebstrap line 4780

  10.       

  11. main::main() called at /usr/bin/mmdebstrap line 5868





查了各种资料,先安装QEMU用户模式模拟相关的包
  1. sudo apt install -y qemu-user-static pkg-config
  2. libglib2.0-dev libmount-dev python3 python3-pip python3-dev libssl-dev
  3. libffi-dev build-essential autoconf automake libfreetype6-dev libtheora-dev
  4. libtool libvorbis-dev texinfo zlib1g-dev unzip cmake yasm libx264-dev
  5. libmp3lame-dev libopus-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev
  6. libpixman-1-0-dev


也安装了aarch64的gcc
  1. sudo apt-get install
  2. gcc-10-aarch64-linux-gnu


安装了一堆的包仍然没解决,今天晚上终于解决了,解决方式是安装binfmt-support然后update-binfmts--impor详细记录如下,也请有遇到的朋友帮忙验证下是不是只需要以下操作:
  1. sudo apt-get
  2. install -y binfmt-support
  3. sudo update-binfmts --import



附带一些update-binfmts 指令使用方式
  1. update-binfmts --usage
  2. 查看update-binfmts 版本
  3. update-binfmts --version
  4. 版本信息如下
  5. binfmt-support 2.2.1







update-binfmts --import后再次执行 ./mkrootfs-debian-gui.sh编译,Rootfs_debian_gui.tar编译成功显示如下



2.5.打包烧录镜像

需要进入LonganPi-3H-SDK/build目录将你编译的rootfs拷贝一份为rootfs.tar
cp rootfs_debian_gui.tar rootfs.tar,拷贝后build目录如下

否则会提醒缺少rootfs.tar打包异常


再回到LonganPi-3H-SDK目录执行
  1. sudo ./mkimage.sh

镜像打包成功日志如下

镜像生成在LonganPi-3H-SDK目录,名称是LPI3H_XXXXXXXX.img,其中XXXXXXXX是日期,镜像大小约3.2G,如下图所示:


3、镜像烧录测试
将编译出来的镜像拷贝到windows,用balenaEtcher烧录到SD卡(烧录步骤参考前面分享),将SD开接入到主板,接串口查看日志如一下,linux编译版本信息中已经变成是我们的编译环境信息了,表示成功了。


正常开机进入系统



以上对于主线linux系统开发环境搭建的分享,如有遇到问题欢迎讨论,也期待有朋友帮忙验证下rootfs编译问题的解决方式。

举报

soon顺soon

2024-4-13 08:19:59
开启远程桌面
1、更新源
  1. sudo apt-get update


2、安装xrdp
先安装一些依赖包
  1. sudo apt install -y xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
再安装xrdp
  1. sudo apt install -y xrdp
加个-y参数就不用像我这样在确认一次了



3、创建账号用于远程登录
用以下指令创建新用户newuser 换成对应你想创建的用户名
  1. sudo useradd -mk /home/newuser -s /bin/bash newuser //添加账户

设定用户密码
  1. sudo passwd newuser //设定密码

看下sipeed的权限组
  1. groups

有以下组
sipeed dialout cdrom sudo audio video plugdev users netdev
设置newuser 的权限组(newuser 替换 成你的用户名),
  1. sudo usermod -a -G dialout,cdrom,sudo,audio,video,plugdev,users,netdev newuser  //设置权限



4.重启xrdp服务
  1. sudo service xrdp restart

5、使用windows远程桌面登录
在windows系统下打开远程桌面连接,输入IP,连接


seession选xorg,输入上面创建的账号密码


点击ok进入远程桌面

远程桌面设定成功

举报

更多回帖

发帖
×
20
完善资料,
赚取积分