系列文章目录
(一) 树莓派、MQTT。 DHT11、MFRC522(一)
(二)树莓派、MQTT。MQTT数据收发(三)
(三)树莓派、MQTT(四)
前言
进入主页查看系列文章
使用树莓派采集温湿度,记录为csv文件
使用树莓派拍摄图片,保存到文件夹同时生成csv文件索引表
一、采集温湿度
Dht11.py在上一篇文章。
1、Dht_collection.py:
# -*- coding: utf-8 -*-
"""
Created on Wed Apr 6 10:41:07 2022
@author: 嗯哒
"""
"""此代码运行一次采集一个温湿度数据,需要采集多个请自行编辑代码添加循环
csv表格设定记录5次数据,多于5次会删除第一行,新数据添加最后一行。需要增加请自行修改"""
import RPi.GPIO as GPIO
import time
import datetime
import pandas as pd
import os
import Dht11
Ind = [1,2,3,4,5]
if os.path.exists('/home/pi/Program/Final_P/Data.csv'):
df = pd.read_csv('/home/pi/Program/Final_P/Data.csv')
else:
df = pd.DataFrame(index = [],columns=('节点','温度','湿度','时间'))
df.to_csv('/home/pi/Program/Final_P/Data.csv',index = False)
df = pd.read_csv('/home/pi/Program/Final_P/Data.csv')
#print("df",df)
Ind = [1,2,3,4,5]
Data = []
Tag = 1
temp,humi = Dht11.Dht11()
nowTime=datetime.datetime.now().strftime('%Y-%m-%d.%H-%M-%S')#现在
Data.append(Tag)
Data.append(temp)
Data.append(humi)
Data.append(nowTime)
row = df.shape[0]
if row >= 5:
df.drop(index = 0,inplace=True)
df.loc['new'] = Data
df.index = Ind
df.to_csv('/home/pi/Program/Final_P/Data.csv',index = False)
else:
df.loc[row+1]=Data
df.to_csv('/home/pi/Program/Final_P/Data.csv',index = False)
#print("df",df)
time.sleep(1)
二、拍摄图片
1、picamera库
#导入相关模块
import picamera
from time import sleep
#初始化
camera = picamera.PiCamera()
#捕获图像
camera.capture('image.jpg')
#打开预览
camera.start_preview()
#垂直翻转
camera.vflip = True
#水平翻转
camera.hflip = True
#控制摄像头亮度
camera.brightness = 60
#控制摄像头录像
camera.start_recording('video.h264')
#程序休眠,但摄像头继续工作
sleep(5)
#停止录像
camera.stop_recording()
#也可以这样用:预览摄像头在不同亮度下的变化情况。
for i in range(100):
camera.brightness = i
sleep(0.1)
#拍照:
from picamera import PiCamera
import time
"""set camera"""
camera = PiCamera()
camera.resolution = (1920,1080)
camera.framerate = 60
# 打开预览
camera.start_preview()
camera.capture('/home/pi/testme.jpg')
camera.stop_preview()
2、Pic_collection.py
# -*- coding: utf-8 -*-
"""
Created on Wed Apr 6 10:44:27 2022
@author: 嗯哒
"""
from picamera import PiCamera
import time
import datetime
import os
import pandas as pd
"""set camera"""
#初始化
camera = PiCamera()
#设置分辨率
#camera.resolution = (1920,1080)
camera.resolution = (960,540)
camera.framerate = 60
#树莓派节点为1
Tag = 'Pi-1.'
#判断目录下是否存在索引表,有则读取,无则创建
if os.path.exists('/home/pi/Program/Final_P/Pic.csv'):
df = pd.read_csv('/home/pi/Program/Final_P/Pic.csv')
else:
df = pd.DataFrame(index = [],columns=['图片'])
df.to_csv('/home/pi/Program/Final_P/Pic.csv',index = False)
df = pd.read_csv('/home/pi/Program/Final_P/Pic.csv')
camera.start_preview()
#获取当前时间
nowTime=datetime.datetime.now().strftime('%Y-%m-%d.%H-%M-%S')#现在
str = '/home/pi/Program/Final_P/Photo/'+Tag+nowTime+'.jpg'
camera.capture(str)
camera.stop_preview()
#获取当前索引表行数判断是否表满
row = df.shape[0]
#表存储5条数据,需要增加请自行修改代码
Ind=[1,2,3,4,5]
#表满,删除表第一行记录对应图片
if row >= 5:
path = df['图片'][0]
if os.path.exists(path):
#删除图片
os.remove(path)
else:
print('no such file:%s',path)
df.drop(index = 0,inplace=True)
df.loc['new'] = str
df.index = Ind
df.to_csv('/home/pi/Program/Final_P/Pic.csv',index = False)
#表未满,追加记录
else:
df.loc[row+1]=str
df.to_csv('/home/pi/Program/Final_P/Pic.csv',index = False)
time.sleep(1)
三、设置定时任务
crontab -e
#每1小时执行一次获取温湿度
* *1 * * * sudo python3 /home/pi/Program/Final_P/Dht_collection.py
#每6小时执行一次拍照
* */6 * * * sudo python3 /home/pi/Program/Final_P/Pic_collection.py
保存退出
crontab -l
#使定时任务生效(可能要加sudo,我忘了你们试一下)
/etc/init.d/cron restart