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



    • arduino代码
      #include <SoftwareSerial.h>
      SoftwareSerial softSerial(10,11); //定义软串口,rx为10号端口,tx为11号端口
      int x;
      int input1 = 6;  //定义输出引脚
      int input2 = 7; //定义输出引脚
      int input3 = 8; //定义输出引脚
      int input4 = 9; //定义输出引脚
      int ENA=5;//定义使能端引脚(下同)
      int ENB=11;
      
      
      
      
      void setup()
      {
        pinMode(input1,OUTPUT);//下列配置各引脚为输出模式
      pinMode(input2,OUTPUT);
      pinMode(input3,OUTPUT);
      pinMode(input4,OUTPUT);
      pinMode(ENA,OUTPUT);
      pinMode(ENB,OUTPUT);
        softSerial.begin(9600); //初始化虚拟串口
        Serial.begin(9600); //初始化硬串口
        
      }
      String A_String = "";//定义用来存数据的字符串
      
      void loop()
      {
        
        
        
        if (softSerial.available() > 0) //判断软串口是否接收到openmv数据,然后读取,然后在串口监视器打印
        {
          if(softSerial.peek() != '\n')
          {
            A_String += (char)softSerial.read();//把串口读的单个字符逐加到字符串
          }
          else
          {
            softSerial.read();
           
            
             x=A_String.toInt();//把字符串转成int类型存放
         
             if(x>80)//坐标和阈值进行判断
             {
              Serial.println("1");//串口打印数字1
                Serial.println(x);//串口打印坐标
               left();//左转
             }
             else if(x<80)
             {
               Serial.println("2");//串口打印数字2
                Serial.println(x);//串口打印坐标
                right();//右转
             }
             else
             {
              stop1();//停转
             }
             A_String = "";//重置字符串
          }
        }
      }
      
      void right()   //右转
      {
        analogWrite(ENA,240);
       
        digitalWrite(input1,HIGH); 
        digitalWrite(input2,LOW);  
        digitalWrite(input3,LOW); 
        digitalWrite(input4,LOW);   
      }
      
      
      void stop1()//停转
      {
       
        digitalWrite(input1,LOW); 
        digitalWrite(input2,LOW);  
        digitalWrite(input3,LOW); 
        digitalWrite(input4,LOW);   
      }
      
      void left()//左转
      {
       
        analogWrite(ENB,240);
        digitalWrite(input1,LOW); 
        digitalWrite(input2,LOW);  
        digitalWrite(input3,HIGH); 
        digitalWrite(input4,LOW);   
      }
      
      
      openmv代码
      import sensor, image, time
      from pyb import UART
      import json
      bule_threshold   = (48,12,-19,33,-49,-14)//蓝色的阈值
      sensor.reset() # Initialize the camera sensor.
      sensor.set_hmirror(True)
      sensor.set_vflip(True)
      sensor.set_pixformat(sensor.RGB565) 
      sensor.set_framesize(sensor.QQVGA) 
      sensor.skip_frames(10)
      sensor.set_auto_whitebal(False) 
      clock = time.clock()
      
      uart = UART(3, 9600)//串口波特率需要和arduino一致 这里设为9600
      def find_max(blobs):
          max_size=0
          for blob in blobs:
              if blob.pixels() > max_size:
                  max_blob=blob
                  max_size = blob.pixels()
          return max_blob //寻找最大色块并返回最大色块的坐标
      
      while(True):
          img = sensor.snapshot()//采集图像
      
          blobs = img.find_blobs([blue_threshold])
          if blobs:
              max_blob=find_max(blobs)
              img.draw_rectangle(max_blob.rect())//框选最大色块
              img.draw_cross(max_blob.cx(), max_blob.cy())//在最大色块中心画十字
              pcx = max_blob.cx()//定义pcx为最大色块中心的横坐标
      
      
            
              output_str=json.dumps(max_blob.cx()) //把pcx用json字符串的形式发送给arduino
              uart.write(output_str + '\r\n')
              print(pcx)//打印输出pcx
          else:
              print('not found!')
      


    • https://book.openmv.cc/MCU/serial1.html

      使用这个代码来测试。