• 任务提醒摆件关联传感器调查


    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);\r\n'

    图片展示:

    CH340:

    超声波测距模块:

    DHT11温湿度传感器:

    ESP8266 arduino源码:

    1. #include "DHT.h"
    2. #include
    3. float distance;
    4. #define echo 15 //echO接D8脚
    5. #define trig 13 //echO接D7脚
    6. #define LEDOUT 2 //D4
    7. #define DHTPIN 0
    8. #define DHTTYPE DHT11
    9. DHT dht(DHTPIN, DHTTYPE, 15);
    10. void setup() {
    11. // put your setup code here, to run once:
    12. // Start Serial
    13. Serial.begin(115200);
    14. dht.begin();
    15. pinMode(LEDOUT,OUTPUT);
    16. digitalWrite(LEDOUT,HIGH);
    17. pinMode(echo,INPUT); //设置echo为输入脚
    18. pinMode(trig,OUTPUT); //设置trig为输出脚
    19. Serial.print("GET_DATA_");
    20. Serial.println("BEGIN:");
    21. }
    22. void loop() {
    23. // put your main code here, to run repeatedly:
    24. digitalWrite(trig,HIGH);
    25. delayMicroseconds(1);
    26. digitalWrite(trig,LOW);
    27. distance = pulseIn(echo,HIGH); //计数接收高电平时间
    28. distance = distance*340/2/10000; //计算距离 1:声速:340M/S 2:实际距离为1/2声速距离 3:计数时钟为1US//温补公式:c=(331.45+0.61t/℃)m•s-1 (其中331.45是在0度)
    29. delay(130); //单次测离完成后加30mS的延时再进行下次测量。防止近距离测量时,测量到上次余波,导致测量不准确。
    30. // Reading temperature and humidity
    31. float h = dht.readHumidity();
    32. float t = dht.readTemperature();
    33. // Display data
    34. Serial.print("Distance:");
    35. Serial.print(distance);
    36. Serial.print("(cm);");
    37. Serial.print("Humidity:");
    38. Serial.print(h);
    39. Serial.print("(%);");
    40. Serial.print("Temperature:");
    41. Serial.print(t);
    42. Serial.println("(*C);");
    43. delay(670);
    44. digitalWrite(LEDOUT,LOW);
    45. // Wait a few seconds between measurements.
    46. delay(70);
    47. digitalWrite(LEDOUT,HIGH);
    48. delay(100);
    49. digitalWrite(LEDOUT,LOW);
    50. delay(30);
    51. digitalWrite(LEDOUT,HIGH);
    52. }

     python串口读取源码:

    1. import serial#导入模块
    2. import time
    3. if __name__ == '__main__':
    4. ser = serial.Serial('COM4', 115200) #来设置波特率,当然还有专门的函数
    5. print(ser.isOpen()) #看看这个串口是否已经被打开
    6. while 1:
    7. data = ser.readline() #是读一行,以/n结束,要是没有/n就一直读,阻塞。
    8. time1 = "[" + time.strftime('%H:%M:%S', time.localtime(time.time())) + "] "
    9. print(time1 + str(data))

  • 相关阅读:
    SpringCloud Alibaba - Seata 四种分布式事务解决方案(XA、AT)+ 实践部署(上)
    【算法 | 模拟No.2】leetcode495. 提莫攻击
    python中arrow库用法详解
    Linux---shell语法(一)
    java计算机毕业设计医院人事档案管理系源程序+mysql+系统+lw文档+远程调试
    `数学` 微积分基本定理
    python小游戏:飞机射击游戏代码
    NFT价值体现在哪里 NFT有什么意义 怎么开发NFT平台
    BGP课后
    Vue3.x使用vuex进行页面间通信
  • 原文地址:https://blog.csdn.net/qq_39540224/article/details/126257015