单片机设计_远程控制大棚种植系统(STM32)

想要更多项目私wo!!!

一、电路设计

​​​​​系统示意图

硬件系统 

系统由五个单片机系统组成的,其中51系列的单片机四个,STM32F407单片机一个,各个子系统之间通过NRF24L01无线模块进行通信。

系统硬件组成框图​​​​

 主控制板主要由STM32F407探索板、无线通信模块以及USB转串口模块组成。主控制板负责对两个大棚传递上来的信息进行处理,打包之后发送给上位机,同时还负责将上位机下达的指令传递给两个大棚。 

主控制板硬件组成框图

 大棚控制板主要由STC12C5A60S2单片机、12864LCD显示、光耦隔离、继电器、无线通信模块组成。大棚控制板负责控制大棚内部装置以及转发大棚采集板采集上来的数据,一旦收到主控制板发送的信号,大棚控制板将对相应的装置进行控制。 

大棚控制板硬件组成框图

大棚采集板主要由STC12C4052AD单片机、光照强度传感器、土壤湿度传感器、空气温湿度、无线通信模块以及供电电池组成。大棚采集板负责采集大棚内部的各项数据,之后发送给大棚控制板。 

大棚采集板硬件组成框图

 软件系统

上位机软件使用微软公司的Visual Basic语言编写。上位机界面通过USB转串口模块与主控制板进行通信,以获取两个大棚内部的环境数据和对大棚内部设施进行控制,同时上位机软件还可以将环境数据保存到数据库中,以便日后的查询。

上位机软件界面

 二、运行结果

 三、部分代码

#include "main.h"

u8 flag,j,ii,tf,temp;
u8 TxBuf[13]={0x0f,0x0f,0x0f,0x0f,0x0f,0x00,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa,0xaa};
u8 RxBuf0[13]; 
u8 RxBuf1[13]={50,50,50,50,50,50,50,50,50,50,50,50,50};
u8 RxBuf[26]; 
u8 RX0_flag=0,RX1_flag=0;


int main(void)
{
	
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	//中断向量配置
	LED_Init();			//初始化LED		
	COM3Init(9600);		//串口3初始
	MY_SPI_Init();
	if(NRF24L01_Check())
	{
		GPIO_SetBits(GPIOD, GPIO_Pin_14);
	}
	else
	{
		GPIO_SetBits(GPIOD, GPIO_Pin_13);	
	}	
	NRF24L01_Init();
	NRF24L01_TxPacket(TxBuf);
	NRF24L01_Write_Reg(WRITE_REG_NRF+STATUS,0XFF);
	
	tf=0;
	
	while(1)
	{
		if(flag)				//如果PC给它发了指令,则往下发送
		{
			USART_Cmd(USART3, DISABLE);	//关串口
			NRF24L01_Write_Reg(WRITE_REG_NRF+CONFIG, 0x0e);//配置为发送
			for(ii=0;ii<7;ii++)
			{
				temp=(j&0x80);
				j=(j<<1);
				if(temp)TxBuf[ii]=0xf0;
				else TxBuf[ii]=0x0f;					
			}
			NRF24L01_TX_Mode(TxBuf[5]);
			NRF24L01_TxPacket(TxBuf);
			NRF24L01_Write_Reg(WRITE_REG_NRF+STATUS,0XFF);
			delay_ms(10);
			NRF24L01_Init();//当发送完毕后,重新把通道0配置为1号大棚,通道1为2号大棚
			flag=0;
			USART_Cmd(USART3, ENABLE); 
		}
		
		NRF24L01_Write_Reg(WRITE_REG_NRF+CONFIG, 0x0f);
		tf=NRF24L01_switch();				//判断通道
		switch (tf)
		{
			case 0: NRF24L01_RxPacket(RxBuf0);	//0通道为一号大棚
					RX0_flag=1; 
					break;
				
			case 1: NRF24L01_RxPacket(RxBuf1);	//1通道为二号大棚
					RX1_flag=1;
					break;						 	
		}
		if(RX0_flag|RX1_flag)
		{
			for(ii=0;ii<13;ii++)RxBuf[ii]=RxBuf0[ii];
			for(ii=13;ii<26;ii++)RxBuf[ii]=RxBuf1[ii-13];
			for(ii=0;ii<26;ii++)
			{
				USART_SendData(USART3,RxBuf[ii]);
				while(!USART_GetFlagStatus(USART3,USART_FLAG_TC));
				USART_ClearFlag(USART3,USART_FLAG_TC);
			}
			RX0_flag=0;
			RX1_flag=0;		
		}
// 		GPIO_SetBits(GPIOD, GPIO_Pin_15);
// 		delay_ms(300);
// 		GPIO_ResetBits(GPIOD, GPIO_Pin_15);
// 		delay_ms(300);
	}		
    		
}

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值