EASY EAI灵眸科技
直播中

lustao

13年用户 629经验值
擅长:嵌入式技术
私信 关注

【EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯按钮项目

0接上文【EASY EAI Nano-TB(RV1126B)开发板试用】命令行功能测试-shell脚本进行IO控制-红绿灯项目-实现开机起动
EASYEAINano-TB(RV1126B)是一款专为嵌入式AI系统设计的开发板,搭载高性能处理器,适用于多种嵌入式应用场景。

硬件

  • EASY EAI Nano-TB(RV1126B)开发板 :一款用于嵌入式ai系统的开发板。
  • 红绿灯板 :一个简单的外部设备,包含红、绿、黄三个LED灯。
  • wifi路由器 :CMCC-e2dd(密码:jdtsyahg)
  • 工具要求 :支持SSH连接的客户端(MobaXterm )
    • 开发板按键S2是LOAD按键正常启动后可以作为红绿灯项目输入按钮。
      EASY EAI Nano-TB(RV1126B)开发板按键S2是LOAD按键,用于固件更新和CPU的SARADC0_VIN0_KEY/RECOVERY相连,在核心板A70 CPU 1B20 处 。当LOAD按键处于按下状态时,再按下复位按键,此时系统将会进入Loader下载模式,可以通过烧录接口下载固件。
      在正常启动后,可以作为普通SARADC0_VIN0_KEY模拟输入红绿灯按钮,按下时在70-90之间。

图片

Recovery信号描述

信号 默认上下拉 连接方式 描述
SARADC0_VIN0_KEY/RECOVERY 上拉1.8V 直连 Recovery下载模式

SARADC0分辨率为13bit的SARADC控制器,输入电压范围为0-1.8V。 接口的信号连接如下图所示:image.png

红绿灯板与RV11 26 B板连接如下

  • 红绿灯板 3V3 接EASY EAI Nano-TB(RV1126B)开发板 P1 的 1 针EASY EAI Nano-TB(RV1126B)开发板 功能3V3

    红绿灯板 GND 接EASY EAI Nano-TB(RV1126B)开发板 P1的 6 针EASY EAI Nano-TB(RV1126B)开发板 功能 GND

    红绿灯板 LEDr 红 接EASY EAI Nano-TB(RV1126B)开发板 P1 的 13 针 EASY EAI Nano-TB(RV1126B)开发板 功能 GPIO5_C0

    红绿灯板 LEDg 绿 接EASY EAI Nano-TB(RV1126B)开发板 P1 的 15 针 EASY EAI Nano-TB(RV1126B)开发板 功能 GPIO5_C1

    红绿灯板 LEDy 接EASY EAI Nano-TB(RV1126B)开发板 P1 的 37 针EASY EAI Nano-TB(RV1126B)开发板 功能 GPIO5_C2
    红绿灯板连接

红绿灯板接口 连接至开发板P1针脚 开发板功能
3V3 1针 3V3电源
GND 6针 GND
LEDr(红) 13针 GPIO5_C0
LEDg(绿) 15针 GPIO5_C1
LEDy(黄) 37针 GPIO5_C2

GPIO5_C0----gpio176 ----红绿灯板 LEDr 红

GPIO5_C1----gpio177 ----红绿灯板 LEDg 绿

GPIO5_C2----gpio178 ----红绿灯板 LEDy 黄

软件* SSH连接

通过MobaXterm工具进行SSH连接。

经过之前查询可知被分配出来的IP地址分别为:

【wlan0】--IP地址:inet 192.168.1.9,子网掩码(24):255.255.255.0-

  1. IP****地址‌:192.168.1.9 (wlan0接口)
  2. 子网掩码‌:255.255.255.0
  3. 连接工具‌:MobaXterm
  4. 登录凭据‌:

o
用户名:nano

o
密码:123456

可使用ssh登录。

  • 配置“Session”,选择“SSH”,输入IP地址,最后点击“Open”即可,如下图所示。

未标题-2 拷贝.jpg

  • 首次连接,ssh客户端会根据ssh主机IP地址等信息生成一个ssh-key,以绑定标记ssh主机和它所对应的IP地址。若ssh主机的IP地址有变更,又或者别的ssh主机用了曾被记录下来的IP地址,导致ssh主机与IP地址不匹配,则会出现连不上的情况。此时需要用户手动清理掉客户端(putty)关于ssh主机与IP地址的绑定。具体的清理方式请用户自行根据所用的ssh客户端查阅,此处不展开叙述。

  • 点击“Accept”后,则会提示输入登录信息,如下图所示。

未标题-2 拷贝.jpg

EASY EAI Nano用户名:nano

   EASY EAI Nano密码为:123456

登录后:未标题-2 拷贝.jpg

EASY EAI Nano-TB是带有基本系统 Ubuntu 22.04.5 LTS (GNU/Linux 6.1.118 aarch64)

脚本编写

脚本位置

/etc/init.d/S99_v.sh

脚本内容

#!/bin/sh

k_v=0
k_s=1
k_c=0
program=1
p_sleep=50
p_s=1
    # 等待特定按键
    wait_for_key() {
	
        local target_key=$(cat /sys/bus/iio/devices/iio:device0/in_voltage0_raw)
# 	  echo "in目标k_v $k_v ?"
# 	  echo "in目标k_c $k_c ?"
# 	  echo "in目标按键 $target_key "
# 	  echo "in目标program $program "	  
      if [ $target_key -lt 200 ]; then
        if [ $k_v -eq 0 ]; then
				k_c=$(( $k_c+1 ))
					if [ $k_c -eq 2 ]; then
# 						echo "目标按键 $target_key 已按下"

						k_s=0
						program=$(( $program+1 ))
							if [ $program -eq 2 ]; then

								program=0

							fi	
					fi   										
 					if [ $k_c -eq 3 ]; then
 				    k_c=2
 
 					fi	
		
			else		
				k_v=0
        k_c=0

      fi

      else
            if [ $k_v -eq 1 ]; then
				k_c=$(( $k_c+1 ))
					if [ $k_c -eq 2 ]; then
# 						echo "目标按键 $target_key 已up"

						k_s=1
		

					fi
 					if [ $k_c -eq 3 ]; then
 				    k_c=2
 
 					fi	         			
			else		
				k_v=1
				k_c=0
            fi	  

      fi        

    }

    # 等待rgb1
    wait_rgb1_t() {
        p_sleep=$(( $p_sleep-1 ))
        case $k_s in
            1)
				sudo echo 0 > /sys/class/gpio/gpio178/value 			
				if [ $program -eq 1 ]; then
					sudo echo 1 > /sys/class/gpio/gpio176/value     
				else			
					sudo echo 0 > /sys/class/gpio/gpio176/value 				
				fi	
				if [ $p_sleep -eq 0 ]; then
					p_sleep=50
					k_s=2
				
				fi					
                ;;
            2)
				sudo echo 0 > /sys/class/gpio/gpio176/value 					
				if [ $program -eq 1 ]; then
					sudo echo 1 > /sys/class/gpio/gpio177/value     
				else			
					sudo echo 0 > /sys/class/gpio/gpio177/value 				
				fi	
				if [ $p_sleep -eq 0 ]; then
					p_sleep=5
					k_s=3
				
				fi					
                ;;
            3)
				sudo echo 0 > /sys/class/gpio/gpio177/value 			
				if [ $program -eq 1 ]; then
					sudo echo 1 > /sys/class/gpio/gpio178/value     
				else			
					sudo echo 0 > /sys/class/gpio/gpio178/value 				
				fi	
				if [ $p_sleep -eq 0 ]; then
					p_sleep=5
					k_s=4
				
				fi					
                ;;
            4)
		
				sudo echo 0 > /sys/class/gpio/gpio178/value 				

				if [ $p_sleep -eq 0 ]; then
					p_sleep=5
					k_s=5
				
				fi					
                ;;
            5)
			
				if [ $program -eq 1 ]; then
					sudo echo 1 > /sys/class/gpio/gpio178/value     
				else			
					sudo echo 0 > /sys/class/gpio/gpio178/value 				
				fi	
				if [ $p_sleep -eq 0 ]; then
					p_sleep=50
					k_s=1
				
				fi					
                ;;
        esac		

    }

filename="gpio176"
cd /sys/class/gpio
if [  -e "$filename" ]; then
 # if test -d /sys/class/gpio/gpiol76 ;then
echo "alread exported gpiol76!"
else
sudo echo 176 > /sys/class/gpio/export

fi
filename="gpio177"

if [  -e "$filename" ]; then
 #if test -d /sys/class/gpio/gpiol77 ;then
echo "alread exported gpiol77!"
else
sudo echo 177 > /sys/class/gpio/export

fi
filename="gpio178"

if [  -e "$filename" ]; then
 #if test -d /sys/class/gpio/gpiol78 ;then
echo "alread exported gpiol78!"
else
sudo echo 178 > /sys/class/gpio/export

fi
sudo echo out > /sys/class/gpio/gpio176/direction      ## gpio_direction_output 设置相应gpio为输出方向
sudo echo out > /sys/class/gpio/gpio177/direction      ## gpio_direction_output 设置相应gpio为输出方向
sudo echo out > /sys/class/gpio/gpio178/direction      ## gpio_direction_output 设置相应gpio为输出方向




sudo echo 0 > /sys/class/gpio/gpio176/value               ## gpio_set_value       设置输出低电平

sudo echo 0 > /sys/class/gpio/gpio177/value               ## gpio_set_value       设置输出低电平
sudo echo 0 > /sys/class/gpio/gpio178/value               ## gpio_set_value       设置输出低电平




while true
do
{
wait_for_key 
wait_rgb1_t
      sleep 0.05
};

done

脚本解释

  • 循环控制 :使用while true实现无限循环。
  • GPIO控制 :使用echo 0 > /sys/class/gpio/gpiol78/value`和 echo 1 > /sys/class/gpio/gpiol78/value 脚本控制GPIO引脚的高低电平驱动程序。
  • 延时 :使用sleep命令实现延时效果。
  • 某一引脚在使用前,用if(if [ -e "$filename" ] )判断是否有引脚资源,无则向gpio管理器申请导出该引脚资源( echo 176 > /sys/class/gpio/export )/
  • 按钮 : cat /sys/bus/iio/devices/iio:device0/in_voltage0_raw)

脚本运行

权限设置

  • 命令
chmod u+x rgb1.sh

运行脚本

未标题-2 拷贝.jpg


灯正常闪!VID_20250206_111556.mp4_20250206_113207.046.jpg

运行结果

  • 灯的闪烁模式
  1. 红灯亮5秒
  2. 绿灯亮5秒
  3. 黄灯快速闪烁三次(每次0.5秒)

项目总结

成果展示

  • 灯正常闪烁 :达到了预期的效果,红、绿、黄灯按照预定的模式闪烁。

红绿灯按钮项目完成。

更多回帖

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