极客秀
搜索

DIY农机模型——基于ESP32/ESP32_Cam的远程控制视觉扁豆播种机

QQ交流群:656210280 前段时间利用ESP32_Cam摄像头模块和ESP32制作了一台扁豆播种机,可以利用手机APP实现遥控播种

这里我们使用ESP32_Cam摄像头作为图片传输的控制并且负责控制施肥装置以及播种装置的电机控制器。
另有一块ESP32作为网络节点负责为设备提供网络服务(WifiAP模式)以及负责运动方向的控制。
手机APP呢则是利用.NET平台的MAUI跨平台开发,当然这套代码理论上是适用于所有平台,不过本人只开发了安卓平台。 关于.NET
MAUI的开发之前也写过一系列的文章介绍,不过收视率惨淡。

我们利用利用手机APP接收ESP32Cam传输的图片数据,并且利用手机上的摇杆,向作为路由结点的ESP32发送运动数据,ESP32解析运动数据驱动电机运动。
运动控制的主要代码


void loop() {  WiFiClient client;  client = server.available();  if (client.available()) {  String line = client.readStringUntil('A');    // 寻找括号的起始和结束位置  int startPos = line.indexOf('(');  int endPos = line.indexOf(')');  
  // 提取括号内的内容  if (startPos != -1 && endPos != -1) {    String positionString = line.substring(startPos + 1, endPos);    //Serial.println("Position: " + positionString);  
    // 使用逗号分隔两个数字    int commaPos = positionString.indexOf(',');    String xString = positionString.substring(0, commaPos);    String yString = positionString.substring(commaPos + 1);  
    // 将字符串转换为数字    float x = atof(xString.c_str());    float y = atof(yString.c_str());  
    y = -y;//y轴交换    SetPWMDuty(x,y);  
  }  }}

同样的,我们的APP上具有四个按钮,这四个按钮可以发送四个信号给ESP32Cam以便ESP32Cam控制电机的正转反转以及灯光的开启。


void loop() {   camera_fb_t *fb = esp_camera_fb_get();  if (fb == nullptr || STANumber!= 0 ) {    Serial.println("Camera capture failed");  }  else  {     // 将图像帧转换为 Stream    WiFiClient client;  
    client.connect(ip,8081);  
    client.write(fb->buf, fb->len);client = server.available();if (client.available()) {  String message = client.readStringUntil('n');  Serial.println(message);  if(message == "AStart") {    // 如果接收到的内容是"Start",执行相应的操作    Serial.println(1);  
    ledcWrite(0,220);      } else if (message == "AStop") {    // 如果接收到的内容是"Stop",执行相应的操作    ledcWrite(0,0);    Serial.println(2);  }  if (message == "BStart") {    // 如果接收到的内容是"Start",执行相应的操作    ledcWrite(1,160);    Serial.println(3);  } else if (message == "BStop") {    // 如果接收到的内容是"Stop",执行相应的操作    ledcWrite(1,0);    Serial.println(4);  }  else if(message == "DStart")  {    ledcWrite(3,255);    ledcWrite(0,0);    Serial.println(5);  }  else if(message == "DStop")  {     ledcWrite(3,0);    Serial.println(6);  }  else if(message == "CStart")  {    ledcWrite(2,255);    Serial.println(7);  }  else if(message == "CStop")  {     ledcWrite(2,0);    Serial.println(8);  }}    client.stop();  }  esp_camera_fb_return(fb);}

这里的ABCD分别对应着:播种正转、施肥、灯光、播种反转
利用.NET MAUI完成编程。 其余的机械机构可以参考文章头的视频

1.转载请保留原文链接谢谢!
2.本站所有资源文章出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
3.本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户擦亮眼睛自行鉴别,做一个有主见和判断力的用户。
4.本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。
5.联系方式(#替换成@):pm#vimge.com

  相关内容