(1)硬件准备
wifi模块、STM32F1主控板、oled显示屏、语音模块等。
(2)软件准备
keil5、字模生成工具、wifi调试软件。
(3)代码设计(文中只列出部分代码)
1> wifi代码设计
void Esp8266_Server_Init()
{
// //等待启动成功 发送数据 收到数据
// USRT_Send_ATCmd2("Ready"); //查询
USRT_Send_ATCmd("AT\r\n","OK"); //就绪
USRT_Send_ATCmd("AT+CIPMUX=1\r\n","OK"); //设置多链接模式
USRT_Send_ATCmd("AT+CWMODE=3\r\n","OK") ; //设置STATION模式 (AP+STATION)模式 首次设定后面就不用设置了
// USRT_Send_ATCmd((char*)SetCIPMODE,"OK"); //设置透传模式
USRT_Send_ATCmd("AT+CIPSERVER=1,8888\r\n","OK");//开启TCP主机模式
USRT_Send_ATCmd("AT+CIPSEND=?","OK");//开启TCP主机模式
// USRT_Send_ATCmd("AT+CIPSEND=0,20\r\naaa","OK");//开启TCP主机模式
}
2> oled显示屏代码设计
3> 串口代码设计
void recive_number(u8 number)
{
static u8 Start_mode = 0;//模式选择
static u8 rxd_Count_mode = 0;
if(rxd =='+')//模式选择
{
memset(accept_State, 0, length);
rxd_Count_mode = 0;
Start_mode = 1;
}
//----------------------
if(Start_mode == 1)
{
accept_State[rxd_Count_mode++] = rxd;
if(rxd_Count_mode==100)
{
Start_mode=0;
rxd_Count_mode=0;
}
}
}
char *Chinese(int table[],char length,char str[])
{
int i = 0;
int data1[1];
char data2[100];
data1[0] = (table[i + 1] << 8)|table[i];
sprintf(data2,"%s",data1);
strcpy(str,data2);
for(i = 2;i < length; i = i + 2)
{
data1[0] = (table[i + 1] << 8)|table[i];
sprintf(data2,"%s",data1);
strcat(str,data2);
}
return str;
}
void gbk_chinese(char accept_State[],int r_inform[],int length)
{
int i=0;
if(panduan(accept_State)<10)
{
for(i=9;i<length;i++)
{
r_inform[i-9]=accept_State[i];
}
}
else {
for(i=10;i<length;i++)
{
r_inform[i-10]=accept_State[i];
}
}
}
int length2_(int r_inform[])
{
int i=0,length=0;
for(i=0;r_inform[i]!=0;i++)
length++;
return length;
}
4> 语音播报模块程序设计。
5>主函数程序设计。
注:需要完整工程代码,关注并私信!!