通过 WiFi 将 Johnny-Five(Arduino,Raspberry Pi等)连接到使用 ESP8266 的 PC 上

Johnny-Five 是一个令人惊奇的框架,它允许我们使用 JavaScript 做出令人敬畏的 IOT 项目。但没有系统是完美的,它有自己的缺点,Johnny-Five 使用 firmata 通过有线连接与 Arduino 通信,这严重限制了其能力,它涉及可移植性或灵活性。例如,如果你想创建一个机器人,你不会想要一个有线连接到你的笔记本电脑,随身携带笔记本电脑(尽管看起来很棒)。 这就是我们在本文中要解决的问题。

介绍 ESP8266 WiFi 模块

它是一个非常便宜的芯片,这个小型设备能够托管接入点,或者您可以连接到现有的 WiFi;您可以通过互联网与其进行交互,也可以通过 NODEMCU 或者类似的固件,并且可以单独使用开发板上的 GPIO 编程,但这超出了本文的范围。现在,我们将把它与 Arduino 或任何 Johnny-Five 支持的设备连接起来,是的,这不是唯一的方式,或者有其他几种方式,但是一个快速和便宜的原型,这是最好的。

步骤1:开始

我将使用 Arduino UNO 和 ESP-01(ESP8266的类型)。首先,将固件安装到 esp8266 芯片中,您将需要一个 USB-TTL 转换器。

看起来像这样,虽然可能还有其他变体,但是转换器可能无法提供足够的电流到芯片。

ESP8266 模块运行在 3.3V 输入电压,你不能使用 5V,它会烧毁芯片。如果你的转换器不够好,你可能会面临不必要的重置,这个芯片可能不适用于 Arduino 的 3.3V,所以它更好地为外部供电。

一旦熟悉了芯片的引脚,我们就可以开始接线。

ESP01 连接 USB-TTL

这是连接原理图,ESP8266 转换器和闪存的固件,以便我们以后可以将其与 Arduino 挂钩。我们直接使用转换器供电,如果使用外部电源,则将变频器的接地连接到外部电源的接地。

现在有趣的部分开始了。

在终端(Windows的命令提示符)中运行以下命令来克隆 GitHub 存储库。您可能需要安装 Python 2.7。

git clone https://github.com/anaganisk/johnny-five-esp8266.git

代码库包括固件文件 0x00000.bin0x40000.bin(在 esptool 目录中),以及 ESPTOOL 可用于烧录我们的固件文件。

运行以下命令集来烧录文件:

#navigate to esptool inside cloned directory
cd johnny-five-esp8266/esptool
#First we need to clear the memory of the chip and existing firmware,
#be sure to replace port with your usb controller address
python esptool.py --port /dev/ttyUSB0 erase_flash
#now lets flash the firmware, be sure to replace port with your usb controller address
python esptool.py -p /dev/ttyUSB0 write_flash 0x00000 0x00000.bin 0x40000 0x40000.bin

现在断开 USB-TTL 转换器,断开它(连接),我们现在关心的是圣杯(holy grail)ESP8266(LOL)。

步骤2:神圣的结合

我假设你已经在你的 Arduino 上烧录了标准的 firmata,或者做了(因为你已经在使用有线连接使用了 Johnny-Five ),所以我们把 ESP8266 连接到 Arduino。不要被连接到 ESP8266 的电源设备所淹没,你可以使用别的东西。

连接示意图

将 ESP8266 VCC 和 CH_PD 引脚连接到 3.3V 和 GND 接地,如前所述,不要使用 Arduino 的 3.3V 输出,它不提供足够的电流,使用外部电源,并确保不使用 USB;您的 Arduino 使用 12V 电源适配器供电,或者您可以购买 3.3V 和 5V 双调节器(dual regulator)以减少电线使用。

将 Arduino 的 RX 连接到 ESP8266 的 TX,将 Arduino 的 TX 连接到 ESP8266 的 RX。您可以直接连接它们,也可能需要使用电平转换器。根据 ESP 的数据库(datasheet)可以承受它,不像 VCC 必须连接到 3.3V(记住不要连接 Arduino 到 USB,使用外部电源,否则你最终会混淆它的串行通信能力,这是很糟糕的事情)。

接着,在进入下一步之前,你还要做别的操作,在您之前克隆的文件夹中有一个示例 Johnny-Five 项目。它连接到引脚13 闪烁。打开终端中的目录,然后运行 npm install 以安装依赖关系。

依赖关系如下:

  • Johnny-Five
  • firmata
  • udp-serial (围绕 dgram 打包一个在 udp 上创建一个虚拟串口)

虽然依赖关系正在安装,我们可以设置我们的 ESP8266。如果要使用 ESP8266 作为接入点。然后打开电源,您将找到一个名称为 ESP_XXXX 的接入点,您可以连接到它。默认情况下,网络打开,您可以选择设置密码。更改转到192.168.4.1。

Makeblock Wifi Serial

如果要将 ESP8266 连接到现有网络,请先连接到 ESP_xxx 接入点,然后导航到 192.168.4.1,然后单击连接设置。输入凭据并单击加入,您的 esp 可能会重新启动,现在再次连接到 ESP_xxx 接入点,并且到 192.168.4.1。在 STA_SSID 上记录您的 ESP_8266 的 IP 地址。现在,当您连接到现有网络时,您可以通过此 IP 地址访问此主页。

现在单击串行设置,将 BAUD 速率更改为 57600(默认的固定波特率),如果您选择使用较高的波特率,请确保以相同的波特率闪存了 Arduino。将端口更改为 41234(默认udp连接端口),然后单击提交。

现在打开 index.js 并将 IP 地址更改为 ESP8266 的 IP。

var VirtualSerialPort = require('udp-serial').SerialPort;
var firmata = require('firmata');
var five = require("johnny-five");
var sp = new VirtualSerialPort({
  host: '192.168.0.110' //make sure to change the ip(use 192.168.4.1 if you are using ESP8266 as Access Point)
});
var io = new firmata.Board(sp);
io.once('ready', function(){
    console.log('IO Ready');
    io.isReady = true;

    var board = new five.Board({io: io, repl: true});

    board.on('ready', function(){
        console.log('five ready');
        var led = new five.Led(13);
        led.blink();
    });
});

一旦安装了依赖项,运行 node index.js

Voila,我们做到了。led 正在焕发出新的发现、一切自由的荣耀。现在,您可以使用它来设置现有的 Johnny-Five 项目或创建一个新的。去构建一些惊人的事情。

Credits:

本文的灵感来源于 https://gist.github.com/ajfisher/5fe60fe7d8c49b3223f0 ,以及 Riven 在 https://github.com/Makeblock-official/MeWifiModule 上的惊人工作。

原文链接: https://medium.com/@imkiran/connecting-johnny-five-arduino-raspberry-pi-etc-over-wifi-to-the-pc-using-esp8266-a10348fdb300

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

观光\评论区

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