在 Linux 中使用 Mongoose 为 ESP8266 开发网络应用程序在 Linux 中使用 Mongoose 为 ESP8266 开发网络应用程序在 Linux 中使用 Mongoose 为 ESP8266 开发网络应用程序在 Linux 中使用 Mongoose 为 ESP8266 开发网络应用程序
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

在 Linux 中使用 Mongoose 为 ESP8266 开发网络应用程序

在此页

  1. 谁是谁
    1. ESP8266
    2. 猫鼬
    3. Linux

    1. 节点MCU
    2. 连接外部UART-USB转换器

    1. 验证连接
    2. 修复“拒绝访问”错误

    让我们讨论如何在 Linux 中使用 Mongoose Embedded Web Server 开始为 ESP8266 芯片开发网络应用程序。我将使用 Ubuntu,但所有的东西都可以很容易地适应任何 Linux 发行版。

    谁是谁

    既然您开始阅读本文,我假设您了解 Linux、ESP8266 和 Mongoose。所以只有一个简短的介绍。

    ESP8266

    由 Expressif 开发的带有集成 WiFi 的廉价芯片。如果您想深入了解更多细节,请查看官方网站。

    猫鼬

    Mongoose 是 Cesanta 开发的一个核心小于 40kB 的完整的多协议库。在 Cesanta 站点上查找有关它的模式信息。

    Linux

    真的吗? 🙂

    将 ESP8266 连接到您的计算机

    好的,我们首先需要将 ESP8266 芯片连接到您的计算机。您可以通过多种方式做到这一点。

    节点单片机

    如果你有一个 NodeMCU 模块,带有板载 UART 到 USB 转换器,你所要做的就是通过 USB 将模块连接到计算机。吻!

    与外部 UART-USB 转换器连接

    如果您的 ESP 模块没有内部 UART-USB 转换器,您需要一个外部转换器。有很多 - 只需用谷歌搜索即可。

    选择一个适用于 Linux 的(基本上是大多数)并具有 3.3V 引脚并记住:大多数 UART-USB 转换器都有 3.3V 和 5V 引脚,但您不应将 ESP 连接到 5V 引脚。该设备不耐电压,可能会烧坏您的模块。

    现在连接(ESP -> 转换器):

    VCC -> 3.3V

    接地 -> 接地

    RX0 -> TX (不是 RX)

    TX0 -> RX

    CH_PD -> 3.3V

    与 Arduino 连接

    如果您没有 UART-USB 转换器,但有带 3.3V 引脚的 Arduino,您可以轻松地使用它来连接 ESP:

    1. 通过 USB 将 Arduino 连接到计算机
    2. 将Arduino的RESET连接到它的GND:需要禁用主机处理器,因为我们只需要UART-USB模块
    3. 连接 ESP(ESP -> Arduino)
      1. VCC -> 3.3V
      2. GND -> GND
      3. RX0 -> RX0 (不是 TX)
      4. TX0 -> TX
      5. CH_PD -> 3.3V

      验证连接

      如果您的连接正常,ESP 应该显示为一个新的 tty 设备。通常,通过 UART-USB 转换器连接的 NodeMCU 和 ESP 显示为 /dev/ttyUSBx(x=0、1、2 等),而 Arduino 的版本显示为 /dev/ttyACMx(x=0、1、2 等)

      您可以使用命令 dmesg | grep usb 找到你的设备。

      例如,在连接 NodeMCU 之后,您会看到类似这样的内容:

      [  1496.765417] usb 2-3.3: new full-speed USB device number 15 using xhci_hcd
      [ 1496.867729] usb 2-3.3: New USB device found, idVendor=10c4, idProduct=ea60
      [ 1496.867736] usb 2-3.3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
      [ 1496.867740] usb 2-3.3: Product: CP2102 USB to UART Bridge Controller
      [ 1496.867743] usb 2-3.3: Manufacturer: Silicon Labs
      [ 1496.867745] usb 2-3.3: SerialNumber: 4202
      [ 1497.900384] usbcore: registered new interface driver usbserial
      [ 1497.900423] usbcore: registered new interface driver usbserial_generic
      [ 1497.900457] usbserial: USB Serial support registered for generic
      [ 1497.903897] usbcore: registered new interface driver cp210x
      [ 1497.903989] usbserial: USB Serial support registered for cp210x
      [ 1497.904382] usb 2-3.3: cp210x converter now attached to ttyUSB0

      如您所见,NodeMCU 现在可以作为 /dev/ttyUSB0 使用。

      作为最后的检查,使用任何终端连接到新设备;我要用 picocom。这是一个轻量级的终端。在 Ubuntu 中,它可以安装:

      sudo apt install picocom

      试:

      picocom /dev/ttyUSB0 -b 115200

      如果一切正常,您应该会在 picocom 输出中看到 \Terminal ready。

      修复“拒绝访问”错误

      如果 picocom 显示“拒绝访问”,这通常意味着当前用户不是 dialout 组的成员:在 Linux 中,为了访问串行端口,用户必须是该组的成员。

      跑步:

      sudo usermod -aG docker $USER

      命令,注销,重新登录并尝试再次连接 ESP。 \访问被拒绝应该消失了。

      建筑猫鼬

      从这里下载最新的 Mongoose 版本。

      Mongoose 附带了 ESP8266 和 RTOS SDK 的示例。它的教程和示例代码位于此处。

      注意:ESP8266 有两个版本的 SDK。第一个是非操作系统,第二个是基于 RTOS 的。在本文中,我将使用后者。要找出它们之间的区别,请谷歌或在官方论坛上阅读此答案。

      要构建示例,您有两个选择:

      1. 使用 docker 和即用型 docker 镜像
      2. 在您的计算机上安装 SDK 和工具链

      使用 Docker

      这更简单,我相信更好的方法。 Cesanta 的 docker 镜像包含为 ESP 构建 Mongoose 所需的一切(不仅仅是 Mongoose——任何 ESP 应用程序)。因此,您不需要在本地安装东西,您可以轻松地与朋友和同事分享您的代码,这样他们就可以构建您的固件并获得完全相同的结果。

      docker 安装指南可在此处获得。试试看,这真的很简单,您只需要将 docker 存储库添加到您的 Linux 中,然后使用 apt 将其安装为普通程序即可。

      安装 docker 后,转到 mongoose/examples/ESP8266_RTOS 文件夹并运行 build.sh

      在第一次构建时,docker 将下载所需的图像。这可能需要一段时间,具体取决于您的互联网渠道。但是,在 ./bin 文件夹中完成 build.sh 后,您会发现两个 .bin 文件。

      那就是固件。你做到了!

      使用本地SDK

      如果 docker 对您来说太简单或者出于任何原因您想使用本地安装的工具,您也可以这样做。

      这有点难和无聊,但没什么太复杂的。特别是,考虑到 Cesanta 为您构建了一些工具,您不需要从源代码构建它们。

      它是这样工作的:

      1. 从这个 repo 克隆 ESP RTOS SDK。示例 makefile 在 /opt/ESP8266_RTOS_SDK 文件夹中查找它,因此,您可以将克隆的 repo 放入此文件夹或在构建示例之前修改它的路径(见下文)。
      2. 从这个公用文件夹下载 xtensa-lx106-elf.tar.bz2。
      3. 解压 xtensa-lx106-elf.tar.bz2 文件。例如,到 /opt 文件夹:

        sudo tar -xvf xtensa-lx106-elf.tar.bz2 -C /opt

      4. 修改您的 PATH 变量,例如,如果您将工具链解压到 /opt 文件夹,请使用以下命令:

        export PATH=/opt/xtensa-lx106- elf/bin:路径

      (我还建议将此命令添加到您的 .bashrc 或 .profile 文件夹中,以在系统重启后保留更改)

      现在运行:

      $ export SDK_PATH=/opt/ESP8266_RTOS_SDK  # Put your path to SDK here
      $ export BIN_PATH=./bin; mkdir ./bin
      $ make clean; make BOOT=none APP=0 SPI_SPEED=40 SPI_MODE=dio SPI_SIZE_MAP=0

      现在,如果一切安装正确,您将在 ./bin 文件夹中获得固件

      你又做到了!

      闪烁的 ESP

      刷写 ESP8266 的工具有很多。我们将使用 esptool。要使用它,克隆这个 repo 并在你的 PATH 变量中添加 esptool.py 的路径(这是可选的,而且很方便)。

      现在,断开 picocom,如果仍然连接(提示:按 Ctrl+A;Ctrl+D 退出)并运行:

      esptool.py --port /dev/ttyUSB0 --baud 230400 \
         write_flash --flash_mode=dio --flash_size=4m \
         0x00000 ${BIN_PATH}/eagle.flash.bin \
         0x20000 ${BIN_PATH}/eagle.irom0text.bin \
         0x7e000 ${SDK_PATH}/bin/esp_init_data_default.bin

      重要说明:如果您的模块不是 NodeMCU,则需要在刷写前将 GPIO0 接地(将 GPIO0 接地会将模块切换到闪烁模式)。闪烁后,将 GPIO0 与地断开并重新启动 ESP。

      如果没有发生错误,您将看到如下输出:

      Connecting...

      Erasing flash...

      Took 0.58s to erase flash block

      Wrote 35840 bytes at 0x00000000 in 1.8 seconds (157.5 kbit/s)...

      Erasing flash...

      Took 2.02s to erase flash block

      Wrote 301056 bytes at 0x00020000 in 15.4 seconds (156.7 kbit/s)...

      Erasing flash...

      Took 0.11s to erase flash block

      Wrote 1024 bytes at 0x0007e000 in 0.1 seconds (163.5 kbit/s)...

      Leaving…

      准备好!现在设备已刷入您的固件。

      第一个结果

      现在你应该看到一个 \Mongoose WiFi 网络出现。示例设置了一个 AP。使用密码 \Mongoose 连接,然后导航到 http://192.168.4.1/,你会看到一个 \Hello,世界”问候页面。

      恭喜!您只需在 ESP8266 上运行 Web 服务器!

      下一步

      接下来的步骤取决于您。您可以使用所描述的示例作为起点。

      查看它的 user_main.c 文件。它设置一个 WiFi 接入点并启动 Web 服务器。您可以轻松地将 AP 模式更改为站模式(并连接到您的 WiFi 网络)并使用 Mongoose API 来实现您想要的任何东西。这是使用 Mongoose 的常见方式,因此,您可以使用另一个 Mongoose 示例来构建您的程序,并在您的 ESP 设备上拥有 http、tcp、udp、mqtt 和更多功能。

      使用 Espressif 文档(例如用于发现 Mongoose 功能的文档。

      朋克不死!

©2015-2025 艾丽卡 support@alaica.com