цифровая электроника
вычислительная техника
встраиваемые системы

 
» » » Подключение PSoC 4 к датчику температуры и влажности DHT11 по интерфейсу 1-Wire

Подключение PSoC 4 к датчику температуры и влажности DHT11 по интерфейсу 1-Wire

Автор: Mike(admin) от 19-12-2016, 16:35

Несмотря на широкое распространение стандартных микроконтроллеров, микросхемы с переконфигурируемой периферией типа PSoC сегодня набирают популярность. Благодаря их возможностям можно довольно легко реализовать нестандартные или не столь широко распространенные интерфейсы.


Подключение PsoC 4 к датчику температуры и влажности DHT11 по интерфейсу 1-Wire

В данном материале будет показано, как можно подключить PSoC4 к датчику температуры и влажности DHT11 по интерфейсу 1-Wire.


Интерфейс 1-wire является одним из обычно используемых протоколов для подключения небольших недорогих устройств, таких как цифровые датчики температуры и влажности. Этот протокол по своей сути похож на I2C, но в данном случае используется один информационный провод. Он специально разработан для низкой пропускной способности и низких скоростей передачи данных.


Для программирования PSoC4 воспользуемся средой Cypress PSoC Creator. Для того, чтобы создать проект нужно нажать Files - New – Project. Далее следует указать имя проекта и его расположение. После успешного создания проекта следует открыть TopDesign.cysch и добавить на рабочее пространство следующие компоненты: Digital Bidirectional Pin, UART(SCB mode), Bootloadable.


Подключение PsoC 4 к датчику температуры и влажности DHT11 по интерфейсу 1-Wire

Теперь нужно настроить компонент bootloadble, для чего следует нажать на нем дважды левой кнопкой мыши. Появится окно, в котором нужно выбрать вкладку Dependancies. Здесь нужно выбрать директории HEX- и ELF-файлов, генерируемые средой для данного проекта.


Подключение PsoC 4 к датчику температуры и влажности DHT11 по интерфейсу 1-Wire

Далее следует сконфигурировать компоненты Digital Pin и UART. Digital Pin, носящий название DHT, должен быть подтянут к питанию через резистор. Для этого следует выбрать Resstive Pull up в разделе Drive mode.


Подключение PsoC 4 к датчику температуры и влажности DHT11 по интерфейсу 1-Wire

В UART нужно установить скорость 115200.


Подключение PsoC 4 к датчику температуры и влажности DHT11 по интерфейсу 1-Wire

Теперь необходимо перераспределить линии ввода/вывода (GPIO), открыв Pins и с помощью выпадающего списка назначив:


UART\rx : P4[0]
UART\tx : P4[1]
DHT : P0[0]


Далее следует открыть шаблон основной программы main.c и вставить в нее сначала функцию считывания выходного сигнала датчика DHT11, которая приведена ниже.



static int temperature=99;
static int humidity=99;

int DHTread() 
{     
   uint8 IState;
   IState=CyEnterCriticalSection();  
   uint8 bits[5]; 
	uint8 cnt = 7; 
	uint8 idx = 0; 
   int   calc=0; 
   int   timeout=0; 
   for (i=0; i< 5; i++)  
       bits[i] = 0; 
   DHT_Write(0u); 
   CyDelay(19); 
   DHT_Write(1u); 
   while(DHT_Read()==1) 
   { 
       timeout++; 
       if(timeout>500) 
           goto r99;
   } 
   while(DHT_Read()==0) 
   {         
       timeout++; 
       if(timeout>500) 
           goto r99; 
   } 
   calc=timeout; 
   timeout=0; 
   while(DHT_Read()==1); 
   for (i=0; i<40; i++) 
	{ 
       timeout=0; 
       while(DHT_Read()==0); 
       while(DHT_Read()==1) 
           timeout++; 
       //Data acquiring point 
       if ((timeout) > (calc/2)) 
           bits[idx] |= (1 << cnt); 
       if (cnt == 0)
   	{ 
   		cnt = 7;
   		idx++; 
   	} 
   	else cnt--; 
   } 
   humidity    = bits[0];  
   temperature = bits[2];  
   CyExitCriticalSection(IState); 
   CyDelay(1); 
   return 0; 
   r99:
       humidity    = 99;  
       temperature = 99;  
       CyExitCriticalSection(IState); 
       return 99; 
}

Также нужно изменить функцию main следующим образом:



int main(void) 
{ 
   CyGlobalIntEnable; /* Enable global interrupts. */ 
   char outputstring[40]; 
   UART_Start(); 
   for(;;) 
   { 
       DHTread(); 
       sprintf(outputstring,"Temperature=%i Humidity= %i \r\n"); 
       UART_UartPutString(outputstring); 
       CyDelay(5000);  
   } 
} 

Скомпилируйте проект, загрузите файл с помощью Host Bootloader и наслаждайтесь совместной работой PSoC4 и DHT11.




© digitrode.ru


Теги: PSoC4, DHT11, датчик температуры, 1-Wire



Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий