=====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).