随着物联网技术的快速发展,人们对于设备的控制也越来越普遍。Wizwiki-W7500是一款基于ARM Cortex-M0内核的物联网控制器。它拥有高效的以太网通信接口,可以连接网络,并且实现高效稳定的数据传输。在基于Wizwiki-W7500的物联网控制应用中,使用Web服务器来实现远程控制是比较常见的。本文将介绍如何使用Wizwiki-W7500物联网控制器,结合网页服务器实现钢琴弹奏的功能。
一、硬件准备
1. Wizwiki-W7500 小板
2. 按钮开关模块 x 8
3. 平移电位器 x 8
4. 杜邦线若干
5. 面包板 x 1
6. 钢琴音源模块 x 1
7. 电源适配器 x 1
二、搭建硬件电路
1. 连接钢琴音源模块至面包板上
2. 将8个按钮开关模块和8个平移电位器分别连接至面包板上
3. 在面包板上按照以下电路图连接按钮开关模块和平移电位器:
(电路图中,使用SW表示按钮开关模块)
4. 将Wizwiki-W7500小板插入到面包板上,并连接到网线
5. 使用电源适配器给Wizwiki-W7500小板供电
三、软件准备
1. Keil uVision 5 集成开发环境
2. Wiznet HTTP Server Sample 代码库
3. 钢琴音源MIDI命令集
在使用Keil uVision 5 IDE之前,需要根据Wiznet的教程安装并配置准备好Wiznet HTTP Server Sample代码库。
钢琴音源MIDI命令集可以从钢琴音源模块的说明书中查询到。本文中假设钢琴音源模块支持GM命令集。
四、实现钢琴弹奏功能的HTTP服务器代码
HTTP服务器的主要代码如下:
``` c
uint8_t HttpServer_Buff[HTTP_SERVER_BUF_SIZE];
uint8_t Remote_IP[4];
uint16_t Remote_Port;
void HttpResponse(int8_t *URL_Parsed, uint8_t* buf, uint32_t *len)
{
int8_t str_temp[50];
if(strncmp(URL_Parsed, "music_play?note=", 16) == 0)
{
uint8_t note_no;
sscanf((char*)(URL_Parsed+16), "%u", ¬e_no);
if(note_no > 0 && note_no <= 88)
{
sprintf(str_temp, "Note No. %u is playing...
", note_no);
strcat((char*)buf, str_temp);
bt_cmd_midi_send(0, CMD_NOTE_ON, 0, note_no, 0x7F);
*len = strlen((const char*)buf);
return;
}
}
strcpy((char*)buf, "
Error: Invalid Request!\r\n");
*len = strlen((const char*)buf);
return;
}
int8_t HTTP_Server_CB(uint8_t * buf, int32_t * ret_len, uint32_t max_len)
{
int16_t len;
uint8_t * pStr;
uint32_t i;
/* Request Handler */
HttpServer_Req_Handle((const char*)buf, max_len);
/* Parsing URL */
len = Get_VAR_After_TAG_Value((const char*)buf, "?",(uint8_t*)" ", 0);
if (len <= 0) { return 0; }
pStr = (uint8_t*)HTTPServer_GET_URI_Info.URI;
strncpy((char*)HTTPServer_GET_URI_Info.URI, (const char*)buf, len);
*(pStr + len) = '\0';
/* URL Decode */
memcpy(HttpServer_Buff, HTTPServer_GET_URI_Info.URI, len);
HttpServer_Buff[len] = '\0';
URL_Decode(HttpServer_Buff, strlen((const char*)HttpServer_Buff));
/* Add NULL character end of string */
*(HttpServer_Buff + strlen((const char*)HttpServer_Buff)) = '\0';
HttpResponse(HttpServer_Buff, buf, (uint32_t*)&len);
return 0;
}
```
HTTP服务器将URL请求按照格式进行解析,目前支持的请求格式是:
>http://${IP_ADDR}/music_play?note=${NOTE_INDEX}
>
>其中{IP_ADDR}表示HTTP请求的服务器IP地址,NOTE_INDEX表示钢琴按键编号,范围为1~88。
当发起此类HTTP请求时,服务器会解析出NOTE_INDEX,并且根据该值调用bt_cmd_midi_send命令向钢琴音源模块发送相应的MIDI指令,从而实现模拟钢琴弹奏的效果。
五、编译和下载程序
1. 打开Keil uVision 5 IDE
2. 打开"Start>>Device Database"
3. 在搜索框中输入"W7500",选择"W7500-STD"
4. 在文件菜单中,选择"Project>>New Project"
5. 将工程保存在本地磁盘上,并将项目名设为"HTTP_Server_Piano"
6. 选择项目属性,在"Target"选项卡中依次选择:
- Device:W7500
- Arm Compiler 6
- Output:"use custom folder",并选择所在的目录
- Listing:勾选"Enable Listing"
- Debug:关闭此选项
- Code Generation:默认选项均可
- Library:勾选"Use C library"
7. 在Keil IDE中添加网页服务器代码
8. 在Keil IDE中添加W7500的工程代码
9. 在Keil IDE中编译程序
10. 将编译生成的HEX文件下载至Wizwiki-W7500小板中
六、测试和验证
1. 将钢琴音源模块和8个按键开关模块和平移电位器混合在一起,与Wizwiki-W7500一同供电。
2. 使用手机或电脑连接到同一网络中的Wizwiki-W7500小板。
3. 打开浏览器并键入以下网址:
>http://${IP_ADDR}/music_play?note=${NOTE_INDEX}
${IP_ADDR}是Wizwiki-W7500小板的IP地址,${NOTE_INDEX}是钢琴按键编号,范围为1~88。
4. 访问网页并点击键盘上的按钮,观察钢琴音源模块是否会发出相应的声音。如果钢琴音源发出声音,则证明程序实现成功。
壹涵网络我们是一家专注于网站建设、企业营销、网站关键词排名、AI内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。
我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!
发表评论 取消回复