星瞳实验室APP,快速收到回复
  • 我们只解决官方正版的OpenMV的问题(STM32),其他的分支有很多兼容问题,我们无法解决。
  • 如果有产品硬件故障问题,比如无法开机,论坛很难解决。可以直接找售后维修
  • 发帖子之前,请确认看过所有的视频教程,https://singtown.com/learn/ 和所有的上手教程http://book.openmv.cc/
  • 每一个新的提问,单独发一个新帖子
  • 帖子需要目的,你要做什么?
  • 如果涉及代码,需要报错提示全部代码文本,请注意不要贴代码图片
  • 必看:玩转星瞳论坛了解一下图片上传,代码格式等问题。
  • openmv和stm32串口通讯未成功,想请教一下原因?



    • 这是我写的openmv的代码,不涉及openmv向stm32发送信息,已经成功烧到了openmv4里面,是可以亮蓝灯的,我感觉我写的应该没大有问题,但是无法和stm32进行通讯,感觉接收不到stm32的信息,stm32usart1这个串口有跳线帽的时候,串口调试助手上是可以看到返回了字节符的,想请问一下是什么原因呀?

      import sensor, image, time, lcd, json,math,ujson
      from pyb import LED
      from pyb import UART
      
      red_led = LED(1)
      green_led = LED(2)
      blue_led = LED(3)
      
      
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QVGA) # Special 128x160 framesize for LCD Shield.
      sensor.skip_frames(time = 2000)
      sensor.set_auto_gain(False) # must turn this off to prevent image washout...
      uart = UART(3, 115200)
      uart.init(115200, bits=8, parity=None, stop=1)
      
      
      while(True):
          da=3
          img = sensor.snapshot()
          img.lens_corr(1.8) # strength of 1.8 is good for the 2.8mm lens.
          if(uart.any()):
              time.sleep(200)
              d=uart.readline().decode().strip()
              da=int(d)
          if(da==1):
              green_led.off()
              blue_led.off()
              red_led.on()
              time.sleep_ms(1000)
              print('red')
          else:
              if(da==2):
                  red_led.off()
                  blue_led.off()
                  green_led.on()
                  time.sleep_ms(1000)
                  print('green')
              else:
                  if(da==3):
                      red_led.off()
                      green_led.off()
                      blue_led.on()
                      time.sleep_ms(1000)
                      print('blue')
      
      


    • This post is deleted!


    • 0_1615293921736_4ng
      连线是这个样子的,麻烦大家了,拜托了



    • 在OpenMV端,只写读取的代码,然后print看一看有没有数据。



    • @kidswong999
      您好,我没有改变源代码,采用了这样的接线方式,在IDE上进行观察,发现在未在串口调试助手(xcom)发送1时,可以在串行终端看到blue的输出,但是一旦我发送了1,blue就不再输出
      0_16153773ng
      0_16153773g
      0_16153774ng



    • ![0_1615377455324_ARWMP}5F)9S837UTZQSXLO.png



    • import sensor, image, time, lcd, json,math,ujson
      from pyb import LED
      from pyb import UART
      
      red_led = LED(1)
      green_led = LED(2)
      blue_led = LED(3)
      
      
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QVGA) # Special 128x160 framesize for LCD Shield.
      sensor.skip_frames(time = 2000)
      sensor.set_auto_gain(False) # must turn this off to prevent image washout...
      uart = UART(3, 115200)
      uart.init(115200, bits=8, parity=None, stop=1)
      
      
      while(True):
          img = sensor.snapshot()
          img.lens_corr(1.8) # strength of 1.8 is good for the 2.8mm lens.
          if(uart.any()):
              print('red')
      
      
      

      但要是这么写的话,串行终端是有red输出的,连接方式和上图一样



    • @u261openmv和stm32串口通讯未成功,想请教一下原因? 中说:

      @kidswong999
      您好,我没有改变源代码,采用了这样的接线方式,在IDE上进行观察,发现在未在串口调试助手(xcom)发送1时,可以在串行终端看到blue的输出,但是一旦我发送了1,blue就不再输出,并且帧缓冲区画面停止
      0_1615ng
      0_161ng
      0_161537ng



    • 您好,我现在已经可以成功运行了

      import sensor, image, time, lcd, json,math,ujson
      from pyb import LED
      from pyb import UART
      
      red_led = LED(1)
      green_led = LED(2)
      blue_led = LED(3)
      
      
      sensor.reset()
      sensor.set_pixformat(sensor.RGB565)
      sensor.set_framesize(sensor.QVGA) # Special 128x160 framesize for LCD Shield.
      sensor.skip_frames(time = 2000)
      sensor.set_auto_gain(False) # must turn this off to prevent image washout...
      uart = UART(3, 115200)
      uart.init(115200, bits=8, parity=None, stop=1)
      
      
      while(True):
          da=3
          img = sensor.snapshot()
          img.lens_corr(1.8) # strength of 1.8 is good for the 2.8mm lens.
          if(uart.any()):
              d=uart.readline().decode().strip()
              da=int(d)
          if(da==1):
              green_led.off()
              blue_led.off()
              red_led.on()
              time.sleep_ms(1000)
              print('red')
          else:
              if(da==2):
                  red_led.off()
                  blue_led.off()
                  green_led.on()
                  time.sleep_ms(1000)
                  print('green')
              else:
                  if(da==3):
                      red_led.off()
                      green_led.off()
                      blue_led.on()
                      time.sleep_ms(1000)
                      print('blue')
      
      

      要删掉一行代码, if(uart.any()):后面删去 time.sleep(200),是我延时太长了 ,反应的有些慢😅 ,谢谢小助手!!!