domingo, 16 de febrero de 2020

Arduino en Atmega AVR 0 Series

Desde hace un tiempo tengo en mis manos dos tarjetas de desarrollo la AVR-IoT con el Atmega 4808 y la curiosity Nano Atmega 4809
La primera desarrollada para funcionar inicialmente con los servicios de Google ( luego con el tiempo esto fue cambiando a una mayor diversidad). Cuenta con el modulo WiFi WINC1510, sensor de Luz, sensor de temperatura e IC de de seguridad/encriptación. También cuenta con su propio programador abordo y conector para alimentación a batería de litio con su etapa de carga.

La Curiosity Nano  mas de 40 pines I/O cuenta con cristal 32 KHz para implementar aplicaciones RTC, También tiene programador/ depurador a bordo.

La idea en esta serie realizar una serie de tutoriales con estas tarjetas basada en Arduino.

Y aqui empezamos. Para ello nos basamos en la libreria MCUdude / MegaCoreX. La documentación completa aqui ===>>> https://github.com/MCUdude/MegaCoreX

Para ello abrimos nuestro IDE Arduino y en la pestaña File / Preferences / Additional Boards Manager URLs: pegamos el siguiente enlace:
https://mcudude.github.io/MegaCoreX/package_MCUdude_MegaCoreX_index.json
Luego nos vamos Open the Tools > Board > Boards Manager...  esperamos que actualice el listado y si nos desplazamos ya debe aparecer MegaCorex by MCUdude instalamos y ya estamos listos hasta los momentos.

Ahora veremos nuestro Pinout
El AVR-IOT WG utiliza el ATmega4808 en un encapsulado de 32 pines. El estándar de 32 pines es el pinout correcto para esta placa. Hay que tener en cuenta que el puerto serial UART2 está conectado al chip depurador. Esto significa que tendrá que usar Serial2.begin (baudios) para imprimir en el monitor serial. También tendrá que elegir Atmel nEDBG (ATSAMD21E18) como su programador para cargar el código.
En el pinout aparece en color celeste los pines compatibles con Arduino en el conector MiKroBus al igual que los botones y los leds. Mas adelante con el squematico en mano tambien les enseñare los pines conectados al Modulo WINC1510.

Ahora vamos con el "Hola Mundo"
Lo ajustaremos de la siguiente manera




////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

#define BlueLed 15 // El Led azul de la placa AVR-IoT

void setup() {
  // Inicializa el puerto serial en este caso el puerto serial 2
  Serial2.begin (9600);
  // Inicializa el led azul como salida
  pinMode(BlueLed, OUTPUT);
  Serial2.println ("Empezamos");
  delay(3000); 
  
}

void loop() {
  digitalWrite(BlueLed, LOW);   // el Led se enciende en bajo debido a que los leds de la placa están alimentados a Vdd
  Serial2.println("El Led azul está encendido");
  delay(2000);                       // espera por 2 segundos
  digitalWrite(BlueLed, HIGH);    // el Led se apaga en alto debido a que los leds de la placa están alimentados a Vdd
  Serial2.println("El Led azul está apagado");
  delay(2000);                       // espera por 2 segundos
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


Segundo ejemplo incluyendo todos los leds a bordo



#define BlueLed 15 // El Led azul de la placa AVR-IoT
#define GreenLed 14 // El Led verde de la placa AVR-IoT
#define YellowLed 13 // El Led amarillo de la placa AVR-IoT
#define RedLed 12 // El Led rojo de la placa AVR-IoT

void setup() {
  // Inicializa el puero serial en este caso el puerto serial 2
  Serial2.begin (9600);
  pinMode(BlueLed, OUTPUT);
  pinMode(YellowLed, OUTPUT);
  pinMode(GreenLed, OUTPUT);
  pinMode(RedLed, OUTPUT);
  Serial2.println ("Empezamos");
  delay(3000); 
  
}

void loop() {
  digitalWrite(BlueLed, LOW);
  delay(500);   
  digitalWrite(GreenLed, LOW);
  delay(500);                    
  digitalWrite(YellowLed, LOW);
  delay(500);
  digitalWrite(RedLed, LOW);
  delay(500);
  digitalWrite(BlueLed, HIGH);
  delay(500);   
  digitalWrite(GreenLed, HIGH);
  delay(500);                       
  digitalWrite(YellowLed, HIGH);
  delay(500);       
  digitalWrite(RedLed, HIGH);
  delay(500);   
}

AVR IoT Light Sensor

La tarjeta AVR IoT cuenta con el sensor de luz ambiental TEMT6000  un foto-transistor PNP adaptado a la respuesta del ojo humano. Según el...