这个板子也是我做的第二块开发板,同时也是一款物联网开发板。

既然是开发板,那我肯定是把所有模块都打通了;

既然是物联网开发板,也是把物联网打通了才会来画这个开发板。

废话不多说,先上图再详谈:

 上图芯片周围的线看起来连到一起,其实并没有连上,这只是AD缩小后的一个算是BUG的一个问题吧。

关于这个开发板对应的上位机(app)

好了,下面讲讲具体的细节:

1.电源部分,可使用12V电源适配器或者2.54mm的12V接线端子或者USB MIRCO。

 2.功能部分:

1.继电器电路

2.电机驱动电路

3.DS1302时钟电路

 4.按键电路

5.蜂鸣器电路

6.LED显示电路

7.OLED显示电路

8.串口屏显示电路

9.红外模块电路

10.DHT11电路

11.蓝牙模块电路

12.光敏电阻电路

13.ESP8266WIFI模块电路

14.5V电源输出电路

15.3.3V电源输出电路

总的来说,我觉得功能是比较丰富的了,基本把STM32C8T6所有的IO口都使用完了。

亲测是板子是能够连上服务器的,并且互相通信。

这个板子有一个问题就是,7805发烫,原因可能是12V-5V压差太大了,效率变低了。下次可以换一个稳压芯片,或者输入不要是12V,如果是9V,现在这个稳压芯片应该没有这么烫。

改进的地方还可以是板子的大小,弄小一点可能会更好看。

关于物联网的贯通,有时间我会专门用一篇文章来详细介绍,如何从手机APP,通过服务器,发送命令到我们的硬件上,也就是板载了ESP8266芯片的硬件,同时可通过硬件,发送信息到我们的APP上,其中手机与硬件,是远程的,即使距离十万八千里,只要能连上网络,便能通信。

关键代码(忽略乱码,复制过来导致的)

.c

#include "stm32f10x.h"
#include "stm32f10x_it.h" 
#include "led.h"
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "timer.h"
#include "oled.h"
#include "usart2.h"
#include "WIFI.h"
#include "BEEP.h"
#include "JDQ.h"


#define usart2_baund  115200//´®¿Ú2²¨ÌØÂÊ£¬¸ù¾ÝÖ¸ÎÆÄ£¿é²¨ÌØÂʸü¸Ä£¨×¢Òâ£ºÖ¸ÎÆÄ£¿éĬÈÏ57600£©
u8 num[16]={0x01,0x02,3,4,5,6,7,8,9,0,0,0,1,1,1};   

extern char a,b;
int k;

 int main(void)
 {    
     
    delay_init();             //ÑÓʱº¯Êý³õʼ»¯    
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// ÉèÖÃÖжÏÓÅÏȼ¶·Ö×é2
    uart_init(115200);     //´®¿Ú³õʼ»¯Îª9600    
    LED_Init();               //³õʼ»¯ÓëLEDÁ¬½ÓµÄÓ²¼þ½Ó¿Ú 
//TIM3_Int_Init(4999,7199);//10KhzµÄ¼ÆÊýƵÂÊ£¬¼ÆÊýµ½5000Ϊ500ms  

    USART_RX_STA=0;     
    OLED_Init();            //³õʼ»¯OLED 
    OLED_Clear();  
    usart2_init(usart2_baund);
     BEEP_Init();
     BEEP_Init();
     
         u2_printf("\r\n´®¿Ú2²âÊÔ\r\n");      
     
//     
//        OLED_ShowCHinese(5,0,0);//
//        OLED_ShowCHinese(30,0,1);//
//        OLED_ShowCHinese(55,0,2);//
//        OLED_ShowCHinese(80,0,3);//
//        OLED_ShowCHinese(105,0,4);//
     


//OLED_ShowString(25,3,num,16);

for(k=0;k<186;k++)   {USART_RX_BUF[k]=0;}
    
    JDQ=1  ;

     TIM3_Int_Init(999,7199);
     wifi_connect();
     
     

        
      while(1)
        {
                if(         USART_RX_STA&0x8000   )
                            {
                            
                              BEEP=!BEEP;
                                JDQ=!JDQ;
                               LED_ERROR=!LED_ERROR;
                            
                                 USART_RX_STA=0;for(k=0;k<186;k++)   {USART_RX_BUF[k]=0;}
                            
                            }
        
    
        
        }


}
 

led.c

#include "led.h"

//////////////////////////////////////////////////////////////////////////////////	 
//±¾³ÌÐòÖ»¹©Ñ§Ï°Ê¹Óã¬Î´¾­×÷ÕßÐí¿É£¬²»µÃÓÃÓÚÆäËüÈκÎÓÃ;
//ALIENTEK mini¢SSTM32¿ª·¢°å
//LEDÇý¶¯´úÂë	   
//ÕýµãÔ­×Ó@ALIENTEK
//¼¼ÊõÂÛ̳:www.openedv.com
//ÐÞ¸ÄÈÕÆÚ:2012/9/2
//°æ±¾£ºV1.0
//°æÈ¨ËùÓУ¬µÁ°æ±Ø¾¿¡£
//Copyright(C) ¹ãÖÝÊÐÐÇÒíµç×ӿƼ¼ÓÐÏÞ¹«Ë¾ 2009-2019
//All rights reserved									  
////////////////////////////////////////////////////////////////////////////////// 	   

//³õʼ»¯PB5ºÍPE5ΪÊä³ö¿Ú.²¢Ê¹ÄÜÕâÁ½¸ö¿ÚµÄʱÖÓ		    
//LED IO³õʼ»¯
void LED_Init(void)
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);	 //ʹÄÜPA,PD¶Ë¿ÚʱÖÓ
	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;				 //LED0-->PA.8 ¶Ë¿ÚÅäÖÃ
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //ÍÆÍìÊä³ö
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO¿ÚËÙ¶ÈΪ50MHz
 GPIO_Init(GPIOA, &GPIO_InitStructure);					 //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOA.8
 GPIO_SetBits(GPIOA,GPIO_Pin_11);						 //PA.8 Êä³ö¸ß

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;	    		 //LED1-->PD.2 ¶Ë¿ÚÅäÖÃ, ÍÆÍìÊä³ö
 GPIO_Init(GPIOA, &GPIO_InitStructure);	  				 //ÍÆÍìÊä³ö £¬IO¿ÚËÙ¶ÈΪ50MHz
 GPIO_SetBits(GPIOA,GPIO_Pin_12); 						 //PD.2 Êä³ö¸ß 
}
 

 wifi.c



#include "sys.h"
#include "usart.h"
#include "timer.h"
#include "delay.h"
#include "led.h"
#include "oled.h"
#include "usart2.h"



unsigned char i;
int hong=0;
int ii=1;
extern char a;
extern char b;
char cc;


void wifi_connect(void)
{

	  printf("AT\r\n");                                 while( ! ( USART_RX_STA&0x8000) ) ;
    USART_RX_STA=0;for(i=0;i<186;i++)   {USART_RX_BUF[i]=0;}
	 
	  printf("AT+CWMODE=1\r\n");                        while( ! ( USART_RX_STA&0x8000) ) ;
	 	USART_RX_STA=0;for(i=0;i<186;i++)   {USART_RX_BUF[i]=0;}
				
	  printf("AT+RST\r\n");  delay_ms(3600);  //ÒòΪ¸´Î»µÄʱºò8266ÏÈ·µ»ØOKÔÙ·µ»ØÒ»´®¶«Î÷£¬ÕâÀï²»Óÿ¨si
	 	USART_RX_STA=0;for(i=0;i<186;i++)   {USART_RX_BUF[i]=0;}
		 
		
		
		while(ii)
		{
			printf("AT+CWJAP=\"Hzy\",\"15978014520\"\r\n");    while( ! ( USART_RX_STA&0x8000) ) ;

//			delay_ms(3000); delay_ms(3000); delay_ms(3000); 
			if(  USART_RX_STA&0x8000    )   ii=0;
		}
						
	USART_RX_STA=0   ;for(i=0;i<186;i++)   {USART_RX_BUF[i]=0;}	
		
		
		
		printf("AT+CIPMUX=1\r\n");                         while( ! ( USART_RX_STA&0x8000) ) ;
		USART_RX_STA=0;for(i=0;i<186;i++)   {USART_RX_BUF[i]=0;}
				
		printf("AT+CIPSERVER=1\r\n");                       while( ! ( USART_RX_STA&0x8000) ) ;
		USART_RX_STA=0;for(i=0;i<186;i++)   {USART_RX_BUF[i]=0;}
	
		printf("AT+CIPSTART=0,\"TCP\",\"129.204.126.65\",1314\r\n");     while( ! ( USART_RX_STA&0x8000) ) ; 
	  USART_RX_STA=0;for(i=0;i<186;i++)   {USART_RX_BUF[i]=0;}
			

		
		
		printf("AT+CIPSEND=0,9\r\n");             while( ! ( USART_RX_STA&0x8000) ) ;
	 	USART_RX_STA=0;for(i=0;i<186;i++)   {USART_RX_BUF[i]=0;}
	 
	 	printf("CONN_9527\r\n");          while( ! ( USART_RX_STA&0x8000) ) ;
	 	USART_RX_STA=0;for(i=0;i<186;i++)   {USART_RX_BUF[i]=0;}


		
//																		a=0x52;   //½«½áÊø·û»»ÎªERROR   µÄ  OR   
//																		b=0x4F;

//												for(i=0;i<66;i++)   USART_RX_BUF[i]=0;																	
//										    printf("AT+CIPSTART=0,\"TCP\",\"129.204.126.65\",1314\r\n"); while( ! ( USART_RX_STA&0x8000) ) ;
//		
//		
//			          
//																	for(i=0;i<176;i++) 
//																							{														
//																											USART_SendData(USART2,USART_RX_BUF[i]);  
//																											while( USART_GetFlagStatus(USART2,USART_FLAG_TC)!= SET);  										 
//																							}	
//																		
//																						 OLED_ShowString(0,1,"0123456789AB",8);	
		
	     if(hong==0)  TIM3_Int_Init(9999,7199);
       hong=1;
		
	
		


}



int cx;
int hd;
int chaxun(void)
	{
  hd=0;
				for(cx=0;cx<100;cx++)
					{
							 if( USART_RX_BUF[cx]==0x4c )   
							 {
								 if(    USART_RX_BUF[cx+1]==0x52 )  
										 {
										 if(    USART_RX_BUF[cx+2]==0x45 )  
												 {
												 if(    USART_RX_BUF[cx+3]==0x41 )  
														 {
														 if(    USART_RX_BUF[cx+4]==0x44 )  
																 {
																						if(    USART_RX_BUF[cx+5]==0x59 ) 
																														hd=1;
																											 else hd=0;
																 }
														 }
																	
												 }									 
														
										 }
										
							 
							 }						 		
					}

				
					if(hd==1)  return 1;
				       else
						         return 0;
	}
	
	
	
	
	

	int hd2;

	int DISCONNECT_TEST(void)
	{
  hd2=0;
				for(cx=0;cx<125;cx++)
					{
							 if( USART_RX_BUF[cx]==0x6E )   
							 {
								 if(    USART_RX_BUF[cx+1]==0x6F )  
										 {
										 if(    USART_RX_BUF[cx+2]==0x20 )  
												 {
												 if(    USART_RX_BUF[cx+3]==0x69 )  
													 {
															if(    USART_RX_BUF[cx+4]==0x70 )  
													 
																			hd2=1;
																	else hd2=0;
													 }
													 												 												
												 }									 
														
										 }
										
							 
							 }						 		
					}

					
					if(hd2==1)  return 1;
					else return 0;
	}

	
	
int hd3;

int CONNECT_TEST(void)
	{
  hd3=0;
				for(cx=0;cx<125;cx++)
					{
							 if( USART_RX_BUF[cx]==0x4F )   
							 {
								if( USART_RX_BUF[cx+1]==0x4B ) 
								       hd3=1;
								
									else hd3=0;
							 
							 }						 		
					}

					
					if(hd3==1)  return 1;
				       else 
										return 0;
					
					
	}
	

beep.c

#include "BEEP.h"



void BEEP_Init(void)
{
 
 GPIO_InitTypeDef  GPIO_InitStructure;
 	
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);	 //ʹÄÜPA,PD¶Ë¿ÚʱÖÓ
	
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;				 //LED0-->PA.8 ¶Ë¿ÚÅäÖÃ
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //ÍÆÍìÊä³ö
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO¿ÚËÙ¶ÈΪ50MHz
 GPIO_Init(GPIOB, &GPIO_InitStructure);					 //¸ù¾ÝÉ趨²ÎÊý³õʼ»¯GPIOA.8
 GPIO_SetBits(GPIOB,GPIO_Pin_15);						 //PA.8 Êä³ö¸ß

				
}
 


Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐