luni, 27 decembrie 2010

A aparut versiunea Arduino 0022

Am instalat ieri pe Ubuntu Netbook 10.04 versiunea 0022 si merge bine, nu am Uno sa-l testez cu el dar cu Duemilanove nu sunt probleme. Pana acum ramasesem la versiunea 0018, asa ca diferentele sunt destul de multe...
Arduino Software Release Notes
Mai interesante par a fi macro-urile de manipulare de caractere si biblioteca SD Card.
Trebuie sa vad cum functioneaza partea de Ethernet (DNS, DHCP), ca aici am avut probleme cu alte biblioteci la versiunea 0020.

marți, 21 decembrie 2010

Engineering TV si Vinculo de la FTDI

Am dat pe Twitter peste acest site interesant ;-)
Daca nu avem la ce sa ne uitam la televizor, merita incercat sa vedem ce gasim pe la sectiunea embedded de pe Engineering TV.
Acolo am vazut Vinculo, reactia FTDI la Arduino Uno, care a renuntat la chipul lor si foloseste Atmega8 pentru comunicarea cu PC-ul.
Evident, vreau si eu unul... dar cred ca pe moment ma abtin... noroc ca inca nu sunt disponibile :)

Vinculo Platform Features:
• Onboard VNC2-64 USB dual channel Host / Device controller with a powerful 16-bit / 48MHz MCU core, 256KB Flash and 16KB SRAM which also supports UART, FIFO, SPI (master and slave), PWM and GPIO interfaces.
• The Vinculo I/O expansion bus is a superset of the popular Arduino Duemilanove / Uno platform with 2 extra rows of headers providing 10 additional interface pins thus making it easier to develop IO Boards (Shields) whilst avoiding hardware resource conflicts between different IO add-on cards.
• USB standard ‘A’ and mini ‘B’ connectors.
• 8-channel / 10-bit ADC and PWM interfaces.
• 38 general purpose I/Os (30 digital, 8 analogue).
• The Vinculo supports connectivity to a wide range of application boards developed by the Arduino open-source community. These include Ethernet, motor control, LCD and many others.
• The Vinculo uses a subset of standard ANSII ‘C’ (instead of the wiring/processing based software platform) with FTDI supported, free-of-charge software development tools, libraries and reference designs.
• Debugger interface to the VNC2 DEBUG MODULE for rapid firmware debugging.
• Same PCB form factor as Arduino.
• Compatible with the Vinculo_Proto shield development board (VNCLO-SHLD-1A - available below)
• 9V/1A DC input or USB powered (dependant on USB Host interface current requirements)

vineri, 17 decembrie 2010

Placile noi

Ieri, chiar inainte sa plec la intalnirea Tehnorama, a sosit LPCXpresso cu LPC1343, dupa doar 47 de ore de cand am trimis comanda! Venind din Anglia prin Germania si pana la mine la usa mi se pare un timp super OK pentru Farnell si UPS, bravo lor!

Despre continut nu e mare lucru de spus, doar placa si un cupon cu seria pentru compilator (probabil, desi nu am avut nevoie de ea ca sa-l inregistrez).
Astazi dupa-amiaza am taiat si lipit headere stil "Arduino", evident ;-)
Cum am scos ciocanul de lipit din priza am avut nevoie de el din nou... a sunat la usa curierul DHL care aducea cele doua placi de la Texas Instruments MSP430 Launchpad.
Aici ar fi mai multe de spus despre continutul pachetului. Este de departe cea mai ingrijita si bine prezentata placa de dezvoltare de care m-am "lovit" pana acum! Iar despre pretul de 13 (treisprezece) RON pe bucata, cu tot cu transportul pana acasa, nu prea vad ce ar mai fi de spus... nu cred ca acopera nici macar ambalajele. A meritat asteptarea de aproape doua luni :D
N-am mai facut poza la continut, aici e un link catre pagina Texas Instruments, cu mentiunea ca in poza nu apare cristalul (sau nu-l vad eu).

Evident, n-a scapat nici Launchpad-ul de conectorii gen "Arduino" ;-)

Am instalat compilatoarele, am rulat demo-urile, detaliile le voi posta in urmatoarele zile in paginile aferente (accesibile din meniul "familii de microcontrolere"). Tot ce pot spune deocamdata este ca timpul in care s-a initializat MSP430 Launchpad m-a naucit total... imediat cum am conectat placa prima data pe USB a si pornit demo-ul :)
Acesta e un pic mai interesant decat obisnuitul "LED blink" si merita descris. La initializare cele doua LED-uri (rosu si verde) se aprind alternativ. Dupa apasarea butonului utilizator se inregistreaza temperatura actuala. Pe masura ce temperatura creste, LED-ul rosu lumineaza din ce in ce mai puternic. Atunci cand temperatura ajunge sa scada fata de cea initiala, LED-ul verde lumineaza din ce in ce mai puternic. Senzorul de temperatura este in interiorul microcontrollerului.

miercuri, 15 decembrie 2010

Astept noile placi

Ieri am comandat un LPCXpresso cu LPC1343 si tot ieri am avut surpriza sa primesc in sfarsit mesaj de la Texas Instruments ca mi-au trimis cele doua placi MSP430 Launchpad comandate acum vreo doua luni :)

Dupa cum se poate vedea, celelalte le asteapta cu nerabdare sa li se alature ;-)

vineri, 10 decembrie 2010

Arduino Powered Scorpion

La intalnirea Tehnorama de ieri am avut ocazia sa vedem prin videoconferinta in direct de la Timisoara Arduino Powered Scorpion.
"Jucaria" e superba, baietii merita toate laudele! Zgomotul pe care-l face pasind pe parchet este de neuitat :D



Mai multe detalii pe Tehnorama

marți, 7 decembrie 2010

Fire de executie (Threads) in .NET

Fire de executie (Threads) in .NET Micro Framework

Cu ce ne ajuta?
Procesoarele executa o singura instructiune la un moment dat. Cu toate acestea, atunci cand lucram pe un PC, ni se pare ca mai multe programe sunt rulate in acelasi timp. De fapt, fiecare program se executa un timp foarte scurt, dupa care se trece la urmatorul program, apoi la urmatorul s.a.m.d.
Folosind thread-urile din .NET Micro Framework putem amana (delay) anumite instructiuni, putem executa periodic o verificare sau o alta actiune, putem scrie pe un card SD si, in acest timp, putem face alte lucruri mai urgente.

Cum facem asta din C#?
Vestea buna este ca avem deja un thread principal in orice program! Metoda Main a programului este executata intr-un thread, astfel incat putem utiliza direct delay-uri (sleep).

using System;
using System.Threading;

using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;

namespace FEZ_Panda_Application1
{
public class Program
{
public static void Main()
{
while (true)
{
Debug.Print("La culcare pentru o secunda ;-)");
Thread.Sleep(1000);
}
}
}
}


Programului va afisa, din secunda in secunda, textul:
La culcare pentru o secunda ;-)
La culcare pentru o secunda ;-)
La culcare pentru o secunda ;-)
.....

Un alt thread
Avem o instructiune care se executa la fiecare secunda... complicam un pic treaba si mai facem un thread, care sa se execute din 5 in 5 secunde.

using System;
using System.Threading;

using Microsoft.SPOT;
using Microsoft.SPOT.Hardware;

namespace FEZ_Panda_Application1
{
public class Program
{
public static void ThreadLa5Secunde()
{
while (true)
{
Debug.Print("Din 5 in 5 secunde...");
Thread.Sleep(5000);
}
}
public static void Main()
{
Thread UnAltThread;
UnAltThread = new Thread(ThreadLa5Secunde);
UnAltThread.Start();

while (true)
{
Debug.Print("Din secunda in secunda...");
Thread.Sleep(1000);
}
}
}
}

Iesirea programului:
Din 5 in 5 secunde...
Din secunda in secunda...
Din secunda in secunda...
Din secunda in secunda...
Din secunda in secunda...
Din secunda in secunda...
Din 5 in 5 secunde...
Din secunda in secunda...
Din secunda in secunda...
Din secunda in secunda...
Din secunda in secunda...


Subiectul este extrem de vast, mai multe informatii (nu si despre Micro Framework, dar sunt bune) gasiti la:
Despre fire de executie in c# (threads)
Threading in C# - documentatie online si PDF de descarcat.

joi, 2 decembrie 2010

Preturi Arduino - episodul 2

Sa vedem unde si la ce preturi mai gasim Arduino in Romania, ca tot a inceput "luna cadourilor" ;-)

O enumerare a magazinelor, in ordine alfabetica:

1. Electronista - De cand nu am mai scris pe tema asta, magazinul s-a inchis permanent. Pacat, preturile erau mai mult decat OK. In plus nici nu se mai gasesc pe nicaieri pe la noi produse de la DFRobot...

2. Magazinul de Mecatronica - A aparut o noua sursa de Arduino, multumesc SupradozzaDeVisse pentru informatie! Ideea interesanta este de a comercializa pachete "Plus", adica Arduino + diverse componente pentru primele proiecte (LED-uri, rezistori, push button si o cutiuta pentru ele). Exista variantele Uno Plus (130 lei) si Mega 2560 Plus (250 lei).

3. Turuga - Pe site apar doar Duemilanove (120 lei) si Mega 1280 (255 lei), doar la comanda, dar se pot aduce si altele.

4. RoboFun - Aici gasim pe stoc diverse placi Arduino si nu numai!
- Arduino: Mega2560 (250 lei), Nano (179 lei), Pro (90,00 lei), Pro Mini 328 - 5V/16MHz (85 lei), Uno (119 lei), ArduPilot Mega (283 lei), OpenLog (104 lei), LilyPad (93 lei)
- .NET: FEZ Domino, FEZ Panda, Netduino
- Altele: Beagle Board, Chumby Hacker
Ideea interesanta pentru proiecte de inceput de aici este brick (un modul usor de conectat prin cablu la microcontroler).

5. RoboTop - Duemilanove (190 lei), respectiv Mega 1280 (385 lei)

Cam atat pe moment. Daca am scapat din vedere pe cineva din Romania astept comentarii si voi modifica postarea :)

marți, 30 noiembrie 2010

Bitlash - un alt shell pentru Arduino

Bitlash este un shell si, in acelasi timp, un mediu de programare embedded simplu si usor de folosit pentru Arduino. Mai este si open source ;-)

Bitlash ruleaza pe Arduino si accepta multe dintre functiile obisnuite pe care le gasim in documentatia Arduino.

Moduri de lucru cu Bitlash:
1. Comenzile se pot introduce si interpreta interactiv, cu ajutorul "Serial Monitor" din IDE-ul Arduino (vezi observatiile de mai jos), sau cu un program gen "Hyperterminal".
2. Mai interesant, pot fi salvate secvente macro in EEPROM si le putem rula oricand dorim, inclusiv la boot-area placii!
3. Si mai interesant, functiile built-in ale Bitlash pot fi apelate din propriile sketch-uri, adaugand biblioteca aferenta!!
4. Inca si mai interesant, putem adauga propriile noastre functii la biblioteca Bitlash, cu ajutorul addBitlashFunction()!!!


Sketch-ul demo incarcat pe un Arduino 2009 cu bootloader-ul normal


Sketch-ul demo incarcat pe un Arduino 2009 cu bootloader-ul Optiboot... de remarcat diferenta de spatiu liber ramas...


Cateva comenzi simple


HELP! :D

Documentatia este destul de mare, asa ca nu mai intru in alte amanunte.

Observatii:
- daca utilizati "Serial Monitor" din kit-ul Arduino pentru comunicare, fiecare comanda trebuie finalizata cu tasta apostrof "`" aflata in general pe tastatura sub Escape, in stanga sus, inainte de cifra 1;
- ocupa mult loc... dar cred ca merita ;-)
- am incercat mai de mult biblioteca inclusa in kit-ul Arduino Firmata, prefer totusi Bitlash...

duminică, 28 noiembrie 2010

FEZ Panda si LCD serial

Am postat pe Tehnorama un mic tutorial despre utilizarea unui LCD serial impreuna cu FEZ Panda.

vineri, 26 noiembrie 2010

FEZ Panda

Am luat ieri de la RoboFun un FEZ Panda. Prin comparatie cu Arduino este o placa foarte tare!
Specificatiile sunt aici: TinyCLR.
Microcontrolerul de pe placa este un "ARM7TDMI-S microcontroller with 512KB flash, dual AHB bus architecture, USB full-speed device/host/OTG, 10/100 Ethernet, ISP/IAP, CAN, 10-bit ADC/DAC" ;-)

Am facut o actualizare de firmware si m-am gandit sa scriu un tutorial despre acest lucru.

joi, 25 noiembrie 2010

Alte familii de microcontrolere

Am inceput impartirea blogului in pagini aferente diferitelor familii de microcontrolere care ma intereseaza ;-)
Fiecare pagina va contine linkuri catre placi de dezvoltare, compilatoare, forumuri, resurse utile.

Pe moment am introdus informatii doar in urmatoarele pagini:
STM
AVR
8051
.NET

marți, 23 noiembrie 2010

Interfata seriala

Cautand prin diverse lucruri pe care le pastrez de multi ani de zile "just in case", am gasit un mouse pe serial ;-)
Cablul de conectare este perfect pentru orice microcontroler cu interfata UART si PC cu port serial. Merge pus pe breadboard la orice montaj cu un microcontroler, in scopul comunicarii pe serial cu PC-ul.
Lista de componente necesare adaptorului pentru breadboard de mai jos: cablul, doua barete de pini a cate 4 pini fiecare, un soclu DIP16, un MAX232, 4 condensatori electrolitici de 10uF, o placa stripboard (veroboard).









Cateva pagini interesante:
http://www.arcelect.com/rs232.htm
http://www.beyondlogic.org/serial/serial.htm
http://extremeelectronics.co.in/avr-tutorials/using-the-usart-of-avr-microcontrollers-reading-and-writing-data/
http://www.captain.at/electronic-atmega16-serial-port.php
http://www.swharden.com/blog/2009-05-14-simple-case-avrpc-serial-communication-via-max232/
http://www.8051projects.net/serial-communication/introduction.php

miercuri, 17 noiembrie 2010

Adaptor MicroSD Card "de criza"

Adaptorul poate fi folosit impreuna cu orice tip de microcontroler care "cunoaste" SPI (Serial Peripheral Interface).
De obicei, la achizitionarea unui card MicroSD, primim un adaptor SD Card. Am vazut mai multe exemple de adaptoare pe care s-a lipit direct bareta de pini, dar nu mi s-au parut prea rezistente in cazul utilizarii pe breadboard, de aceea m-am gandit sa folosesc o bucata de stripboard pe care am prins cu banda izolatoare adaptorul, apoi am facut lipiturile.

Edit (20101118): am adaugat in comentariu cateva linkuri interesante
Edit (20101204): o implementare mult mai eleganta (pentru Arduino, 4 postari, schema, imagini, program) gasiti pe blogul Arduinoos


Schema de mai sus: "TOSHIBA SD Card Specification"







Dezavantajul fata de un adaptor comercial este ca nu sesizeaza prezenta cardului.

Mentiunea obisnuita: mai merge "slefuit" un pic ;-)

marți, 9 noiembrie 2010

AVR - Adaptor ISP 6 pini pentru breadboard

Programatorul AVR pe USB de la Pololu pe care-l folosesc are un conector IDC 6 pini standard. Pentru breadboard este mai usor de utilizat o bareta de 6 pini (tata). Am facut un mic montaj pe o bucatica de stripboard, pe care am pus si butonul de reset si rezistenta de 10K, pentru a simplifica montajele de pe breadboard.
Ca de obicei, mai intai am facut montajul, apoi, dupa ce am vazut ca nu se vede bine in imagini, am facut si o "schema"...

Mai merge slefuit un pic, dupa cum se poate vedea mai jos ;-)



miercuri, 3 noiembrie 2010

Arduino si Bluetooth - partea a 2-a

Am folosit un shield I/O si un modul Bluetooth de la DFRobot.
I/O Expansion
Serial Bluetooth
Shieldul I/O are deja un conector in care se potriveste modulul BT, dupa cum se vede in imaginile din partea 1. Modulul BT vine cu un dongle USB pe care l-am conectat la PC.
"Programul" pentru Arduino este cel din documentatia aferenta modulului BT:
void setup()
{
Serial.begin(115200); //Set serial baud rate to 115200
}
void loop()
{
Serial.print("Hello!"); //print out hello string
delay(1000); //1 second delay
}

Dupa ce am pornit Arduino in configuratia de mai sus, a aparut device-ul EPBMX-COM si la sfarsit am avut cele doua porturi (incoming si outgoing).
Cu ajutorul unui program gen hyperterminal, setat la 115200, am primit mesajele trimise de Arduino.

In concluzie, conectarea intre microcontrolere este simpla, la fel si cea dintre PC si microcontroler. Problema apare in cazul in care dorim sa ne conectam la un telefon mobil. Inca nu am reusit mare lucru, documentatia este destul de consistenta si ar trebui scris un program pentru mobil in Java ME.

Voi mai posta daca reusesc sa-l conectez si cu mobilul :D

luni, 11 octombrie 2010

Baza de date de shield-uri

A aparut un site extrem de util pentru cine vrea sa-si cumpere un shield pentru Arduino.
Adresa este shieldlist.org
Gasim aici imagini, diagrame si descriea multor shield-uri comerciale.

joi, 30 septembrie 2010

Prima editite - Intalnirile Tehnorama

Tocmai am citit pe Tehnorama despre intentia baietilor de acolo de a organiza periodic o intalnire intre pasionatii de proiecte DIY.
Sper sa fie o ocazie buna sa ne cunoastem si in "viata reala", sa facem schimb de experienta si, de ce nu, poate ne laudam un pic cu realizarile noastre ;-)

Detalii aici.

Update: ne-am vazut, a fost placut si interesant, astept deja urmatoarea intalnire ;-)

sâmbătă, 4 septembrie 2010

ARDUINO 0019

A fost publicata versiunea 19 a mediului de dezvoltare Arduino. Dupa ce o descarc si incerc revin cu primele impresii.
De citit modificarile aici: Release Notes.
Se descarca de aici pentru Windows, Mac OS X sau Linux: Download.

miercuri, 18 august 2010

Offtopic

Dupa evenimentele de la maternitatea Giulesti am inceput sa-mi pun cateva probleme.
Cat de scump poate sa te coste sa instalezi un sistem simplu de alarma in caz de foc (temperatura) si/sau fum? Tot aud nebunia asta cu "nu sunt bani!" de am inceput sa ma satur...
Sunt convins ca daca ar fi facut un apel public se gasea cineva sa le faca niste montaje simple, ieftine si sigure, asta daca nu erau bani de o solutie din comert.

Hai sa vedem ce gasim pe net... la o simpla cautare "senzor fum pret" gasim chiar primul rezultat:

SENZOR FUM, WIRELESS SD-01 9V
Caracteristici:
- temperatura de alarmare ajustabila in limita a 58C;
- LED-ul rosu indica stare de alarma;
- avertizare baterie descarcata;
- sensibilitate excelenta;
- sirena incorporata de 95dB;
- buton de test pentru verificare periodica (recomandabil lunar);
- curent consumat in stare de veghe mai mic sau egal cu 10uA;
- curent consumat in stare de alarma mai mic sau egal cu 30mA

Pret: 99,20 RON, TVA inclus

La 95 dB sunt convins ca se auzea pe hol, inainte sa sesizeze cineva ca iese fum pe sub usa...

Sa zicem ca senzorul de mai sus e doar unul de temperatura, ca mai trebuia inca unul de gaz, sau unul optic pentru fum. Cred ca se puteau instala toate acestea sub 1000 de lei.
A MERITAT ECONOMIA FACUTA?

duminică, 15 august 2010

Preturi Arduino

Sa vedem cum mai stau preturile dupa 2 luni si o marire de TVA ;-)

Arduino DUEMILANOVE
RoboFun 119 lei
Electronista 120 lei
Turuga 122 lei
RoboTop 125 lei

S-au cam egalizat... acum singurele lucruri care ne mai pot influenta deciziile ar fi suportul (tutoriale, bloguri, discutii de la om la om), taxele de transport si posibilitatea de a achizitiona din acelasi magazin atat placa in sine, cat si accesoriile necesare (shield-uri, senzori etc) pentru a putea evita taxe de transport multiple, drumuri si timp pierdut in plus...

Ca o mentiune, cea mai ieftina clona de Arduino DUEMILANOVE pe care am gasit-o este la Electronista 99 lei

luni, 28 iunie 2010

DS1307 RTC - ceas timp real

DS1307 RTC - ceas de timp real

Am nevoie pentru un proiect de un ceas de timp real (real time clock). Cel mai accesibil a fost DS 1307+


Schema de conectare la Arduino, realizata cu Fritzing, arata cam asa:

Deocamdata l-am pus pe breadboard, urmeaza sa-l trec pe o placuta de circuit:



#include <WProgram.h>
#include <Wire.h>
#include <DS1307.h>

int rtc[7];

void setup()
{
Serial.begin(9600);
/*
RTC.stop();
RTC.set(DS1307_SEC,1);
RTC.set(DS1307_MIN,05);
RTC.set(DS1307_HR,10);
RTC.set(DS1307_DOW,2);
RTC.set(DS1307_DATE,28);
RTC.set(DS1307_MTH,6);
RTC.set(DS1307_YR,10);
RTC.start();
*/
}

void loop()
{
RTC.get(rtc,true);

Serial.print(rtc[4]);
Serial.print("-");
Serial.print(rtc[5]);
Serial.print("-");
Serial.print(rtc[6]);
Serial.print(" ");
switch(rtc[3]) {
case 1:
Serial.print("Duminica ");
break;
case 2:
Serial.print("Luni ");
break;
case 3:
Serial.print("Marti ");
break;
case 4:
Serial.print("Miercuri ");
break;
case 5:
Serial.print("Joi ");
break;
case 6:
Serial.print("Vineri ");
break;
case 7:
Serial.print("Sambata ");
break;
default:
break;
}
Serial.print(rtc[2]);
Serial.print(":");
Serial.print(rtc[1]);
Serial.print(":");
Serial.print(rtc[0]);
Serial.println();

delay(1000);
}


Pentru setare initiala data si ora se scot comentariile din setup().
Biblioteca DS1307 se gaseste aici si se copiaza, ca de obicei, in folderul libraries al kitului Arduino.

Componentele necesare pot fi gasite, de exemplu, aici:
RTC
Quartz
Suport baterie

Update - 1 iulie 2010 : am facut montajul pe o bucatica de stripboard si nu a mai pierdut nici macar o secunda in 24 de ore ;-) intarzierea era de la faptul ca se misca cristalul...

marți, 22 iunie 2010

Schema pentru Arduino "de criza"

Daca tot au trecut vreo doua luni de cand am facut montajul (si de cand il folosesc aproape zilnic) m-am gandit ca ar fi cazul sa desenez si schema lui ;-)

Neavand niciun fel de experienta in materie de CAD, cu atat mai putin in ceea ce priveste schemele electronice, am incercat mai multe programe: Eagle, TinyCAD, KiCAD etc.

Pana la urma m-am oprit la ExpressSCH, parte dintr-un program gratuit numit ExpressPCB.
Cred ca este cel mai usor de folosit, deoarece in doua ore si ceva am reusit sa fac schema de mai jos, chiar daca nu mai lucrasem cu astfel de programe...



Sper ca nu am facut prea multe greseli, daca cineva incearca sa reproduca montajul dupa aceasta schema ar face bine sa verifice de doua ori ;-)

Cateva observatii:
1. daca chipul nu este programat cu bootloader trebuie folosit un programator ISP
2. daca punem bootloader se poate utiliza cu un cablu serial realizat asa cum l-am descris aici; inainte de programarea in acest mod trebuie apasat butonul Reset cam 3-4 secunde (incercati diverse variante pana reusiti...)
3. la montajul din imagine am folosit terminale bloc (cu suruburi), dar pentru reducerea costului merge sa utilizati orice fel de conectori (bareta etc.)
4. realizarea pe placa de circuit nu e chiar la nivel profesional (hmm, hmm, hmm) ca sa zic asa ;-)



joi, 10 iunie 2010

Arduino si Assembler

Apelarea rutinelor scrise in limbaj de asamblare
Din mai multe motive poate fi necesar sa folosim rutine scrise in limbaj de asamblare. De exemplu: lipsa spatiului, viteza, siguranta sau, pur si simplu, faptul ca dispunem deja de ele si nu vrem sa le rescriem ;-)
Exista doua feluri in care putem utiliza in sketch-urile Arduino limbajul de asamblare:
1. Inline, asa cum e documentat in AVR GCC Inline Assembler Cookbook, cu o sintaxa destul de complexa
sau
2. Incepand cu versiunea 0018 se pot utiliza programe scrise in intregime in assembler. Dupa cautari fara succes pe forumul Arduino si diverse incercari, am ajuns la urmatoarea varianta:
- in folderul libraries din kitul Arduino facem un nou folder, cu un nume gen "UtileASM"
- in acest folder facem un fisier header, gen "UtileASM.h"

extern "C" {
void Incrementeaza(void);
}

- tot in acest folder salvam fisierul cu programul in limbaj de asamblare, gen "UtileASM.S" atentie la extensia care trebuie scrisa cu majuscula ".S" si nu ".s"

#include <avr/io.h>
.extern un_numar
.global Incrementeaza
Incrementeaza:
push r16
lds r16, un_numar
inc r16
sts un_numar, r16
pop r16
ret

- sketch-ul va contine ceva gen:

/*
Titlu: Demonstratie Arduino si Assembler
Autor: [iard]
Data: 2010-06-09
*/

#include <UtileASM.h>

volatile int un_numar; // variabila in RAM, nu intr-un registru
extern void Incrementeaza(void);

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

void loop() {
un_numar = 7; // valoare initiala
Serial.print("Numarul initial = " );
Serial.println(un_numar);
Incrementeaza(); // apelul subrutinei assembler
Serial.print("Numarul incrementat = " );
Serial.println(un_numar);
delay(1000);
}

O fitzuica pentru Arduino

Pentru cine este la inceput de drum cu Arduino (si are si o imprimanta buna...) am gasit o "fitzuica" (cheat sheet) la The Mechatronics Guy.
Contine intr-o singura pagina, pe scurt, toate informatiile necesare unui incepator. Ma gandesc ca ar fi o treaba buna daca cei care produc/comercializeaza placile ar da si aceasta foaie, mai ales ca nu am prea vazut Arduino care sa vina cu vreun manual...



Observatie: Nu are rost sa descarcati imaginea de pe blogul meu (e prea mica), mergeti pe site-ul de mai sus si o gasiti acolo la rezolutie foarte buna, atat ca imagine cat si ca PDF sau VSD (pentru Visio).

joi, 3 iunie 2010

De unde ne luam echipamentele - episodul 2

Revin cu un update interesant la lista de magazine de unde ne putem procura "jucariile" favorite.

A aparut un nou magazin on-line RoboFun plin ochi cu placi, senzori si tot ce ne mai trebuie.
Preturile sunt chiar mai mici fata de ce se mai gaseste pe la noi. Ce inseamna si concurenta asta... treaba buna :)

Un exemplu: Arduino DUEMILANOVE
RoboFun 110 lei
Electronista 120 lei
Turuga 122 lei
RoboTop 125 lei

In plus, daca suntem din Bucuresti, putem sa le luam direct de la ei, de pe undeva pe langa Piata Unirii, asa ca am scapat de distractia cu curieratul sau posta, care pe mine cel putin ma cam deranjeaza.

Au si un blog cu tutoriale interesante Tehnorama pe care l-am adaugat deja in postarea cu blogurile.

In concluzie, cum s-ar zice, "the more the merrier". Acum jumatate de an nu gaseai Arduino pe nicaieri, in prezent sunt patru firme (de care stiu eu, poate mai sunt si altii) care le aduc!

luni, 31 mai 2010

Bootloader optimizat pentru Arduino

Cei care prefera sa foloseasca bootloader-ul standard de pe placile Arduino stiu ca acesta ocupa destul de mult. Un bootloader optimizat, care ne lasa mai mult spatiu pentru programe, gasim aici: Optiboot. Pentru instalarea bootloader-ului avem nevoie de un programator ISP sau de inca o placa Arduino.

Allows larger sketches. Optiboot is a quarter of the size of the default bootloader, freeing 1.5k of extra space.
Makes your sketches upload faster. Optiboot operates at higher baud rates and has improved programming logic.
Adaboot performance improvements. Optiboot runs your sketches sooner.
Compatible with 168 and 328 Arduinos including Lilypad, Pro, Nano



Cu optiboot v3


Cu bootloader-ul standard

In cazul unei placi cu 168 realizam o economie de 1KB, adica 6.25% mai mult spatiu pentru programe!





In cazul unei placi cu 328 realizam o economie de 1.5KB, adica 4.69% mai mult spatiu pentru programe!

Diverse probleme la instalare am vazut pe blogul de unde am aflat si eu de acest bootloader: Hack a Day. Eu l-am programat pe ISP si sub Windows si a mers din prima :)

miercuri, 26 mai 2010

Proiectare si simulare Arduino

Proiectare si simulare Arduino
Doua programe interesante si utile pentru posesorii de Arduino (si nu numai)

In afara de kit-ul oficial de dezvoltare Arduino mai avem nevoie si de un program de CAD cat mai simplu de utilizat, care sa contina biblioteci pentru cele mai uzuale componente electronice si, de preferat, sa fie free sau open source. Un astfel de program este Fritzing!


Exemplu - breadboard


Exemplu - schematic


Exemplu PCB

Acum, dupa ce am terminat partea de proiectare si dezvoltarea programului, nu ne mai ramane decat sa incercam totul pe un simulator. Pe acesta il gasim aici: Virtual Breadboard

Cerinte sistem:
1) Latest version of DirectX
2) .Net 2.0 Redistributable
3) J# 2.0 Redistributable


VBB - design


VBB - simulator

marți, 11 mai 2010

Convertor USB la Serial "de criza" pentru Arduino

Convertor USB la Serial "de criza" pentru Arduino (si nu numai...)


Am modificat un pic placa din postarea anterioara pentru a putea comunica serial cu un calculator care dispune doar de port USB.

In acest scop sunt necesare urmatoarele:
1. Cablu de date Nokia tip DKU-5 sau CA-42. Important este sa aiba mufa de USB mai lunga si/sau mai groasa decat normal, sau o cutiuta mica si neagra la mijlocul cablului ;-)
2. Trei rezistente (1K, 10K, 15K)
3. Cutter, banda izolatoare, multimetru

Ideea de baza este ca aceste tipuri de cabluri contin deja un Prolific 2303 si un MAX232. Pretul de achizitie variaza intre 9-10 RON la importatori si cca. 15-20 RON la diversi comercianti, care vor fi fericiti sa scape de ele... Cred ca de ocazie, de la cineva care a avut un Nokia mai vechi, se poate obtine mult mai ieftin :D

Un tutorial pe larg gasiti la uC Hobby
Pinout-ul pentru aceste cabluri il gasiti aici.

Procedura:
1. Se verifica prezenta circuitelor in cablu.
Se introduce cablul in mufa USB a calculatorului. In Linux (Kernel 2.4.31 sau mai nou) exista deja drivere. La Windows va cere driverele. Daca nu le-ati primit pe CD impreuna cu cablul se pot descarca de aici: PL-2303 USB to Serial Bridge (H, HX, X) Installshield Driver Setup Program
Dupa instalare ar trebui sa gasim in Control Panel un port COM cu numele "Prolific".
2. Se scoate cablul din calculator si se taie in partea dinspre conectorul pentru telefon, NU CEL USB, lasand cca. 10 cm de cablu pentru identificarea firelor.

3. Se identifica cu multimetrul 3 fire (Rx, Tx si GND) conform tutorialului din linkul de mai sus sau conform pinout-ului. Ne intereseaza firele care duc la pinii 6, 7 si 8 din imagine.
Optional se testeaza corectitudinea ca loopback (legand intre ele Rx si Tx) cu ajutorul programului Hyperterminal sau asemanantor.

4. Se conecteaza Rx cablu la Tx controller prin rezistenta de 10K.
5. Se conecteaza Tx cablu la Rx controller prin rezistenta de 1K.
6. Se conecteaza GND cablu la GND placa prin rezistenta de 15-22K.

Avertisment: verificati, verificati, verificati!!!