树莓派远程连接(SSH&&VNC)及DHT11温湿度传感器获取数据脚本,及数据本地存储Mariadb
树莓派远程连接(SSH&&VNC)及DHT11温湿度传感器获取数据脚本,及数据本地存储Mariadb
树莓派远程连接及DHT11获取数据存储
树莓派4B SSH远程连接
所需工具
网线一根
树莓派4B一个
IP Scanner(Advanced IP Scanner – 免费下载网络扫描程序。 (advanced-ip-scanner.com))
Putty(https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html)
VNC viewer(https://www.realvnc.com/en/connect/download/viewer/)
连接方法
将树莓派用网线连接路由器,笔记本连接该路由器WiFi(emmm我只有一根网线,只需要保证树莓派和笔记本在同一局域网下即可)
ps:我尝试了用网线连接笔记本和树莓派,虽然可以获取树莓派的IP地址,但是树莓派ping不通外网,也ping不通笔记本。
打开路由器后台找到有个叫raspberrypi的就是我们的树莓派,如下图
也可以用IP scanner扫(这个软件可以查询同一局域网下所有设备的IP地址)
然后打开putty,按下图步骤操作
点击Open后,输入用户名,密码就连接上了
试一下ping 百度
ping www.baidu.com
远程连接图形化界面
开启树莓派VNC-server
sudo raspi-config
选择第三个Interfacing Options->Enable->yes,至此就打开了树莓派的VNC服务了。
打开VNC viewer
然后填写树莓派的IP地址(前面已经获取过了)
点击ok后会出现一个名为pi的连接
点击这个蓝电脑,输入用户名,密码就可以远程连接到树莓派的图形化界面了
树莓派4B连接DHT11读取温湿度
DHT11与树莓派4B的连接
DHT11有三个引脚,分别是VCC(正极),out(输出数据的),GND(负极),使用三根杜邦线分别将VCC连接3.3V(接5v也可以,DHT11供电电压范围是3-5.5v),out连接GPIO(IO口,数据传输用的),GND连接ground
在树莓派上导入Adafruit_DHT的库
从github上获取Adafruit库
sudo git clone https://github.com/adafruit/Adafruit_Python_DHT.git
这里已经导过了
安装完成后pi文件夹下会新增Adafruit_Python_DHT文件夹,进入该文件夹安装库。
cd Adafruit_Python_DHT
sudo python setup.py install
安装完成是这样的
打开Adafruit_DHT目录下的platform_detect.py,进行如下修改
cd Adafruit_DHT
vi platform_detect.py
这里这一步是定义树莓派版本BCM2711是树莓派4B的CPU型号,如果这段有你用的树莓派型号就不用加。
PS:这里修改完后可能会报错,权限不够无法保存,我们修改文件权限
chmod 777 Adafruit_Python_DHT
后面还要对这个文件夹里的内容修改,所以我把整个文件夹权限都改了
这些操作完,就完成Adafruit_DHT库的安装了
使用Adafruit_DHT库获取温湿度数据
安装完成后进入examples(这里面是一些示例文件)文件夹运行AdfruitDHT.py可以获得结果:
运行AdfruitDHT.py
python3 AdafruitDHT.py 11 4
PS:这里传入的参数11代表的是使用的是DHT11传感器,如果是DHT22,就改成22
4 代表的是我们信号引脚(out)连接的是GPIO4
结果如下图:
项目应用
现在写python脚本,实现每五秒获取一次温湿度数据,并记录在数据库中
配置数据库
我这里想要装MySQL数据库的…
sudo apt install mysql-server
然后
百度了一下
MariaDB 数据库管理系统是 MySQL 的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了 MySQL 后,有将 MySQL 闭源的潜在风险,因此社区采用分支的方式来避开这个风险。
没办法安装mariadb-server
sudo apt install mariadb-server
等待安装完成
配置mariadb-server
进入服务器
sudo mysql
创建访问密码
UPDATE user SET password = password('密码') WHERE user = 'root';
ps:可能会报错,这个表明你的Mariadb版本有点超前了,10.4.4版本之前可以使用上面的命令修改密码
10.4.4之后的版本使用下面这条命令:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
执行完毕之后还重启服务器
sudo systemctl restart mariadb
登录
mysql -u root -p
创建数据库
CREATE DATABASE PI_TEST
创建表
create table test1(
num int primary key AUTO_INCREMENT, #主键自增
time datetime, #时间
temp double, #温度
humi double #湿度
);
python连接数据库
安装pymysql库
pip install pymysql
直接上代码
import Adafruit_DHT
import pymysql
import time
sensor = Adafruit_DHT.DHT11
pin = 4
#create SQL connect
conn = pymysql.connect(host="localhost",port=3306,user="root",passwd="123456",db='pi_test')
cursor = conn.cursor()
while(1):
humidity, temperature = Adafruit_DHT.read_retry(sensor,pin)
if humidity is not None and temperature is not None:
t = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime())
print(t+' Temp={0:0.001f}* Humidity={1:0.001f}%'.format(temperature, humidity))
sql = 'insert into test1(time,temp,humi) values (%s,%s,%s)'
param=(t,temperature,humidity)
cursor.execute(sql,param)
conn.commit()
else:
print('Failed to get reading. Try again!')
time.sleep(5)
conn.close()
cursor.close()
运行脚本
python 1s-test.py
数据库情况
Ps:(脚本我是放在Adafruit_DHT文件夹里面执行的,否则会缺乏依赖)
更多推荐
所有评论(0)