器件:arduino、树莓派、A-B USB线、传感器(DHT11,MQ-2,门磁)、杜邦线若干、LED灯
1、arduino端代码:
#include <dht11.h> //引用dht11库文件,使得下面可以调用相关参数
#define DHT11PIN 8 //定义温湿度针脚号为8号引脚
#define MQD 2 //定义MQ-2数字量读取引脚为2号引脚
#define MQA A0 //定义MQ-2模拟量读取引脚为A0
dht11 DHT11; //实例化一个对象
const int sensor = 7; //门磁传感器引脚
int ledPin_door=9; //门磁动作引脚
int state; // 0 close - 1 open wwitch
int ledPin_smoke=10; //MQ-2动作引脚
int ledPin_tem=11; //DHT11温度监测动作引脚
int ledPin_hum=12; //DHT11湿度监测动作引脚
int ledPin_fan=13; //风扇动作引脚
void setup(){ //初始化设置
Serial.begin(9600); //设置波特率参数
//DHT11
pinMode(DHT11PIN,OUTPUT);
pinMode(ledPin_tem,OUTPUT); //定义输出口
pinMode(ledPin_hum,OUTPUT);
pinMode(ledPin_fan,OUTPUT);
//MQ-2
pinMode(MQD,INPUT);
pinMode(MQA,INPUT);
pinMode(ledPin_smoke,OUTPUT);
//door
pinMode(ledPin_door,OUTPUT);
pinMode(sensor, INPUT_PULLUP);
}
void loop(){ //循环
Serial.print("ok");
//DHT11
int chk = DHT11.read(DHT11PIN); //将读取到的值赋给chk
int hum=(float)DHT11.humidity; //将湿度值赋给hum
if(hum>=30)
{
digitalWrite(ledPin_hum,HIGH); //超过适宜湿度LED灯亮
digitalWrite(ledPin_fan,HIGH); //风扇开始转
}
else
{ digitalWrite(ledPin_hum,LOW); } //没有超过适宜湿度LED灯灭
// Serial.print("hum:"); //打印hum:
Serial.print(hum); //打印湿度值
Serial.print("%/t"); //打印%/t
int tem=(float)DHT11.temperature; //将湿度值赋给tem
if(tem>=30)
{ digitalWrite(ledPin_tem,HIGH); } //超过适宜温度LED灯亮
else
{digitalWrite(ledPin_tem,LOW); } //没有超过适宜温度LED灯灭
// Serial.print(" tem:"); //打印tem:
Serial.print(tem); //打印温度值
Serial.print("*C"); //打印*C
//MQ-2
// Serial.print(" smoke:"); //打印smoke
Serial.print(analogRead(MQA)); //打印气体模拟值
if(digitalRead(MQD)==HIGH) //判断数字量引脚 是否为高电平
{
digitalWrite(ledPin_smoke,HIGH);
digitalWrite(ledPin_fan,HIGH);
}
else
{
digitalWrite(ledPin_smoke,LOW);
}
//door
state = digitalRead(sensor);
if (state == HIGH){
Serial.println("open");
digitalWrite(ledPin_door,HIGH);
}
else{
Serial.println("clos");
digitalWrite(ledPin_door,LOW);
}
delay(1000); //延时1000毫秒
}
为 方便树莓派截取各个数据,没有对arduino的打印输出分隔开。
2、mysql安装好后,选择一个datebase建表。
我建的表homedb,其中id为主键,id和date都是自动生成。
3、树莓派端代码:
注意:提前安装“pymysql”、“serial”这两个依赖文件。
安装依赖库文件代码:sudo pip install pymysql
sudo pip install serial
4、测试结果
arduino运行无误的前提下,执行入库文件:
python savedb.py
执行10秒左右即可停止Ctrl+c,然后到数据库查询看数据是否存入,我用的是可视化数据库管理工具Navicat如下:
新手菜鸟一枚,希望对大家有帮助,也希望大家多多指教,共同进步哈@^@