|     Inicio    |   |         |  |   FOROS      |  |      |      
   Elastix - VoIP B4A (Basic4Android) App inventor 2 PHP - MySQL
  Estación meteorológica B4J (Basic4Java) ADB Shell - Android Arduino
  Raspberry Pi Visual Basic Script (VBS) FireBase (BD autoactualizable) NodeMCU como Arduino
  AutoIt (Programación) Visual Basic Cosas de Windows Webs interesantes
Translate:
Búsqueda en este sitio:


.

Tutorial de Arduino en español.
Juan Antonio Villalpando

Volver al índice del tutorial

____________________________

67.- Attiny85. Digispark Mini Módulo de placa de desarrollo USB Tiny85. ATTINY85.

Es un pequeña tarjeta con el chip microcontrolador ATTINY85 que puede funcionar de forma parecida a un nano Arduino. Se puede programar con el IDE del Arduino.

En la imagen vemos dos modelos, el de la izquierda se inserta directamente en el conector USB del ordenador para ser programado.

En el de la derecha debemos conectarlo al ordenador mediante un cable micro USB. Utilizaremos este módelo porque es más fácil para el aprendizaje.

Más adelante veremos otra posibilidad que consiste en utilizar directamente el chip, sin tarjeta.

La tarjeta tiene el regulador de tensión 78W05 o el 78L05.

Uno de los problemas que tiene este chip es que solo dispone de 6 kB para nuestros Sketch, por lo cual, solo podemos hacer programas pequeños.

- Características del ATTINY85:

  • Microcontrolador arquitectura de 8 bits de la familia AVR
  • Hasta 6 pines I/O disponibles
  • Memoria de programa flash de 8 kB (2 kB lo utiliza el sistema para el bootloader, así que nos quedan 6 kB)
  • SRAM de 512 Bytes
  • EEPROM de datos de 512 Bytes
  • Oscilador externo hasta 20 MHz
  • ADC de 10 bits, 4 canales (ó 2 canales diferenciales) y medición de temperatura.
  • Voltaje de operación 2.7 V a 5.5 V
  • 1 timer/contador de  8 bits
  • 1 timer/contador de 8 bits, alta velocidad y prescaler separado
  • 4 canales PWM
  • USI (Universal Serial Interface) que soporta SPI y TWI
  • Comparador analógico.
  • Múltiples fuentes de interrupción
  • Oscilador de reloj interno configurable
  • Brown-out Reset de valor programable
  • Power-on Reset
  • Modos de bajo consumo
  • Soporta 10,000 ciclos de borrado/escritura en memoria flash
  • Soporta 100,000 ciclos de borrado/escritura en memoria EEPROM
  • Encapsulado PDIP de 8 pines

- Además la tarjeta lleva se puede conectar directamente al conector USB.

- Aquí tenemos el patillaje, siguen la numeración indicadadas en las PB0, PB1, PB2, PB3, PB4 y PB5.

- Atención, los terminales ADC son el 2, 3 y 4, en el código se denomina A1, A3 y A2 respectivamente.

- El diodo interno suele estar en el terminal 1.

- Los terminales para el bus I2C son el PB0 y el PB2.

 

- Vamos a realizar un blink, es decir el intermitente del LED que tiene integrado la placa.

_________________________________
- Arduino IDE. Configuración.

- Primero vamos a instalar los drivers para que lo reconozca nuestro Windows.

https://github.com/digistump/DigistumpArduino/releases/download/1.6.7/Digistump.Drivers.zip

Digistump.Drivers.zip


- Descomprimimos el archivo y ejecutamos Install Drivers.exe.

- Vamos a configurar el IDE del Arduino para que pueda trabajar con esta placa.

- (Proceso en inglés: http://digistump.com/wiki/digispark/tutorials/connecting)

- Vamos al IDE de Arduino, pulsamos en Archivo / Preferencias y escribimos esta dirección.

http://digistump.com/package_digistump_index.json,

- Ahora vamos a configurar el IDE para que reconozca la tarjeta Digispark Tiny85, para ello pulsamos en Herramientas / Placa: / Gestor de tarjetas...

- Escribimos Digistump avr. Instalar

- Volvemos a Herramientas / Placa / y asignamos la Digispark (Default - 16.5mhz)

- Ya tenemos a nuestro IDE preparado para poder trabajar con esta tarjeta.

- Quitar la tarjeta del conector. Observa que no está marcado ningún Puerto.

- Vamos a cargar el Ejemplo Start

- Es simplemente un parpadeo del LED integrado.

- Pulsamos en Subir para cargar el código.

- Nos saldrá el siguiente mensaje indicando que tenemos 60 segundos para insertar la tarjeta.

- Insertamos la tarjeta y obtendremos...

- En estos momentos el código se habrá grabado en el Attiny85.

- El LED de la tarjeta parpadeará.

- Si queremos modificar el código, quitamos la tarjeta, lo modificamos. Pulsamos en Subir. Insertamos la tarjeta.

- Cada vez que vayamos a modificar el código quitamos la tarjeta.

- Es decir, cuando modifiquemos el código y cuando pulsemos el botón de Subir del IDE, la tarjeta debe estar quitada. Cuando salga el mensaje Plug in device now... debemos conectar la tarjeta.

_________________________________
1.- Código blink, parpadeo del LED del módulo. Start.

- En este módulo el LED interno está conectado al terminal P1 del módulo.

- Es el terminal 6 del chip.

Start.ino

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(0, OUTPUT); //LED on Model B
  pinMode(1, OUTPUT); //LED on Model A  or Pro
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(1, HIGH);
  delay(1000);               // wait for a second
  digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW
  digitalWrite(1, LOW); 
  delay(1000);               // wait for a second
}			

_________________________________
2.- Tiny 85, Bluetooth HC-06 y App Inventor.

- Realizamos esta conexión:

- Cargamos este Sketch.

- Para cargarlo, quitamos el módulo y los cables RX y TX.

- Subimos el código mediante el IDE de Arduino.

- Cuando salga el mensaje Plug in device now... conectamos la tarjeta.

- Por último, ponemos los cables RX y TX.

Tiny85_BT.ino

// Tiny85 y Bluetooth HC-06
// Juan A. Villalpando
// kio4.com

#include <SoftSerial.h>
#include <TinyPinChange.h>
#define LED4 4

SoftSerial Bluetooth(2,3);
char caracter;

void setup() {
  Bluetooth.begin(9600);
  pinMode(LED4, OUTPUT);}
  
void loop()
{
  while(Bluetooth.available() > 0)
  {
    caracter = Bluetooth.read();
    if (caracter == '1'){ 
      digitalWrite(LED4, HIGH);
      Bluetooth.println('E');}
      
    if (caracter == '0'){ 
      digitalWrite(LED4, LOW);
      Bluetooth.println('A');}
  }
}

- Una vez cargado el programa, podemos alimentar el circuito con el mismo cable USB o bien con una fuente externa entre 5V y GND.

- App Inventor.

p9_67Tiny85BT.aia

______________________________________________
A.- Programar el chip Tiny85 mediante una tarjeta con zócalo.

- También tenemos la posibilidad de trabajar con el chip de inserción como vemos en la siguiente imagen.

- Este chip lo podemos programar mediante un Arduino UNO y luego insertarlo en una protoboard o en un circuito impreso. Esto lo veremos en el siguente apartado.

- Pero tal vez resulte más cómodo comprar el módulo que se muestra a la izquierda de la imagen, observa el zócalo. Insertamos el chip en el zócalo, lo programamos como hemos visto en este tutorial y luego podemos retirar el chip ya programado e insertarlo en otro circuito.

____________________________________________
B.- Programar el chip Tiny85 mediante Arduino UNO.

1.- Conectamos el Arduino UNO (En Herramientas / Placa: debe estar "Arduino UNO")

- Vamos a Archivo / Ejemplos / 11.ArduinoISP / y cargamos el Sketch ArduinoISP en nuestro Arduino UNO para convertirlo en un Grabador de chip.

2.- Una vez cargado el Sketch anterior, realizamos las siguientes conexiones.

- El condensador es de 10 uF, pero no es necesario.

3.- Abrimos un nuevo Archivo y pegamos el siguiente código. Parpadeo del LED1.

Start.ino

// the setup routine runs once when you press reset:
void setup() {                
  // initialize the digital pin as an output.
  pinMode(0, OUTPUT); //LED on Model B
  pinMode(1, OUTPUT); //LED on Model A  or Pro
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(0, HIGH);   // turn the LED on (HIGH is the voltage level)
  digitalWrite(1, HIGH);
  delay(1000);               // wait for a second
  digitalWrite(0, LOW);    // turn the LED off by making the voltage LOW
  digitalWrite(1, LOW); 
  delay(1000);               // wait for a second
}			

4.- Vamos al IDE de Arduino. Pulsamos en Herramientas / Programador / Arduino as ISP.

- Observa que la Placa está en "Arduino UNO"

5.- Pulsamos en Quemar Bootlader

- El código Start.ino se grabará en el Tiny85.

____________________________________________
C.- Chip programado.

- Una vez programado el Tiny85 con el código del parpadeo del LED1, realizamos la siguiente conexión para comprobar el funcionamiento.

- Lo alimentamos con 5 V.

____________________________________________
D.- Chip programado y Tinkercad.

- Tinkercad es una web en donde podemos simular de manera bastante realista el funcionamiento de circuitos.

- Para entrar en Tinkercad nos autenficamos con una cuenta de gmail.

- Vamos a la opción de Circuitos. Creamos un nuevo Circuito.

https://www.tinkercad.com/dashboard?type=circuits&collection=designs

Start.ino

void setup()
{
  pinMode(1, OUTPUT);
}

void loop()
{
  digitalWrite(1, HIGH);
  delay(1000); // Wait for 1000 millisecond(s)
  digitalWrite(1, LOW);
  delay(1000); // Wait for 1000 millisecond(s)
}		

- Más ejemplos:

https://mjvo.github.io/tutorials/circuits/attiny85/

____________________________
3.- Pulsador.

- Mediante un Pulsador vamos a encender/apagar el LED1, es decir el LED de la placa que está conectado el terminal P1.

- El código funciona con lógica negativa, es decir cuando pulsamos apaga el LED, en reposo el LED está encendido. Fácilmente se puede cambiar a lógica positiva.

Pulsador.ino

#define Pulsador0 0
#define LED1 1
int valor;

void setup() {
  pinMode(Pulsador0, INPUT);
  pinMode(LED1, OUTPUT);
}

void loop() {
  valor = digitalRead(Pulsador0);
  if (valor == HIGH) { 
      digitalWrite(LED1, HIGH);
  } 

  if (valor == LOW) { 
      digitalWrite(LED1, LOW);
  } 
}	

- En este tutorial puedes ver códigos parecidos y el concepto de PULL-UP:

https://www.arduinoslovakia.eu/blog/2018/2/attiny85---tlacidla?lang=en

____________________________
4.- Pulsador, Bluetooth y App Inventor.

- Mediante el Pulsador, encendemos/apagamos el LED1 que se encuentra en la placa y enviamos los textos: "Encendido" o "Apagado" mediante Bluetooth a Android con App Inventor.

- Antes de cargar el programa conviente quitar los cables RX y TX.

Pulsador_BT.ino

// Juan A. Villalpando
// kio4.com
// Pulsador. Bluetooth.
		
#include <SoftSerial.h>
#define Pulsador0 0
#define LED1 1
int valor;

SoftSerial Bluetooth(2,3);
char caracter;

void setup() {
  Bluetooth.begin(9600);
  pinMode(Pulsador0, INPUT);
  pinMode(LED1, OUTPUT);
}

void loop() {
  valor = digitalRead(Pulsador0);
  if (valor == HIGH) { 
      digitalWrite(LED1, HIGH);
      Bluetooth.println("Encendido");
  } 

  if (valor == LOW) { 
      digitalWrite(LED1, LOW);
      Bluetooth.println("Apagado");
  } 
delay(200);  
}

_____________________________________________________
- Código para App Inventor.

p9_67Tiny85BT_Pulsa.aia

- El Intervalo del Reloj está puesto a 100.

 

____________________________
5.- Potenciómetro. Entrada analógica. Bluetooth. App Inventor.

p9_67Tiny85BT_Pulsa.aia (Es es mismo código que el del apartado anterior)

- Movemos el potenciómetro y enviamos el valor mediante Bluetooth a Android mediante App Inventor.

- Si el valor obtenido del potenciómetro es mayor de 500, se enciende el LED1.

- Atención, los terminales ADC son el 2, 3 y 4, en el código se denomina A1, A3 y A2 respectivamente.

- En este ejemplo utilizaré el terminal P4, que en el código se denomina A2

- Antes de cargar el programa es conveniente quitar los cables RX, TX y el A2.

Potenciometro_BT.ino

// Juan A. Villalpando
// kio4.com
// Potenciómetro. Bluetooth.

#include <SoftSerial.h>
int pot_valor = 0;
String pot_valorS = ""; // pot_valor en String.
#define LED1 1 

SoftSerial Bluetooth(2,3);

void setup(){ 
Bluetooth.begin(9600);
pinMode (LED1,OUTPUT); 
pinMode (A2,INPUT); // Entrada ADC del terminal 4
} 

void loop(){ 
    pot_valor = analogRead(A2);
    // pot_valor = map(pot_valor, 0, 1023, 0, 255);
  pot_valorS = String(pot_valor);
  Bluetooth.println(pot_valorS);
  if (pot_valor > 500)
  {digitalWrite(LED1,HIGH);}
  else
  {digitalWrite(LED1,LOW);}

  delay(200); 
} 
			

____________________________
6.- App Inventor envía texto por Bluetooth y se muestra en una LCD-I2C.

p9_67Tiny85BT_Texto.aia

- Escribimos dos textos en la aplicación y lo enviamos por Bluetooth al Tiny85 para que lo muestre en la pantalla LCD-I2C.

- Esta Sketch tiene un tamaño de 5988 bytes, el máximo que admite el chip para nuestros Sketch es de 6012 bytes, así que está bastante apurado.

- Otra cosa importante es que la información por Bluetooth se envía en paquetes de unos 22 bytes, por eso en el código de App Inventor he cortado cada parte del texto.

- Los terminales para el bus I2C son el PB0 y el PB2.

- Para el Bluetooth he utilizado los terminales PB1 y PB3.

- Librería: LiquidCrystal_ATtiny.zip

LCD_BT.ino

// Juan A. Villalpando
// kio4.com
 
#include <TinyWireM.h> 
#include <LiquidCrystal_attiny.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
#include <SoftSerial.h>

SoftSerial Bluetooth(1,3);
char caracter;
String palabra;

void setup() {
  Bluetooth.begin(9600);
  lcd.init();
  lcd.backlight(); 
}
 
void loop() {

if(Bluetooth.available()){
    caracter = Bluetooth.read(); 
    palabra = palabra + caracter; 
  if (caracter == '*') {
    palabra = palabra.substring(0, palabra.length()-1); // Quita el *
    int commaIndex = palabra.indexOf(',');
    lcd.clear();
    lcd.setCursor(0, 0); 
    lcd.print(palabra.substring(0, commaIndex));
    lcd.setCursor(0, 1); 
    lcd.print(palabra.substring(commaIndex+1));
    palabra = "";     }
  }
  delay(100);
}
			

_____________________________________________________
- Código para App Inventor.

 

_________________________________________________
- Continúa en...

67_Attiny85_Teclado.htm

_______________________________

- Mi correo:
juana1991@yahoo.com
- KIO4.COM - Política de cookies. Textos e imágenes propiedad del autor:
© Juan A. Villalpando
No se permite la copia de información ni imágenes.
Usamos cookies propias y de terceros que entre otras cosas recogen datos sobre sus hábitos de navegación y realizan análisis de uso de nuestro sitio.
Si continúa navegando consideramos que acepta su uso. Acepto    Más información