Raspberry pi 从microbit v2上的Pi读取并显示串行字符串

Raspberry pi 从microbit v2上的Pi读取并显示串行字符串,raspberry-pi,serial-port,node-red,bbc-microbit,Raspberry Pi,Serial Port,Node Red,Bbc Microbit,我有一个v2微比特通过USB(/dev/ttyACM0)连接到一个Raspberry Pi,它运行的是Node Red。我想根据openweathermap节点红色模块返回的“天气”图标,在微博客上显示一个天气图标。我可以使用节点红色流和“串行”模块提取图标(例如“03d”),但我发现不可能让它显示在microbit上,microbit在节点红色流中显示为“已连接”。我最终将使用(可能非常难看)从返回的代码中获取图标的一组“if”语句,但这似乎有一百万英里远 我在Microbit(使用块构建)上

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

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

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

[Object Object Object]
…在microbit上,这是奇怪的,因为流的调试消息显示正确的负载正由Pi传递到串行节点

我知道这可能是显而易见的,可能是我对“字符串”和“数字”的误解。我已经成功地用不同的pi向不同的微博客写了信,但那是一个数字,而不是字符串。在我的最后。非常感谢所有的建议

蒂娅,沃里克

另外一个令人沮丧的转折点是,我不能使用Mu来“借用”其他代码,因为microbit是MU1.02无法使用的版本,我也未能更新该版本(Mu)

[编辑以包括节点红色流]

[
   {
      "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"
   }
]

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

例如:
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
将显示:

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

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


你能澄清一下你希望显示什么吗?它不能显示png文件。只能显示一个字符串。我不想显示png。如前所述,我将添加代码以控制5x5 mtrix。现在,我需要microbit从Pi获取代表天气的3个字符的字符串。我怀疑有错误在连接的另一端。我怀疑Pi/node red没有发送您认为的字符串值。您是否能够执行一个只发送字符串的简单node red?或者在您的问题中显示一些调试信息,说明您为什么确定它是正确的?Hi@ukBaz yep-我按照下面的说明发送了字符串(这是做好这件事的一个很好的开端),但我不担心。它肯定是以Node-Red连接的。您可能需要使用有关Node-Red安装和调试的一些信息来更新问题。我现在就试试。这似乎是一个更优雅的解决方案,并且在Node-Red中的pi上完成了工作。非常感谢您对此进行查看。我非常感谢您提供的任何帮助你的建议无疑会帮助我,因为处理字符串和数字似乎是我最需要的帮助。
[
   {
      "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"
   }
]