第三周 总结报告

来源:互联网 发布:windows mount ext4 编辑:程序博客网 时间:2024/06/04 19:46

     第三周也悄悄过去了,这一周我的进度不快,主要是对前期进行一个小小的总结和梳理一下思路。

    前两周进度还算不错,学到了很多知识,也完成了一些东西。这一周算是对前面的所学进行一个消化吧。

    这周我花了两天时间整理前期的工作,把前期工作进行了比较系统的总结,把前期学的arduino知识和各种传感器的知识进行了系统梳理和回顾,以前有一点没想通的点也豁然开朗了。就传感器而言,以前部分传感器还有些原理没有完全弄清楚,通过对前期工作的总结,把传感器有彻底的看了一篇,基本把传感器的各种原理弄明白了。就我使用的各种传感器而言,虽然基本都是通过各种不同传感部件获得信号,但是都有一个共同的特点,那就是所有传感器的输出端几乎一样,都将不同的型号转化成脉冲信号一配合控制器读取信号值,再通过各种换算公式转换成有意义数据值。

    接下来我们几天就做了无线串口的测试,我们使用的无线串口是2.4G无线调频串口模块E13-TTL100,最初我使用USB-UART模块做测试,将两个无线串口模块连接到不同电脑上,然后通过设置无线串口的指令状态和设置串口工具使两个无线串口相互配对,然后再通过电脑上的串口工具互相通信。



     注意在模块设置时要注意一些问题:

1)给模块设置指令后,要回到工作状态,需要将SET引脚置高。当 SET = 1 时(引脚置高),模块工作于透明传输模式。当向串口输入数据时,模块会自动转为发射状态,将这些数据通过无线发射出去。发射完毕后,自动转为接收状态。对方模块收到无线数据后,通过串口将这些数据发到主机。模块串口、无线接口工作方式按照控制模式下所设置的参数。


2)设置指令后,模块会记住设置的参数。要想回到出厂设置必须按照之前步骤设置指令。

    通过USB-UART模块可以很简单的相互通信。接下来我又使用了控制器来连接无线串口,先将控制器烧空,然后连接uno控制器上的pin1和pin2两个传输和接收引脚 ,使用硬串口实现相互通信。后来又使用了多个无线串口,在同一个频点下,同样的speed,一点发出数据,其他所有点都可以接收数据,这样就可以实现多组数据采集端向一个节点发送数据了。但是串口容易出现乱码,这是不太好的问题。

下面是我用粉尘和风速测试串口的程序,里面的数据就可以用无线串口发送:

int pin_fc = 3;char s[16][6] = {"N","NE->N","NE","NE->E","E","SE->E","SE","SE->S","S","SW->S","SW","SW->W","W","NW->W","NW","NW->N"};unsigned long duration;unsigned long starttime;unsigned long sampletime_ms = 30000;//sampe 30s ;unsigned long lowpulseoccupancy = 0;float ratio = 0;float concentration = 0;int windsprrd = 0;int sensorValue;int a;void setup(){  Serial.begin(9600);  pinMode(pin_fc,INPUT);  starttime = millis();//get the current time; }void loop() {  sensorValue  = analogRead(A3);   a = analogRead(A0);  duration = pulseIn(pin_fc, LOW);  Serial.println("The Wind Speed && Direction :");  wind_speed();  wind_direction();  lowpulseoccupancy = lowpulseoccupancy+duration;  fenc();                                                 lowpulseoccupancy = 0;    starttime = millis(); delay(10000);}void wind_speed(){   float  fanspeed= (sensorValue * (5.0/1024.0) - 0.4) * 1.6 * 32.4;   Serial.print(fanspeed);   Serial.println("m/s;");     if (fanspeed>0 && fanspeed<1.555)    windsprrd = 1;   else if (fanspeed>1.555 && fanspeed<3.405)   windsprrd = 2;   else if (fanspeed>3.405 && fanspeed<5.495)   windsprrd = 3;   else if (fanspeed>5.495 && fanspeed<7.995)   windsprrd = 4;  else if (fanspeed>7.995 && fanspeed<10.755)   windsprrd = 5;    else if (fanspeed>10.795 && fanspeed<13.805)   windsprrd = 6;    else if (fanspeed>13.805 && fanspeed<17.199)   windsprrd = 7;    else if (fanspeed>17.199 && fanspeed<20.705)   windsprrd = 8;    else if (fanspeed>20.705 && fanspeed<24.455)    windsprrd = 9;    else if (fanspeed>24.455 && fanspeed<28.455)   windsprrd = 10;   else if (fanspeed>28.455 && fanspeed<32.655)   windsprrd = 11;   else    windsprrd = 12;   Serial.print(windsprrd);   Serial.println("ji;");     }void wind_direction(){   int winddirection =(  a * (5.0 / 1024.0) *10) - 4 ;  // float b = winddirection/16.0*22.5;  //Serial.print(b);  //Serial.print( "The wind direction :"); if(winddirection == 0 || winddirection == 15 )   { Serial.println( s[0] );}  else    { Serial.println( s[winddirection] );}}void fenc(){ if ((millis()-starttime) > sampletime_ms)//if the sampel time == 30s  {    ratio = lowpulseoccupancy/(sampletime_ms*10.0);  // Integer percentage 0=>100    concentration = 1.1*pow(ratio,3)-3.8*pow(ratio,2)+520*ratio+0.62; // using spec sheet curve    Serial.println("The fencheng is :");    Serial.print(lowpulseoccupancy);    Serial.print(",");    Serial.print(ratio);    Serial.print(",");    Serial.println(concentration);   }}


     但是我发现如果将程序烧入控制器中控制器连接的无线串口可以发送数据电脑无法接收数据,这个问题还在探索当中。

0 0
原创粉丝点击