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



    • arduino可以接收openmv发送的字符,但openmv接收不了arduino发的
      用的是uart通讯,openmv不断发出-1



    • 先用串口调试扩展板,发送数据给OpenMV 。
      OpenMV 运行接受代码。



    • #include <Servo.h>
      #include <SoftwareSerial.h>
      SoftwareSerial mySerial(0,1);
      
      void setup() {
        // put your setup code here, to run once:
        Serial.begin(9600);
        mySerial.begin(9600);
      
      }
      
      void loop() {
        // put your main code here, to run repeatedly:
        char val;
        Serial.flush();
        if(Serial.available()>0){
          val = Serial.read();
          Serial.println(char(val));
          Serial.write(50);
          
          
          }
      }
      

      这是arduino的代码

      import time, pyb
      from pyb import UART
      import ujson
      
      uart = UART(3, 9600)
      uart.init(9600, bits=8, parity=None, stop=1) # init with given parameters
      
      
      def sending_data():
          global uart
      
          uart.write('F')
      
      def recive_data():
          global uart
          #data = uart.readchar()
          #print(data)
          if uart.any():
              print("thatsgood")
              tmp_data = uart.readchar()
              uart.write("RECIVED : %s\n"%tmp_data)
              print(tmp_data)
      
              
      
      while(True):
          #sending_data()
          #time.sleep(1000)
      
          print("thatsgood")
          tmp_data = uart.readchar()
          #uart.write("RECIVED : %s\n"%tmp_data)
          #print(tmp_data)
          if uart.any():
              print("thatsgood")
              tmp_data = uart.readchar()
              uart.write("RECIVED : %s\n"%tmp_data)
              print(tmp_data)
      
      

      这是openmv的代码,arduino接收数据正常,但openmv接收不了,最多只能接受乱码-1



    • 你不能判断是否真的有数据传输,要么用示波器,要么用串口调试扩展板。



    • @kidswong999 有串口传输吧,arduino的串口监视器收到openmv发送的字符
      那个openmv

          if uart.any():
              print("thatsgood")
              tmp_data = uart.readchar()
              uart.write("RECIVED : %s\n"%tmp_data)
              print(tmp_data)
      

      也输出了thatsgood,说明他串口接收到了数据,但却输出不了字符,只输出乱码-1



    • 我也遇到同样的问题了,请问您解决了吗