En mi caso, me he reducido a los tres siguientes microcontroladores:
Esto es lo que intento hacer como primer proyecto y, por supuesto, puede que no sea un proyecto fácil.
Quiero poder conectar un termómetro y cuando los grados lleguen a +-3 de una temperatura base, abrir o cerrar una ventana de apoyo. Además, quiero poder almacenar la información del termómetro en una base de datos MySql.
Entonces, básicamente, si la temperatura base es 80, cuando la temperatura es superior a 83, quiero abrir la ventana. Y si es 77 quiero cerrar la ventana.
No me interesa el mecanismo exacto que abre y cierra las ventanas, solo cómo enviar las señales para abrirlas o cerrarlas.
Información del microcontrolador:
Si bien Netduino usa C #, la mayoría de los otros microcontroladores están programados en C; esos son dos lenguajes de programación totalmente diferentes. Además de eso, Arduino usa una versión de C++, que es aún diferente.
Los microcontroladores normalmente se programan en C o en ensamblaje (ASM). Si es nuevo, recomendaría C. Arduino no es un microcontrolador, es una placa de desarrollo (generalmente) basada en un microcontrolador AVR, aunque hay otras MCU en uso. Las MCU integradas (unidades de microcontrolador) tendrán un gestor de arranque instalado. Esta es una sección especial de código que altera el funcionamiento de la MCU. En el caso de Arduino, permite la programación a través del puerto serie en lugar de los métodos de programación estándar, así como el acceso a funciones especiales de la biblioteca. También en la placa habrá (típicamente) un convertidor de USB a serie porque muchos chips más pequeños no tienen hardware USB interno, por lo que el USB debe convertirse para una comunicación adecuada.
Pregunta 1:
Una MCU tendrá un número específico de pines de E/S. Estos son pines que pueden ser entradas o salidas. Puede conectar directamente tantos sensores digitales como pines de E/S haya, pero los sensores analógicos están limitados a la cantidad de pines ADC (convertidor analógico a digital) disponibles. No todas las MCU tienen una unidad ADC. También puede conectar muchos, muchos más sensores mediante el uso de expansores GPIO externos o registros de entrada en paralelo y salida en serie. Estos pueden controlarse usando unos pocos pines MCU y pueden expandir en gran medida la cantidad de pines de E/S disponibles.
Pregunta 2:
Escribirá un programa en la computadora que está instalada en la MCU. Si el código le permite tener comunicaciones externas (a través de USB, serie, SPI, I2C, etc.), entonces puede comunicarse con el chip mientras se está ejecutando. Pero esa capacidad depende del código que escriba. El idioma que usa para comunicarse con la MCU está bastante abierto a lo que quiera, ya que la comunicación real la realiza el hardware, no el lenguaje de programación. Tal vez eso es lo que quiso decir con la mención de "C#".
Tu proyecto:
De manera realista, su proyecto no parece tan complicado: lea un sensor de temperatura (suena como analógico) y maneje un motor para abrir/cerrar una ventana según la lectura de ese sensor. Cuándo detener el motor probablemente se basará en otro sensor conectado a la ventana. Esto se puede hacer con una MCU muy pequeña con pocos pines y poco espacio de programa (como ATtiny24 o ATtiny25). Pero creo que te encontrarás con muchos problemas si no trabajas primero en algo un poco más pequeño. El "hola mundo" estándar de las MCU es hacer parpadear un LED. Luego amplíe eso tratando de controlar la velocidad de parpadeo con un botón, luego accione un motor, etc.
Opinión personal...
Yo no, ni tengo ningún deseo de usar Arduino alguna vez. Construyo todos mis propios circuitos, generalmente con MCU AVR, pero entiendo la razón por la cual la gente los usa. Personalmente, creo que es mucho mejor aprender a diseñar su propio circuito y programarlo que copiar el código de otras personas y juntar cosas al azar, que es lo que veo que hacen la mayoría de los usuarios de Arduino. Hay MUCHOS tutoriales en línea para comenzar con los microcontroladores que no involucran Arduino, que es lo que le sugiero que investigue si tiene planes de diseñar su propio circuito en el futuro. Si no tiene ningún deseo de aprender nada, entonces, por supuesto, cópielo, pero tenga en cuenta que a menudo hay formas mucho más simples y efectivas de hacer las cosas que nunca comprenderá si no sabe lo que está sucediendo.
Cuál elijas es una cuestión de gusto personal. AVR es un nivel más bajo que Arduino, por lo que si recién está comenzando, Arduino es definitivamente más fácil para comenzar rápidamente. Netduino está ahí si realmente quieres C#, sin embargo, Arduino es mejor compatible que Netduino.
En el lado de la PC, no importa lo que elija, podrá conectarse a su chip/circuito Arduino/Netduino/AVR desnudo a través del puerto serie/USB. En el lado de la PC, puede usar cualquier lenguaje de programación que desee, siempre que le dé acceso a los puertos serie. La forma en que esto funcionará es que Arduino/Netduino/bare AVR leerá/escribirá desde el puerto serie/USB y también lo hará su programa de PC. Se produce la comunicación.
En el lado integrado, la mayoría de las cosas que considerará tendrán un USART, lo que significa que la comunicación en serie está configurada. Sin embargo, los chips AVR puros no tienen un puerto USB, de por sí listos para usar: tendrá que construir un soporte USB a través de un circuito separado, aunque, como señala Kurt E Clothier , algunos chips AVR tienen soporte USB incorporado. . Algunos chips AVR no tienen un USART incorporado, pero no es probable que los elija.
En cuanto a la detección de temperatura, todas las plataformas que sugirió le brindarán las capacidades para hacerlo. Leer una temperatura puede ser tan simple como leer un ADC si está utilizando un sensor de temperatura LM34 o LM35. En Arduino, esto se logra con una línea: myReading = analogRead(pinNumber);
tendrá que transformar la lectura de temperatura en temperatura real, pero esto no es particularmente difícil.
Los motores un poco más complicados: para la mayoría (casi todos) los motores, su chip Arduino/Netduino/AVR no podrá conducir el motor directamente. Necesitará al menos un interruptor MOSFET / BJT (consulte aquí para obtener más información) y un diodo amortiguador o, de manera más robusta, un circuito de controlador de motor. La plataforma Arduino tiene una gran variedad de periféricos (en general llamados protectores , aunque Olin prefiere el término placa secundaria ), incluido un protector de motor. Si está utilizando un motor de alta potencia, este es el camino a seguir.
Netduino ejecuta una versión del tiempo de ejecución de .NET conocida como "micro runtime" IIRC. Usted escribe código en C# y se interpreta en Netduino. Netduino se envía con bibliotecas para acceder a las diversas funciones del microcontrolador, y esas bibliotecas están escritas en C. El código C# que escriba será muy lento de ejecutar, aunque el código de la biblioteca es rápido. Me gano la vida escribiendo código C#, pero no creo que netduino sea una gran opción para un microcontrolador; es más difícil de usar que un arduino en algunos aspectos, tiene mucho menos soporte (menos código de ejemplo, hardware menos compatible) y cuesta más. Tampoco creo que C# sea el lenguaje adecuado para los controladores.
He realizado proyectos con código personalizado para AVR y otros proyectos con Arduinos. Si recién está comenzando, el arduino tiene toneladas de ventajas, y la única desventaja es el costo más alto que un AVR sin formato.
Recomiendo mirar algunas de las introducciones para el AVR y para el arduino. Creo que eso te dará una buena idea de cuál es mejor para ti.
¿Cómo se determina cuántos sensores puede usar un microcontrolador?
Eso dependería de cuán creativo pueda ser y cuántos iopins tenga disponibles, y cuántos pines requiera el sensor. Si tiene 4 sensores de 3 pines, eso no significa necesariamente que necesite 12 pines para controlarlos, puede multiplexarlos y usar 5 pines y ahorrar 7 pines io. Así que todo realmente depende. Pero una forma de verlo es, cuántos pines io disponibles tiene y cuántos pines requieren sus sensores, eso le daría un límite bajo de cuántos puede tener. La creatividad, la experiencia y la comprensión de cómo funciona todo pueden aumentar la cantidad de sensores.
Tengo entendido que no puede incrustar C# directamente en ningún microcontrolador, pero puede usar C# y comunicarse a través del USB y buscar un puerto específico, ¿es esto cierto?
Si bien no he hecho mucho USB, sé que si está haciendo USB desde cero, eso implicaría escribir controladores en su máquina host. La forma más popular es usar un IC que ya maneja todo el protocolo USB y los controladores y se comporta como un puerto serie en su computadora. Básicamente, tiene un puente USB-Serie que puede conectarse a un puerto serie en su microcontrolador. Creo que el Arduino hace esto. No estoy seguro acerca de Netduino. Entonces, sí, puede usar C # para comunicarse a través de USB A TRAVÉS de un puerto específico (suponiendo que lo esté haciendo de la manera más fácil y usando un puente USB-Serial).
Lo que propones hacer es definitivamente posible. Puede escribir un programa que interactúe con su base de datos y que pueda enviar y recibir datos en serie a su microcontrolador.
Para responder a un punto específico, un microcontrolador presumiblemente podría tener un (número muy alto) de sensores conectados. El uso de sensores de bus, como i2c, spi, un cable, serie o cualquier otro protocolo de bus, le permitiría tener x muchos por bus, donde x es el límite para un bus determinado. Tendría que seguir algunas especificaciones técnicas para cablear el bus, y con múltiples del mismo bus, podría expandirse aún más.
El límite está realmente en términos de velocidad y practicidad. Podría tener mil sensores en un solo arduino, pero ¿podría encender, leer, procesar y mostrar esa información en un tiempo razonable? Tal vez, depende de lo bien que puedas codificar o de lo imaginativo que seas.
Incluso los sensores analógicos se pueden hacer así, usando multiplexores o circuitos integrados ADC. La mejor pregunta no es "cuántos sensores puede usar un microcontrolador", sino "cuántos sensores necesito" y continuar desde allí.
efox29
Anindo Ghosh
pirómano analógico