No soy un principiante sino un experto con 30 años de experiencia. Pero eso no me impide aprender cosas nuevas y tener varios desafíos de programación que hacer. Pero teniendo tanta experiencia, tiendo a concentrarme en escribir menos código y aún así obtener los resultados que quiero.
Mi enfoque actual es lograr que varias cosas funcionen juntas. Y estoy estableciendo mis metas absurdamente altas ya que el propósito es educarme, no terminar realmente un proyecto. Entonces, si termino el 75% de un proyecto enormemente complejo, entonces eso es aún mejor que terminar por completo una docena de proyectos simples, ya que esos proyectos simples generalmente son demasiado simples. Entonces, si necesita proyectos para aprender rápido, elija algo complejo.
Entonces, ¿qué quiero construir ahora? En realidad, es bastante simple, ya que empiezo a aprender más sobre electrónica y programación integrada. De hecho, uso chips ATTiny y ATMega y diseño mis propios tableros, ya que puedo usar C para programar esos chips. Estas placas tendrán un módulo WiFi que se utilizará para comunicarse con mi servidor web.
También tengo una placa Raspberry Pi con un módulo de cámara que también se conectará al servidor web para esperar las instrucciones dadas por los módulos ATTiny. Este R-Pi tendrá un servomotor que puede girar la cámara hacia la izquierda y hacia la derecha para que pueda mirar en varias direcciones. El propósito es tomar fotos en situaciones específicas y subirlas al servidor web.
Y luego haré una aplicación móvil que también se conecta al servidor web, que puede leer los valores proporcionados por los tableros ATTiny / ATMega y cualquier fotografía tomada por el R-Pi. También podré indicarle al R-Pi que tome una foto en este momento. Pero también habrá un sitio web que me permitirá controlar todo.
Entonces, mis proyectos significan que tengo que diseñar algunas placas electrónicas, generar contenedores impresos en 3D para la electrónica y para la cámara y el servo. Utilice la energía solar para que las placas electrónicas no necesiten baterías. Diseñar un servidor web con servicios adicionales para llamar desde mis tableros electrónicos, el R-Pi y la aplicación móvil. Diseñe un sitio web completo incluso con una galería de fotos para todas las imágenes tomadas con información adicional. Básicamente, asegurándose de que todo el sistema sea tolerante a fallas, por lo que si alguna parte falla, el resto simplemente continuará funcionando. Es un gran proyecto y tiene algunas partes muy desafiantes que necesito para desafiar mis 30 años de experiencia.
En este momento, todavía estoy en la fase de diseño y solo estoy probando algunas pequeñas cosas. Todavía necesito completar las placas electrónicas y considerar a qué sensores necesitaré para que respondan las placas electrónicas. También es importante que pueda calibrar el R-Pi para mirar en un ángulo específico y tener la opción de registrar nuevas placas electrónicas en el sistema y vincular el dispositivo a un ángulo específico. Así que estoy elaborando un modelo de datos para almacenar esta información, pero también para la gestión de usuarios, ya que no quiero que todos tengan acceso a todo. Y estoy experimentando con los módulos WiFi y los comandos AT necesarios para controlarlos, ya que esta es la primera vez que los usaré para un proyecto …
Pero como puedes imaginar, esto es enorme con muchos desafíos. ¿Y qué pasa si no lo termino? No es gran cosa, ya que todavía me obligó a aprender varias cosas nuevas.
Si hubiera sido un principiante, todavía habría comenzado con algo igualmente complejo. En realidad, cuando comencé comencé con varios proyectos complejos. Esto fue antes de Internet y OO se estaba convirtiendo lentamente en la corriente principal, y MS-DOS era mi principal sistema operativo. Sin embargo, escribí un controlador de mouse para mis propias aplicaciones, ya que MS-DOS carecía de esta funcionalidad. Diseñé un juego de disparos con sonido. Creé una aplicación para realizar un seguimiento de los concursos deportivos e hice mi propia libreta de direcciones y varias herramientas pequeñas. Cuando Internet aún era nuevo, también comencé con el desarrollo web y mi propio cliente de correo electrónico, pero para entonces ya tenía 10 años de experiencia. Solo necesitaba aprender cosas nuevas.
¡Y eso es todo! Como desarrollador de software, ¡nunca dejarás de aprender! ¡Nunca dejarás de hacer nuevos proyectos para poner a prueba tus habilidades! Así que no intentes algún proyecto simple y ten éxito. ¡Pruebe un proyecto muy complejo y casi tenga éxito!