查看CPU温度显示数字为千分之一度。所以说,除以1000就是当前温度值。
watch -n 0.1 cat /sys/class/thermal/thermal_zone0/temp
sudo raspi-config 各种设置开关
设置wifi 固定IP
sudo vi /etc/network/interfaces
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet static
address 192.168.0.220
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 192.168.0.1
下面没试过
有线(网线)IP固定方法
interface eth0
static ip_address=192.168.1.252/24
static ip6_address=fd51:42f8:caae:d92e::ff/64
static routers=192.168.1.1
static domain_name_servers=192.168.1.1 8.8.8.8 fd51:42f8:caae:d92e::1
修改安装源
vi /etc/apt/sources.list
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ bullseye main non-free contrib rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ bullseye main non-free contrib rpi
vi /etc/apt/sources.list.d/raspi.list
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
sudo apt-get update
出现错误:bullseye InRelease: The following signatures couldn't be verified because th
解决方案:9165938D90FDDD2E 这个看错误提示的
sudo gpg --keyserver keyserver.ubuntu.com --recv 9165938D90FDDD2E
sudo gpg --export --armor 9165938D90FDDD2E | sudo apt-key add -
sudo apt-get update
安装jdk11
apt-cache search java
sudo apt-get install openjdk-11-jdk
问题解决:
Unable to load [libpi4j] using path: [/lib/raspberrypi/dynamic/libpi4j-armhf.so]
java.lang.UnsatisfiedLinkError: /tmp/libpi4j-armhf14316128236805068399.so: libwiringPi.so: 无法打开共享对象文件: 没有那个文件或目录
看了一堆文章最后答案在这:http://wiringpi.com/download-and-install/
解决办法:
cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
我们需要远程发布代码到树莓派,最好再把依赖都放在jar中,然后直接执行就行了,这是example的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<!-- MAVEN ARTIFACT INFORMATION -->
<artifactId>pi4j-example</artifactId>
<name>Pi4J :: Java Examples</name>
<description>Pi4J Java Examples using the Pi4J Library</description>
<packaging>jar</packaging>
<properties>
<pi4j.dev.transfer>true</pi4j.dev.transfer>
<pi4j.dev.host>192.168.0.220</pi4j.dev.host>
<pi4j.dev.port>22</pi4j.dev.port>
<pi4j.dev.user>pi</pi4j.dev.user>
<pi4j.dev.password>123456</pi4j.dev.password>
<pi4j.dev.directory>/opt/test</pi4j.dev.directory>
</properties>
<parent>
<groupId>com.pi4j</groupId>
<artifactId>pi4j-parent</artifactId>
<version>1.4</version>
</parent>
<!-- DEPENDENCIES -->
<dependencies>
<!-- START SNIPPET: maven-dependency-snippet -->
<dependency>
<groupId>com.pi4j</groupId>
<artifactId>pi4j-core</artifactId>
<version>${project.version}</version>
</dependency>
<!-- END SNIPPET: maven-dependency-snippet -->
</dependencies>
<!-- BUILD INSTRUCTIONS -->
<build>
<resources>
<resource>
<directory>${project.build.directory}</directory>
<filtering>false</filtering>
<includes>
<include>LICENSE.txt</include>
<include>NOTICE.txt</include>
<include>README.md</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>com.common.protocol.udp.UDPService</mainClass>
</manifest>
</archive>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-my-jar-with-dependencies</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- OPTIONALLY DEPLOY THE FINAL JAR TO THE RASPBERRY PI -->
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<executions>
<!-- copy the compiled JAR file to the Raspberry Pi platform platform -->
<execution>
<id>transfer-compiled-pi4j-example-jar</id>
<phase>install</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target>
<taskdef resource="net/sf/antcontrib/antcontrib.properties"
classpathref="maven.plugin.classpath" />
<if>
<equals arg1="${pi4j.dev.transfer}" arg2="true" />
<then>
<!-- ensure the target directory exists on the Raspberry Pi -->
<sshexec host="${pi4j.dev.host}" port="${pi4j.dev.port}" username="${pi4j.dev.user}"
password="${pi4j.dev.password}" trust="true" failonerror="false"
verbose="true" command="mkdir --parents ${pi4j.dev.directory}" />
<!-- copy the JAR file to the Raspberry Pi -->
<scp
file="${project.build.directory}/${project.build.finalName}-jar-with-dependencies.jar"
todir="${pi4j.dev.user}:${pi4j.dev.password}@${pi4j.dev.host}:${pi4j.dev.directory}"
port="${pi4j.dev.port}" trust="true" verbose="true" failonerror="true">
</scp>
<!-- copy the example source files to the Raspberry Pi -->
<scp todir="${pi4j.dev.user}:${pi4j.dev.password}@${pi4j.dev.host}:${pi4j.dev.directory}"
port="${pi4j.dev.port}" trust="true" verbose="true" failonerror="true">
<fileset dir="src/main/java" />
</scp>
</then>
</if>
</target>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant-jsch</artifactId>
<version>${ant-jsch.version}</version>
</dependency>
<dependency>
<groupId>com.jcraft</groupId>
<artifactId>jsch</artifactId>
<version>${jsch.version}</version>
</dependency>
<dependency>
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
<version>${ant-contrib.version}</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
<!-- MAVEN REPOSITORIES -->
<!-- START SNIPPET: maven-repository-snippet -->
<repositories>
<repository>
<id>oss-snapshots-repo</id>
<name>Sonatype OSS Maven Repository</name>
<url>https://oss.sonatype.org/content/groups/public</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
<!-- END SNIPPET: maven-repository-snippet -->
</project>
cd /opt/test
java -classpath pi4j-example-1.4-jar-with-dependencies.jar GpioTest
I2C
i2c总线扫描
通过i2cdetect -l指令可以查看树莓派上的I2C总线,从返回的结果来看树莓派含有两个I2C总线,通过阅读相关的资料,树莓派1代使用I2C0,而树莓派2代使用I2C1。
pi@raspberrypi:~/wiringPi $ i2cdetect -l
i2c-1 i2c bcm2835 (i2c@7e804000) I2C adapter
i2c-21 i2c Broadcom STB : I2C adapter
i2c-20 i2c Broadcom STB : I2C adapter
i2c设备查询
若总线上挂载I2C从设备,可通过i2cdetect扫描某个I2C总线上的所有设备。
这个命令可以查询到总线地址
i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- 38 -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- -- --
出现下面这些说明出问题了。
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: 08 09 0a 0b 0c 0d 0e 0f
10: 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f
20: 20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f
30: 30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f
40: 40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f
50: 50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f
60: 60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f
70: 70 71 72 73 74 75 76 77
#卸载设备 -r代表remove
sudo modprobe -r i2c_bcm2708
sudo modprobe i2c_bcm2708
#重新载入设备
java -classpath pi4j-example-1.4-jar-with-dependencies.jar I2CExample
Raspberry Pi可以提供
5v(引脚2和4)和3.3v(引脚1和17)电源。
引脚6、9、14、20、25、30、34和39上的电路提供了接地(GND)。
5v电源引脚可以消耗多少电流,这取决于您使用的是什么电源以及与Pi相连的其他组件。
Raspberry Pi 3仅从其电源汲取2.5A的电流,并且需要约750mA的电流才能启动和正常运行。这意味着,如果您使用的是2.5A电源,则5v引脚可提供的最大总电流约为1.7A。令人讨厌的是,这在Pi的模型之间有所不同,如下表所示:
对于大多数用户只是从Pi开始,这不会有问题,但是当您花费更多的时间使用GPIO引脚时,要牢记这一点。
3.3v引脚在最近的Raspberry上更简单一些Pi版本(自B +起)提供的总电流最多为 500mA ,而较旧的型号仅提供了 50mA 。请注意,该电流也将在所有其他GPIO引脚之间共享!
因此这些引脚可以为您的组件提供电源,但这仅是它们的功能。真正有趣的东西来自其余的引脚。
标准GPIO
绿色引脚是标准GPIO引脚,这些是大多数初学者项目将使用的引脚。
这些引脚具有3.3v 输出的能力,在代码中也称为设置引脚 HIGH 。
当输出引脚为 LOW 时,这意味着它仅提供0v。
除电源引脚以及引脚27和28 以外的任何引脚用作常规GPIO引脚。
在Pi上也可以使用PWM。引脚12(GPIO 18)和引脚35(GPIO 35)具有硬件PWM功能,尽管Pi还可以通过诸如Pigpio之类的库提供软件PWM。
UART
引脚8和10(GPIO 14和15)是UART引脚,旨在通过串行与Pi进行通信。
引脚19、21、23、24、25 和 26 (GPIO 10、9、11、8,GND和GPIO 26)用于连接到SPI器件
I2C
I2C(内部集成电路)与SPI类似,但通常认为它更易于设置和使用。它异步通信,并且能够支持所需的任意数量的不同设备,只要它们各自在I2C总线上具有唯一的地址位置即可。由于采用了这种寻址系统,Pi只需要两个I2C引脚-引脚3(GPIO 2)和引脚5(GPIO 3),比SPI使用起来简单得多。
I2C的占地面积小有很多可能性。使用标准的GPIO引脚,设置LCD屏幕和一些按钮几乎可以占用每个引脚,使用I2C设备(例如Adafruit Negative LCD控制器)可以将其降低到只有两个引脚!
引脚27和28(标记为ID_SD和ID_SC)也是I2C。 Pi用于内部功能,还有一些HAT板。通常,除非您真的知道自己在做什么,否则不要惹他们!