基于ESP8266的STM32物联网开发板
这个板子也是我做的第二块开发板,同时也是一款物联网开发板。
既然是开发板,那我肯定是把所有模块都打通了;
既然是物联网开发板,也是把物联网打通了才会来画这个开发板。
废话不多说,先上图再详谈:


上图芯片周围的线看起来连到一起,其实并没有连上,这只是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Ϊ500msUSART_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 Êä³ö¸ß
}
更多推荐
所有评论(0)