Beispiel #1
0
float sht11_Humidity(int temprawdata,int humidityrawdata)
{
  int _val;                    // Raw humidity value returned from sensor
  float _linearHumidity;       // Humidity with linear correction applied
  float _correctedHumidity;    // Temperature-corrected humidity
  float _temperature;          // Raw temperature value

  // Conversion coefficients from SHT15 datasheet
  const float C1 = -4.0;       // for 12 Bit
  const float C2 =  0.0405;    // for 12 Bit
  const float C3 = -0.0000028; // for 12 Bit
  const float T1 =  0.01;      // for 14 Bit @ 5V
  const float T2 =  0.00008;   // for 14 Bit @ 5V

  _val = humidityrawdata;
   _linearHumidity = C1 + C2 * _val + C3 * _val * _val;

  // Get current temperature for humidity correction
  _temperature = sht11_TemperatureC(temprawdata);

  // Correct humidity value for current temperature
  _correctedHumidity = (_temperature - 25.0 ) * (T1 + T2 * _val) + _linearHumidity;

  return (_correctedHumidity);
}
Beispiel #2
0
/*---------------------------------------------------------------------------*/
static void
broadcast_recv(struct broadcast_conn *c, const rimeaddr_t *from)
{
  leds_toggle(LEDS_RF_RX);
  //printf("Received %u bytes: '0x%04x'\n", packetbuf_datalen(),
  //       *(uint16_t *)packetbuf_dataptr());
  if (rwt == 0)
  {
  temperature_r=*(uint16_t *)packetbuf_dataptr();
  tc_r=sht11_TemperatureC(temperature_r);
  printf("temperature_received:%u.%u\n",(int)tc_r,((int)(tc_r*10))%10);
  rwt=1;
  }
  else
  {
  humidity_r=*(uint16_t *)packetbuf_dataptr();
  hc_r=sht11_Humidity(temperature_r,humidity_r);
  printf("humidity_received:%u.%u\n",(int)hc_r,((int)(hc_r*10))%10);
  rwt=0;
  }
}
Beispiel #3
0
/*---------------------------------------------------数据采集上传模考---------------------------------------------*/
static void udp_send_data(struct udp_tx *udp_tx_info)
{
	 static char  pdata_buf[20];
		  char data_buf[3];
	#if sht11
		  float tc,hc;
		  sht11_init();
		  unsigned int tempera = sht11_temp();
		  unsigned int humidity = sht11_humidity();
		  tc=sht11_TemperatureC(tempera);
		  hc=sht11_Humidity(tempera,humidity);
		  printf("sorce Tc:%d;Hc:%d\n",(int)tc,(int)hc);
		//  tc=25.5;
	   //   hc=57.2;
		  printf("Tc:%d;Hc:%d\n",(int)tc,(int)hc);

		  pdata_buf[0]=0x02;
		  sprintf(data_buf,"%d",(int)tc);
		  memcpy(&pdata_buf[1],data_buf,3);

		  pdata_buf[4]=0x03;
		  sprintf(data_buf,"%d",(int)hc);
		  memcpy(&pdata_buf[5],data_buf,3);

		//  sprintf(temp_data_buf,"%d.%d",(int)hc,((int)(hc*10))%10);
		  printf("temp_data:%s\n",pdata_buf);
	#endif
	#if sensor
		  int16_t temperature;
	     temperature = sensor_temp_get(TEMP_UNIT_CELCIUS);

	     pdata_buf[0]=0x02;
	     sprintf(data_buf,"%d",temperature);
	     memcpy(&pdata_buf[1],data_buf,3);
	     printf("temp_data:%s\n",pdata_buf);
	#endif
#if light_sensor
     int16_t illumination;
      illumination=60;
 //     modbus_init();
 //    illumination= modbus_get();
     printf("illumination_data:%d\n",illumination);

     data_buf[0]=0x00;
     data_buf[1]=0xff&(illumination>>8);
     data_buf[2]=0xff&illumination;
         pdata_buf[0]=0x04;

          memcpy(&pdata_buf[1],data_buf,3);
          printf("temp_data:%s\n",pdata_buf);
#endif
#if bh1750_sensor
               int16_t illumination;
               illumination=60;
               bh1750_init();
               illumination= bh1750_light();
               printf("illumination_data:%d\n",illumination);

               data_buf[0]=0x00;
               data_buf[1]=0xff&(illumination>>8);
               data_buf[2]=0xff&illumination;
               pdata_buf[0]=0x04;

               memcpy(&pdata_buf[1],data_buf,3);
               printf("temp_data:%s\n",pdata_buf);

#endif
	         uint8_t sum = 0;
	   		 udp_tx_info->buf[0]        = udp_header[0];
	   		 udp_tx_info->buf[1]        = udp_header[1];
	   		 udp_tx_info->buf[2]        =version[0];
	   		 udp_tx_info->buf[3]        =  DATA_SEND ;                        //0x01
	   		 udp_tx_info->buf[4]=user.userid[3];
	   		 udp_tx_info->buf[5]=user.userid[2];
	   		 udp_tx_info->buf[6]=user.userid[1];
	   		 udp_tx_info->buf[7]=user.userid[0];
	   		 udp_tx_info->buf[8]        = K-8;
	   		 memcpy(&udp_tx_info->buf[9],udp_id,K-8);
	   		 memcpy(&udp_tx_info->buf[K+1],device_type,4);

	   		 udp_tx_info->buf[K+5]    = 0x00;
	   		 udp_tx_info->buf[K+6]    = 0x14;

	   		 memcpy(&udp_tx_info->buf[K+7],pdata_buf,20);

	   		 sum = calac_checksum(udp_tx_info);
	   	 	 udp_tx_info->buf[K+27]   = sum;

	   		 udp_tx_info->buf[K+28]   = 0x0D;
	   		 udp_tx_info->buf[K+29]   = 0x0A;

	   		 udp_tx_info->len = K+30;
}