主控开发(三)树莓派&jetson

1、安装桌面

sudo apt install ubuntu-desktop
sudo apt install xubuntu-desktop 
sudo apt install lubuntu-desktop
sudo apt install ubuntu-mate-desktop

树莓派ubuntu mate系统设置开机自动登陆

sudo nano /etc/lightdm/lightdm.conf
[Seat:*]
autologin-guest=false
autologin-user=chengyangkj
autologin-user-timeout=0

2、raspi-config

官网地址

安装依赖

sudo apt install whiptail parted lua5.1 alsa-utils psmisc

从Raspberrypi官网下载最新的deb安装包

wget http://archive.raspberrypi.org/debian/pool/main/r/raspi-config/raspi-config_20200707_all.deb

安装Deb安装包

sudo dpkg -i raspi-config_20200707_all.deb

装好软件还是提示缺少依赖执行错误

sudo apt install -f -y

运行raspi-config,需要sudo或以上权限

sudo raspi-config

3、系统配置

3.1、I2C配置

安装

sudo apt-get install i2c-tools python-smbus

添加当前用户到I2C组

sudo adduser pi i2c

修改配置文件

sudo vi /etc/modprobe.d/raspi-blacklist.conf

在这里插入图片描述

sudo vi /etc/modules

在这里插入图片描述

测试I2C功能

# 树莓派A型
sudo i2cdetect -y 0
# 树莓派B型
sudo i2cdetect -y 1

在这里插入图片描述

3.2、SSH配置

安装SSH

sudo apt install openssh-server sshguard

查看ssh服务是否启动:

 sudo ps -e |grep ssh

启动ssh服务:

sudo service ssh start

3.3、wifi配置

编辑文件:

sudo  vim /etc/netplan/80-cloud-init.yaml
  • 打开树莓派通讯协议
sudo raspi-config
  • 扫描通讯
i2cdetect -y -r 1

编辑文件内容:

network:
	version: 2
	renderer: networkd
	wifis:
		wlan0:
			dhcp4: yes
			dhcp6: no
			access-points:
				"Yahboom1_5G":
					password: "yahboom890729"
sudo netplan apply

3.4、AP模式

create_ap

  • 将github上面的wifi热点开源项目安装到本地
sudo git clone https://github.com/oblique/create_ap
cd create_ap
sudo make install
  • 安装依赖库
sudo apt-get install util-linux procps hostapd iproute2 iw haveged dnsmasq
  • 输入ifconfig显示网络接口,创建WiFi热点
sudo create_ap wlan0 网卡 wifi名 密码
执行完成之后,检查是否wifi创建成功

在这里插入图片描述

  • 开机自动启动热点
vim /etc/rc.local 
sudo create_ap wlan0 网卡 wifi名 密码 &

在这里插入图片描述

修改完成之后,即可sudo reboot 重启电脑,默认的ip地址是192.168.12.1

参考资料

4、关机、重启、密码

  • 关机
sudo shutdown -h now
sudo halt
sudo poweroff
sudo init 0
  • 重启
sudo reboot
shutdown -r now
  • 设置密码
sudo passwd root
sudo passwd 用户名

5、修改主机名与用户名

在这里插入图片描述

5.1、修改用户名

修改用户名之前注意:修改root密码、usrname密码、jupyter lab密码、vnc密码、seahourse。

先转为root用户

sudo su

创建新用户aa

-r:建立系统账号
-m:自动建立用户的登入目录
-s:指定用户登入后所使用的shell

sudo useradd -rms /bin/bash aa

添加啊aa的权限

sudo vim /etc/sudoers

设置密码

sudo passwd aa

切换到新建用户aa下修改,旧的用户名oldname 修改为新用户名newname

usermod -l newname oldname
sudo mv -i oldname newname
sudo vim /etc/shadow
sudo vim /etc/group
sudo vim /etc/passwd

注意

ubuntu:x:1000:1000:Ubuntu:/home/ubuntu:/bin/bash
第一个ubuntu,用户名。
Ubuntu,登录界面显示的用户名。
/home/ubuntu:ubuntu用户名挂载的目录。

以防万一,重新设置修改后用户密码,注销当前用户aa,切换修改后的用户,

删除用户:userdel 同时删除用户和目录

sudo userdel -r username

注意:修改的时候要格外小心,不要打错一个字母。

5.2、修改主机名

修改/etc/hostname中存放的是主机名,hostname文件的一个例子:

sudo vim /etc/hostname

在这里插入图片描述

第三步:重启系统。
参考链接一
参考链接二
参考链接三

5.3、修改用户名无法登录

提示:如果你要修改密码和用户名的话,请先修改密码,重启后,再修改用户名,重启。如果你先修改用户名,再修改密码的话,可能会导致你登录不了Ubuntu。

先修改用户名再修改密码导致登录不了Ubuntu
解决方法:进入recovery-mode修改登录信息

1)重启系统,进入开机画面时,选择第二项,确定,如下图
在这里插入图片描述

选择recovery-mode启动
在这里插入图片描述

此时选择root登录如下
在这里插入图片描述

各行说明如下:
在这里插入图片描述

选择root身份进入
在这里插入图片描述

  • 以root身份进入系统,此时许多文件无法写入,需要执行如下命令
mount -o rw,remount /
  • 修改用户名等信息
usermod -l newName oldName

注:修改用户名后需要手动改/home下的家目录名称为你的用户名

  • reboot

6、增加交换空间

创建文件

sudo mkdir /opt/image
cd /opt/image
sudo touch swap    

添加交换文件并设置为1G,过段时间会返回(这个略慢)

sudo dd if=/dev/zero of=/opt/image/swap bs=1024 count=1024000  
#1024000+0 records in
#1024000+0 records out
#大小 copied, 所用时间 s, 速度 MB/s

设置交换空间

sudo mkswap /opt/image/swap

启用新增的交换空间

sudo swapon /opt/image/swap

确认是否已经生效

free -m   

之后修改/etc/fstab文件使重启后这块swap也能生效,在文件最后添加

sudo vim /etc/fstab
/opt/image/swap /swap swap defaults 0 0 

7、Jetson Nano 风扇

7.1、PWM散热风扇

输入以下指令打开风扇: 可以调节中间的数值来进行风扇的调速,修改的范围是0-255

sudo sh -c 'echo 255 > /sys/devices/pwm-fan/target_pwm'

输入以下指令关闭风扇:

sudo sh -c 'echo 0 > /sys/devices/pwm-fan/target_pwm'

7.2、开机自动启动风扇

sudo pip3 install jetson-stats
sudo jtop
按下按键5进入风扇控制界面
按下按键s和e设置jetson_clocks Running和boot Enable
根据自己需求,通过按键m(减速)和p(加速)控制风扇风速(0%-100%)
我这里设置风速为50%,此时风扇开始启动,在右下角可以看到风扇运行的占空比
按键q退出软件。

7.3、开机启动风扇脚本

cd .config
mkdir autostart
将start.desktop复制到 .config/autostart
cd ~/RGB_Cooling_HAT
python RGB_Cooling_HAT.py

8、问题收集

8.1、login keyring

打开chrome弹出“Enter password to unlock your login keyring”解决方法

seahorse
# 查找
find ~/ -name login.keyring
rm -f ~/.gnome2/keyrings/login.keyring
sudo rm -f ~/.local/share/keyrings/login.keyring

再次打开谷歌,出现了choose password for new keying !!!

8.2、python setup.py

出现Command “python setup.py egg_info” failed with error code 1 in /tmp/pip-build*解决办法

easy_install -U setuptools
sudo pip install jupyter

8.3、Illegal instruction

Jetson Nano问题解决“Illegal instruction(core dumped)”

sudo vim ~/.bashrc
export OPENBLAS_CORETYPE=ARMV8

sudo apt-get install build-essential python3 python3-dev python3-pip python3-pandas python3-opencv python3-h5py libhdf5-serial-dev hdf5-tools nano ntp

8.4、触摸屏失效

sudo apt remove --purge libfwupd2 fwupd fwupd-signed
sudo apt install gnome-software* gnome-software-plugin-snap* ubuntu-software*

8.5、普通用户控制树莓派的GPIO

参考链接
Raspbian上的Rpi.GPIO库是可以在普通用户下控制树莓派的GPIO的,然而在ArchlinuxARM下,却需要root用户才行,这无疑会引起安全问题,好在RPi.GPIO提供了一个获取权限的脚本:create_gpio_user_permissions.py

然而这个脚本是没法在ArchlinuxARM上直接运行的,因为Archlinux缺少adduser命令。

这个脚本是这样的:

import grp
import subprocess

def ensure_gpiogroup():
    try:
        grp.getgrnam('gpio')
    except KeyError:
        print('GPIO group does not exist - creating...')
        subprocess.call(['groupadd', '-f', '-r', 'gpio'])
        subprocess.call(['adduser', 'pi', 'gpio'])
        # in future, also for groups:
        #   spi
        #   i2c
        add_udev_rules()

def add_udev_rules():
    with open('/etc/udev/rules.d/99-gpio.rules','w') as f:
        f.write("""SUBSYSTEM=="bcm2835-gpiomem", KERNEL=="gpiomem", GROUP="gpio", MODE="0660"
SUBSYSTEM=="gpio", KERNEL=="gpiochip*", ACTION=="add", PROGRAM="/bin/sh -c 'chown root:gpio /sys/class/gpio/export /sys/class/gpio/unexport ; chmod 220 /sys/class/gpio/export /sys/class/gpio/unexport'"
SUBSYSTEM=="gpio", KERNEL=="gpio*", ACTION=="add", PROGRAM="/bin/sh -c 'chown root:gpio /sys%p/active_low /sys%p/direction /sys%p/edge /sys%p/value ; chmod 660 /sys%p/active_low /sys%p/direction /sys%p/edge /sys%p/value'"
""")

if __name__ == '__main__':
    ensure_gpiogroup()

首先,建一个gpio组:

sudo groupadd -f -r gpio

然后把当前用户(我的用户是yafeng)加入到gpio组

sudo gpasswd -a dofbot gpio

然后建立udev的规则文件:/etc/udev/rules.d/99-gpio.rules

SUBSYSTEM=="bcm2835-gpiomem", KERNEL=="gpiomem", GROUP="gpio", MODE="0660"
SUBSYSTEM=="gpio", KERNEL=="gpiochip*", ACTION=="add", PROGRAM="/bin/sh -c 'chown root:gpio /sys/class/gpio/export /sys/class/gpio/unexport ; chmod 220 /sys/class/gpio/export /sys/class/gpio/unexport'"
SUBSYSTEM=="gpio", KERNEL=="gpio*", ACTION=="add", PROGRAM="/bin/sh -c 'chown root:gpio /sys%p/active_low /sys%p/direction /sys%p/edge /sys%p/value ; chmod 660 /sys%p/active_low /sys%p/direction /sys%p/edge /sys%p/value'"

然后重启,就可以直接在普通用户下操作GPIO了,经测试,不光Rpi.GPIO库,wiringpi等其他库也可以了

附录:

no attribute ‘fourcc’

3.0 version:

out = cv2.VideoWriter('output.avi',cv2.VideoWriter_fourcc(*'XVID'), 20.0, (640,480))

2.4 version:

out = cv2.VideoWriter('output.avi',cv2.cv.CV_FOURCC('M','J','P','G'), 20.0, (640,480))

使用opencv读取和设置摄像头或视频属性代码如下。

cap.set( propId , value ) 
cap.get( propId )

其中,propId 的值为 0 - 18,19个值并不是每个都可以进行修改,每个值对应的属性以及功能如下如下:

参数功能/意义
CV_CAP_PROP_POS_MSEC0视频文件的当前位置(以毫秒为单位)或视频捕获时间戳
CV_CAP_PROP_POS_FRAMES1基于0的索引将被解码/捕获下一帧
CV_CAP_PROP_POS_AVI_RATIO2视频文件相对位置:0 - 电影的开始,电影的1 - 结束
CV_CAP_PROP_FRAME_WIDTH3视频里每一帧的宽
CV_CAP_PROP_FRAME_HEIGHT4视频里每一帧的高
CV_CAP_PROP_FPS5视频的帧速
CV_CAP_PROP_FOURCC64个字符表示的视频编码器格式
CV_CAP_PROP_FRAME_COUNT7视频的帧数
CV_CAP_PROP_FORMAT8byretrieve()返回的Mat对象的格式
CV_CAP_PROP_MODE9指示当前捕获模式的后端特定值
CV_CAP_PROP_BRIGHTNESS10图像的亮度(仅适用于相机)
CV_CAP_PROP_CONTRAST11图像对比度(仅适用于相机)
CV_CAP_PROP_SATURATION12图像的饱和度(仅适用于相机)
CV_CAP_PROP_HUE13图像的色相(仅适用于相机)
CV_CAP_PROP_GAIN14图像的增益(仅适用于相机)
CV_CAP_PROP_EXPOSURE15曝光(仅适用于相机)
CV_CAP_PROP_CONVERT_RGB16表示图像是否应转换为RGB的布尔标志
CV_CAP_PROP_WHITE_BALANCE17目前不支持
CV_CAP_PROP_RECTIFICATION18立体摄像机的整流标志(注意:只有当前支持DC1394 v 2.x后端)

Config配置文件说明

如果树莓派的显示超出了屏幕的边界,调整overscan选项可以来修正这种情况。配置项对应的值是需要移动的像素的数量。
overscan_left:该项用来将画面整体向左侧移动一定长度,以像素为单位。
overscan_right:该项用来将画面向显示器右方移动一定长度,单位同上。
overscan_top:该项用来将画面向显示器上方移动一定长度,单位同上。
overscan_bottom:该项用来将画面向显示器下方移动一定长度,单位同上。

disable_overscan:如果你使用HDMI端口连接到显示器或电视上,或许你会发现你的画面四周有黑边存在,为了避免黑边可以通过将该值设为1来把默认overscan选项关闭。
framebuffer_width:该配置项用来调整输出画面的宽度,对应值的单位为像素。如果你的屏幕上的文字太小,可以将该值设成一个比连接到的显示器默认宽度更小的值。
framebuffer_height:该值对终端画面大小的影响类似于 framebuffer_ width,不过是垂直方向的。
framebuffer_depth:控制终端画面的颜色深度,单位为位/像素。默认为16位,可显示65536色。该值还可以设为8位(256色)、24位或32位。
framebuffer_ignore_alpha:当配置项对应值为1时,禁止使用控制透明度的alpha通道。禁止alpha通道不是必须的,但是当framebuffer_depth设为32位/像素时能用来纠正许多图像错误。
sdtv_mode:该值影响树莓派的输出信号,需要根据各国使用的电视制式进行修改。默认情况下,树莓派使用北美的NTSC视频标准,其他国家会有所不同,常见的值有:
0-NTSC,北美视频标准。
1-NTSC-J,日本视频标准。
2-PAL,英国和其他国家视频标准。
3-PAL-M,巴西视频标准。
sdtv_aspect:控制输出画面的宽高比。如果输出的画面比例不正常,可以根据你使用的显示器的宽高比来修改这个值。常见的值有:
1-4:3,一般较旧的电视机使用该比例。
2-14:9,较小的宽屏电视常用该比率。
3-16:9,当前大多数宽屏电视使用该比率。
hdmi_mode:当视频输出使用不同分辨率时,它可以用来覆盖HDMI端口的自动分辨率检测结果。若你的树莓派使用的分辨率比显示器支持的分辨率更低时该配置项非常有用,附录B中给出了所有该项可能的值。
hdmi-drive:可以使用该配置项来改变HDMI端口的电压输出,在你使用HDMI-DVI转接口的时候非常有用,因为HDMI和DVI电压稍有不同。当你注意到看高亮的图像时画面有雪花或者有发散线状,可以试着改动这个配置项。该值可能的数字是:
1-DVI输出电压。该模式下,HDMI输出中不包含音频信号。
2-HDMI输出电压。该模式下,HDMI输出中包含音频信号。
config-hdmi_boost:一些显示器使用HDMI端口连接时,需要较多的电量来运行。如果你的画面上有雪花,试着增加该项的值,增加范围从1(用于短电缆)到7(用于长电缆)。
hdmi_force_hotplug:强制树莓派使用HDMI端口,即使树莓派没有检测到显示器连接仍然使用HDMI端口。该值为0时允许树莓派尝试检测显示器,当该值为1时,强制树莓派使用HDMI。
hdmi_group:设置HMDI组模式为CEA或DMT,在使用hdmi_mode来控制输出方案和频率前,你需要根据你的HDMI端口连接的显示器来设置该值。常见的两个值为:
1-按CEA(美国消费电子协会)指定的标准设置HDMI_group。当树莓派连接到HDTV并且使用附录"HDMI显示模式"中的第一设置列表中模式时使用该值。
2-按DMT旗下的VESA(视频电子标准协会)制定的标准来设置HDMI group。该配置项值一般在当树莓派使用DVI连接到电脑显示器时并且使用附录B"HDMI显示模式"中的第二设置列表时使用。
hdmi_safe:强制树莓派使用预置的HDMI设置来提供最大的兼容性。该处值设为1等价于
hdmi_force_hotplug=1
config_hdmi_boost=4
hdmi_group=1
hdmi_mode=1
disable_overscan=0

CEA分辨率

以下是CEA规定的电视规格分辨率。这些分辨率的hdmi_group=1。

hdmi_mode=1    VGA
hdmi_mode=2    480p  60Hz
hdmi_mode=3    480p  60Hz  H
hdmi_mode=4    720p  60Hz
hdmi_mode=5    1080i 60Hz
hdmi_mode=6    480i  60Hz
hdmi_mode=7    480i  60Hz  H
hdmi_mode=8    240p  60Hz
hdmi_mode=9    240p  60Hz  H
hdmi_mode=10   480i  60Hz  4x
hdmi_mode=11   480i  60Hz  4x H
hdmi_mode=12   240p  60Hz  4x
hdmi_mode=13   240p  60Hz  4x H
hdmi_mode=14   480p  60Hz  2x
hdmi_mode=15   480p  60Hz  2x H
hdmi_mode=16   1080p 60Hz
hdmi_mode=17   576p  50Hz
hdmi_mode=18   576p  50Hz  H
hdmi_mode=19   720p  50Hz
hdmi_mode=20   1080i 50Hz
hdmi_mode=21   576i  50Hz
hdmi_mode=22   576i  50Hz  H
hdmi_mode=23   288p  50Hz
hdmi_mode=24   288p  50Hz  H
hdmi_mode=25   576i  50Hz  4x
hdmi_mode=26   576i  50Hz  4x H
hdmi_mode=27   288p  50Hz  4x
hdmi_mode=28   288p  50Hz  4x H
hdmi_mode=29   576p  50Hz  2x
hdmi_mode=30   576p  50Hz  2x H
hdmi_mode=31   1080p 50Hz
hdmi_mode=32   1080p 24Hz
hdmi_mode=33   1080p 25Hz
hdmi_mode=34   1080p 30Hz
hdmi_mode=35   480p  60Hz  4x
hdmi_mode=36   480p  60Hz  4xH
hdmi_mode=37   576p  50Hz  4x
hdmi_mode=38   576p  50Hz  4x H
hdmi_mode=39   1080i 50Hz  reduced blanking
hdmi_mode=40   1080i 100Hz
hdmi_mode=41   720p  100Hz
hdmi_mode=42   576p  100Hz
hdmi_mode=43   576p  100Hz H
hdmi_mode=44   576i  100Hz
hdmi_mode=45   576i  100Hz H
hdmi_mode=46   1080i 120Hz
hdmi_mode=47   720p  120Hz
hdmi_mode=48   480p  120Hz
hdmi_mode=49   480p  120Hz H
hdmi_mode=50   480i  120Hz
hdmi_mode=51   480i  120Hz H
hdmi_mode=52   576p  200Hz
hdmi_mode=53   576p  200Hz H
hdmi_mode=54   576i  200Hz
hdmi_mode=55   576i  200Hz H
hdmi_mode=56   480p  240Hz
hdmi_mode=57   480p  240Hz H
hdmi_mode=58   480i  240Hz
hdmi_mode=59   480i  240Hz H

H means 16:9 variant (of a normally 4:3 mode).
2x means pixel doubled (i.e. higher clock rate, with each pixel repeated twice)
4x means pixel quadrupled (i.e. higher clock rate, with each pixel repeated four times)

DMT分辨率

以下是计算机显示器使用的分辨率。这些分辨率的hdmi_group=2。

hdmi_mode=1    640x350   85Hz
hdmi_mode=2    640x400   85Hz
hdmi_mode=3    720x400   85Hz
hdmi_mode=4    640x480   60Hz
hdmi_mode=5    640x480   72Hz
hdmi_mode=6    640x480   75Hz
hdmi_mode=7    640x480   85Hz
hdmi_mode=8    800x600   56Hz
hdmi_mode=9    800x600   60Hz
hdmi_mode=10   800x600   72Hz
hdmi_mode=11   800x600   75Hz
hdmi_mode=12   800x600   85Hz
hdmi_mode=13   800x600   120Hz
hdmi_mode=14   848x480   60Hz
hdmi_mode=15   1024x768  43Hz  DO NOT USE
hdmi_mode=16   1024x768  60Hz
hdmi_mode=17   1024x768  70Hz
hdmi_mode=18   1024x768  75Hz
hdmi_mode=19   1024x768  85Hz
hdmi_mode=20   1024x768  120Hz
hdmi_mode=21   1152x864  75Hz
hdmi_mode=22   1280x768        reduced blanking
hdmi_mode=23   1280x768  60Hz
hdmi_mode=24   1280x768  75Hz
hdmi_mode=25   1280x768  85Hz
hdmi_mode=26   1280x768  120Hz reduced blanking
hdmi_mode=27   1280x800        reduced blanking
hdmi_mode=28   1280x800  60Hz
hdmi_mode=29   1280x800  75Hz
hdmi_mode=30   1280x800  85Hz
hdmi_mode=31   1280x800  120Hz reduced blanking
hdmi_mode=32   1280x960  60Hz
hdmi_mode=33   1280x960  85Hz
hdmi_mode=34   1280x960  120Hz reduced blanking
hdmi_mode=35   1280x1024 60Hz
hdmi_mode=36   1280x1024 75Hz
hdmi_mode=37   1280x1024 85Hz
hdmi_mode=38   1280x1024 120Hz reduced blanking
hdmi_mode=39   1360x768  60Hz
hdmi_mode=40   1360x768  120Hz reduced blanking
hdmi_mode=41   1400x1050       reduced blanking
hdmi_mode=42   1400x1050 60Hz
hdmi_mode=43   1400x1050 75Hz
hdmi_mode=44   1400x1050 85Hz
hdmi_mode=45   1400x1050 120Hz reduced blanking
hdmi_mode=46   1440x900        reduced blanking
hdmi_mode=47   1440x900  60Hz
hdmi_mode=48   1440x900  75Hz
hdmi_mode=49   1440x900  85Hz
hdmi_mode=50   1440x900  120Hz reduced blanking
hdmi_mode=51   1600x1200 60Hz
hdmi_mode=52   1600x1200 65Hz
hdmi_mode=53   1600x1200 70Hz
hdmi_mode=54   1600x1200 75Hz
hdmi_mode=55   1600x1200 85Hz
hdmi_mode=56   1600x1200 120Hz reduced blanking
hdmi_mode=57   1680x1050       reduced blanking
hdmi_mode=58   1680x1050 60Hz
hdmi_mode=59   1680x1050 75Hz
hdmi_mode=60   1680x1050 85Hz
hdmi_mode=61   1680x1050 120Hz reduced blanking
hdmi_mode=62   1792x1344 60Hz
hdmi_mode=63   1792x1344 75Hz
hdmi_mode=64   1792x1344 120Hz reduced blanking
hdmi_mode=65   1856x1392 60Hz
hdmi_mode=66   1856x1392 75Hz
hdmi_mode=67   1856x1392 120Hz reduced blanking
hdmi_mode=68   1920x1200       reduced blanking
hdmi_mode=69   1920x1200 60Hz
hdmi_mode=70   1920x1200 75Hz
hdmi_mode=71   1920x1200 85Hz
hdmi_mode=72   1920x1200 120Hz reduced blanking
hdmi_mode=73   1920x1440 60Hz
hdmi_mode=74   1920x1440 75Hz
hdmi_mode=75   1920x1440 120Hz reduced blanking
hdmi_mode=76   2560x1600       reduced blanking
hdmi_mode=77   2560x1600 60Hz
hdmi_mode=78   2560x1600 75Hz
hdmi_mode=79   2560x1600 85Hz
hdmi_mode=80   2560x1600 120Hz reduced blanking
hdmi_mode=81   1366x768  60Hz
hdmi_mode=82   1080p     60Hz
hdmi_mode=83   1600x900        reduced blanking
hdmi_mode=84   2048x1152       reduced blanking
hdmi_mode=85   720p      60Hz
hdmi_mode=86   1366x768        reduced blanking
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值