zoukankan      html  css  js  c++  java
  • 2020系统综合实践 第6次实践作业 18组

    一、对树莓派的认识

    林郁昊

    • 认识程度:树莓派相当于一个小型的电脑,使用Linux系统,我了解的只有拍照录像等功能,以前在B站上看到一个用树莓派实现手写数字识别的视频。
    • 电脑能做的大部分事情,在树莓派上都能做,而树莓派以其低能耗、移动便携性、GPIO等特性,很多在普通电脑上难以做好的事情,用树莓派却是很适合的。比如把树莓派配置成无线路由器,拿树莓派当FTP文件服务器等等。

    黄宇航

    • 我最早听到树莓派还以为是吃的···是不是没救了···
    • 树莓派可以用来做什么哈哈哈想用树莓派的摄像头模块来做人脸识别!

    胡浩楠

    • 在之前,我对树莓派的印象只是听说过,没有实际去用过,我只知道它是一个微型的计算机,小巧方便,如果连上显示器、键盘、鼠标这些外部输入输出设备的话,就和我们用的电脑没什么区别,而且我知道它可以做很多有趣的作品,功能比常见的单片机要更为强大,缺点也很明显,性能很有限,和我们自己常见的pc机还是无法相比的。
    • 单单一个树莓派可能做的事情比较有限,但是它有许多扩展的接口,可以去接摄像头、麦克风、传感器等等扩展的设备,举个我之前最常见的例子,我在转专业之前是电子类的专业,那个时候经常可以看到我的同学或者学长学姐用树莓派去做智能循迹小车,或者做智能的机器人(为了参加机器人大赛),机器人的功能有搬运机器人、医疗机器人、寻路机器人等等,这些机器人的控制很多都是用到了树莓派。这是我在网上看到的一个非常有趣的树莓派作品------树莓派做垃圾分类。我认为树莓派能做的事情很多,例如连上一个摄像头可以去做人流量统计、车流量统计,去完成人脸识别,车牌号的识别,在连上麦克风也可以做语音识别,或者连上传感器去做一个温度计、湿度计等等,只要有想象力,很多作品都可以做出来。如果我有一个树莓派,我希望可以用它做一个智能的语音音箱,可以通过我说的一些简单指令去完成一些事情,例如开关灯、播放音乐、开关空调等等。

    二、系统烧录和备份

    • 进入官网下载所需镜像:Raspbian Buster with desktop and recommended software
    • 打开Win32DiskImager进行系统烧录

      点击写入并等待即可
    • 打开Win32DiskImager进行备份

    三、访问树莓派

    SSH登录Raspberry Pi

    #wpa_supplicant.conf,priority越大,优先级越高
    country=CN
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
    update_config=1
    
    network={
    	ssid="此处输入wifi接入点名称,保留引号"
    	psk="此处输入wifi密码,保留引号"
    	priority=1
    }
    
    network={
    	ssid="此处输入wifi接入点名称,保留引号"
    	psk="此处输入wifi密码,保留引号"
    	priority=2
    }
    
    • 然后将这两个文件放到SD卡的根目录下,将SD卡插回树莓派,开机。
    • 由于本次用的是手机热点,所以要在手机上安装一个软件去查看树莓派的ip地址,方法在上面的参考资料中。
    • 在windows中打开命令提示符,输入ssh ip地址 去登录。默认账号pi密码raspberry。
    • 第一次我们尝试登录发现密码一直是错误的,后来才知道需要加上名称去登陆,用 ssh pi@ip地址 去登陆。
    • 这次就登陆成功了,页面和ubuntu的命令窗口一样的。

    VNC登录Raspberry Pi

    sudo raspi-config
    
    • 这个就是进入后的页面。
    • 之后根据参考资料中的博客一步一步配置就可以了,配置成功后会显示如图。
    • 然后再去配置显示,配置完成后重启树莓派,在树莓派上的操作就完成了。
    • 在本地的PC机上需要去下载VNC Viewer,下载地址VNC相关软件下载地址
    • 在进行安装、注册账户等一系列操作后,进行登录,需要填入ip地址,账号密码和刚才默认的一样。
    • 登录进去就会显示树莓派的桌面。
    • 进行语言、网络等设置后,测试网络。
    • 为了方便之后软件的下载,将树莓派下载源换源。
    sudo nano /etc/apt/sources.list
    
    • 把原来的内容注释掉,加上以下内容。
    deb https://mirrors.aliyun.com/raspbian/raspbian/ buster main non-free contrib
    deb-src https://mirrors.aliyun.com/raspbian/raspbian/ buster main non-free contrib
    
    • 之后执行下面命令更新。
    sudo apt-get update
    sudo apt-get upgrade
    

    四、接入摄像头

    树莓派有很多扩展接口,而摄像头也是其中一个非常重要的扩展部件,学习树莓派摄像头模块picamera的使用方法,实现使用python代码控制摄像头,以及通过vlc实时读取摄像头捕获的影像。

    • 打开摄像头

      sudo raspi-config


      reboot即可

    • 记录摄像头捕获的影像,录像测试。

    # record.py
    from picamera import PiCamera
    import time
    import datetime
    
    camera = PiCamera()
    camera.rotation = 180 # 旋转180度
    time.sleep(5) # 摄像头感光
    camera.start_recording('/home/pi/Desktop/record/video{}.h264'.format(datetime.datetime.now())) # 参数为文件路径
    time.sleep(5) # 录制5秒
    camera.stop_recording() # 停止录制
    

    • 使用python代码控制摄像头,摄像头中的画面实时显示
    • 这里使用了opencv,并没有使用vlc,opencv的方法延时很低很低,效果会更好。
    #opencvtest.py
    import cv2
    import datetime
    cap = cv2.VideoCapture(0)
    print(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
    print(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
    #cap.set(3, 3000)
    #cap.set(4, 3000)
    #print(cap.get(3))
    #print(cap.get(4))
    while(cap.isOpened()):
        ret, frame = cap.read()
        if ret == True:
    
           font = cv2.FONT_HERSHEY_SIMPLEX
           text = 'Width: '+ str(cap.get(3)) + ' Height:' + str(cap.get(4))
           datet = str(datetime.datetime.now())
           frame = cv2.putText(frame, text, (10, 50), font, 1,
                               (255, 255, 255), 2, cv2.LINE_AA)
           frame = cv2.putText(frame, datet, (10, 100), font, 1,
                               (255, 255, 255), 2, cv2.LINE_AA)
           cv2.imshow('frame', frame)
    
           if cv2.waitKey(1) & 0xFF == ord('q'):
             break
        else:
            break
    
    cap.release()
    cv2.destroyAllWindows()
    
    

    • 树莓派测试拍摄图片
    import picamera
    import time
    
    
    #create object for PiCamera class
    camera = picamera.PiCamera()
    #set resolution
    camera.resolution = (1024, 768)
    camera.brightness = 60
    camera.start_preview()
    #add text on image
    camera.annotate_text = 'Say Cheese!'
    time.sleep(5)
    #store image
    camera.capture('image{}.jpeg'.format(time.time()))
    camera.stop_preview()
    

    五、记录遇到的问题和解决方法,提供小组成员名单以及在线协作的图片

    • 使用frp进行内网穿透,想让其他小组成员访问树莓派,感受三倍的快乐

    借助 frp 随时随地访问自己的树莓派

    wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linu
    x_amd64.tar.gz
    tar -zxvf frp_0.33.0_linux_amd64.tar.gz
    ##frps.ini
    [common]
    # tunnel port通信管道
    bind_port = 4000
    # dashboard图形管理页面
    dashboard_port = 90
    dashboard_user = root
    dashboard_pwd = admin
    
    
    ##frpc.ini
    [common]
    server_addr = [server_ip]
    server_port = 4000
    
    [ssh]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 22
    remote_port = 8999
    

    在运行./frpc -c ./frpc.ini指令时提示无法编译二进制文件,仔细一查

    发现Raspberry Pi 4是32位系统,因此树莓派客户端应该下载:

    wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linu x——arm.tar.gz

    • 我测试用ssh登录到树莓派,树莓派是在宇航那里,上面是宇航用服务器做的内网穿透,我和郁昊都可以通过ssh来访问树莓派。

    • 小组成员名单与分工

      • 111700312胡浩楠:负责查找相关资料指导操作
      • 081700209林郁昊:负责编写代码
      • 031701129黄宇航:负责实际操作
    • 在线协作

      • 一起观看教学视频

      • 烧录

      • 进入树莓派

      • 进入树莓派图形界面

  • 相关阅读:
    双指针法
    secureCRT安装与激活
    [Python之路] Python各类常用库整理
    [工具] Atom Markdown编辑器
    [Python之路] object类中的特殊方法
    [Python自学] Flask框架 (5) (DBUtils数据库链接池、wtforms)
    [Python自学] Flask框架 (4) (Request&Session上下文管理、redis保存session、App&g上下文管理)
    [刷题] Leetcode算法 (2020-3-1)
    [工具] Window10搭建Django开发环境
    [算法] 动态规划 (1) (工作最优收入)
  • 原文地址:https://www.cnblogs.com/ambition-hhn/p/12940940.html
Copyright © 2011-2022 走看看