在物联网项目中使用Arduino REST API

arduino rest api是一种在arduino与其他外部系统之间交换数据的机制。 利用arduino rest api时,客户端应用程序会读取信息或将信息发送到arduino板。

arduino rest api的典型用例是检索传感器值的外部系统或应用程序。 当不同的系统和电路板连接在一起并交换信息时,该api可以用于物联网项目。 甚至物联网云平台也使用这种机制。 当外部应用程序(客户端)发送请求并arduino回复某些数据时,此功能很有用。

api通过http协议工作,因此这些请求是同步的。 在物联网应用程序中,还有其他协议比http(例如mqtt)更有效。 在arduino充当服务器的客户端-服务器方案中,基于http的arduino rest api扮演着重要角色。 例如,mqtt使用了不同的模式,例如publish-subscriber。

arduino rest api:arest库

为了实现其余的api范例,有一个有趣的库叫做arest。 该库是一个支持其余服务并提供多种功能的框架。 它支持arduino,raspberry pi,es8266等不同的开发板。您可以在arest网站上找到更多信息。 该库易于使用,可以通过arduino ide从arduino库直接下载。

使用这个库,我们可以实现arduino rest api范例,因为这是对arest的支持

  • 读取其余样式的引脚值(reads pin values in rest style)
  • 以其余样式写入图钉值(writes pin values in rest style)
  • 远程素描功能调用(remote sketch function calls)

例如,外部应用程序或系统可以使用简单的http请求读取管脚值。 此外,同一应用或系统可以使用http rest请求来设置固定值。 当我们有一个要在智能手机上运行且希望与arduino板进行交互的应用程序时,此功能很有用。 这种互动是使用arduino rest api进行的。

Arest库的一个有趣方面是能够以休息样式公开arduino素描功能。 这些素描函数可以直接使用rest http请求来调用。

arduino rest api实现

既然我们了解了arduino rest api的基本概念以及如何使用它将arduino与外部系统集成,是时候将其付诸实践了。 在示例中,我们想使用rest api调用来控制led灯条。

草图很简单,因为我们必须专注于arduino rest api。 led灯带是neopixels rgb粘板,并使用adafruit库,因此可以选择单个rgb led颜色。 下图显示了如何将其连接到arduino uno。

arduino rest api
arduino rest api

此图片使用不同的Neopixel组件,但连接方式相同。

使用arduino rest api请求,我们要设置led灯条的颜色。 颜色以十六进制格式作为参数传递给素描函数。 这个例子展示了这个库的强大功能。 arduino代码很简单:

// create arest instance
arest rest = arest();
// neopixel init
adafruit_neopixel pixels = adafruit_neopixel(numpixels, pin, neo_grb + neo_khz800);
void setup()
{
    serial.begin(115200);
    // register rgb function
    rest.function("rgb", setpixelcolor);
    serial.println("try dhcp...");
    if (ethernet.begin(macadd) == 0) {
    serial.println("dhcp fail...static ip");
    ethernet.begin(macadd , ip, mydns, mygateway) ;
    }

    server.begin();
    serial.print("server ip: ");
    serial.println(ethernet.localip());

    pixels.begin();
    serial.println("setup complete.\n");
}
void loop()
{
    // listen for incoming clients
    ethernetclient client = server.available();
    rest.handle(client);
    wdt_reset();
}

int setpixelcolor(string hexcolor)
{
    hexcolor="0x" + hexcolor;
    serial.println("hex color " + hexcolor);
    long n = strtol( &hexcolor[0], null, 16);
    serial.println("n :" + string(n));
    long r = n >> 16;
    long g = n >> 8 & 0xff;
    long b = n & 0xff;
    // set single pixel color
    return 1;
}

我们要在arduino rest api中提供的arduino函数是setcolor。 因此,草图在第36行将其注册为rgb。

让我们在arduino uno板上运行草图,并使用浏览器发出一个简单的http请求。 让我们假设我们要设置红色,结果如下所示:

http://192.168.1.5/rgb?param=_ffff00

这些是一些具有不同led颜色的屏幕截图,它们受浏览器的休息请求控制:

arduino设置绿色
arduino设置绿色
arduino设置蓝色
arduino设置蓝色
arduino设置红色
arduino设置红色
SO资源郑重声明:
1. 本站所有资源来源于用户上传和网络,因此不包含技术服务请大家谅解!如有侵权请邮件联系客服!3187589@qq.com
2. 本站不保证所提供下载的资源的准确性、安全性和完整性,资源仅供下载学习之用!如有链接无法下载、失效或广告,请联系客服处理,有奖励!
3. 您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容资源!如用于商业或者非法用途,与本站无关,一切后果请用户自负!

SO资源 » 在物联网项目中使用Arduino REST API