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

 
» » » Подключение 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



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


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

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

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