基于树莓派的智能小车 python

news2024/9/28 3:21:55

摘要

playWithRaspberryPi 实战笔记

raspberrypi_cookbook 树莓派python代码本

树莓派(Raspberry Pi)是一种小型的单片机计算机;
它可以通过其引脚和接口与外部硬件通信。
Pi(树莓派的简称)展示了我们可以如何分解大型的Realbox机器,
使Dynamicland成为许多计算机、传感器和执行器的生态系统,而不是服务器上的软件。
“......Pi之于Dynamicland正如USB接口之于笔记本电脑:这就是我将东西插入Dynamicland的方式。”
使用Realtalk来打开/关闭Pi上LED的最小示例。
解释Realtalk的“反应数据库”(reactive database)编程模型; 
它如何使动感桌(dynamic table)中的Pi编程变得异常简单。
Pi的编程与Dynamicland中的任何其他编程没什么区别。
通过向Pi发送完整程序来进行远程控制,而不是用一些动力不足的控制语言与之通信。
关于Pi如何在未来发挥作用的猜想。

基于树莓派的智能小车 python

树莓派

树莓派简介

Raspberry Pi,中文名:树莓派。树莓派由注册于英国的慈善组织“Raspberry Pi 基金会”开发,旨在于学生计算机编程教育,树莓派官方的关键词就是:“Teach, Learn, and Make with Raspberry Pi”。在2006年,树莓派早期概念是基于Atmel(Atmel公司会在单片机一章中有介绍)的 ATmega644单片机。2012年2月29日,树莓派基金会发布了256MB内存的树莓派B型。四年后,也就是2016年2月29号,基金会宣布树莓派3 B型将以35美元的价格发售。

树莓参数对比

与前三款比较(包括树莓派 B+),树莓派3在硬件配置上有什么不一样呢?
以下是主要几款树莓派(不包括树莓派A+及Zero)的主要参数对比:

硬件A型 (一代)B型 (二代)B+版树莓派3 B型
CPUARM1176JZF-S核心(ARM11系列)700MHz900MHz的四核 Cortex-A7同左1.2GHz 四核 64 位 ARMv8 处理器
SoC(系统级芯片 )Broadcom BCM2835Broadcom BCM2835同左Broadcom BCM2837
GPU(图形处理器)Broadcom VideoCore IV, OpenGL ES 2.0, 1080p 30 h.264/MPEG-4 AVC 高清解码器同左同左同左
内存256MB512MB512MB1GB

据说,树莓派3外观相对前几款树莓派并没有太多变化,但性能提升了50%。而且,就在树莓派3发布几天之后,windows 10 iot就提供了支持对树莓派3的支持,可以看出大家对这款卡片机的青睐。于是,我特意查了一下BCM2835以及BCM2837这两款系统级芯片,但里面主要介绍了树莓的外围扩展,定时器,中断,GPIO,PWM等,有更高的项目需求可以看看。如果想看具体的芯片书册,可到datasheet进行下载,附上BCM2835链接。

GPIO

GPIO(英语:General-purpose input/output),通用型之输入输出的简称,功能类似8051的P0—P3,其接脚可以供使用者由程控自由使用,PIN脚依现实考量可作为通用输入(GPI)或通用输出(GPO)或通用输入与输出(GPIO),如当clk generator, chip select等。

既然一个引脚可以用于输入、输出或其他特殊功能,那么一定有寄存器用来选择这些功能。对于输入,一定可以通过读取某个寄存器来确定引脚电位的高低;对于输出,一定可以通过写入某个寄存器来让这个引脚输出高电位或者低电位;对于其他特殊功能,则有另外的寄存器来控制它们。

frizting 可视化电路设计

在Fritzing的世界里你的灵感和创意会立刻呈现,电路设计也将变得美丽而简单!

下载地址:http://fritzing.org/download/

树莓派应用

Game Utility library for the Raspberry PI 树莓派游戏库

C/C++ Library for Raspberry Pi.

树莓派(Raspberry Pi )资源大全中文版 , 包括工具、项目、镜像、资源等

基于树莓派的 免费数字标牌软件 Screenly OSE

OpenCV检测场景内是否有移动物体 并播放音乐

有人已经把TensorFlow移植到了树莓派

人脸检测

树莓派 python 机器人编程

树莓派3B+英特尔神经计算棒进行高速目标检测

1. 无屏幕和键盘配置树莓派WiFi和SSH,连接wifi后,支持远程登录

a. WiFi 网络配置

用户可以在未启动树莓派的状态下单独修改 /boot/wpa_supplicant.conf 文件配置 WiFi 的 SSID 和密码,
这样树莓派启动后会自行读取 wpa_supplicant.conf 配置文件连接 WiFi 设备。

方法:
    将刷好 Raspbian 系统的 SD 卡用电脑读取。
    在 boot 分区,也就是树莓派的 /boot 目录下新建 wpa_supplicant.conf 文件,
    按照下面的参考格式填入内容并保存 wpa_supplicant.conf 文件。
    
    在TF卡的boot分区,创建wpa_supplicant.conf文件,加入如下内容:     
    
    在树莓派通电后会自动添加到/etc/wpa_supplicant/wpa_supplicant.conf文件里面,进行自动连接。

文件内容:

country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
 
network={
ssid="WiFi-A"
psk="12345678"
key_mgmt=WPA-PSK
priority=1
}
 
network={
ssid="WiFi-B"
psk="12345678"
key_mgmt=WPA-PSK
priority=2
scan_ssid=1
}

文件说明:

#ssid: 网络的ssid 网络名称
#psk:  / wep_key0: 密码
#priority: 连接优先级,数字越大优先级越高(不可以是负数)
#scan_ssid: 连接隐藏WiFi时需要指定该值为1
#key_mgmt:  wifi加密方式
  1. 如果你的 WiFi 没有密码
network={
ssid="你的无线网络名称(ssid)"
key_mgmt=NONE
}

2.如果你的 WiFi 使用WEP加密

network={
ssid="你的无线网络名称(ssid)"
key_mgmt=NONE
wep_key0="你的wifi密码"
}
  1. 如果你的 WiFi 使用WPA/WPA2加密
network={
ssid="你的无线网络名称(ssid)"
key_mgmt=WPA-PSK
psk="你的wifi密码"
}
  1. WiFi 的加密模式, 由路由器设置wifi时决定

b. 开启 SSH 服务, 进行远程登录

  开启SSH远程:(自2016年9月开始,raspberry默认关闭ssh连接)
  在TF卡分区里面创建一个名为 “ssh” 空文件即可(不要有txt后缀!)
  
  如果通过 ssh 连接树莓派出现 Access denied 这个提示则说明 ssh 服务没有开启。
  要手动开启的话,和 WiFi 配置相似,同样在 boot 分区新建一个文件,空白的即可,文件命名为 ssh。
  注意要小写且不要有任何扩展名。
  树莓派在启动之后会在检测到这个文件之后自动启用 ssh 服务。
  
  随后即可通过登录路由器找到树莓派的 IP 地址,(也可使用网段扫描法找树莓派IP )
   ipscan22.exe  https://pan.baidu.com/share/link?shareid=3434443053&uk=605377859&errno=0&errmsg=Auth%20Login%20Sucess&&bduss=&ssnerror=0&traceid=
  
  通过 ssh (只有命令行界面)连接到树莓派了。

  手动启用 SSH 服务,命令如下:
  service sshd restart
  
  https://blog.csdn.net/u012313335/article/details/73920256
  
  如需在手机或者平板上进行连接,需要在应用商店下载安装Serverauditor,完成安装后打开软件。
  点击右上角的“+”号添加设备,在连接界面中,填写主机IP、用户名以及密码(其他可不填写),
  填写完成后点击右上角的保存图标。完成之后即会在服务器界面出现树莓派IP的选项,
  点击进行连接即可连接到树莓派。
  
  
  window下客户端推荐使用putty.exe这个小巧的ssh客户端软件,进行远程ssh登录。
  linus下:
    下可直接使用 终端 ssh登陆
      ssh pi@192.168.1.176     用户名@IP地址
      输入密码 raspberry (注意密码不回显) 回车即可登陆

  SSH登陆后,可开启 VNC 服务,可以使用 VNC(或者window自带的远程桌面应用)远程图像界面登录。

  window自带的远程桌面应用登录:
  1. 树莓派端安装 xdrp服务 
      sudo apt-get install xrdp

  2. 卸载 再安装
     sudo apt-get purge tightvnc xrdp
     sudo apt-get install tightvncserver xrdp

  3. 最后启动 xrdp 服务,sudo /etc/init.d/xrdp restart,此时会启用相应端口,配置方面默认即可。
     通过命令:netstat -tnl
     查看 3350 3389 5910 这三个端口处于LISTEN,一般就没问题了。
     dpkg -L + 软件包的名字,可以知道这个软件包包含了哪些文件。
  
  VNC 远程 图像界面登录:
 1.  安装 tightvncserver
    sudo apt-get install tightvncserver
 2. 启动vnc服务 
    tightvncserver
      设置8位密码
      选择n     y会有错误
      电脑vcn远程登陆   192.168.31.47:1   后面需要添加:1
 3. 结束服务
    tightvncserver -kill 
 4. 卸载
    sudo apt-get remove tightvncserver

参考

  串口登录

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WsRwiFsE-1692885735904)(https://github.com/Ewenwan/ShiYanLou/blob/master/MCU/raspberry/raspberry_io.PNG)]

c. HDMI输出

开启强制HDMI输出:(很多现在的显示器在树莓派上并不能识别)
在TF卡分区,打开config.txt文件(开机后位置: /boot/config.txt),修改如下:

hdmi_safe=1
config_hdmi_boost=4
hdmi_ignore_edid=0xa5000080
hdmi_group=2
hdmi_mode=82   

 一些参数介绍:

    项	含义
    hdmi_safe=1	安全启动HDMI
    config_hdmi_boost=4	开启热插拔
    hdmi_group=1	CEA电视显示器
    hdmi_group=2	DMT电脑显示器
    hdmi_ignore_edid=0xa5000080	忽略自动探测的分辨率
    输出分辨率:	
    hdmi_mode=4	640x480 60Hz
    hdmi_mode=9	800x600 60Hz
    hdmi_mode=16	1024x768 60Hz
    hdmi_mode=82	1080p 60Hz

2. 树莓派上的软件安装和卸载命令汇总

a. 基础命令

    安装软件 apt-get install softname1 softname2 softname3……
    卸载软件 apt-get remove softname1 softname2 softname3……
    卸载并清除配置 apt-get remove –purge softname1
    更新软件信息数据库 apt-get update
    进行系统升级 apt-get upgrade
    搜索软件包 apt-cache search softname1 softname2 softname3……

    如果使用 apt-get 遇到速度慢或者源不存在等错误,可能需要更换源,请参考此处。
    http://shumeipai.nxez.com/2013/08/31/raspbian-chinese-software-source.html

    安装deb软件包  dpkg -i xxx.deb     install
    删除软件包     dpkg -r xxx.deb     remove
    连同配置文件一起删除 dpkg -r –purge xxx.deb
    查看软件包信息 dpkg -info xxx.deb
    查看文件拷贝详情 dpkg -L xxx.deb    
    查看系统中已安装软件包信息 dpkg -l   list
    重新配置软件包 dpkg-reconfigure xxx

    清除所有已删除包的残馀配置文件

    dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P
    如果报如下错误,证明你的系统中没有残留配置文件了,无须担心。
    dpkg: –purge needs at least one package name argument

    dpkg安裝的可以用apt卸載,反之亦可。

常用apt命令列表

apt-cache search # ------(package 搜索包)
apt-cache show #------(package 获取包的相关信息,如说明、大小、版本等)
sudo apt-get install # ------(package 安装包)
sudo apt-get install # -----(package - - reinstall 重新安装包)
sudo apt-get -f install # -----(强制安装?#"-f = --fix-missing"当是修复安装吧...)
sudo apt-get remove #-----(package 删除包)
sudo apt-get remove - - purge # ------(package 删除包,包括删除配置文件等)
sudo apt-get autoremove --purge # ----(package 删除包及其依赖的软件包+配置文件等(只对6.10有效,强烈推荐))
sudo apt-get update #------更新源
sudo apt-get upgrade #------更新已安装的包
sudo apt-get dist-upgrade # ---------升级系统
sudo apt-get dselect-upgrade #------使用 dselect 升级
apt-cache depends #-------(package 了解使用依赖)
apt-cache rdepends # ------(package 了解某个具体的依赖?#当是查看该包被哪些包依赖吧...)
sudo apt-get build-dep # ------(package 安装相关的编译环境)
apt-get source #------(package 下载该包的源代码)
sudo apt-get clean && sudo apt-get autoclean # --------清理下载文件的存档 && 只清理过时的包
sudo apt-get check #-------检查是否有损坏的依赖

b. aptitude 命令

    aptitude 与 apt-get 一样,是 Debian 及其衍生系统中功能极其强大的包管理工具。
    与 apt-get 不同的是,aptitude 在处理依赖问题上更佳一些。
    举例来说,aptitude 在删除一个包时,会同时删除本身所依赖的包。
    这样,系统中不会残留无用的包,整个系统更为干净。
    以下是笔者总结的一些常用 aptitude 命令,仅供参考。
    

    aptitude update 更新可用的包列表
    aptitude upgrade 升级可用的包
    aptitude dist-upgrade 将系统升级到新的发行版
    aptitude install pkgname 安装包
    aptitude remove pkgname 删除包
    aptitude purge pkgname 删除包及其配置文件
    aptitude search string 搜索包
    aptitude show pkgname 显示包的详细信息
    aptitude clean 删除下载的包文件
    aptitude autoclean 仅删除过期的包文件

当然,你也可以在文本界面模式中使用 aptitude。

树莓派硬件系统

在上一章节中,简单的介绍了树莓派及各版本树莓派参数的对比。这一章节会重点介绍树莓派的硬件系统(树莓派的 CPU 架构将会在 AMR 章节中讲述)。首先,我们会直接介绍树莓派的原理图。然后在拿一款真实的树莓派,简单的看看在电路图中的各组成部分。

供电系统及振荡电路

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KkUXGfyE-1692885735904)(https://github.com/sundway/iot/blob/master/imgs/1.1.1-1.png)]
https://github.com/sundway/iot/blob/master/imgs/1.1.1-1.png
上面这个看起来很复杂的几个电路,其实只做了一件事,就是给系统芯片(BCM2835)供电。可以看到所有管脚只连接到了 VCC(5v、3.3v、1.8v)和 GND。其中一些管脚还需要做些限流,限压等,接了一些电容,电阻及电感等。然而硬件工程师并不需要自己去计算这些元件的参数,因为芯片厂商在设计每款芯片时,都会设计这些外围电路,并在芯片手册中附上最佳电路图。而使用这些芯片的硬件工程师只需要画 PCB 版的时候设计如何布局及连线。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZE5N6PZr-1692885735905)(https://github.com/sundway/iot/blob/master/imgs/1.1.1-2.png)]

上图左边的是usb供电电路,右边是转压电路,这两个电路在所有的硬件设计中都是比较简单和常用的电路。左边图中2、3、4三个关键是 usb 的数据及主从控制管脚,一般 usb 都有是四个或五个管脚(其中两个为电源和地,另外两个为数据读写,还有一个可以作为主从控制,复杂的 usb 集群通信可以用到)。这里没有画出它们的连接。右边图主要用了 NCP1117-3v3、LP2980-2v5、NCP117-1v8 三款芯片将5v分别转化成3.3v,2.5v及1.8v。从在上一张图中可以看出,系统芯片出来需要5v,还分别需要1.8v及3.3v(很多芯片都是5v或3.3v供电),单从上一张图中并没有看出为什么会转一个2.5v的电压出来。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZuvYLjG8-1692885735905)(https://github.com/sundway/iot/blob/master/imgs/1.1.1-3.png)]

上面的这个看似不起眼的电路其实就是整个系统的心脏,可以看到途中有 osc 的字母,osc 是英文字母 oscillator (振荡器)的缩写,MCU (微控制器)中通常对应的为晶振。振荡器主要作用是将直流电能转换为具有一定频率的交流电能的一种装置。而晶振的作用也就是将直流转化成频率,因为 MCU 工作时,是一条一条地从 ROM 中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。一个机器周期包括12个时钟周期,而晶振就是提供这个时间基准。我们通常可以由所选的晶振频率计算出一个机器周期的时间,对应到汇编语言语言中,大概就能估算到一段代码的执行时间。图中的 19.2MHZ,那么一个时钟周期就是 12/19.2(0.625)微秒。这里也可以理解为什么不选用 19MHZ的晶振频率了,因为选用 19MHZ 作为晶振频率时,将会得到一个无限不循环小数的时钟周期,不利与计算。

PWM及DAC

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nKCpTfUM-1692885735905)(https://github.com/sundway/iot/blob/master/imgs/1.1.1-4.png)]

上图是 DAC(数字模拟转换器)电路,DAC 是英文单词 Digital to Analog Converter 的缩写。在很多数字系统中(例如计算机),信号以数字方式存储和传输,而数字模拟转换器可以将这样的信号转换为模拟信号,从而使得它们能够被外界(人或其他非数字系统)识别,从这张图中可以看到上面的 2.5V 电压的用处,这里的 2.5V 是作为输入的基准电压。与 DAC 对应的还有 ADC ,顾名思义,ADC 的作用是将模拟信号转化为数字信号。很多传感器输出的事模拟信号,而MCU无法读取模拟信号,只能通过 ADC 将模拟信号先转化为数字信号,再进行读取。在选择传感器(如加速度、重力等传感器),这些传感器一半都有数字传感器或模拟传感器,数字传感器往往比模拟传感器精准。PWM 是英文单词 Pulse Width Modulation(脉冲宽度调制) 的缩写。脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。最典型的例子就是用 PWM 控制电机转速,而目前市面上的多数 MCU 都带有 PWM 模块。51等传统单片机是没有 PWM 模块的,往往可以通过程序模拟,或外接 PWM 模块支持。

GPIO

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-74WjDt94-1692885735906)(https://github.com/sundway/iot/blob/master/imgs/1.1.1-5.png)]
GPIO 是英文单词 General Purpose Input Output(通用输入/输出)的缩写。对于程序员来说,GPIO 应该是我们接触最多也最熟悉的部分了。控制外接电路,往往是连接 GPIO 管脚。使用树莓派,无论用 node、python、C# 或者是其他语言,往往都会引用一个 GPIO 的库来进行控制,而这些库往往又是基于 C 或 C++ 进行的底层操作。不引用第三方库,直接用 C 对这些管脚进行控制也是相当简单的。比如,硬件领域的 “hello world”(点亮 LED 灯),只需要对一个管脚写入0或1,便可控制 LED 亮灭。上面第一张图可以注意到,很多管脚是具有第二功能的,比如上面的两路输出 PWM 的管脚以及 SD 卡相关的管脚。下图中有两个管脚需要格外注意,TXD 及 RXD 这是串口通信的管脚,串口通信对应的还有并口通信,串口通信相比较并口通信的优势就是在于拿时间换取空间。

SD卡

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Pn2s6Hm-1692885735906)(https://github.com/sundway/iot/blob/master/imgs/1.1.1-6.png)]

从上面的图可以看到需要操作的管脚是4、5、2、7、8、9、1几个管脚。SD的这个电路为通用的电路,换其它MCU时,这种连接依然可以work.

HDMI、音频、网卡电路

HDMI和音频是系统芯片内部的功能,主要按照数据手册里方式的进行连接。该图也较为复杂,就没有必要贴出来了。网卡及串口在树莓派中借助的是 LAN9512 芯片,Microchip公司生产的 LAN9512/LAN9512i 是第一款工业的全集成、高速2.0 USB、高性能10/100M网络控制器。具体的电路连接也是需要阅读 LAN9512 的数据手册。

树莓派正面

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tFSZgDtx-1692885735906)(https://github.com/sundway/iot/blob/master/imgs/1.1.1-7.png)]

上面位于正中心的那块是这个系统的核心芯片 BCM2835,左边为 LAN9154,布局的规则也决定,网卡接口及USB接口设计在了 LAN9154 的右边。USB供电系统旁边有三个转压芯片,这一部分区域是给系统提供4种电压。树莓派为双层板,正面布满系统需要的绝大部分元器件。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yWwBSGnE-1692885735906)(https://github.com/sundway/iot/blob/master/imgs/1.1.1-8.png)]

PCB 板反面右边是SD卡接口,中心是一个19.2MHZ的晶振,对应正面中心的 BCM2835 芯片。

树莓派软件系统

树莓派和其它MUC一样,可以直接以汇编或C语言进行编程,在编写一些简单的程序时,是不会有什么问题的。编写复杂的程序,这样显然会更加吃力。而且学习成本也高,往往我们需要关心的不是用何种语言去编程,而是不要管底层驱动。跟树莓派装上操作系统,便可以解决这些问题。树莓派官方提供了很多可选的系统镜像,这里会以两款比较流行的系统,树莓派官方系统Raspbian及win10 iot进行安装学习。

mac下安装Raspbian

windows下有现成的工具可用,所以windows下其实更简单,但手头没有可用的windows系统,就用mac给树莓派装系统。

下载镜像

可以到树莓派官方下载地址,下载镜像。我选择Raspbian,官方的一个操作系统。

安装系统

  • 将SD卡插到电脑上,输入df -h查看已经挂在的卷。(可以找到我们的SD卡在系统里对应的设备文件)
  • 使用diskutil unmount将这些分区卸载。(如我的SD卡在系统里对应的设备文件/dev/disk4s1,则需要使用‘’‘diskutil unmount /dev/disk4s1将SD卡分区卸载。)
  • 再使用diskutil list确认/dev/disk4s1已被卸载。
  • 使用dd命令将系统镜像写入。
    • dd bs=4m if=2016-02-09-jessie-raspbian.img of=/dev/rdisk4`

SD系统写入成功。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jz1uI2Ft-1692885735907)(https://github.com/sundway/iot/blob/master/imgs/1.1.2-0.png)]

PS:

  • 系统镜像分‘Full desktop image’和‘Minimal image based on Debian Jessie’,我安装的是前面的,太大了,以至于32G的SD不够用,开发的还是建议按装lite版本。
  • 如果第一次安装树莓派,外接显示器可能无法连接,需要修改配置文件config.txt里的参数
hdmi_safe=1 //取消注释
config_hdmi_boost=4 //取消注释

连接树莓派

采用ssh的方式连接树莓派,mac下下了一个Ip Scanner查看局域网里设备ip地址。找到Raspberra pi的ip地址。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-n5qDltvP-1692885735907)(https://github.com/sundway/iot/blob/master/imgs/1.1.2-1.png)]

树莓派默认的账户: pi,密码:raspberry。(之前的操作系统必须先链接显示器,用键盘确认),ssh首次登录会生成密钥,选择yes,连接ssh pi@ip,输入密码,登录成功。

由于我的系统时重装的,所以登录时会报错。本机直接输入ssh-keygen -R hostname重新生成密钥即可。

安装nodejs

因为项目时基于node开发的,所以只需要装一下node即可。树莓派使用的架构用的架构是ARMv6,所以需要下载一个ARMv6版本的node,linux下下载命令wget https://nodejs.org/dist/v4.3.1/node-v4.3.1-linux-armv6l.tar.xz

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yw9sMaFr-1692885735908)(https://github.com/sundway/iot/blob/master/imgs/1.1.2-4.png)]

等待下载,家里网速太慢。。。

下载成功之后需要解压.xz文件,先xz -d xxx.tar.xz将xxx.tar.xz解压成xxx.tar。然后,再用 tar xvf xxx.tar来解包

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UCEj0zyU-1692885735909)(https://github.com/sundway/iot/blob/master/imgs/1.1.2-3.png)]

由于node已经编译过了,不需要在本地编译了,直接使用即可,done.

测试Demo

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9LglA8u2-1692885735909)(https://github.com/sundway/iot/blob/master/imgs/1.1.2-5.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9MCPh3hH-1692885735909)(https://github.com/sundway/iot/blob/master/imgs/1.1.2-6.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rqBS1Azv-1692885735909)(https://github.com/sundway/iot/blob/master/imgs/1.1.2-7.png)]

Done,环境搭建完成。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/934249.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何在windows下使用masm和link对汇编文件进行编译

前言 32位系统带有debug程序,可以进行汇编语言和exe的调试。但真正的汇编编程是“编辑汇编程序文件(.asm)->编译生成obj文件->链接生成exe文件”。下面,我就来说一下如何在windows下使用masm调试,使用link链接。 1、下载相应软件 下载…

Linux系统编程系列之进程间通信(IPC)-管道

一、什么是管道 在Linux系统下,一切皆文件,所以管道就是一个文件,用来实现进程间通信的一种方式。分析小技巧:对于一些陌生的概念,都把它当成是文件,然后操作的时候,就是三部曲。文件打开&#…

香港服务器是什么?

香港服务器是指位于香港地区的云服务器或物理服务器。香港作为一个重要的国际金融和商业中心,具有良好的地理位置和先进的网络基础设施。香港服务器提供稳定的网络连接和高性能,可用于托管网站、应用程序和数据存储等各种互联网服务。 香港服务器具有以…

精准测试——持续测试

前面已经介绍了黑盒测试和白盒测试。从前面的介绍中可以知道,黑盒测试是一种面向业务流程的测试,针对需求设计测试用例,在运行的系统上执行测试用例,完成测试。 整个测试过程中测试工程师对于测试代码是如何运行的一无所知&#…

深度学习算法模型转成算能科技平台xx.bmodel模型的方法步骤

目录 1 docker镜像下载 2 SDK下载 3 下载sophon-demo 4 修改docker镜像的脚本 5 创建个文件夹 6.source 7.转模型 1 docker镜像下载 可以在dockerhub看到镜像的相关信息 https://hub.docker.com/r/sophgo/tpuc_dev/tags 用下面的命令下载 docker pull sophgo/tpuc_d…

vim练习题

在普通模式 / 可以用来寻找 . 是重复上次的动作,$ 是移动到末尾 直接查找 .vimrc 保存后重启 安装curl 出现问题 宏 通过记录在寄存器中,让寄存器知道怎么操作 宏只能在1 2 4 寄存器上面使用 替代命令,将匹配到的,包括这些内容…

【力扣每日一题】2023.8.27 合并区间

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 那么合并区间是在什么情况下才能合并呢? 我总结为两种情况 第一种情况就是这样,第二个区间的左区间大于第一个区…

算法通关村第十四关——堆

堆是将一组数据按照完全二叉树的存储顺序,将数据存储在一个一维数组中的结构。堆有两种结构,一种称为大顶堆,一种称为小顶堆,如下图。 小顶堆:任意节点的值均小于等于它的左右孩子,并且最小的值位于堆顶&am…

哪个蓝牙耳机打电话比较好,打电话降噪蓝牙耳机推荐

近年来,骨传导耳机的市场表现出了显著的增长,其市场竞争也变得异常激烈,与传统无线耳机相比,“骨传导耳机”的知名度还达不到举世皆知的地步,但对于运动群体以及部分有听力损伤的群体来说,骨传导耳机还是有…

大数据和人工智能之间如何的相互促进

文章目录 大数据为人工智能提供支持人工智能加速大数据的分析和应用紧密联系和合作方式综合效应:智能化决策和创新结论 🎈个人主页:程序员 小侯 🎐CSDN新晋作者 🎉欢迎 👍点赞✍评论⭐收藏 ✨收录专栏&…

回归预测 | MATLAB实现SSA-ELM麻雀搜索算法优化极限学习机多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现SSA-ELM麻雀搜索算法优化极限学习机多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现SSA-ELM麻雀搜索算法优化极限学习机多输入单输出回归预测(多指标,多图)效果一览基…

Java基础数据结构

二叉查找树 二叉查找树,又称二叉树或者二叉搜索树 特点:每一个节点上最多又两个子节点 任意节点左子树上的值都小于当前节点 任意节点右子树上的值都大于当前节点 二叉查找树添加节点:规则 小的存左边 大的存右边 一样的不存 平衡二叉树&am…

小研究 - JVM 逃逸技术与 JRE 漏洞挖掘研究(二)

Java语言是最为流行的面向对象编程语言之一, Java运行时环境(JRE)拥有着非常大的用户群,其安全问题十分重要。近年来,由JRE漏洞引发的JVM逃逸攻击事件不断增多,对个人计算机安全造成了极大的威胁。研究JRE安…

libdrm全解析二十三 —— 源码全解析(20)

接前一篇文章:libdrm全解析二十二 —— 源码全解析(19) 本文参考以下博文: DRM 驱动程序开发(VKMS) 特此致谢! 前一篇文章已提到,drmModeGetResources函数值得深入地进行讲解。本回…

C语言练习题Day1

从今天开始分享C语言的练习题,每天都分享,差不多持续16天,看完对C语言的理解可能更进一步,让我们开始今天的分享吧! 题目一 执行下面的代码,输出结果是() int x5,y7; void swap()…

Vue2向Vue3过度核心技术自定义指令

目录 1 自定义指令1.指令介绍2.自定义指令3.自定义指令语法4.指令中的配置项介绍5.代码示例6.总结 2 自定义指令-指令的值1.需求2.语法3.代码示例 3 自定义指令-v-loading指令的封装1.场景2.需求3.分析4.实现5.准备代码 1 自定义指令 1.指令介绍 内置指令:v-html、v…

基于JSP+Servlet+mysql学生宿舍管理系统

基于JSPServletmysql学生宿舍管理系统 一、系统介绍二、功能展示四、其它1.其他系统实现五.获取源码 一、系统介绍 项目类型:Java web项目 项目名称:基于JSPServlet的学生宿舍管理系统[sushe] 项目架构:B/S架构 开发语言:Java…

免费开源跨平台视频下载器 支持数百站点视频和音频下载-ytDownloader

ytDownloader: ytDownloader是一款免费开源跨平台视频下载器,帮助用户从数百个网站下载不同格式的视频和提取音频,使用简单,复制视频链接粘贴即可下载,支持4K画质视频下载,支持Linux、Windows 和 macOS平台…

DBO优化SVM的电力负荷预测,附MATLAB代码

今天为大家带来一期基于DBO-SVM的电力负荷预测。 原理详解 文章对支持向量机(SVM)的两个参数进行优化,分别是:惩罚系数c和 gamma。 其中,惩罚系数c表示对误差的宽容度。c越高,说明越不能容忍出现误差,容易过拟合。c越小&#xff0…

基于Java+SpringBoot+Vue前后端分离图书电子商务网站设计和实现

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专…