[学习笔记]树莓派

[TOC]

树莓派

常用指令

  • 关机
sudo shutdown -h now
  • 重启
sudo reboot
  • 删除文件(即这个文件被删除)

    • 单个删除:rm -f + 文件名
    rm -f  2018_12_26.stderrout.log.060121612
    
    • 批量删除:rm -f + 文件关键字
    rm -f  rm stderrout.log
    # 执行完成后即将所有的名称包括stderrout.log的文件都删除(前面后面的*按照实际需要运用,这个*表示前面不管有任何东西都可以
    
  • CPU温度

vcgencmd measure_temp
  • 文件传输

    • 指令传输

      scp C:\Users\20254\Downloads\assimp.whl laoair@192.168.137.222:/home/laoair/Download
      
    • VNC传输

      • pc -> pi

        • pc 的 vnc 窗口
      • pi -> pc

        • pi 的 vnc 图标
        • file transfer...
  • gpio

gpio readall

开始配置

  • 树莓派烧录时设置为ssh密码登录

  • WIFI连接获取IP地址

    • 使用CN信道,否则无法连接5G网络
  • 拓展文件

    • 首先终端输入

      sudo raspi-config
      
    • Advanced Option -> Expand Filesystem

    • 最后重启

      sudo reboot
      
  • SSH登录冲突

    • 原因:这个ip在过去使用公钥进行登录,也就是在电脑日志中出现ip冲突

    • 将相应的ip公钥清除即可

      ssh-keygen -R 172.20.10.2
      
  • SSH免密登录

    • 打开公钥授权登录

      • 修改/etc/ssh/sshd_config
      • 改为PubkeyAuthentication yes
    • 制作密钥

      ssh-keygen -t rsa 
      ~/.ssh/id_rsa
      
    • 在vscode终端里 发送公钥 name.pub

      cat C:/Users/20254/.ssh/id_rsa.pub | ssh laoair@192.168.137.151 'sudo cat >> .ssh/authorized_keys'
      
    • 或者直接创建新文件 .ssh/authorized_keys , 复制密钥内容进入

    • 这是用户与用户之间的协议,也就是没有密钥的用户无法免密

      • 给多个用户发送,一劳永逸
    • 文件权限

      • 为了让私钥文件和公钥文件能够在认证中起作用, 需要确保权限的正确性

      • 对普通用户, 建议设置成600权限:

        chmod 600 authorized_keys id_rsa id_rsa.pub
        
      • 对root用户, 建议设置成644权限:

        chmod 644 authorized_keys id_rsa id_rsa.pub.
        
  • SSH 使用 Root 权限

    sudo vim /etc/ssh/sshd_config
    增加一行:PermitRootLogin yes
    
    sudo passwd root
    
    最后
    sudo service ssh restart
    
  • VNC连接

    • 树莓派原装的VNC驱动有问题,导致突然黑屏

    • 建议卸载重装

      sudo apt-get remove realvnc-vnc-server realvnc-vnc-viewer
      sudo apt-get update
      sudo apt-get install realvnc-vnc-server realvnc-vnc-viewer
      
    • 下载Download VNC Viewer | VNC® Connect (realvnc.com)

    • 关于cannot currently show the desktop问题

      • 打开 /boot/config.txt 添加以下内容

        framebuffer_width=800
        framebuffer_height=480
        hdmi_mode=87
        hdmi_cvt 800 480 60 6 0 0 0
        
    • 树莓派默认分辨率720×480

  • 换源(极其重要!源错了软件也会全部装错!

  • 静态IP(最好别用,免得换电脑后无法连接wifi)

    • Windows终端输入 ipconfig 查找 默认网关

    • 树莓派当前 IP 后加上 /24

    • 端口改为 wlan0

    interface wlan0
    static ip_address=192.168.137.151/24
    static routers=192.168.84.71
    static domain_name_servers= 192.168.84.71
    
  • 如果要编译 , 需要开启交换空间加速

    • sudo nano /etc/dphys-swapfile
      
    • 编辑 CONF_SWAPSIZE 变量为2048或1024

  • opencv-python的选择

关于开发

串口通信

  • 树莓派默认映射关系

    • laoair@raspberrypi:~ $ ls -l /dev
      lrwxrwxrwx 1 root root 7 8月 13 07:34 serial0 -> ttyS0
      lrwxrwxrwx 1 root root 5 8月 13 07:34 serial1 -> ttyAMA0
      
    • serial0 是GPIO引脚对应的串口,默认使用的是ttyS0 (mini串口)

    • serial1 是蓝牙对应的串口,默认使用的是ttyAMA0(硬件串口)

  • 修改映射关系

    • sudo nano /boot/config.txt

    • 在文件的末尾加上一行代码

      • dtoverlay=miniuart-bt
  • 此时,映射关系更改为

    • lrwxrwxrwx 1 root root 7 8月 13 07:34 serial0 -> ttyAMA0
      lrwxrwxrwx 1 root root 5 8月 13 07:34 serial1 -> ttyS0
      
  • 禁用串口的控制台功能

    • sudo systemctl stop serial-getty@ttyAMA0.service
      
    • sudo systemctl disable serial-getty@ttyAMA0.service
      
    • sudo nano /boot/cmdline.txt
      
      • 在文档中删除语句 console=serial0,115200
  • 编写代码

    • # -*- coding: utf-8 -*
      #! /usr/bin/env python
      import serial
      import time
      ser = serial.Serial('/dev/ttyAMA0', 115200)  # 设置端口和波特率
      if ser.isOpen == False:  # 检查串口是否打开
          ser.open()                # 打开串口
      ser.write(b"Raspberry pi is ready")
      try:
          while True:
              size = ser.inWaiting()               # 获得缓冲区字符
              if size != 0:
                  response = ser.read(size)        # 读取内容并显示
                  print(response)        
                  ser.flushInput()                 # 清空接收缓存区
                  time.sleep(0.5)                  # 软件延时
      except KeyboardInterrupt:
          ser.close()
      

GIT仓库

  • 参考资料1:Git教程 - (liaoxuefeng.com)

  • 参考资料2:树莓派使用Git - 知乎 (zhihu.com)

  • 全局设置

    git config --global user.name "raspberrypi_laoair"
    git config --global user.email "2025406529@qq.com"
    
  • 克隆外部仓库

    git clone (URL)
    
  • 本地使用

    • 对应源码目录初始化,仓库本体位于.git

      git init
      
    • git 保存

      git add .
      
    • git 提交新版本

      git commit -m "注释"
      
    • git 回溯版本

      git reset --hard HEAD^
      git reset --hard HEAD~100
      git reset --hard (commit-id)
      
    • git 日志查询

      git log
      git log --pretty=oneline
      git reflog
      
  • 云端使用

    • void

END