查看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板。通常,除非您真的知道自己在做什么,否则不要惹他们!