sâmbătă, 31 martie 2012

SimPlot - vizualizare date de la Arduino

SimPlot este un program gratuit si foarte simplu de utilizat impreuna cu Arduino. Permite vizualizarea datelor transmise de la orice microcontroler prin portul serial. Pot fi urmarite pana la patru canale analogice.

In exemplul de mai jos am legat la un Arduino doua potentiometre si am facut capturi de ecran in timp ce le roteam de zor ;)

/*
SimPlot Demo
 
Samples Analog Input and sends them over serial port to be plotted in SimPlot. 
This Demo software uses the default serial port "Serial".
Upto to 4 channels of data can be plotted. 

For details of SimPlot go to www.negtronics.com/simplot

Simplificata pentru postare pe blog - doua canale
Versiunea completa este la pagina de mai sus

*/

void setup() 
{ 
  Serial.begin(57600); 
} 

int buffer[20]; //Buffer needed to store data packet for transmission
int data1;
int data2;

void loop() 
{ 
  //Read Analog channels. You can connect accelerometer, gyro, temperature sensor etc to these channels
  data1 = analogRead(0);
  data2 = analogRead(1);
  
  plot(data1,data2);            //Plots 2 channels of data
  
  delay(10); //Read and plot analog inputs every 10ms.  
} 

//Function that takes 2 integer values and generates a packet to be sent to SimPlot.
void plot(int data1, int data2)
{
  int pktSize;
  
  buffer[0] = 0xCDAB;             //SimPlot packet header. Indicates start of data packet
  buffer[1] = 2*sizeof(int);      //Size of data in bytes. Does not include the header and size fields
  buffer[2] = data1;
  buffer[3] = data2;
    
  pktSize = 2 + 2 + (2*sizeof(int)); //Header bytes + size field bytes + data
  
  //IMPORTANT: Change to serial port that is connected to PC
  Serial.write((uint8_t * )buffer, pktSize);
}

vineri, 30 martie 2012

Arduino vs. alte placi de dezvoltare compatibile

Cele patru placi de dezvoltare au fost alese pe criteriul compatibilitatii cu Arduino, atat ca forma, cat si ca mediu de dezvoltare. Nu am inclus FEZ Panda si nici Netduino, din cauza mediului de devoltare Visual Studio. Intr-o postare viitoare le voi include si pe acestea.

Tot intr-o postare viitoare voi face si cateva teste de viteza si voi adauga o lista cu bibliotecile care sunt 100% compatibile cu Arduino.

De la stanga la dreapta si de sus in jos: PIC32-Pinguino, chipKIT Uno32, Olimexino-STM32, Arduino Uno



Am ales pentru comparatie pretul de la Farnell (fara TVA si fara transport).

Paginile oficiale:
Arduino Uno
chipKIT Uno32
Olimexino-STM32
PIC32-Pinguino-OTG

miercuri, 28 martie 2012

Conexiune seriala Arduino - Android

Au aparut in ultima vreme o multime de placi (gen IOIO, Mega ADK etc) pentru cei care vor sa lucreze cu Arduino si Android. O problema ar fi pretul...

Daca aveti norocul sa dispuneti de o tableta cu USB host, conectarea directa (prin cablul USB, la fel ca la PC) nu mai reprezinta asa o problema :)

Anul trecut am achizitionat cea mai ieftina tableta care avea USB host disponibila la acea data pe piata din Romania : Evolio EvoTab. Mai jos vom vedea cum se poate conecta o placa Arduino direct la tableta.

AVERTISMENT: procedura necesita root, lucru care poate duce la pierderea garantiei, defectarea echipamentului si/sau alte probleme de care, evident, raspundeti doar voi ;)

Arduino, Android si mai vechiul meu prieten, Bitlash

Avem nevoie de urmatoarele:
1. o placa Arduino Uno
2. o tableta care dispune de USB host
3. cablul USB; in principiu este bun cablul pe care-l folositi la Arduino pentru legatura la PC, daca aveti la tableta o mufa USB type A
4. o modalitate de a obtine root pe tableta
5. o aplicatie gen Terminal pe tableta (de exemplu Android Terminal Emulator din Market/Play sau cum se mai numeste zilele astea...)
6. aplicatia BusyBox (tot de acolo, daca nu este instalata deja pe tableta)

Principala problema o reprezinta root-area tabletei, la care nu va pot ajuta ;)
Dupa aceea instalati cele doua aplicatii (Terminal si BusyBox).
Porniti aplicatia Terminal si scrieti comanda "su", urmata de un Enter, pentru a verifica root-area. Daca merge e bine... problema e ca si rezolvata.
In exemplul din imaginea de mai sus am pus Bitlash pe Arduino si am modificat sketch-ul cu viteza la 9600 in loc de 57600.
Conectam placa Arduino la tableta si pornim modul USB host din setari. Placa ar trebui sa fie pe "ttyACM0", lucru pe care-l putem verifica usor din terminal, cu comanda de mai jos:
busybox dmesg | busybox grep tty

Daca totul e OK pana aici urmeaza comanda de conectare:
busybox microcom -s 9600 /dev/ttyACM0


Mult succes!!!

duminică, 25 martie 2012

StickOS BASIC pentru chipKIT

Despre placile chipKIT Uno32 si Max32 de la Digilent am mai scris. Mediul de dezvoltare este bazat pe Arduino, multe dintre sketch-urile Arduino ruleaza fara probleme si fara modificari, pretul lor este foarte bun, avand in vedere ca sunt "dotate" cu microcontrolere PIC32 de la Microchip (mai performante decat cele de pe placile Arduino uzuale).

Partea si mai interesanta vine atunci cand comparam memoria SRAM: 2KB pentru Arduino Uno fata de 16KB pentru chipKIT Uno32...

Datorita acestei memorii mai mari putem sa folosim cu placile chipKIT un mediu de programare interactiv precum StickOS BASIC.

StickOS include un editor usor de folosit (daca ati lucrat cu Spectrum, Commodore si altele asemanatoare va veti simti ca acasa), un compilator linie-cu-linie, un debugger interactiv foarte bun, un profiler si un sistem de fisiere flash (pentru stocarea programelor si a parametrilor). Toate acestea ruleaza in intregime pe microcontroler si sunt controlate printr-o interfata interactiva in linie de comanda :)
Totul se realizeaza utilizand orice program gen hyperterminal (compatibil ANSI sau VT100), pe orice dispozitiv care permite acest lucru. Dupa ce avem un program functional, putem seta microcontrolerul sa-l ruleze automat.

Documentatia este foarte bine scrisa si destul de cuprinzatoare. Dupa cum se poate vedea in imaginile de mai jos, dispunem de un help detaliat si in linia de comanda :)


In ultima imagine vedem introducerea unui program gen blink (comanda "new" si liniile introduse), rularea programului ("run"), terminarea executiei (cu tastele Ctrl + C), modificarea unei linii din program ("edit 40"), listarea ("list" - de remarcat indentarea din while...), pornirea trasarii ("trace on").

Cateva raspunsuri la intrebarea "de ce am alege sa lucram in felul asta, cand exista atatea compilatoare": in opinia mea nimic nu se compara cu executia linie cu linie a unui program atunci cand invatam sa lucram cu un dispozitiv nou; debug-ul si trasarea programelor ne ajuta sa vedem clar unde gresim; putem lucra de pe orice laptop, notebook, PC, tableta, telefon care permite conexiune seriala, fara sa mai instalam nimic in afara de un terminal; pentru ca se poate si e chiar distractiv ;-)

joi, 1 martie 2012

Un nou magazin pentru Arduino in Romania

Primavara se numara ghioceii, nu-i asa?

Am fost anuntat astazi ca avem un nou magazin "pentru Arduino, Raspberry Pi, shield-uri, module şi accesorii conexe", Teguna. Dupa cum am mai spus aici: cu cat mai multi, cu atat mai bine (pentru noi, cumparatorii, evident). Imi place filozofia lor "Intentionam sa pastram preturile cat de mici cu putinta pe termen lung" :D



Mi s-a parut interesant faptul ca aici gasim "clone" de Arduino, la preturi foarte mici. De exmplu, un "TOSduino Pro Mini 168 5V/16MHz" este 49 de lei cu tot cu TVA. Mi-a mai placut si faptul ca am gasit un shield Ethernet ENC28J60 (care mi se pare suficient pentru Arduino).

Le doresc mult succes in activitate!