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

其实接收端的工作量并不是特别大,因为经过发射端的验证,就是将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


登录 或 注册 后才可以进行评论哦!
还没有评论,抢个沙发!