树莓派3B+ 安装系统;搭建python,opencv环境;实现串口通信

一:安装系统

可参考 树莓派3B+ 安装系统

 


 

二:通过VNC访问树莓派(无线和有线)

可参考  树莓派(Raspberry Pi 3) - 通过VNC访问树莓派

 

1.树莓派设置

  • 安装vnc

sudo apt-get update
sudo apt-get install tightvncserver

 

  • 设置vnc密码(一定要设置,要不然无法被访问)

 vncpasswd

先输入连接客户端密码两次,然后会询问是否设置一个只能查看桌面(view-only)密码,不能进行操作,按自己喜欢,一般没必要。 

  • 运行VNC,为服务分配一个连接数字

vncserver

 该数字可视为上位机连接树莓派的通道,每次开机第一次运行vncserver时通道号为1,再运行一次vncserver时通道号为2,以此类推。

  • 查询树莓派IP地址

ifconfig

树莓派3B+ 安装系统;搭建python,opencv环境;实现串口通信_第1张图片

eth0      inet 为网线连接的ip信息(只有在连接后才会生成IP地址)

wlan0   inet 为无线网连接的IP信息(只有在连接后才会生成IP地址)

  • 树莓派设置开机运行vncserver

每次只有运行vncserver之后才能生成通道号提供上位机连接,因此设置成开机运行。

可参考 【教程】树莓派程序开机自启动方法总结

 

2.上位机访问树莓派

  • 下载并安装vncviewer

  • 连接树莓派

 点击File -> New connection,弹出Properties,在VNC Server中输入树莓派对应IP地址以及服务号,Name中可以输入树莓派名字也可以不进行输入,点击OK。192.168.1.108:3 其中192.168.1.108为网线IP或无线IP。冒号之后的3为三号通道,即树莓派运行三次vncserver后的通道,一般只需运行一次vncserver,冒号后面填1即可。

树莓派3B+ 安装系统;搭建python,opencv环境;实现串口通信_第2张图片

 

双击出现得电脑图标进行连接,双击之后会出现一个警告,点击continue,之后输入设置好的服务密码,即可完成树莓派的连接登录。

树莓派3B+ 安装系统;搭建python,opencv环境;实现串口通信_第3张图片

 


三. 安装opencv和python环境

 可参考 OpenCV-3.2.0-Compiling-on-Raspberry-Pi

在step12中,虽然sudo make -j3速度快,可是稳定性太差,我试了2次,2次失败。

最终用sudo make进行编译,虽然时间长了点,不过一次完成。

 因为新版本的opencv将功能分为了opencv与opencv contrib,opencv完成最基础的一些操作,不过很多比较实用的方法都放在opencv contrib中。建议两者都要安装。


四.uart串口通信

可参考 树莓派3b uart串口通信问题解决方案

 

  • 在config.txt文件中添加pi3-miniuart-bt的设备树,用来禁用蓝牙然后正常使用14、15口

sudo nano /boot/config.txt

在文件末尾加上以下代码

dtoverlay=pi3-miniuart-bt
  •  关闭Serial Console

sudo nano /boot/cmdline.txt

然后将文件类容改为如下代码

dwc_otg.lpm_enable=0  console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4  elevator=deadline fsck.repair=yes   rootwait

 


  •  安装pyserial

sudo apt-get install python-serial
  •  例子(回显程序)

要用python2写,python3不知道为什么在write总是会报错!

如下例子,就可以实现上位机发送信息,树莓派接收信息后返回至上位机显示。既上位机发送什么信息就显示什么信息。

# -*- coding: utf-8 -*
import serial
import time
ser = ser = serial.Serial("/dev/ttyAMA0", 115200)
def main():
    while True:
        count = ser.inWaiting()
        if count != 0:
            recv = ser.read(count)
            ser.write(recv)
        ser.flushInput()
        time.sleep(0.1)

if __name__ == '__main__':
    try:
        main()
    except KeyboardInterrupt:
        if ser != None:
            ser.close()

 

你可能感兴趣的:(树莓派3B+ 安装系统;搭建python,opencv环境;实现串口通信)