用网页server实现钢琴弹奏(使用Wizwiki-W7500)

随着物联网技术的快速发展,人们对于设备的控制也越来越普遍。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内容生成、新媒体营销和短视频营销等业务的公司。我们拥有一支优秀的团队,专门致力于为客户提供优质的服务。

我们致力于为客户提供一站式的互联网营销服务,帮助客户在激烈的市场竞争中获得更大的优势和发展机会!

点赞(107) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部