Conozco la opinión de muchos expertos técnicos sobre Arduino y, en cierta medida, comparto su punto de vista. Sin embargo, por ejemplo, para una automatización rápida, esta plataforma es muy útil: al igual que el diseñador de un niño, le permite ensamblar y programar un dispositivo en un par de horas sin perder tiempo en varias "referencias indefinidas a __bss_start__" y "Dispositivo no detectado".Una vez, para automatizar otra rutina, necesitaba una pantalla. Hojeé Aliexpress y aún no pude encontrar un escudo adecuado para Arduno.
Gato para llamar la atenciónLos problemas de Down and Out comenzaron
Entonces, necesitaba una interfaz de usuario de diálogo y, además, rápidamente. (El gato debía llamar la atención, se notó que funciona). Como si fuera a propósito, todos los fabricantes sugirieron dibujar manualmente campos de entrada y barras de progreso, programar manejadores de botones y, en una palabra, hacer todo lo que simplemente no quería. Sorprendentemente, ¿por qué no proporcionar una biblioteca de alto nivel que se ocupe de estas preocupaciones? Probablemente en el 80% de los casos, todas las tareas se reducen a una secuencia simple:- Mostrar un formulario con campos de entrada.
- Espere a que el usuario edite el campo Foo.
- Obtenga el nuevo valor del campo Foo.
- Haz algo a cambio.
Pero la falta de una biblioteca no fue el único obstáculo. Las escasas reservas de ROM de mi Arduino Uno (y la misma situación con Leonardo, Ethernet, Pro) fueron suficientes en el mejor de los casos para almacenar una imagen a una resolución de 128x128 píxeles. Y no quedaba lugar para el código.Después de haber recorrido un amplio frente a través de Aliexpress, DX y tiendas similares, finalmente encontré, en el lenguaje de los desarrolladores de redes, escudos "delgados tontos" o "demasiado gordos" . Los primeros no resuelven el problema, pero son baratos. Estos últimos son como un sistema de misiles antiaéreos, y tendrá que pagar una cantidad justa por esta redundancia. Si pudiera poner los labios de Nikanor Ivanovich en la nariz de Ivan Kuzmich ... Después de algunas dudas, decidí llenar este molesto vacío de marketing.¿Qué debemos construir un escudo?
Extendí el tablero, pedí las primeras muestras para experimentos, lo probé.
La idea tomó forma gradualmente. Por lo tanto, la solución debe ser fácil de usar y siempre barata (sobre lo que se muestra a continuación)- A bordo, el escudo debe ser un microcontrolador con un margen de memoria para al menos un par de pantallas.
- Para asegurarse de que no haya problemas con la memoria, puede agregar una ranura microSD.
- Además, justo en el escudo, debes colocar algunos botones.
- El microcontrolador debe hacer el "trabajo negro", representando los campos del formulario y procesando las pulsaciones de los botones de tal manera que, solo al suministrar energía al escudo cosido, sea posible hojear los formularios, editar los campos de entrada, poner un pájaro en la casilla de verificación, etc.
- Arduino : I2C, SPI UART. Arduino; (, ).
- Arduino GPIO, .
- , , « Vim, !», , , GTK Glade .
El componente más básico del escudo es el módulo de visualización. Tanto el precio como las características técnicas del producto dependen en gran medida de él. Cuando buscaba un módulo adecuado, quería comer pescado y montar a caballo: por un lado, procedí del criterio de disponibilidad, por otro lado, el costo del módulo debería ser mínimo. Básicamente, estos criterios se contradicen entre sí: tiendas como Terraelectronics, con oficinas en todo el país, ofrecían un cierto conjunto de pantallas a color de modelos comunes, pero sus precios eran de 2000 rublos o más; Por otro lado, había muchas buenas opciones en el mismo Aliexpress, pero todos tenían el mismo inconveniente: había un abismo entre ellos y nuestros desafortunados usuarios, en el que murieron más de mil cajas de cartón, y cuyo comportamiento era tan fácilmente predecible,como el comportamiento de las cotizaciones del petróleo o el clima.Todos, por supuesto, entendieron de qué se trataba. Entonces mi idea seguía siendo solo una idea.Como suele suceder, las charlas nocturnas en la cocina con una taza de té resultan ser fatales. Un amigo compartió de pasada cómo cambió una pantalla rota en su HTC. Resultó que las pantallas de los teléfonos inteligentes, que sin duda tienen mejores características que los productos en los catálogos de Terraelectronics, ¡cuestan dos o tres veces más baratas! Eso fue una revelación. Después de eso, se encontró una pantalla lo suficientemente rápida, que en Rusia se puede comprar en casi todos los pasos por un centavo; Se instaló en los teléfonos Nokia 2600/2650/3100/3200/5100/5140/6100/6220/6610/7210/7250. (Como resultó más tarde, redescubrí América, ya que esta pantalla se usa en muchos escudos para Arduino). Su resolución, 128 × 128 píxeles, es suficiente para mostrar un formulario con tres o cuatro campos de entrada.
Esmaltado es mejor que alardeado
Muchos, probablemente, todavía no entienden cómo usar el dispositivo descrito. Quizás la forma más fácil de ilustrar esto es con dos situaciones estándar:- Tenemos un termómetro digital, es necesario mostrar sus lecturas en la pantalla.
- Hay un servoaccionamiento, debe configurar los parámetros de su funcionamiento. Por ejemplo, su posición.
Termómetro
#include <intelcd.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 2
#define FORM_TERMO 0
#define FIELD_TERMO 0
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensor(&oneWire);
InteLCD lcd;
void setup(void)
{
lcd.init();
sensor.begin();
}
void loop(void)
{
sensor.requestTemperatures();
lcd.update(FORM_TERMO, FIELD_TERMO, sensor.getTempCByIndex(0));
delay(1000);
}
Servo
#include <InteLCD.h>
#include <Servo.h>
#define FORM_SERVO 0
#define FIELD_SERVO 0
InteLCD lcd;
Servo myservo;
void lcdEvent(void);
void setup(void)
{
myservo.attach(9);
lcd.init();
}
void loop(void)
{
}
void lcdEvent(void)
{
switch (lcd.event.code) {
case InteLCD::FIELD_UPDATED:
if (lcd.event.formid == FORM_SERVO && lcd.event.fieldid == FIELD_SERVO)
{
myservo.write(lcd.event.arg[0]);
delay(15);
}
break;
}
}
En el final
En mi opinión, la electrónica de bricolaje debe desarrollarse hacia la mayor modularidad, donde cada módulo es extremadamente simple y completo. Luego, cuando el niño levanta su castillo de juguete de varias partes de Lego, el usuario debe ensamblar su dispositivo en ladrillos, pero sin usar un martillo y una lima. Mi escudo es un pequeño paso en esta dirección.Estaré encantado de escuchar valiosos consejos y entender a quién más, pero a mí, le falta algo tan útil.