【问题标题】:Read and show a serial string from a Pi on a microbit v2在 microbit v2 上读取并显示来自 Pi 的串行字符串
【发布时间】:2021-06-06 16:12:42
【问题描述】:

我有一个通过 USB (/dev/ttyACM0) 连接到运行 Node-Red 的 Raspberry Pi 的 v2 microbit。我想根据从 openweathermap 节点红色模块返回的“天气”图标在 Microbit 上显示一个天气图标。我可以使用节点红色流和“串行”模块提取图标(例如“03d”),但发现无法让它显示在 microbit 上,在节点红色流中显示为“已连接” . 我最终会使用一组(可能真的很难看)'if' 语句从返回的代码中获取图标,但这似乎在一百万英里之外。

我在 Microbit 上的代码(使用 Blocks 构建)是:

serial.set_baud_rate(BaudRate.BAUD_RATE115200)
serial.set_rx_buffer_size(128)

def on_forever():
    basic.show_string(serial.read_string())
    basic.pause(5000)
basic.forever(on_forever)

这只是我尝试过的一个版本。我得到的最接近的是收到以下内容:

[Object Object Object]

...在 microbit 上,这很奇怪,因为流的调试消息显示正确的有效负载正在由 Pi 传递到串行节点。

我知道这可能很明显,很可能是我对“字符串”和“数字”的误解。我已经成功地用不同的 pi 写入了一个不同的 microbit,但那是一个数字,而不是一个字符串。在我的系绳末端。非常感谢所有建议。

TIA,华威

ps。另一个令人沮丧的转折是,我不能使用 Mu 来“借用”其他代码,因为 microbit 是 Mu 1.02 无法使用的版本,而且我也未能更新 (mu)!

[编辑以包含 Node-Red 流程]

[
   {
      "id":"6ed3221a.52c58c",
      "type":"inject",
      "z":"1696e88b.74d287",
      "name":".#.#.#.#.#.#.#.#.#.#.#.#.",
      "props":[
         {
            "p":"payload"
         }
      ],
      "repeat":"10",
      "crontab":"",
      "once":false,
      "onceDelay":0.1,
      "topic":"",
      "payload":".#.#.#.#.#.#.#.#.#.#.#.#.",
      "payloadType":"str",
      "x":560,
      "y":120,
      "wires":[
         [
            "af95ece7.418f2"
         ]
      ]
   },
   {
      "id":"af95ece7.418f2",
      "type":"serial out",
      "z":"1696e88b.74d287",
      "name":"",
      "serial":"92c2150.d6fbee8",
      "x":860,
      "y":120,
      "wires":[
         
      ]
   },
   {
      "id":"92c2150.d6fbee8",
      "type":"serial-port",
      "serialport":"/dev/ttyACM0",
      "serialbaud":"115200",
      "databits":"8",
      "parity":"none",
      "stopbits":"1",
      "waitfor":"",
      "dtr":"none",
      "rts":"none",
      "cts":"none",
      "dsr":"none",
      "newline":"200",
      "bin":"false",
      "out":"time",
      "addchar":"",
      "responsetimeout":"10000"
   }
]

【问题讨论】:

  • 您能说明一下您期望show_string 展示的内容吗?它无法显示 png 文件。只有一个字符串。
  • 我不想展示 png。如前所述,我将添加代码来控制 5x5 mtrix。现在,我需要 microbit 从 Pi 中获取代表天气的 3 个字符串。
  • 我怀疑错误出在连接的另一端。我怀疑 Pi/node-red 没有发送您认为的字符串值。你能做一个只发送一个字符串的简单节点红色吗?或者在您确定它是正确的问题中显示一些调试信息?
  • 嗨@ukBaz 是的 - 我按照下面的方式发送了字符串(这是一个很好的开始),但是我不害怕。它肯定是在 Node-Red 中连接的。
  • 您可能需要使用有关您已完成的节点红色设置和调试的一些信息来更新问题。

标签: raspberry-pi serial-port node-red bbc-microbit


【解决方案1】:

您可能希望发送您想要显示的内容的编码,而不是发送图标名称,以便 micro:bit 上的代码更通用。

例如:.#.#.#.#.#.#.#.#.#.#.#.#. 会显示:

这是通过以下方式完成的:

当通过串行发送数据“数据包”时,我通常会在其中放置一些已知的分隔符。例如:

【讨论】:

  • 我现在就试试。似乎是一个更优雅的解决方案,并且工作是在节点红色的 pi 上完成的。非常感谢你给这个看看。我非常感谢有人代表我付出的任何努力。毫无疑问,您的建议会对我有所帮助,因为处理字符串和数字似乎是我最需要帮助的部分。
猜你喜欢
  • 2021-04-15
  • 1970-01-01
  • 2019-10-30
  • 1970-01-01
  • 2022-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多