树莓派、MQTT。树莓派定时温湿度采集,图片采集(二)

系列文章目录

(一) 树莓派、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

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值