=====LilyTiny USB =====
{{ :guias:lilytyny_usb.jpg?600 |}}
En esta guía recopilaremos información relevante que vayamos encontrando para facilitar los primeros pasos con [[ https://es.aliexpress.com/item/Free-Shipping-CJMCU-LilyTiny-LilyPad-main-board-for-arduino-microcontroller-miniature-wearable-high-quality/32243072474.html?spm=a2g0s.9042311.0.0.3f4263c0FAccY8|esta placa]] de bajo coste ideal por su reducido tamaño, 22 cm, para proyectos textiles sencillos. Son placas de menos de 3 € inspirados en las Sparkfun's LilyTiny o Adafruits Gemma .
{{ guias:moneda.jpg?300|}}
=====Características y esquema de la placa=====
Esta placa integra el microcontrolador CJMCU-ATTINY85 y es en formato "moneda" similar a la [[http://digistump.com/products/1|Digispark USB]]. Puede ser programada directamente a través del puerto USB intergrado en la misma sin la necesidad de un programador AVR o de usar un Arduino como programador gracias al bootloader MICRONUCLEUS . Para ello, como veremos más adelante, utilizaremos los drivers y configuración de [[https://digistump.com/wiki/digispark/tutorials/connecting|Digispark]].
Aquí tenemos el Pintout de Digispark coincidente con el de esta placa:
{{ :guias:pinout.jpg |}}
{{ :guias:digispark_pinout2.jpg?300|}}
Podéis encontrar el esquema y las características detalladas en el anterior enlace de Digispark.
**¡OJO!** Como se indica en el esquema adjunto, el P5 de la placa se corresponde con en pin físico 1 del ATtiny 85, es decir, el pin de Reset. Esto significa que en principio disponemos de 5 pines hábiles. Se puede desactivar la función de Reset de dicho pin aunque es un proceso complejo. Os dejamos en el último apartado un par de enlaces al respecto.
=====Instalación drivers y configuración IDE de Arduino=====
===Windows===
Podéis seguir la excelente guía de instalación de [[https://www.luisllamas.es/programar-digispark-con-el-ide-de-arduino/|Luis LLamas]] para la Digispark USB.
Aseguraos de que tenéis una versión del IDE de Arduino 1.6.6 o superior. En el tutorial recomendado se hace la instalación sobre la versión 1.8.1 y en mi caso he probado sobre la 1.8.7 y Windows 10 sin problemas.
===Linux===
Hemos hecho la instalación en un equipo con Linux Mint pero este método también sirve para cualquier distro basada en Debian. Asegúrate de tener el IDE de Arduino a la versión 1.6.6 o superior. Primero, abrimos la ventana de propiedades en **//Archivo>Preferencias//** y en el campo de //Gestor de URLs de tarjetas// ponemos: http://digistump.com/package_digistump_index.json
{{ :guias:digispark-url-linux.png?500 |}}
A continuación, instalamos el paquete //Digistump AVR Boards// desde **//Herramientas>Placa>Gestor de tarjetas//**
{{ :guias:digispark-AVRboard-linux.png?500 |}}
Por último, abrimos una terminal y creamos una regla para que el sistema operativo reconozca correctamente la placa.
sudo nano /etc/udev/rules.d/49-micronucleus.rules
Esto abrirá un editor de texto donde pegamos lo siguiente:
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0753", MODE:="0666"
KERNEL=="ttyACM*", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0753", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1"
Salimos del editor guardando los cambios y ya tendremos nuestra LilyTiny funcionando en Linux.
Tanto e dispositivos Windows como en Linux, a diferencia de otras placas, debemos CARGAR EL PROGRAMA CON LA LILYTINY DESCONECTADA. Aparecerá un mensaje como el que veis en la imagen inferior . Conectad después la placa a través del USB y se cargará el programa.
{{ :guias:mensaje.jpg |}}
También es importante que sepais que en la pestaña **//Herramientas>Puerto//** permanecerá desmarcada aún con la placa conectada.
=====Lectura de valores por Monitor Serie=====
Uno de las dificultades al utilizar esta placa es que no podemos leer directamente a través del Monitor Serie los valores de un sensor como hacemos habitualmente con otras. Como comentamos anteriormente, la pestaña **//Herramientas>Puerto//** permanecerá desmarcada aún con el dispositivo conectado y siempre nos dará un error al intentar visualizar los datos al no encontrar el puerto COM.
Aquí teneis un [[https://www.youtube.com/watch?v=zxmyfiFbo2c|video]] con información muy útil para salvar este problema con un [[https://es.aliexpress.com/store/product/CP2102-USB-2-0-to-TTL-UART-Module-6Pin-Serial-Converter-STC-Replace-FT232-Module/1414081_32279672853.html?spm=a219c.search0104.3.15.a8d57dd7sxpQhJ&ws_ab_test=searchweb0_0,searchweb201602_5_10065_10068_10547_319_10891_317_10548_10696_453_10084_454_10083_10618_10307_10820_10301_10821_538_10303_537_536_10059_10884_10887_100031_321_322_10103_5727015_5727515-5727015_10891,searchweb201603_51,ppcSwitch_0&algo_expid=80a8eb55-420a-4a7b-96e5-ada817641b32-2&algo_pvid=80a8eb55-420a-4a7b-96e5-ada817641b32|conversor USB-UART]] y a continución un ejemplo de visualización de valores de un sensor de temperatura[[https://www.analog.com/media/en/technical-documentation/data-sheets/tmp35_36_37.pdf|TMP36]].
En primer lugar, abrimos el IDE de Arduino y cargamos este sencillo código en la placa tal y como se describe arriba. Recordad que teneis que iniciar la subida del código con la placa desconectada y conectarla una vez comience.
void setup() {
// Inicializamos el Puerto Serie 9600 bits por segundo:
Serial.begin(9600);
}
void loop() {
// Leemos el valor de entrada en el P4 (A2):
int sensorValue = analogRead(A2);
// Imprimimos los valores:
Serial.println(sensorValue);
//Espera entre lecturas para estabilizar
delay(100);
}
Una vez subido el código código, desconectamos la placa, conectamos el conversor USB-UART que debe ser reconocido en un puerto COM y realizamos las conexiones tal y como se describen en el esquema. Es importante que el pin RX del conversor se conecte al P2(TX) de la LilyTiny.
{{ :guias:montaxe_lectura_serial.jpg?600 |}}
De este modo podemos leer los valores del sensor conectado en P4(A2).
{{ :guias:lectura_serial.jpg?600 |}}
Para esta práctica son muy útiles conectores de cocodrilo.
{{:guias:20181230_192218.jpg?250|}}{{:guias:20181230_192428.jpg?250|}}{{:guias:20181230_192650.jpg?250|}}
=====Otros enlaces de interés con información de utilidad=====
* [[https://digistump.com/wiki/digispark/tutorials/connecting |Digistump Wiki ]]
*[[https://diyprojects.io/tutorial-program-cjmcu-attiny85-lilytiny-lilypad/#.XCdfqVxKjIU | DIY Projets]] (inglés).
* [[https://www.luisllamas.es/digispark-placa-con-attiny85-compatible-con-arduino/ | Blog]] de Luis Llamas con tres artículos interesantes (español).
* [[https://www.adrirobot.it/CJMCU_LilyTiny/CJMCU_LilyTiny.htm |Adrirobot ]] (italiano).
* [[ http://raphuscucullatus.blogspot.com/2017/03/chlilytiny-for-beginners.html|Ch.Llilytiny para principiantes ]] (alemán).
* [[ https://forum.arduino.cc/index.php?topic=563216.0|Desactivar Reset ]] en hilo de Foro Arduino(español).
* [[ http://raphuscucullatus.blogspot.com/2017/03/chlilytiny-for-beginners.html|Desactivar Reset ]] en Projects from Tech (inglés).