Echo的树莓派学习笔记

树莓派 ADC模块 ADS1115 16位 模数转换器(python3) ADC数模转换 接线 VDD - 5V GND - GND SCL - SCL SDA - SDA ADDR - GND A0 - MQ 传感器的 A0 当ADDR引脚连接到GND时,地址为:0x48(0100, 1000B) 当ADDR引脚连接到VDD时,地址为:0x49(0100, 1001B) 当ADDR引脚连接到SDA时,地址为:0x4A(0100, 1010B) 当ADDR引脚连接到SCL时,地址为:0x4B(0100, 1011B) 设置树莓(开启I2C) 模块检查(接通电源后) sud 阅读详情

目录

第一章 树莓派基础

1.1 树莓派简介

1.2 烧录系统

第二章 树莓派使用Python

2.1 树莓派使用

2.2 安装Python

第三章 Linux命令

3.1 系统管理

3.2 文件管理

3.3 软件管理

3.4 性能检测

第四章 常用操作

4.1 树莓派换源

4.2 文件存储​​​​​​​

第二篇 核心技术

第五章 GPIO基础

5.1 GPIO简介

5.3 使用RPi.GPIO模块

5.4  控制GPIO输出

5.5 检测GPIO输入

5.6 拓展GPIO

第六章

6.1 LED

6.2 蜂鸣器

6.3 实时时钟


第一章 树莓派基础

1.1 树莓派简介

        Raspberry Pi (中文名为树莓派,可简写成PRI\RasPi\RPI),是一款仅有信用卡大小的微型计算机。

1.1.1  起源

        Eben Upton 博士研发出的一款小型的计算机设备,并成立了相关的“Raspberry Pi”基金会。

1.1.2 介绍

        树莓派是一款开源的硬件,功能完善。目前最新的Raspberry Pi 4 使用1.5GHz ARM 芯片,更高的自选内存,支持双HDMI 4K 显示器、USB 3.0、蓝牙 5.0、无线网和 千兆以太网。

        树莓派分为A和B型号,型号B的功能更强大,型号A相对更便宜。可以通过以下命令查看树莓派的型号:

cat /proc/cpuinfo

1.1.3 系统

        树莓派主要的系统为Linux系统,目前最流行的两个版本分别是 Raspberry Pi OS( 也称为Raspbian) 和 Pidora,其中 Raspberry Pi OS 是基于Debian 操作系统,Pidora 是基于Fedora 操作系统。

        如果想尝试不同的Linux发行版本,但是不确定使用哪个版本时,可以尝试最新生成软件(New out of Box Software ,NOOBS).  第一次或者在启动时按住Shift键,可以选择不同版本的系统。

        还有其他的很多选择,树莓派支持的系统非常多,有基于Linux和非Linux,甚至可以利用树莓派设计自己的操作系统。

1.1.4 应用

        树莓派不仅拥有计算机的功能,通过GPIO 数模转换接口,可以用来控制各种传感器、电动机。具体有如下应用:

  1. 连接硬件用来做数据采集、监控、分析、发布等
  2. 作为小车、飞行器、机器人、智能家具等智能设备的控制中心
  3. 轻量级的计算机
  4. 学习编程
  5. 搭建原型产品

1.2 烧录系统

  • 电源:5.0V/3 A。
  • 显示器:需要用到Micro HDMI 接口转HDMI接口。
  • TF内存卡:闪迪
  • 键盘和鼠标:无线,有线皆可
  • 可选设备:外科和散热器
  • 安装系统:在官网按照教程操作即可
  • 无显示器安装系统:参考网上教程

第二章 树莓派使用Python

2.1 树莓派使用

2.1.1 RPi OS 简介

Raspberry Pi OS(Raspbian) 发行版是基于Debian 系统的Linux发行版。

2.1.2 使用LXDE

LXDE 是一个轻量级的桌面环境。

2.1.3 使用终端

超级用户启动:

sudo passwd root

2.1.4 使用SSH

SSH 为 Secure Shell 的缩写,有IETE的网络小组(Network Working Group)制定,SSH为建立在应用层基础上的安全协议。

2.1.5 使用 VNC

VNC 是 Virtual Network Computing 的缩写,是一个桌面共享系统。

2.2 安装Python

2.2.1 安装python

# 1. 安装依赖包
sudo apt-get install -y make build-essential libssl-dev zlib 1g-dev
sudo apt-get install -y libz2-dev libreadline-dev libsqlite3-dev wget curl llvm
sudo apt-get install -y libncurses5-dev libncursesw5-dev libncursesw5-dev xz-utils tk-dev

# 2. 进入待下载的页面
cd ~

# 3. 下载python
sudo wget https://www.python.org/ftp/python/3.7.4/Python-3.7.4.tgz

# 4. 等待下载结束,执行以下解压命令
sudo tar -zxvf Python

# 5. 进入该文件夹目录
cd Python 

# 6. 执行以下命令安装
sudo ./configure --prefix=/user/local/python3
sudo make

# 7.安装完成,创建软链接
ln -s /user/local/python3/bin/python3 /user/local/bin/python3
ln -s /user/local/python3/bin/pip3 /user/local/bin/pip3
python -v
pip3 -v
 

2.2.2 Python 解释器

解释型语言每检查一条语句,翻译成二进制然后执行。

2.2.3 Thonny

python IDE 集成开发环境。

第三章 Linux命令

3.1 系统管理

3.1.1 用户管理

普通用户:$

超级管理员:#

更改密码:sudo passwd root

增加用户:sudo useradd 用户名

删除用户:sudo userdel 用户名

3.1.2 进程和服务管理

触发一个事务,会开启一个进程,并给予该进程一个PID.

ps -l 查看当前bash下相关进程的全部信息。

pstree 显示整棵进程树。

top 实时的动态显示进程信息。

pidof 指定进程 查看指定进程的PID

kill PID 杀死单个进程

killall 进程名 杀死该程序的所有进程

Linux 服务管理主要有两种方式,即service和systemctl。主要负责控制systemd系统和服务管理器。

Systemctl命令常见用法:

1)列出所有可用单元 systemctl list-unit-files 

2)检查某个服务的运行状态 systemctl status nginx

3)列出所有服务 systemctl list-unit-files --type=service

4) 重启、停止、启动服务 systemctl restart/stop/reload/status nginx

5) 查询服务是否激活,以及配置开机启动 systemctl is-active/disable/enable nginx

6) 结束服务 systemctl kill nginx

7) 列出设备的各项设备、挂载、服务 

  •  systemctl list-uint-files -- type
  • automount device path snapshot swap timer
  • busname mount service socket terget

8) 重启、停止、挂起、休眠系统 systemctl reboot/halt/suspend/hibenate/hybrid-sleep

3.1.3 系统重启和关机

sudo reboot/poweroff/shutdown -h 03:1/halt

3.2 文件管理

文件管理包括文件或目录的创建、删除、查询、移动,由mkdir,rm,mv等命令实现,其中文件查询是重点,用find命令来进行。

3.2.1 创建和删除

mkdir 目录/路径下的目录

rmdir 空目录删除

rm -rf 目录 

nano 文件 创建文件

rm 文件 删除文件

mv 文件 移动文件

mv 文件 目录 移动并重命名

cp 文件 目录 拷贝文件

cp -r 目录 目录 拷贝整个目录

创建符号连接

  • ln ccccAgain 硬连接
  • ln -s cc ccTo 软连接

3.2.2 目录切换

ls:  显示目录信息

pwd: 显示当前目录

cd: 切换目录

3.2.3 权限设置

chmod命令使用直接或者二进制两种方式来修改权限:

1):直接方式 chmod o-wx 文件名

  • u 代表文件所属用户
  • g 代表与文件所属用户同组的用户
  • o 代表其他所有用户

2):数值方式 chmod 755 文件名

  • r =  4
  • w = 2
  • x  = 1 

3.2.4 查找

find ./-name "core*" | xargs file 搜寻文件或目录

find ./-name ".o"  查找目标文件夹中是否有obj文件

find ./-name ".o" -exec rm {} \  递归当前目录及子目录以删除所有.o结尾的文件

3.3 软件管理

linux操作系统提供了一个集中的软件包管理系统,帮助用户搜索、安装和管理系统。软件通常以包的形式存储在仓库(repository)中,对软件包的管理和使用称为包管理。

3.3.1 软件安装

Raspberry Pi OS 系统包的格式为.deb 文件,要直接安装生成.deb包时需要使用dpkg命令。

sudo dpkg -i 包名.deb

Raspberry Pi OS 系统使用的是本地数据库存储远程可用的包仓库列表,在安装或升级包之前最好更新这个数据库。

sudo apt-get update

知道某个软件包的名称后,就可以使用以下命令从软件仓库安装:

sudo apt-get install 包名

sudo apt-get install -y 包名 无需提示 直接安装

3.3.2 软件升级

sudo apt-get upgrade

sudo apt-get dist-upgrade

3.3.3 软件搜索

apt-cache search 搜索内容 

apt-cache show 包名 查看该软件包的详细说明

dpkg -s  包名 显示当前包的安装状态

3.3.4 软件卸载

sudo apt-get remove 包名   卸载保留配置文件

sudo apt-get -purge remove packagename  卸载并删除配置文件

sudo apt-get autoremove  自动移除已知不需要的包

3.4 性能检测

使用树莓派在系统中部署几个不同功能的程序系统时,这些功能涉及数据库读写,串口读写,Web访问等,对系统的压力较大,经常需要查看当前系统的性能,需要知道了解CPU,内存,和硬盘的使用情况。

3.4.1 使用命令查看

vmstat n  m (n 为监控频率, m为监控次数 ) 查看cpu,内存和硬盘的使用情况。

free -m 查看内存使用情况

df -h 查看磁盘空间利用情况

du -sh 查询当前目录下空间利用情况

du -sh 'ls' 该目录下所有文件夹排序后的大小

watch 工具持续监控应用某个数据的变化

3.4.2 使用脚本查看

略过

第四章 常用操作

4.1 树莓派换源

4.1.1 查看系统版本

sudo lsb_release -a 查看系统版本 11 bullseye

4.1.2 更换系统源

  1. 先备份源文件 
    1. sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
    2. sudo cp /etc/apt/sources.list.d/raspi.list /etc/apt/sorces.list.d/raspi.list.bak
  2. 编辑源文件
    1. sudo nano /etc/apt/sources.list
  3. 将初始代码使用#注释,添加新的清华镜像源
    1. deb Index of /raspbian/raspbian/dists/bullseye/main/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
    2. deb-src Index of /raspbian/raspbian/dists/bullseye/main/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror​​​​​​

       

     4. Ctrl + O 保存,Enter键,Ctrl + X 离开

     5. 编辑系统源文件

     6. deb  Index of /raspberrypi/dists/bullseye/main/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

         deb-src Index of /raspberrypi/dists/bullseye/main/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

     7. 同步更新更新源

         sudo apt-get update

         sudo apt-get upgrade

4.1.3 更换pip源

cd ~
mkdir .pip
cd .pip
nano pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/

4.2 文件存储

利用树莓派搭建一个文件存储器,实现文件和数据备份

4.2.1 FTP服务

1): 安装vsftpd 服务器 sudo apt-get install vsftpd

2):启动FTP 服务 sudo service vsftpd start

3):编辑vsftpp 的配置文件  anonymous_enable = NO local_enable = YES write_enable=YES local_umask=022

4):重启vsftpd 服务 sudo service vsftpd restart

第二篇 核心技术

第五章 GPIO基础

5.1 GPIO简介

5.1.1 GPIO定义

GPIO(通用型输入/输出) 接口常简称为GPIO,用于输出高低电平或读入引脚的状态是高电平或低电平。

5.1.2 GPIO 引脚布局

有三种情况对树莓派的GPIO引脚进行编号

  • 物理引脚编号
  • wringPi编号 使用C语言开发,可以通过gpio readall命令查看
  • BCM编号,Broadcom SOC的通道号码,pinout查看配置信息和引脚编号

5.2 连接GPIO

5.2.1 直接连接

5.2.2 使用T形扩展版

5.2.3 使用面包板

5.3 使用RPi.GPIO模块

5.3.1 基本用法

import RPi.GPIO as GPIO

# 指定编号规则
GPIO.setmode(GPIO.BoARD)
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)

# 将引脚设置为输入
GPIO.setup(channel,GPIO.IN)
# 将引脚设置为输出
GPIO.setup(channel,GPIO.OUT)
# 将引脚设置为默认
GPIO.setup(chanel,GPIO.OUT,initial=GPIO.HIGH)

# 一次设置多个通道
chan_list = [11,12]
GPIO.setup(chan_list,GPIO.OUT)

# 读取引脚的输入状态
GPIO.input(channel,state)

# 设置引脚的输出状态
GPIO.output(channel,state)

# 一次设置多个引脚
chan_list = [11,12]
GPIO.output(chan_list,(GPIO.HIGH,GPIO.LOW))

# 释放脚本中使用的引脚
GPIO.cleanup()

#查看RPi 开发板信息和RPi.GPIO版本
GPIO.RPI_INFO
GPIO.VERSION

5.3.2 模块的输入

# 输入引脚处于“悬空”,输入的状态可能会反复变化,可以使用硬件或者软件对电阻进行上拉或下拉

# 获取当前瞬间的引脚信息
GPIO.setup(channel,GPIO.IN,pull_up_down=GPIO.PUD_UP)

# 实时监控引脚状态变化
# 方法一通过轮询的方法
import time
while GPIO.input(channel) == GPIO.LOW
    time.sleep(0.1)
# 方法二通过使用中断(边缘检测)
# 1):使用wait_for_egde()
channel = GPIO.wait_for_edge(channel,GPIO.RISING,timeout=5000)
if channel is None:
    print()
else:
    print()

# 2): 使用add_event_detect(),对引脚进行监听,引脚输入状态发生变化,调用event_detected()函数
GPIO.add_event_detect(channel,GPIO.RISING)
if GPIO.event_detected(channel):
    print()
# 也可以使用回调函数
def mycallback(channel):
    print()
GPIO.add_event_detect(channel,GPIO.RISING,callback=my_callback)

# 回调可能不止一次被调用,出现“开关抖动”,可以在指定的函数加入bouncetime=参数去抖动
# GPIO.remove_event_detect(channel) 停止检测边缘程序


5.3.3 脉冲宽度调制

脉冲宽度调制(PWM)是指通过改变脉冲信号的频率和高电平的持续时间来实现电压控制。

# PWM功能的简单应用

# 创建一个PWM的实例对象
p = GPIO.PWM(channel,frequency)

# dc代表占空比
p.start(dc)

# 设置新的频率
p.ChangeFrequency(freq)

# 设置新的占空比
p.ChangeDutyCycle(dc)

# 停止 PWM
p.stop()

5.4  控制GPIO输出

5.4.1 硬件连接

5.4.2 测试GPIO输出

5.5 检测GPIO输入

5.5.1 硬件连接

5.5.2 下拉电阻

5.5.3 上拉电阻

5.5.4 反应测试

5.6 拓展GPIO

5.6.1 SPI通信协议

SPI 全称是串行外设接口,

5.6.2 I2C通信协议

5.6.3 串口通信协议

第六章

6.1 LED

6.1.1 控制亮度

实例呼吸灯

6.1.2 改变颜色

RGB-LED

6.1.3 RGB-LED 灯条

6.1.4 LED矩阵

6.1.5 使用OLED

6.2 蜂鸣器

6.2.1 有源蜂鸣器

6.2.2 无源蜂鸣器

6.3 实时时钟

树莓派基础实验12:PCF8591模数转换器实验 一、介绍    PCF8591 是单片、单电源低功耗8位CMOS数据采集器件,具有4个模拟输入(其中一个为电压模拟输入)、一个模拟输出和一个串行I2C总线接口。3个地址引脚A0、A1和A2用于编程硬件地址,允许将最多8个器件连接至I2C总线而不需要额外硬件。器件的地址、控制和数据通过两线双向I2C总线传输。器件功能包括多路复用模拟输入、片上跟踪和保持功能、8位模数转换和8位数模拟转换。最大转换速率取决于I2C 总线的最高速率。 二、组件 ★Raspberry Pi主板*1 ★树莓派电源*1 ★40P软排线 阅读详情

相关推荐

树莓派Linux基础(二):文件操作指令

前言 上一节我们学会了在树莓派里如何查看文件系统,这一节我们将讲解如何对文件进行操作,离开了树莓派的图形化界面,在命令行里,我们该怎么对文件进行复制、重命名、编辑 呢? 主要命令 1.cp命令 a. 在同一个文件夹中: 可以使用命令cp 文件1 文件2,将文件1里的内容复制给文件2; pi@raspberrypi:~/xiaoyu $ cp file1.txt file2.txt pi@rasp...

Matrix-do something 5379

树莓派与PCF8591模数转换器的那些事儿

因为树莓派上没有内置的模数转换器(ADC),所以当我们需要用树莓派读取模拟量时需要外接一块具有模数转换功能的转换器(ADC),本文使用的是PCF8591中的HW-011,根据参考范例成功复现点亮led灯。

汤姆lazy的优快云博客 1万+

树莓派改造《无主之地》Echo:打造便携式可交互电脑

嵌入式系统开发是连接物理世界与数字世界的核心技术,其核心在于将计算模块、传感器与执行器集成到特定设备中,实现智能化控制。树莓派作为一款流行的开源硬件平台,凭借其丰富的GPIO接口和强大的社区支持,成为嵌入式学习和原型开发的理想选择。通过合理的硬件选型与系统裁剪,开发者可以构建出低功耗、高性能的定制化设备,广泛应用于物联网、便携终端和智能硬件领域。本文以树莓派Model A+为核心,结合Adafruit PiTFT触摸屏,详细演示了如何将一款游戏周边道具改造为功能完整的便携式电脑,涵盖了从硬件拆解、空间规划、

weixin_30904593的博客 566

树莓派36/100 - PCF8591数模转换器+光敏、热敏传感器

树莓派Pico连接数模转换器PCF8591T。

申龙斌的程序人生 2544

【嵌入式开发】基于树莓派实现超声波避障小车(Python)

基于树莓派实现小车的驱动行驶与超声波自主测距避障(附完整代码)

weixin_51450101的博客 8181

51雾化器实现

1. 雾化器简介 雾化器是将试液雾化的一种器械。雾化器是原子化系统的重要部件,其性能对测定的精密度和化学干扰等产生显著影响。因此要求雾化器喷雾稳定、雾滴细小、均匀和雾化效率高。雾化器的类型有超声雾化器,空气压缩式雾化器,网式雾化器。超声雾化器因其价格合适,适合家用,被广泛应用于加湿器,香薰机等各种小家电,也在医疗领域有很多的应用。家用雾化器的主要器件是一枚雾化片。 家用雾化器分为两种不同类别雾化片,实孔雾化片和微孔雾化片,这两种的喷雾方法和工作原理是有所不同的。不同的雾化片需要特定的频率才能工作。 实孔雾

qq_42415953的博客 2万+

python实现数模转换_用Python控制硬件23-24位数模转换器HX711(秤重测量)

上一篇介绍的AD芯片适用范围比较广,在某些场景下,不需要太多的参数选择,比如压力称重测量:传感器电阻桥输出与压力成正比的差分电压信号,其工作偏置电压,量程范围都比较固定。下面介绍的国产HX711就是一款专门为此场景定制的称重芯片。从某宝购买了此方案的称重套装,包含了5Kg压力传感器,上下两块亚克力托板,HX711模块。直接与实验板相连(工作电压选5V):传感器特写:之前演示的所有SPI命令都有一个...

weixin_39815410的博客 1269

WSL2 Ubuntu复现FoundationPose项目(docker)

复现一个基于深度学习的物体姿态估计框架FoundationPose项目,使用docker,WSL2

woaidawangwang的博客 2002

树莓派超声测距

小白一枚,在学校学习做了一下树莓派超声测距 一、传感器原理 选用的是HC-SR04超声波测距传感器 该传感器有4个引脚: VCC:超声波模块电源脚,接5V电源即可 Trig:超声波发送脚,高电平时发送出40KHZ出超声波 Echo:超声波接收检测脚,当接收到返回的超声波时,输出高电平 GND:超声波模块GND • Vcc 和 Gnd ,接树莓派的电源和接地端。 • Trig 引脚用来接收来自树莓派的控制信号。接任意 GPIO 口。 • Echo 引脚用来发送测距结果给树莓派。接任意 GPIO 口。 传感器与

Fancy_x_l的博客 3313

使用 NTLite 来定制专属的官方 windows 镜像

移除掉不想要的一些自带的应用,比如 Xbox,office 啥的,这个就根据自己的实际需求来选择,备注基本都是有解释这个应用的作用。win 11 的右键展示不喜欢,更喜欢 win10 的,但是需要修改注册表,这里直接把下面的命令写到后期任务里面。NTLite 的自动保存会话功能会保留操作过的配置,是一个 xml 文件,可以在下次升级镜像版本的时候,导入配置。关闭 windows defender,不关会有这个提示,点是,就会跳到对应的界面。勾选创建 iso,配置 iso 镜像的名字,然后点开始。

以梦为马|越骑越傻 3337

谷粒商城篇章9 ---- P248-P261/P292-P294 ---- 消息队列【分布式高级篇六】

RabbitMQ消息队列、RabbitMQ延时队列。

weixin_48568302的博客 1551

树莓派4B之超声波传感器模块(python3)

背景 本人最因工作原因接触到各种电路板,传感器,而自己又是一个小白,随意在其他朋友的推荐下决定从树莓派开始玩传感器;本例子为树莓派控制红外避障传感器 材料 1、树莓派4b 2、火焰传感器模块 3、导线 操作 1、通过xshell 工具来连接树莓派4B,输入命令gpio readall 来获取当前树莓派的针脚 2、用导线连接树莓派的针脚2(物理编号,VCC,5V),针脚6(物理编号,GND,回路),18(物理编号 ,ECHO信号),7(物理编号,TRIGGER信号)分别对应传感器的VCC,

hnmpf的博客 6695

37、OpenMP:并行编程的强大工具

本文详细介绍了 OpenMP 的核心功能和使用方法,包括执行环境例程、线程同步与协调机制,如关键区域、屏障、原子操作、归约子句、刷新构造和锁机制。此外,还提供了多个实践练习,涵盖矩阵乘法的并行实现、任务池与流水线模式的应用、读写锁的扩展与移植,以及客户端-服务器模式的实现与优化。通过这些内容,读者可以全面掌握 OpenMP 在并行编程中的实际应用与性能优化技巧。

www00的博客 106

树莓派之超声波报警器

1.模块:超声波(HC-SR04)、蜂鸣器 HC-SR04 模块可以测量 3cm - 4m 的距离,精确度可以达到 3mm。它包含了超声波发射器、接收器和控制电路三部分。 2.接线方式 一共两个电源引脚和两个控制引脚。 Vcc 接 5V ,Gnd 接0 V ,但不推荐用独立电源给它供电,应使用树莓派或单片机的 GPIO 口输出 5v 和 Gnd 给它供电。不然会影响这个模块的运行。 Trig 引脚用来接收树莓派的控制信号。接任意 GPIO 口。 Echo 引脚用来向树莓派返回测距信息。接任意 GPIO

m0_50620305的博客 2316

基于 STM32 与压电薄膜的婴儿睡眠呼吸暂停监测床垫设计

本设计以 STM32F103C8T6 为主控,结合 PVDF 压电薄膜传感器,通过模拟信号调理与数字峰值检测算法,实现了对婴儿睡眠呼吸状态的实时监测。系统结构简单、成本低廉、无接触无束缚,当检测到 20 秒以上无呼吸信号时自动触发声光报警,可有效降低婴儿睡眠呼吸暂停带来的安全风险。后续可扩展蓝牙 / WiFi 模块,将报警信息推送至家长手机端,实现远程监护。

weixin_42300449的博客 154

代谢组数据分析(二十一):通过MetaboAnalystR标准化构建sPLSDA预测模型

本文介绍了如何使用R语言中的MetaboAnalystR包和mixOmics包进行代谢组学数据的标准化和sPLSDA分析。MetaboAnalystR包用于数据预处理,包括数据初始化、清洗、补足、过滤和标准化等步骤,以确保数据质量。mixOmics包则用于sPLSDA分析,通过Lasso惩罚进行变量选择,并建立分类模型。文章详细说明了安装和加载相关R包的步骤,并提供了数据导入和预处理的代码示例。最后,强调了数据预处理的重要性,以确保后续分析的准确性和可靠性。

专注生信领域 2428

树莓派学习笔记003-超声波距离传感器

树莓派学习笔记003-超声波距离传感器和一些传感器开关 超声波测距传感器 工作原理和使用方法主要参考了树莓派实验室转载简书的一篇文章,但是这里面好多错误 接地端接线问题(未解决) 首先是这个最下面的接地端,我不知道该怎么接,是把它和5V的那个gnd接一起还是单独在树莓派上找个gnd接上。下面这个接线图采用了后者,由于放假回家没有带电阻,也没有万用表,所以也没有验证。 测距的实现问题(已解决) ...

理想乡 1725

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

树莓派超声波测距

树莓派超声波测距 树莓派引脚使用 直接给出树莓派引脚图: 如上图所示,我们可以很清楚的看到各个引脚的功能。 例如我们想使用 pwm 引脚来控制舵机,则我们可以考虑使用其中的 BCM18(PWM0) 和 BCM13(PWM1)。 在使用 wiringPi 库时,我们定义的引脚即 BCM 引脚,例如: pwmPinV = 18 pwmPinH = 13 如果这里使用 python 语言,...

ppqppl的博客 825

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

树莓派学习笔记——Shell脚本操作GPIO

树莓树莓派可以无痛入门linux,下面通过命令和shell脚本控制树莓派GPIO。通过本文可以熟悉多个linux命令,并熟悉shell脚本编写方法,并对IO重定向有一个基本的体会。我在学习树莓派的过程中积累了自信,现在觉得linux没那么神秘没那么难,反而充满了无穷的乐趣,希望通过博客把快乐带给大家。

物联网 IoT 经验分享 4万+

Amazon Echo Dot接入homeassistant实现语音控制

在configuration.yaml 中添加:#echo emulated_hue: type: alexa 注意:type前有两个空格,冒号后还有一个空格!!!在 customize.yaml文件 中, 添加“识别字段”,我的是之前就设置好的,长这样:然后在putty重启树莓派(而不是重启你的电脑)。打开putty输入用户名密码输入sudo systemctl restart homeas...

weixin_40843216的博客 2948

树莓派入门(七)之树莓派小车

一、 买材料: ① 一个树莓派(我用的是三代B型),智能小车底盘,两个L298N电机驱动板,两个超声波模块HC-SR04,电源,杜邦线若干。(上某宝都能买到) 图片如下: 二、 材料都买来了,就开始调试了。 ① :先装系统,我用的是Ubuntu16.04 Mate(我的上一篇教程中有教大家怎么装,不一定非要这个系统),要装wiringPi,那就从如何装wiringPi这...

wu_lian_nan的博客 4285

树莓派利用shell命令操作GPIO引脚

最近在网上买了个树莓派4B玩玩,很早就听说树莓派操作GPIO非常方便,于是就想来研究下 升级wringPi 树莓派本身有一个gpio的命令,貌似发现这个命令使用起来有点问题,原因是我使用的是树莓派4B, 而我的wiringPi版本太久了需要升级,官方有一个教程指导如何升级:http://wiringpi.com/wiringpi-updated-to-2-52-for-the-raspberry-pi-4b/ $ cd /tmp $ wget https://project-downloads.drogon

u010764600的博客 6270

打造DIY版Echo:树莓派+ Alexa 语音服务

原文 https://aws.amazon.com/cn/blogs/china/raspberry-alexa/关于本文本文详细阐述了如何在Java客户端和Node.js服务器上使用和测试Alexa语音服务。本实例需要用Node.Js来获取Login的授权码。本指导提供详细的操作指南对于在取得示例授权码、依赖性和在运行Pi的过程中相应的硬件部署。对于Windows, Mac,或者通用的Linux

西涛offbye-移动全栈技术博客 2814

树莓派学习笔记

嵌入式系统:以应用为中心,计算机技术为基础,软硬件可裁剪,对可靠性,成本,体积,功耗等有严格要求的计算机系统。 架构:ARM(stm32,高通,骁龙,海思,树莓派3b(cortex-A53d处理器)) Intel(i5,i7处理器) x86 MIPS powerPC(苹果,摩托罗拉) 树莓派网络登录 sudo nano /etc/wpa-supplicant/wpa_supplicant.conf network={ ssid=” ”; psk=” ”; } 固定IP:sudo n

qq_43322125的博客 1788
apeprogram
博客等级 码龄8年 0粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值