在基于树莓派的 Ubuntu Server 中使用 csi 摄像头

1 说明

在树莓派 3B+ 上接了 csi 摄像头,并安装了 ubuntu server 64bit ,需启用摄像头,然后拍照。

2 安装 raspi-config

使用 csi 摄像头需利用 raspi-config 启用摄像头,ubuntu server 中默认没有安装该程序。从 http://archive.raspberrypi.org/debian/pool/main/r/raspi-config/ 下载最新版,这里是 raspi-config_20210212_all.deb,安装

dpkg -i raspi-config_20210212_all.deb

如果出现依赖报错,则解决一下:

sudo apt --fix-broken install

3 启动摄像头

通过 raspi-config 启用摄像头,按提示选择 camera ,enable

sudo raspi-config

但发现出错提示:Your firmwave appears to be out of date (no start_x.elf). Please update。

需挂载一下启动分区到 /boot ,先确认一下启动分区是不是 /dev/mmcblk0p1

df -h

如果是,便挂载到 /boot

mount /dev/mmcblk0p1 /boot

挂载后再次通过 raspi-config 启动摄像头,启动后需重启,然后可以查看到有 /dev/video0

ls /dev/video*

4 拍照

拍照

raspistill -o pic.jpg

录制30秒h264格式的视频

raspivid -t 30000 -vs -o -> v0.h264

旋转270度

raspistill -rot 270  -o pic270.jpg

DHT22温湿度传感器的使用

使用python读取dht22温湿度传感器的值。

 import sys
 import Adafruit_DHT
 import requests
 import json
 url = 'https://www.3gcomet.com/iot/iot_receive.php'
 sensor = Adafruit_DHT.DHT22
 pin = 4
 humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)
 if humidity is not None and temperature is not None:
     temp = '{:.1f}'.format(temperature)
     humi = '{:.1f}'.format(humidity)
     payload = {"ac":'iotofict',"loc":'CloudDC',"tem":temp,"hum":humi}
     response = requests.post(url=url,data=payload)
     print(response.text)
     #print('Temp={0:0.1f}*  Humidity={1:0.1f}%'.format(temperature, humidity))
 else:
     print('Failed to get reading. Try again!')
     sys.exit(1)