基于富芮坤FR3068x芯片的智能割草机,将高精度定位技术与智能化功能相结合,为家庭和商业草坪护理提供了高效、便捷的解决方案RTK技术是一种利用GNSS(全球导航卫星系统)载波相位观测进行实时动态相对定位的技术。它通过流动站接收基站发送的观测数据,并进行差分改正,从而实现动态的厘米级定位。这种高精度定位技术在多个领域有着广泛的应用,包括高精度测量测绘、无人机、智能驾驶、精准农业以及智能割草机等

一 .智能割草机中的蓝牙芯片发挥作用:
1.数据交换与通信:
    蓝牙芯片使得智能割草机能够与外界设备(如智能手机、平板电脑或中央控制系统)进行数据交换。这种数据交换是实现功能的:远程控制割草机的启动、停止和路径规划等。富芮坤FR3068x蓝牙G用于接收RTK模组GPS信号,并能通过无线蓝牙方式与电脑、手机等设备连接,把接收到的GPS信号传递给这些设备中的GPS软件进行处理。这种传输方式摆脱了数据线的束缚,使得GPS接收设备可以灵活摆放,便于接收卫星信号。
在WiFi信号较差或不可用时,蓝牙可以作为替代通信方式,确保用户与割草机之间的稳定连接。
2. 远程控制与管理:
   用户可以通过配备蓝牙功能的设备远程监控割草机的工作状态,包括电池电量、剩余工作时间、当前工作模式等。
蓝牙芯片还支持远程控制功能,允许用户调整割草机的工作参数,如切割高度、行进速度等,从而提高割草效率和灵活性。
3.  系统升级与维护:
通过蓝牙连接,智能割草机可以接收来自中央控制系统或用户设备的软件更新和固件升级。这有助于修复已知问题、改进性能并添加新功能。
蓝牙连接还可以用于诊断割草机的故障,帮助用户或维修人员快速定位并解决问题。                                                            
二,硬件设计:
单片机部分:
   5.png
GPS RTK模组:LG290P模块 “
  • 全系统全频段支持:LG290P模块支持GPS、GLONASS、Galileo、BDS(北斗)、QZSS和NavIC等全球主要卫星导航系统,同时能接收这些系统的L1、L2、L5、L6等全频段信号。这种全系统全频段的支持使得LG290P在各种环境下都能提供稳定可靠的定位服务。
  • 高精度定位:借助内置的RTK(实时动态差分定位)算法,LG290P模块能够实现厘米级的高精度定位。这对于需要高精度定位的应用场景,如智能机器人、无人机、精准农业、测量测绘等,具有重要意义。

2.png
0.png

软件开发:
   GPS模块与FR3068x连接:
GPS模块的TX引脚连接到FR3068x的RX引脚。
GPS模块的RX引脚连接到FR3068x的TX引脚。
确保共地(GND)连接。   通过串口读取GPS模块发送的NMEA格式数据(如$GPGGA、$GPRMC等)。
  将读取到的GPS数据通过蓝牙发送到手机。

手机
  • 蓝牙权限
    • 在AndroidManifest.xml中添加蓝牙权限:
      <uses-permission android:name="android.permission.BLUETOOTH" />
    • <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    • <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    • 复制代码

  • 蓝牙连接
    • 使用Android的Bluetooth API连接到FR3068x的蓝牙模块。
  • 接收数据
    • 监听蓝牙数据流,接收GPS数据。
  • 解析NMEA数据
    • 解析接收到的NMEA格式数据(如$GPGGA),提取经纬度等信息。
  • 展示地图
    • 使用Google Maps API或高德地图API展示位置。
  // 蓝牙连接和数据接收
private class ConnectedThread extends Thread {
  •     private final BluetoothSocket mmSocket;
  •     private final InputStream mmInStream;

  •     public ConnectedThread(BluetoothSocket socket) {
  •         mmSocket = socket;
  •         InputStream tmpIn = null;
  •         try {
  •             tmpIn = socket.getInputStream();
  •         } catch (IOException e) {
  •             e.printStackTrace();
  •         }
  •         mmInStream = tmpIn;
  •     }

  •     public void run() {
  •         byte[] buffer = new byte[1024];
  •         int bytes;
  •         while (true) {
  •             try {
  •                 bytes = mmInStream.read(buffer);
  •                 String data = new String(buffer, 0, bytes);
  •                 // 解析NMEA数据
  •                 parseNMEAData(data);
  •             } catch (IOException e) {
  •                 break;
  •             }
  •         }
  •     }

  •     private void parseNMEAData(String data) {
  •         if (data.startsWith("$GPGGA")) {
  •             String[] parts = data.split(",");
  •             if (parts.length > 6) {
  •                 String lat = parts[2]; // 纬度
  •                 String lon = parts[4]; // 经度
  •                 // 更新地图显示
  •                 updateMap(lat, lon);
  •             }
  •         }
  •     }

  •     private void updateMap(String lat, String lon) {
  •         // 使用Google Maps API更新地图
  •         runOnUiThread(() -> {
  •             LatLng location = new LatLng(Double.parseDouble(lat), Double.parseDouble(lon));
  •             mMap.addMarker(new MarkerOptions().position(location).title("当前位置"));
  •             mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(location, 15));
  •         });
  •     }
  • }
  • 复制代码
    运动控制:
       FR3068x-C内置了CAN FD总线控制器,这使得它能够通过CAN总线与其他设备进行高效、可靠的通信。CAN总线是一种广泛应用的工业现场总线,具有通信速率高、抗干扰能力强、传输距离远等优点。FR3068x-C利用CAN FD总线控制器,可以实现数据的快速传输和高效处理。
    在FR3068x-C的软件中配置CAN总线的相关参数,如波特率、数据位长度、停止位等。编写或调用相应的CAN通信函数,用于发送和接收CAN报文。
    发送控制指令:根据电机驱动器的通信协议,编写控制指令的CAN报文。通过CAN总线将控制指令发送给电机驱动器。
    接收反馈数据:
       电机驱动器在接收到控制指令后,会执行相应的动作,并可能通过CAN总线返回状态信息或反馈数据。
      FR3068x-C需要编写相应的接收函数,用于接收并处理这些反馈数据。实现闭环控制(如有需要):根据反馈数据,FR3068x-C可以调整控制指令,以实现更精确的电机控制。
    涉及到一些控制算法,PID控制等。