ESP8266 + Firmata + Johnny-Five 制作 NodeBot

ESP8266 是一款支持 WiFi 功能的 SoC,具有许多种不同的形状和形式。它可以运行使用 lua 脚本的 nodemcu 固件。我们中的大多数人只是用 ESP8266 社区自己提供的 Arduino 核心编程。

而现在,您可以使用Javascript进行编程!这是得益于 soundanalogous,jacobrosenthal 和 jnsbyr(工作于 Firmata 固件上)和 Johnny-five 库的 rwaldron 等人的伟大工作。

而本玩法,这只是一个关于如何使其工作的指南。

除此:

  1. ESP8266 将作为 WiFi 服务器。将其配置为 WiFi 客户端的选项将在未来添加。
  2. Analog Read 暂时似乎不能工作,但是正在努力中。
  3. 这是全新的,依赖关系可能会经常更新。

在这里,我们将使用 StandardFirmataWiFi 来将 ESP8266 作为服务器,连接到网络,并在连接到同一网络的主机上运行 node.js J-5(Johnny-Five)脚本,以闪烁 13 引脚上的 LED。

本玩法,在 mac os X 系统上测试完成的

步骤1:配料

在本文中,我们所需要的库有:

  • 最新的 Arduino IDE(1.6.8)
  • ESP8266 Core
  • 最新的 Arduino Firmata 库,能支持 ESP8266
  • 最新的 Johnny-five 库
  • EtherPortClient

在计算机端,我们需要的东西有:

  • 主机(计算机,Raspberry Pi等)能够运行 Node.js
  • 耐心
  • 根据您的电路板,您可能还需要一个 USB 串行转换器

此外,**我假设您有使用基于 Arduino IDE 上的 ESP8266 编程经验。

步骤2:一些信息

Johnny-Five

JavaScript 机器人和 IoT 编程框架,由 Bocoup 开发。

StandardFirmataWiFi

StandardFirmataWiFi 是一个 WiFi 服务器应用程序。您将需要一个 Firmata 客户端库用来进行网络传输,以建立与 StandardFirmataWiFi 的连接。要使用 StandardFirmataWiFi,您需要具有以下开发板或扩展板中的一个:

  • Arduino WiFi Shield
  • Arduino WiFi Shield 101
  • Arduino MKR1000板(内置WiFi 101)
  • ESP8266 WiFi 板(与 ESP8266 Arduino Core 兼容)

EtherPortClient

是一个用于 Etherport 的客户端虚拟串行端口,用于实现 firmata 兼容的开发板和网络共享集线器,以便于远程实体控制电路板。

步骤3:Arduino IDE 配置

  1. **获取最新 Arduino IDE
  2. 安装 ESP8266 Core(参考《使用 ESP8266 制作 WiFi 干扰器》 中的步骤2)
  3. 下载最新的 Arduino Firmata 库(通过 Sketch > Include Library > Manage LibrariesFilter 下载最新)

步骤4:做出一些修改

1.打开 Arduino IDE 示例(example) 中的 StandardFirmataWiFI 项目。 2.它将打开 StandardFirmataWiFI.ino 文件,以及 wifiConfig.h 3.根据你的硬件情况,取消注释/注释(选项 A、B、C)。 默认情况下启用选项 A。 4.它已经为 ESP8266 配置好了。找到步骤 2:

// STEP 2 [REQUIRED for all boards and shields]
// replace this with your wireless network SSIDchar ssid[] = "your_network_name";

根据你的情况修改 "your_network_name" 成你的 WiFi 名称。

5.在这个例子中,我们使用DHCP,所以我们没有配置步骤 3。如果你需要使用静态IP,请按照 wifiConfig.h 文件提供的说明修改。 6.配置您的家庭网络通行证:默认值为选项 A:

/* * OPTION A: WPA / WPA2 * * WPA is the most common network security type. A passphrase is required to connect to this type. * * To enable, leave #define WIFI_WPA_SECURITY uncommented below, set your wpa_passphrase value * appropriately, and do not uncomment the #define values under options B and C */

#define WIFI_WPA_SECURITY
#ifdef WIFI_WPA_SECURITY

char wpa_passphrase[] = "your_wpa_passphrase";
#endif  //WIFI_WPA_SECURITY

7.使用正确的配置烧录到你的 ESP8266 开发板中

例如,我使用 NodeMCU 0.9 开发板。我就使用它和 FTDI-TTL 适配器来编程 MCU。

您需要选择适当的端口设置。

Arduion IDE 可能会说文件是只读的,只需保存为另一个副本

步骤5:设置 Johnny-Five

安装 Johnny-Five

安装 Johnny-Five 之前,需要先安装 Node.js 环境(参考:Node.js + Raspi-io + Johnny-Five 控制 Raspberry Pi

安装 Johnny Five 有两种方式

1.代码clone

git clone git://github.com/rwaldron/johnny-five.git && cd johnny-five
npm install

2.npm包安装

npm install johnny-five

除此,我们还需要 Etherport 客户端库:

npm install etherport-client

编写 JavaScript 客户端代码

在johnny-five目录中创建一个js文件,并将其命名。

然后,粘贴下面的代码:

将第18行更新到 ESP8266 开发板的地址:

/*
 * Update line 18 below to the ESP8266 board address
 *
 * Enable Serial debugging by uncommenting //#defin SERIAL_DEBUG in StandardFirmataWiFi
 * (save a copy of StandardFirmataWiFi first)
 *
 * On startup (you may have to reset the ESP board because it starts up really fast
 * view the Serial output to see the assigned IP address (if using DHCP)
 * Or if you want to give the board a static IP (not use DHCP) then uncomment the
 * following lines in wifiConfig.h and update to your chosen IP address:
 * #define STATIC_IP_ADDRESS  10,0,0,17
 * #define SUBNET_MASK        255,255,255,0 // REQUIRED for ESP8266_WIFI, ignored for others
 * #define GATEWAY_IP_ADDRESS 0,0,0,0       // REQUIRED for ESP8266_WIFI, ignored for others
 */
var Firmata = require("firmata").Board;
var EtherPortClient = require("etherport-client").EtherPortClient;
var board = new Firmata(new EtherPortClient({
  host: "192.168.1.103",
  port: 3030
}));
board.on("ready", function() {
  console.log("READY!");
  console.log(
    board.firmware.name + "-" +
    board.firmware.version.major + "." +
    board.firmware.version.minor
  );
  var state = 1;
  var lastVal = 0;
  this.pinMode(2, this.MODES.OUTPUT);
  setInterval(function() {
    // blinks the blue LED on a HUZZAH ESP8266 board
    // for other boards, wire an LED to pin 2 or change
    // the pin number below
    this.digitalWrite(13, (state ^= 1));
  }.bind(this), 500);
  // this does not seem to be working - need to look into it
  // one other thing is ESP uses a 1V reference for analog so
  // once this works, it will need scaling
  this.analogRead(0, function(value) {
    if (value != lastVal) {
      console.log(value);
    }
  });
});

步骤6:It works!

所以现在,在使用 StandardFirmataWifi 固件闪烁您的 ESP8266 开发板后,我们可以运行基本的 Johnny-five 脚本。

node "your_file_name".js

根据刚创建的文件名,更改命令行上的文件名。

现在,你就会看到 ESP8266 13 引脚上的 LED 闪烁。

现在你可以从这里做出令人敬畏的项目。可能性是无止境的。Johnny-five 已经有相当多的例子了。

再一次。任何帮助这个令人敬畏的功能的人,都可以大肆宣传。对不起,如果没有人无意中给任何人。

原文链接:http://www.instructables.com/id/ESP8266-Firmata-J5-NodeBot/

尚未评分
您的评分将帮助我们做出更好的玩法

观光\评论区

Copyright © 2017 玩点什么. All Rights Reserved.