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))