• 免费好用的星瞳AI云服务上线!简单标注,云端训练,支持OpenMV H7和OpenMV H7 Plus。可以替代edge impulse。 https://forum.singtown.com/topic/9519
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • uart串口通讯问题



    • Arduino端

      int incomingByte;
      void setup() {
      Serial.begin(19200);
      }
      
      void loop() {
      
      incomingByte=Serial.read();
      Serial.println(incomingByte);
      }
      

      OpenMv端

      import sensor, image, time, math
      import json
      from pyb import UART
      uart = UART(3, 19200)
      
      
      while(True):
          uart.writechar(1)
          time.sleep(1000)
      

      连接的是两个板子的TX RX
      Arduino 串口监视器显示乱码

      1. 请问uart.writechar(),uart.write()可以向串口发送单独的数字或数组吗?
      2. 在未使用json格式的数据时arduino端是否需要添加例程中的解析代码
        解析程序

      不是很懂该如何操作串口通讯,为啥都是乱码...



    • 用示波器测p4端,示波器显示并不是矩形波还是杂波。
      uart我认为的是按照0101 这种高低电平变化来传数据,不知道为什么 uart.writechar(1) 是杂波.



    • 您好,还是这个问题,我发现显示乱码是因为我串口监视器的波特率没有调整好,调整好后(将波特率统一为19200)发现openmv通过usb转ttl这个调试器可以成功发送字节,但连接上arduino的TX RX后 串口监视器里只能输出-1

      代码如下

      int incomingByte;
      void setup() {
      Serial.begin(19200);
      }
      
      void loop() {
      
      incomingByte=Serial.read();
      Serial.println(incomingByte);
      }
      
      import sensor, image, time, math
      import json
      from pyb import UART
      uart = UART(3, 19200)
      
      while(True):
      uart.writechar(50)
      time.sleep(10000)
      

      这里我看了您的教程发现uart.writechar()是发送一个字节,那么50对应的应该是数字2.

      通过助手发现是对的
      0_1527583733844_串口显示2.png
      但是两个板子通信就不行了
      0_1527583160323_串口显示.png
      请问怎么解决谢谢!



    • 在Arduino端 将字符类型由int 改为char 就成乱码了....



    • https://www.arduino.cc/reference/en/language/functions/communication/serial/read/

      根据Arduino的文档,如果什么都没有,就返回-1

      Returns
      The first byte of incoming serial data available (or -1 if no data is available) - int.

      Example Code

      int incomingByte = 0;   // for incoming serial data
      
      void setup() {
              Serial.begin(9600);     // opens serial port, sets data rate to 9600 bps
      }
      
      void loop() {
      
              // send data only when you receive data:
              if (Serial.available() > 0) {
                      // read the incoming byte:
                      incomingByte = Serial.read();
      
                      // say what you got:
                      Serial.print("I received: ");
                      Serial.println(incomingByte, DEC);
              }
      }
      


    • @kidswong999 谢谢 这个问题我解决了,现在可以发一个字节的数据了,但是我需要的是发送一个数组,我看您回复列表数据时提到了uart.write() 可以发送数组
      uart怎么发送列表数据

      import sensor, image, time, math
      import json
      from pyb import UART
      uart = UART(3, 9600)
      data = bytearray([0xFF, 0xFE, 0xFF, 0xFF, 0x1A, 0x4E])
      while(True):
          uart.write(data)
      

      这个我接上串口助手看到是 FF FE FF FF 1A 4E
      如果我想在arduino端接收这个数据,该如何下手呢?
      数组传送的过程中是否包含了“ ”(空格)呢



    • 和上面一样的代码