1.采集超声波测距传感器的距离数据,合并到串口输出;
2.采集温湿度传感器的温湿度数据,合并到串口输出;
输出方式(串口 波特率:115200):1秒左右输出一次
1.通过主控ESP8266板卡的CP2102芯片,直接通过USB线(供电+串口通信),接收串口数据;
2.通过外接供电的CH340芯片,通过USB接收串口数据;
3.直接连接板卡的串口引脚RX(绿线)/TX(黄线),和接收串口数据板卡的TX/RX反接,再通过串口不定长接收,以换行符区分来接收字段;
串口输出格式:
串口助手获取的数据:
Distance:174.20(cm);Humidity:46.00(%);Temperature:26.80(*C);
python serial模块读取readline:
[22:25:52] b'Distance:174.45(cm);Humidity:45.00(%);Temperature:26.80(*C);rn'
图片展示:
CH340:
超声波测距模块:
DHT11温湿度传感器:
ESP8266 arduino源码:
#include "DHT.h"
#include
float distance;
#define echo 15 //echO接D8脚
#define trig 13 //echO接D7脚
#define LEDOUT 2 //D4
#define DHTPIN 0
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE, 15);
void setup() {
// put your setup code here, to run once:
// Start Serial
Serial.begin(115200);
dht.begin();
pinMode(LEDOUT,OUTPUT);
digitalWrite(LEDOUT,HIGH);
pinMode(echo,INPUT); //设置echo为输入脚
pinMode(trig,OUTPUT); //设置trig为输出脚
Serial.print("GET_DATA_");
Serial.println("BEGIN:");
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(trig,HIGH);
delayMicroseconds(1);
digitalWrite(trig,LOW);
distance = pulseIn(echo,HIGH); //计数接收高电平时间
distance = distance*340/2/10000; //计算距离 1:声速:340M/S 2:实际距离为1/2声速距离 3:计数时钟为1US//温补公式:c=(331.45+0.61t/℃)m•s-1 (其中331.45是在0度)
delay(130); //单次测离完成后加30mS的延时再进行下次测量。防止近距离测量时,测量到上次余波,导致测量不准确。
// Reading temperature and humidity
float h = dht.readHumidity();
float t = dht.readTemperature();
// Display data
Serial.print("Distance:");
Serial.print(distance);
Serial.print("(cm);");
Serial.print("Humidity:");
Serial.print(h);
Serial.print("(%);");
Serial.print("Temperature:");
Serial.print(t);
Serial.println("(*C);");
delay(670);
digitalWrite(LEDOUT,LOW);
// Wait a few seconds between measurements.
delay(70);
digitalWrite(LEDOUT,HIGH);
delay(100);
digitalWrite(LEDOUT,LOW);
delay(30);
digitalWrite(LEDOUT,HIGH);
}
python串口读取源码:
import serial#导入模块
import time
if __name__ == '__main__':
ser = serial.Serial('COM4', 115200) #来设置波特率,当然还有专门的函数
print(ser.isOpen()) #看看这个串口是否已经被打开
while 1:
data = ser.readline() #是读一行,以/n结束,要是没有/n就一直读,阻塞。
time1 = "[" + time.strftime('%H:%M:%S', time.localtime(time.time())) + "] "
print(time1 + str(data))



