找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
楼主: eagler8
打印 上一主题 下一主题
收起左侧

【Arduino】108种传感器模块系列实验(资料+代码+图形+仿真)

  [复制链接]
1041#
ID:513258 发表于 2019-7-13 19:00 | 只看该作者

谢谢您的鼓励
回复

使用道具 举报

1042#
ID:513258 发表于 2019-7-13 19:45 | 只看该作者

回复

使用道具 举报

1043#
ID:513258 发表于 2019-7-13 20:26 | 只看该作者

回复

使用道具 举报

1044#
ID:513258 发表于 2019-7-14 06:57 | 只看该作者
使用高电平触发
超声波测距模块:
VCC -> 5V
GND -> GND
Trig (控制端)-> 2
Echo (接收端)-> 3
注: TRIP引脚是内部上拉10K的电阻,用单片机的IO口拉低TRIP引脚,然后给一个10us以上的脉冲信号。模块应先插好在电路板上再通电,避免产生高电平的误动作,如果产生了,重新通电方可解决。




回复

使用道具 举报

1045#
ID:513258 发表于 2019-7-14 07:05 | 只看该作者

回复

使用道具 举报

1046#
ID:513258 发表于 2019-7-14 07:08 | 只看该作者

回复

使用道具 举报

1047#
ID:513258 发表于 2019-7-14 07:32 | 只看该作者
  1. /*
  2. 【Arduino】66种传感器模块系列实验(58)
  3. 实验五十八: HC-SR04超声波测距传感器模块(通用款)

  4. Echo接Digital 3口,接收距离信号
  5. Trig接Arduino板的Digital 2口,触发测距
  6. 上电后预热稳定大约需要60秒钟
  7. */

  8. float      distance;
  9. const int  echo=3;                          //echO接D3脚
  10. const int  trig=2;                          //echO接D2脚
  11. void setup()
  12. {
  13.   Serial.begin(9600);                       //波特率9600
  14.   pinMode(echo,INPUT);                       //设置echo为输入脚
  15.   pinMode(trig,OUTPUT);                      //设置trig为输出脚
  16.   Serial.println("HC-SR04-2019.7.14测距开始:");
  17. }
  18. void loop()
  19. {
  20. digitalWrite(trig,LOW);
  21. delayMicroseconds(20);
  22. digitalWrite(trig,HIGH);
  23. delayMicroseconds(20);
  24. digitalWrite(trig,LOW);                     //发一个20US的高脉冲去触发Trig

  25. distance  = pulseIn(echo,HIGH);             //计数接收高电平时间
  26. distance  = distance*340/2/10000;           //计算距离 1:声速:340M/S  2:实际距离1/2声速距离 3:计数时钟为1US
  27. Serial.print("距离: ");
  28. Serial.print(distance);
  29. Serial.println("cm");
  30. delay(20);                                   //单次测离完成后加20mS的延时再进行下次测量。防止近距离测量时,测量到上次余波,导致测量不准确。
  31. delay(500);                                  //500mS测量一次
  32. }
复制代码


回复

使用道具 举报

1048#
ID:513258 发表于 2019-7-14 07:34 | 只看该作者

回复

使用道具 举报

1049#
ID:513258 发表于 2019-7-14 07:47 | 只看该作者

回复

使用道具 举报

1050#
ID:513258 发表于 2019-7-14 07:58 | 只看该作者
  1. /*
  2. 【Arduino】66种传感器模块系列实验(58)
  3. 实验五十八: HC-SR04超声波测距传感器模块(通用款)

  4. 程序之二,阙值50厘米控制板载LED
  5. Echo接Digital 3口,接收距离信号
  6. Trig接Arduino板的Digital 2口,触发测距
  7. 上电后预热稳定大约需要60秒钟
  8. HC-SR04为简单通用款,没有温度补偿,实测200CM段误差约3CM
  9. */

  10. int inputPin=3; // 定义超声波信号接收接口
  11. int outputPin=2; // 定义超声波信号发出接口
  12. int ledpin=13;
  13. void setup()
  14. {
  15. Serial.begin(9600);
  16. pinMode(ledpin,OUTPUT);
  17. pinMode(inputPin, INPUT);
  18. pinMode(outputPin, OUTPUT);
  19. }
  20. void loop()

  21. {
  22. digitalWrite(outputPin, LOW); // 使发出发出超声波信号接口低电平2μs
  23. delayMicroseconds(2);
  24. digitalWrite(outputPin, HIGH); // 使发出发出超声波信号接口高电平10μs,这里是至少10μs
  25. delayMicroseconds(10);
  26. digitalWrite(outputPin, LOW); // 保持发出超声波信号接口低电平
  27. int distance = pulseIn(inputPin, HIGH); // 读出脉冲时间
  28. distance= distance/58; // 将脉冲时间转化为距离(单位:厘米)
  29. Serial.println(distance); //输出距离值
  30. delay(50);
  31. if (distance >=50)
  32. {//如果距离大于50厘米小灯亮起
  33. digitalWrite(ledpin,LOW);
  34. }//如果距离小于50厘米小灯熄灭
  35. else
  36. digitalWrite(ledpin,HIGH);
  37. }
复制代码


回复

使用道具 举报

1051#
ID:513258 发表于 2019-7-14 08:02 | 只看该作者

回复

使用道具 举报

1052#
ID:513258 发表于 2019-7-14 08:11 | 只看该作者
测量一本书的距离变化波形



回复

使用道具 举报

1053#
ID:513258 发表于 2019-7-14 08:30 | 只看该作者
  1. /*
  2. 【Arduino】66种传感器模块系列实验(58)
  3. 实验五十八: HC-SR04超声波测距传感器模块(通用款)

  4. 程序之三,串口输出等待时间的原始数据
  5. Echo接Digital 3口,接收距离信号
  6. Trig接Arduino板的Digital 2口,触发测距
  7. 上电后预热稳定大约需要60秒钟
  8. HC-SR04为简单通用款,没有温度补偿,实测200CM段误差约3CM
  9. */

  10. #define Trig 2
  11. #define Echo 3

  12. float cm; //距离变量
  13. float temp;

  14. void setup() {
  15.   Serial.begin(9600);
  16.   pinMode(Trig, OUTPUT);
  17.   pinMode(Echo, INPUT);
  18. }

  19. void loop() {
  20.   //给Trig发送一个低高低的短时间脉冲,触发测距
  21.   digitalWrite(Trig, LOW); //给Trig发送一个低电平
  22.   delayMicroseconds(2);    //等待 2微妙
  23.   digitalWrite(Trig,HIGH); //给Trig发送一个高电平
  24.   delayMicroseconds(10);    //等待 10微妙
  25.   digitalWrite(Trig, LOW); //给Trig发送一个低电平
  26.   
  27.   temp = float(pulseIn(Echo, HIGH)); //存储回波等待时间,
  28.   //pulseIn函数会等待引脚变为HIGH,开始计算时间,再等待变为LOW并停止计时
  29.   //返回脉冲的长度
  30.   
  31.   //声速是:340m/1s 换算成 34000cm / 1000000μs => 34 / 1000
  32.   //因为发送到接收,实际是相同距离走了2回,所以要除以2
  33.   //距离(厘米)  =  (回波时间 * (34 / 1000)) / 2
  34.   //简化后的计算公式为 (回波时间 * 17)/ 1000
  35.   
  36.   cm = (temp * 17 )/1000; //把回波时间换算成cm

  37.   Serial.print("Echo =");
  38.   Serial.print(temp);//串口输出等待时间的原始数据
  39.   Serial.print(" | | Distance = ");
  40.   Serial.print(cm);//串口输出距离换算成cm的结果
  41.   Serial.println("cm");
  42.   delay(500);
  43. }
复制代码


回复

使用道具 举报

1054#
ID:513258 发表于 2019-7-14 08:33 | 只看该作者

回复

使用道具 举报

1055#
ID:513258 发表于 2019-7-14 08:51 | 只看该作者

回复

使用道具 举报

1056#
ID:513258 发表于 2019-7-14 08:52 | 只看该作者

回复

使用道具 举报

1057#
ID:513258 发表于 2019-7-14 09:14 | 只看该作者

回复

使用道具 举报

1058#
ID:513258 发表于 2019-7-14 09:46 | 只看该作者

回复

使用道具 举报

1059#
ID:513258 发表于 2019-7-14 09:50 | 只看该作者

回复

使用道具 举报

1060#
ID:513258 发表于 2019-7-14 10:21 | 只看该作者
本帖最后由 eagler8 于 2019-7-14 14:23 编辑

网上搜索了一下,超声波模块的型号还不少,比如还有HY-SRF05(五针高精度);US-025和US-026(苏州顺憬志联CS100芯片,距离6米稳定性好些);US-100(同时具有GPIO,串口等多种通信方式,内带看门狗,工作稳定可靠);RCWL-1601(宽电压,对棉质及不规则物体探测精度高于SR-04);RCWL-1603(含有UART,PWM,GPIO及UART AUTO OUT等多种接口模式,专业MCP9700温度补偿);US-015(目前市场上分辨率最高,重复测量一致性最好的超声波测距模块)等,以后待手头有实物了再做实验。



回复

使用道具 举报

1061#
ID:513258 发表于 2019-7-14 10:39 | 只看该作者
实验五十九: RS232转TTL2代串口模块刷机板(MAX3232芯片)

MAX3232
采用专有低压差发送器输出级,利用双电荷泵在3.0V至5.5V电源供电时能够实现真正的RS-232性能,器件仅需四个0.1uF的外部小尺寸电荷泵电容。max3232确保在120kbps数据速率,同时保持RS-232输出电平。max3232具有二路接收器和二路驱动器,提供1uA关断模式,有效降低功效并延迟便携式产品的电池使用寿命。关断模式下,接收器保持有效状态,对外部设备进行监测,仅消耗1uA电源电流,max3232的引脚、封装和功能分别与工业标准MAX242和MAX232兼容。即使工作在高数据速率下,max3232仍然能保持RS-232标准要求的正负5.0V最小发送器输出电压。




回复

使用道具 举报

1062#
ID:513258 发表于 2019-7-14 10:45 | 只看该作者

回复

使用道具 举报

1063#
ID:513258 发表于 2019-7-15 11:39 | 只看该作者
max3232是MAXIM公司生产的一款 232通讯的芯片,他可以将单片机的逻辑信号的电平转成RS232的电平。因为RS232是用,正负电平来表示0和1的信号,所以MAX3232要产生相应的正负电压。在使用MAX3232时,先确定一下系统接供的电压,因为此芯片,对不同的工作电压,要给不同的电容来产生电压。通电后,先检测一下2脚是否有+5.4V以上的电压,6脚有-5.4V以上的电压,16脚是否有电压, 如没有则要检查相应的电容。注意在16脚一定要有电容,要不然就可能不能产生相应的电压。


回复

使用道具 举报

1064#
ID:513258 发表于 2019-7-15 11:58 | 只看该作者

回复

使用道具 举报

1065#
ID:513258 发表于 2019-7-15 12:12 | 只看该作者
RS232转TTL2代串口模块刷机板(MAX3232芯片)



回复

使用道具 举报

1066#
ID:513258 发表于 2019-7-15 12:35 | 只看该作者




回复

使用道具 举报

1067#
ID:513258 发表于 2019-7-15 12:53 | 只看该作者
管脚功能
1 、DCD( Data Carrier Detect) :载波检测。主要用于Modem通知计算机其处于在线状态,即Modem检测到拨号音,处于在线状态。
2 、RXD(Receive(rx) Data):此引脚用于接收外部设备送来的数据;在你使用Modem时,你会发现RXD指示灯在闪烁,说明RXD引脚上有数据进入(电脑的2接MAX232的RS232端TOUT(如PIN7))。
3 、TXD(Transmit(tx)  Data):此引脚将计算机的数据发送给外部设备;在你使用Modem时,你会发现TXD指示灯在闪烁,说明计算机正在通过TXD引脚发送数据。
4 、DTR( Data Terminal Ready ):数据终端就绪;当此引脚高电平时,通知Modem可以进行数据传输,计算机已经准备好。
5 、GND(Ground):逻辑地。
6 、DSR(data set ready):数据设置就绪;此引脚高电平时,通知计算机Modem已经准备好,可以进行数据通讯了。
7 、RTS(Request To Send):请求发送;此脚由计算机来控制,用以通知Modem马上传送数据至计算机;否则,Modem将收到的数据暂时放入缓冲区中。
8 、CTS(Clear to send): 清除发送;此脚由Modem控制,用以通知计算机将欲传的数据送至Modem。
9 、RI ( Ring Indicator): Modem通知计算机有呼叫进来,是否接听呼叫由计算机决定。

要想实现串口间通信,至少需要三个引脚,即:RXD,TXD,GND,RXD与其他串口线TXD相连,TXD与RXD相连,GND与GND相连,这样就实现了串口间通信。该通信是全双工的,即可以同时发送/接收数据,虽然说是串行的,但是因为发送/接收不是用的一个通道,所以可以实现全双工。




回复

使用道具 举报

1068#
ID:513258 发表于 2019-7-15 13:03 | 只看该作者
DB9与MAX3232的连接



回复

使用道具 举报

1069#
ID:513258 发表于 2019-7-15 14:09 | 只看该作者



回复

使用道具 举报

1070#
ID:513258 发表于 2019-7-15 14:17 | 只看该作者
模块电原理图


回复

使用道具 举报

1071#
ID:513258 发表于 2019-7-15 14:18 | 只看该作者
模块电原理图



回复

使用道具 举报

1072#
ID:513258 发表于 2019-7-15 14:41 | 只看该作者



回复

使用道具 举报

1073#
ID:513258 发表于 2019-7-15 16:24 | 只看该作者
  1. /*
  2. 【Arduino】66种传感器模块系列实验(59)
  3. 实验五十九: RS232转TTL2代串口模块刷机板(MAX3232芯片)
  4. 程序之一,读取缓存中的串口数据
  5. 注意这里的接线方法,软串口RX接RS232转接板的RX口,
  6. TX接RS232转接板的TX口
  7. */

  8. #include <SoftwareSerial.h>
  9. SoftwareSerial DLSerial(6, 7); // 软串口 RX(D6), TX(D7)
  10. void setup() {
  11. DLSerial.begin(9600); //设备波特率9600
  12. }

  13. void loop() {   
  14. DLSerial.write(1); //发送字节数据
  15. DLSerial.write(3);
  16. delay(500);
  17. while (DLSerial.available()>0) //如果缓存中有接收到的数据
  18. {
  19.     DLSerial.read(); //读取缓存中的串口数据
  20.     delay(2);
  21. }
  22. delay(500);
  23. }
复制代码


回复

使用道具 举报

1074#
ID:513258 发表于 2019-7-15 16:28 | 只看该作者

回复

使用道具 举报

1075#
ID:513258 发表于 2019-7-15 16:35 | 只看该作者

回复

使用道具 举报

1076#
ID:288607 发表于 2019-7-15 16:46 | 只看该作者
有没得文档的
回复

使用道具 举报

1077#
ID:513258 发表于 2019-7-15 17:02 | 只看该作者
  1. /*
  2. 【Arduino】66种传感器模块系列实验(59)
  3. 实验五十九: RS232转TTL2代串口模块刷机板(MAX3232芯片)
  4. 程序之二,接收串口数据
  5. rx = 6
  6. tx = 7
  7. */

  8. #include <ctype.h>

  9. #define bit9600Delay 100  
  10. #define halfBit9600Delay 50
  11. #define bit4800Delay 188
  12. #define halfBit4800Delay 94

  13. byte rx = 6;
  14. byte tx = 7;
  15. byte SWval;

  16. void setup() {
  17.   pinMode(rx,INPUT);
  18.   pinMode(tx,OUTPUT);
  19.   digitalWrite(tx,HIGH);
  20.   delay(2);
  21.   digitalWrite(13,HIGH);
  22.   SWprint('o');  
  23.   SWprint('k');
  24.   SWprint(10);
  25. }

  26. void SWprint(int data)
  27. {
  28.   byte mask;

  29.   digitalWrite(tx,LOW);
  30.   delayMicroseconds(bit9600Delay);
  31.   for (mask = 0x01; mask>0; mask <<= 1) {
  32.     if (data & mask){
  33.      digitalWrite(tx,HIGH);
  34.     }
  35.     else{
  36.      digitalWrite(tx,LOW);
  37.     }
  38.     delayMicroseconds(bit9600Delay);
  39.   }
  40.   
  41.   digitalWrite(tx, HIGH);
  42.   delayMicroseconds(bit9600Delay);
  43. }

  44. int SWread()
  45. {
  46.   byte val = 0;
  47.   while (digitalRead(rx));

  48.   if (digitalRead(rx) == LOW) {
  49.     delayMicroseconds(halfBit9600Delay);
  50.     for (int offset = 0; offset < 8; offset++) {
  51.      delayMicroseconds(bit9600Delay);
  52.      val |= digitalRead(rx) << offset;
  53.     }
  54.    
  55.     delayMicroseconds(bit9600Delay);
  56.     delayMicroseconds(bit9600Delay);
  57.     return val;
  58.   }
  59. }

  60. void loop()
  61. {
  62.     SWval = SWread();
  63.     SWprint(toupper(SWval));
  64. }
复制代码


回复

使用道具 举报

1078#
ID:513258 发表于 2019-7-15 17:05 | 只看该作者

回复

使用道具 举报

1079#
ID:513258 发表于 2019-7-15 17:36 | 只看该作者

回复

使用道具 举报

1080#
ID:513258 发表于 2019-7-15 17:39 | 只看该作者

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表