[IoT自製玩具][Ameba Z2][Note 4] 手机控制LED(2)- httpd & 控制LED

要到IP之后,就可以用手机透过网路控制Amebaz2。先用最阳春的http就好...

1. Enable httpd

httpd範例SDK早就写好了,打开开关即可。

档案: project/realtek_amebaz2_v0_example/inc/platform_opts.h

#define CONFIG_EXAMPLE_HTTPD                   1 // 0改成1

烧完firmware重开机,手机就可以连到板子的阳春网页(没错,连网页都写好了)。
http://img2.58codes.com/2024/20112439zjtPSCBz9H.png

2. 控制LED

因为我要透过http POST来控制LED,所以先把GPIO的code写在这个档案 component/common/example/httpd/example_httpd.c

// 在global区域加上以下几行#include "gpio_api.h"// Ref. ambz2_sdk/project/realtek_amebaz2_v0_example/example_sources/gpio_light_weight/scr/main.c#define GPIO_LED_PIN    PA_23  // LED 一脚插A23,一脚插GNDextern void gpio_direct_write(gpio_t *obj, BOOL value);gpio_t gpio_led;// http POST之后执行的functionvoid homepage_cb(struct httpd_conn *conn){// 中间略if(body) {        // read HTTP body        memset(body, 0, content_len + 1);        read_size = httpd_request_read_data(conn, body, content_len);                    // 中间略        // LED        // 根据阳春SDK网页,body就是POST收下来的资料,内容会是text1=XXX&text2=XXX,因为我懒得做字串切割(之后再做),就先抓最后一个char就好        if (body[strlen((char const*)body)-1] == '1') {            gpio_direct_write(&gpio_led, 1);            printf("[HANA] LED on\n");        }        else if (body[strlen((char const*)body)-1] == '0') {            gpio_direct_write(&gpio_led, 0);            printf("[HANA] LED off\n");// 入口点static void example_httpd_thread(void *param){// 中间略    // 初始 LED control pin    gpio_init(&gpio_led, GPIO_LED_PIN);    gpio_dir(&gpio_led, PIN_OUTPUT); // direction    gpio_mode(&gpio_led, PullNone);  // No pull

拿起手机,打开网页,Text1随便输入,只要确保Text2的最后一char是1就好
http://img2.58codes.com/2024/20112439lr9d9A0Qe6.png

之后手机返回POST讯息,板子上LED灯也亮了!
http://img2.58codes.com/2024/20112439Jiy70P7iIp.png

关灯只要把Text2的最后一char改0就好了,很迅速喔。
http://img2.58codes.com/2024/emoticon34.gif


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章