3_树莓派机载计算机的硬件资源样例教程——无名创新

树莓派机载计算机的硬件资源使用样例教程

样例程序所在目录、Visual Studio Code程序导入与程序运行

执行树莓派硬件资源使用demo的前提是,用户已经使用NoMachine或者VNC Viewer远程登陆系统桌面,也可以直接通过树莓派4B上的Micro HDMI接口扩展连接显示屏,可以根据实际显示屏接口自行购买Micro HDMI转HDMI/VGA转换线。当局域网网络不稳定时,有线连接的方式会极大的提升开发效率,同时此方式也需要配备一组无线键盘、鼠标用于操作ubuntu系统。

在这里插入图片描述

进入系统桌面后,鼠标右键cindy的主文件夹,其中用户只有操作的文件放在rpi_python_opencv、catkin_ws、autostart三个文件夹下,

在这里插入图片描述

其中rpi_python_opencv用于存放树莓派硬件资源使用的样例程序、基于Python开发的OPENCV机器视觉基础与进阶样例

在这里插入图片描述

打开ubuntu桌面的visual studio code软件,点击左上角文件,选中rpi_python_opencv文件下后,点击确定后导入所有文件。

在这里插入图片描述

在这里插入图片描述

visual studio code会进入以下界面,用户直接在VS code软件中,编写python程序,对于已安装的第三方库会自动补全相关变量或函数。

在这里插入图片描述

1、GPIO口驱动RGB灯

在VS code下方命令窗口中(也可以CTRL+ALT+T在用cd命令进入该目录下),依次输入如下命令既可以观察gpio控制板载RGB的效果,其中RGB灯为共阴方式,高电平亮低电平灭。

cindy@cindy-desktop:~/rpi_python_opencv$ ls -l
总用量 44
drwxrwxr-x 2 cindy cindy  4096 1月   9 02:39 1树莓派资源样例
drwxrwxr-x 4 cindy cindy  4096 1月  13 18:31 2机器视觉基础例程
drwxrwxr-x 4 cindy cindy  4096 1月  15 04:31 3机器视觉进阶例程
-rw-rw-r-- 1 cindy cindy 15080 2月  11 21:33 main.py
-rw-rw-r-- 1 cindy cindy 14531 1月   8 22:53 main.pybackup
cindy@cindy-desktop:~/rpi_python_opencv$ cd 1树莓派资源样例/
cindy@cindy-desktop:~/rpi_python_opencv/1树莓派资源样例$ ls -l
总用量 56
-rw-rw-r-- 1 cindy cindy  1250 2月  24 21:21 1_gpio_rgb.py
-rw-rw-r-- 1 cindy cindy  2081 1月   8 17:43 2_hardwave_pwm.py
-rw-rw-r-- 1 cindy cindy   951 1月   8 17:10 3_uart_send.py
-rw-rw-r-- 1 cindy cindy   945 1月   8 18:01 4_uart_receive_and_send.py
-rw-rw-r-- 1 cindy cindy  2480 1月   9 02:04 5_i2c_mpu6050.py
-rw-rw-r-- 1 cindy cindy   839 1月   9 02:28 6_i2c_oled_1306_image.py
-rw-rw-r-- 1 cindy cindy  2342 1月   9 14:24 7_i2c_oled_1306_draw.py
-rw-r--r-- 1 cindy cindy 24629 1月   9 05:25 happycat_oled_64.ppm

最后运行1_gpio_rgb.py,程序运行的效果是RGB灯三色依次闪烁,并屏幕打印提示端口和运行状态。

python3 1_gpio_rgb.py

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xk98cOF3-1645889851215)(/image-20220224213340462.png)]

执行CTAL+C终止程序运行

2、硬件PWM的使用

在这里插入图片描述

预留出来的可用PWM口有四路,四个PWM口是GPIO12、GPIO13、GPIO18、GPIO19依次对应PWM0、PWM1、PWM2、PWM3,其中PWM0、PWM1两路PWM口与串口4的TXD、RXD复用,当初始化GPIO18、GPIO19为PWM口后,再需要将GPIO18、GPIO19用作串口时,必须重新启动树莓派系统。程序中通过pwm0_1_enable变量来控制PWM0、PWM1是否使用。

运行2_hardwave_pwm.py,程序运行的效果是输出频率为1000hz的PWM波,占空比从0100%,然后从100%0,用户可以将PWM口接示波器、外接RGB灯或者万用表测平均电压的方式来观察PWM输出效果。

python3 2_hardwave_pwm.py

3、串口发送

扩展板引出了全部用户可用的5组串口,5组串口已经在树莓派系统启动配置文件中使能开启,用户可以直接使用,避免了传统ubuntu系统通过外接usb转ttl模块扩展串口资源的方式,降低了接线复查程度。用户可以在命令窗口中执行ls -l /dev/ttyAMA*命令来查看可用的串口设备。

在这里插入图片描述

同时用户可以执行cutecom调用cutecom串口调试工具对串口进行相关操作

在这里插入图片描述

在提供的示例中,默认操作的是UART4,用户也可以调整串口参数,更改成其它串口或者波特率等。

在这里插入图片描述

运行3_uart_send.py,程序运行的效果是输出串口打印“Hello,World”,用户可以外接usb转ttl模块,通过串口调试助手观察发送的数据。

python3 3_uart_send.py

在这里插入图片描述

在这里插入图片描述

4、串口接收并发送

本例程利用串口inWaiting()函数查询串口缓冲区数据长度,利用read()方法读取缓冲区数据,最后将接收到的数据通过write()方法发送出来,实现接收数据并转发回显的效果。

python3 4_uart_receive_and_send.py

在这里插入图片描述

在这里插入图片描述

5、I2C读取MPU6050数据

本例程利用I2C1口,挂载MPU6050设备,通过SMBus第三方库读取MPU6050数据,ubuntu系统启动文件中,已经对I2C硬件资源配置进行了使能,用户可以像单片机I2C编程一样直接使用I2C资源。同时当采用C/C++编程时可以采用wiringpi库对I2C资源进行编程。

树莓派系统查看I2C外设可以利用i2c-tools工具包执行如下指令实现。

sudo i2cdetect -y 1

在这里插入图片描述

可以看到I2C外设中存在地址未0x0e、0x68、0x76三组I2C设备,查询数据手册可知0x68即为MPU6050的地址,另外两组为IST8310磁力计、SPL06气压计的地址。查询I2C外设寄存器数据可以通过命令行:sudo i2cdump -y 1 0x68

在这里插入图片描述

寄存器写操作可以通过执行命令

sudo i2cset -y 1 0x68 0x6B 0x00
sudo i2cset -y 1 0x68 0x19 0x00
sudo i2cset -y 1 0x68 0x1A 0x02
sudo i2cset -y 1 0x68 0x1B 0x08
sudo i2cset -y 1 0x68 0x1C 0x10
最后执行
sudo i2cdump -y 1 0x68
对比前后对应寄存器地址数据是否变化

在这里插入图片描述

同时用户可以查看单个寄存器地址中的数据,例如读取传感器ID信息who am i寄存器信息,执行命令如下:

sudo i2cget -y 1 0x68 0x75

在这里插入图片描述

以上操作是利用i2c_tools工具包对I2C外设进行操作,提供的demo是读取MPU6050温度、加速度、陀螺仪数据,并通过串口打印显示出来,执行本例程需要确保I2C端口存在MPU6050外设,否则回导致I2C设备硬件读取出错。执行程序命令如下:

python3 5_i2c_mpu6050.py

在这里插入图片描述

6、I2C挂载SSD1306显示屏显示图像

本例程利用I2C1口,挂载SSD1306显示屏,利用Adafruit_SSD1306库函数实现图形显示,执行命令如下:

python3 6_i2c_oled_1306_image.py

在这里插入图片描述

在这里插入图片描述

7、I2C挂载SSD1306显示屏显示字符

本例程利用I2C1口,挂载SSD1306显示屏,首先利用PIL库生成ImageDraw方法,运用此方法在自定义图像中添加字符、数字等内容,最后用Adafruit_SSD1306图形显示函数刷新显示出来。本例程调用了python3中subprocess 模块,查看系统IP、运存、内存等信息,这部分内容初学者不需要了解。本例程执行命令如下:

python3 7_i2c_oled_1306_draw.py

方法,运用此方法在自定义图像中添加字符、数字等内容,最后用Adafruit_SSD1306图形显示函数刷新显示出来。本例程调用了python3中subprocess 模块,查看系统IP、运存、内存等信息,这部分内容初学者不需要了解。本例程执行命令如下:

python3 7_i2c_oled_1306_draw.py

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u011992534/article/details/123158399