树莓派智能小车

硬件购入和组装

单纯是为了娱乐,买了树莓派和智能小车。

  • 树莓派4B 8GB
  • 树莓派AI视觉四驱小车
  • 闪迪64GB TF卡 ×2
  • 纯铜散热片
    上周末用了一整天拼装完毕。然后烧录官方镜像,在手机上安装官方提供的APP,即可进行蓝牙连接进行控制,WIFI连接查看摄像头视频。
    到此为止已经可以作为一个遥控赛车的玩具了,但我们显然不会止步于此,接下来要着手学习如何通过GPIO来控制机械部件,以及如何用OpenCV和TensorFlow进行视频处理。
    官方镜像中提供了很多示例代码,但我不打算使用官方镜像,而是自己从Raspberry Pi OS逐步搭建环境,所以直接在Windows上用7Zip把官方镜像Home目录中的文件全部解压出来使用。

wiringPi控制GPIO

C++代码:

1
2
3
4
5
git clone https://github.com/WiringPi/WiringPi.git
cd WiringPi && sudo ./build
gpio -v
gcc red.c -o red -lwiringPi
./red
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// red.c
#include <wiringPi.h>
int LED_R = 3; //wiringPi的编码和物理编码、BCM编码都不同
int main()
{
wiringPiSetup();
pinMode(LED_R, OUTPUT);
while (1)
{
digitalWrite(LED_R, HIGH);
delay(1000);
digitalWrite(LED_R, LOW);
delay(1000);
}
return 0;
}

Python代码更简单,树莓派官方系统默认安装了需要的包:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import RPi.GPIO as GPIO
import time
LED_R = 22
GPIO.setmode(GPIO.BCM)
# 在树莓派上,GPIO引脚可以有多种不同的编号方式。其中两种最常见的编号方式是:BOARD和BCM。

# BOARD: 这种方式是基于物理引脚的编号方式。也就是说,当你看向树莓派的GPIO连接器,从1开始数到最后一个引脚,这就是BOARD编码。

# BCM: 这是基于Broadcom SOC Channel的编号方式。BCM是树莓派上所使用的处理器芯片的名称(例如BCM2835, BCM2836等)。BCM编码方式是基于Broadcom芯片内部的引脚编号方式。
GPIO.setup(LED_R, GPIO.OUT)
while True:
    GPIO.output(LED_R, GPIO.HIGH)
    time.sleep(1)
    GPIO.output(LED_R, GPIO.LOW)
    time.sleep(1)
GPIO.cleanup()