本玩法介绍了,如何使用 ESP8266 作为透明的桥梁,让您的 Arduino 和 Johnny-Five 通过 Wifi 连接。即,如何摆脱你的串行电缆,并使用WiFi!
更新:很长时间以来,这个过程使用 5shekel 的 TCP 透明桥(GitHub:https://github.com/5shekel/ESP8266-transparent-bridge ),其工作正常但没有被更新。并且与 Johnny Five 相比,TCP 不是这种消息传递的最佳协议。
因此,有希望使用性能更好的 UDP 来取代它。梁明,已经在来自 MakeBlock 的 Riven、Mark Wolfe、Andy Gelme 和 Luis Montes 的辛勤工作下完成了。
您需要确保您同时拥有 esptool.py 以及 esptool-ck。esptool.py 将帮助您进行测试,您可以与主板进行通信,并将其擦除;esptool-ck 将更好地向 ESP8266 模块烧录程序。
然后将 ESP8266 置于烧录模式(flash mode):
esptool.py --port /dev/ttyDEVICE erase_flash
擦除它的 flash 非常重要,它可以摆脱你可能拥有的任何用户设置。之后,更可读将新的二进制文件,写入到干净的闪存里。二进制文件可以从 gist 上获取( https://gist.github.com/ajfisher/5fe60fe7d8c49b3223f0 ),它由马克·沃尔夫(Mark Wolfe)的项目构建的。
esptool -cp /dev/ttyDEVICE -cd ck -ca 0x00000 -cf 0x00000.bin -ca 0x40000 -cf 0x40000.bin
重置 ESP8266,并退出 flash 模式,您应该看到一个名叫 NBD_XXXXXX
的接入点(AP),其中 XXXXXX 是 mac 地址的最后 6 个十六进制值。所以,我的 AP 看起来像是 NBD_FBE7C3。默认情况下,网络是打开的,但您可以通过连接到 AP,然后将 Web 浏览器指向 192.168.4.1 来配置。
从 Johnny Five 开始,我们使用 UDP-serial 在 UDP 之间创建虚拟串口。
依赖:
npm install johnny-five firmata udp-serial
默认情况下,我们要通信的地址是 192.168.4.1 ,UDP 端口是 1025,所以在选项中确定它们。
加载标准的 firmata,并将 firmata 的速率改为 115200 而不是 57600(在标准示例程序中,搜索57600 - 这是唯一的实例)。编译并上传到arduino。
将 TX/RX 引脚连接到 Arduino 和 ESP01,为每个引脚添加电源,并将接地连接在一起。
之后,在计算机上运行下面的的脚本,它应该可以工作,你将应该得到一个很好的闪烁的 LED。 现在使用这种构架,去做一个无线机器人。
'use strict';
var VirtualSerialPort = require('udp-serial').SerialPort;
var firmata = require('firmata');
var five = require("johnny-five");
//create the udp serialport and specify the host and port to connect to
var sp = new VirtualSerialPort({
host: '192.168.4.1',
type: 'udp4',
port: 1025
});
//use the serial port to send a command to a remote firmata(arduino) device
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');
//Full Johnny-Five support here:
var led = new five.Led(13);
led.blink();
});
});
观光\评论区