上一期我们完成了金属探测器的发送端,本期我们接着介绍金属探测器的接收端装置。

 其实接收端的工作量并不是特别大,因为经过发射端的验证,就是将nRF24L01所发送过来的数据即可。

 首先是主控设计,仍旧是采用STM32F103作为主控,外接一组硬件SPI用来控制nRF24L01无线模块。

 根据引脚的实际布局,分配控制LED的引脚,引脚分配得当可以减少后面的走线难度。

一个引脚控制有源蜂鸣器来进行声音提示。

 最后就是电源部分,7805的作用是防止1117有过大的压差导致不工作,所以先降压到5V,再进一步降压到3.3V。

 while (1)
  {

    if(NRF24L01_RxPacket(tmp_buf)==0)
    {
       if(tmp_buf[0] != 0 && (HAL_GPIO_ReadPin(GPIOA,GPIO_PIN_10)))  
        {
            HAL_GPIO_WritePin(BEEP_GPIO_Port,BEEP_Pin,1);
            HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, (tmp_buf[0] & (1 << 0)) ? GPIO_PIN_SET : GPIO_PIN_RESET);
            HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, (tmp_buf[0] & (1 << 1)) ? GPIO_PIN_SET : GPIO_PIN_RESET);
            HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, (tmp_buf[0] & (1 << 2)) ? GPIO_PIN_SET : GPIO_PIN_RESET);
            HAL_GPIO_WritePin(LED4_GPIO_Port, LED4_Pin, (tmp_buf[0] & (1 << 3)) ? GPIO_PIN_SET : GPIO_PIN_RESET);
            HAL_GPIO_WritePin(LED5_GPIO_Port, LED5_Pin, (tmp_buf[0] & (1 << 4)) ? GPIO_PIN_SET : GPIO_PIN_RESET);
            HAL_GPIO_WritePin(LED6_GPIO_Port, LED6_Pin, (tmp_buf[0] & (1 << 5)) ? GPIO_PIN_SET : GPIO_PIN_RESET);
        }
        else
        {
            HAL_GPIO_WritePin(BEEP_GPIO_Port,BEEP_Pin,0);
            HAL_GPIO_WritePin(LED1_GPIO_Port, LED1_Pin, GPIO_PIN_RESET);
            HAL_GPIO_WritePin(LED2_GPIO_Port, LED2_Pin, GPIO_PIN_RESET);
            HAL_GPIO_WritePin(LED3_GPIO_Port, LED3_Pin, GPIO_PIN_RESET);
            HAL_GPIO_WritePin(LED4_GPIO_Port, LED4_Pin, GPIO_PIN_RESET);
            HAL_GPIO_WritePin(LED5_GPIO_Port, LED5_Pin, GPIO_PIN_RESET);
            HAL_GPIO_WritePin(LED6_GPIO_Port, LED6_Pin, GPIO_PIN_RESET);
        }
    }
    HAL_Delay(20);
  }

代码方面非常的简单,根据nRF24L01接收的数据点亮对应的LED灯。



嘉立创PCB

还没有评论,抢个沙发!