Proyecto OMower - Plataforma de ruedas universal abierta (inicio)

Quiero presentar mi proyecto de una plataforma universal abierta para robots domésticos (cortadoras de césped, aspiradoras y similares). El proyecto todavía está en proceso de ensamblar y escribir software, espero comentarios y sugerencias útiles.



Recientemente me familiaricé con el proyecto Ardumower ( artículo sobre él ) y obtuve mucha experiencia interesante. Pero, desafortunadamente, este robot tiene muchas limitaciones diferentes, por lo que mi cliente de "casa inteligente" patrocinó un proyecto de un robot completamente nuevo y mucho más potente que puede hacer frente bien al corte de césped y a otras tareas (por ejemplo, existe una idea entregar bebidas a los invitados en casa :)). El proyecto se está desarrollando como una plataforma universal y extensible, con un circuito abierto y un SDK para escribir sus propias opciones de software.

El elemento principal del robot es la placa con el procesador ATSAM3X8E de 32 bits, idéntico al utilizado en Arduino Due, que le permite utilizar un entorno de desarrollo simple y familiar, y también elimina muchos problemas con problemas técnicos debido a la gran comunidad de personas que escriben programas para esta plataforma. Debido a la gran cantidad de puertos de microcontrolador, puede conectar casi cualquier cosa a la placa. Especificaciones de la placa:

Alimentado por 12 a 30 voltios, un cargador de batería incorporado con una corriente de hasta 5 amperios, e incluso un refuerzo para cargar la batería solar durante la operación.

Dos asientos para los controladores de motor de colector Polulu Dual MC33926 ampliamente utilizados, con la capacidad de controlar hasta cuatro motores (en dos versiones: dos motores sobre ruedas, el segundo controlador controla el motor de corte; o cuatro motores sobre ruedas con canales separados). Los conectores del motor tienen cables para conectar los odómetros.

Huella para un controlador de motor paso a paso (accionamiento para cambiar la altura de corte de césped, por ejemplo).

Un conector para instalar Orange Pi Zero (para soportar GPS RTK con precisión de centímetros y algunos algoritmos de control complejos externos) con la capacidad de actualizar el firmware a través de este microordenador.

6 salidas de señal PPM para controlar motores sin escobillas y servos.

6 puertos para sondas HC-SR04, 2 puertos para sensores de colisión (ardumower bumper con sus sensores neumáticos, por ejemplo), dos sensores capacitivos de césped, 2 entradas para sensores de distancia analógicos infrarrojos, cuatro entradas para sensores de perímetro con cable, dos conectores de termistor controlados puertos para ventilador, beeper y tres LED (20 y 70 mA). Por supuesto, se pueden usar muchos puertos para conectar otros sensores, con ciertas limitaciones.

Casi todos los puertos externos compatibles con el microcontrolador también están conectados a los conectores:

3 conectores de puerto serie, dos buses I2C con 9 conectores (uno de los cuales está protegido con conectores para dispositivos de cinco voltios y tres voltios), 2 buses SPI, CAN (sin transceptor físico), USB, dos DAC separados (recién traídos a los conectores ya que existe, puedes tocar música allí o algo así).

Un regulador de conmutación adicional de 5 voltios y 2 amperios con seis conectores para dispositivos externos. Bueno, un relé con un pestillo, para el apagado de emergencia de la batería, para evitar su sobredescarga en caso de que no haya llegado a la estación de carga. Naturalmente, el voltaje y el consumo de corriente están controlados por un microcontrolador (en parte a través de un ADC multicanal integrado, en parte a través de un MAX11617EE adicional).

En modo inactivo (los controladores del motor están inactivos): el consumo de corriente es de 130-140 miliamperios.

Esquema (arrojó todo en una hoja, por conveniencia):



En el proceso de soldar la placa, me encontré con el hecho de que algunos elementos son demasiado pequeños para la soldadura manual con un secador de pelo, y algo puede sobrecalentarse (como un diodo en la unidad de carga), por lo que son posibles algunos cambios menores.

El desarrollo de un SDK para escribir firmware de robot ya está en marcha, con su ayuda será posible desconectarse por completo de la administración de hardware a un nivel bajo, habiendo recibido un conjunto de clases para todos los dispositivos y sensores periféricos. Por ejemplo, un código que hace que el robot gire hacia el norte se verá así (estos ejemplos ya funcionan, aunque sin algunas comprobaciones de sobrecarga y similares):

course = 0.0; imuSens.setCourse(course); motWheel.rollCourse((navThing *) &imuSens, 9000); 

Y para ir a lo largo del perímetro cableado a la estación, levantando el motor de corte:

  mow.setHeight(0); perSens.setTracking(true); motWheel.moveCourse((navThing *) &perSens, 120000); 

Desafortunadamente, todavía no puedo diseñar el SDK, no se ha escrito mucho (como código para admitir etiquetas RFID DW1000 de Decawave y cualquier sensor secundario). Pero puedo decir que todas las funciones de bajo nivel funcionan y después de un corto tiempo puedo ponerlo en github.

Teaser:

Source: https://habr.com/ru/post/es406177/


All Articles