Se afișează postările cu eticheta USB. Afișați toate postările
Se afișează postările cu eticheta USB. Afișați toate postările

joi, 22 martie 2018

Comenzi, date de la tastatura calculatorului, executate de Arduino

   Un mod interesant de executare a unor comenzi de catre o placa Arduino este acela cand acele comenzi se dau de la tastatura calculatorului de care este legata placa.
   Am realizat un test in care ma folosesc de ledul intern de pe o placa Arduiono Uno (cel pus la D13). Prin comenzi pot controla numarul de clipiri, timpii dintre clipiri si pauza intre "salva" de clipiri ale ledului.
   La pornire, ledul se aprinde o data la 1 secunda, timpul cat sta aprins este de 100ms:
   Daca scriu comanda @n3 voi avea 3 aprinderi de 100ms cu stingeri de 100ms si pauza intre "salve" de 1 secunda
    Daca scriu comanda @n3 voi avea 3 aprinderi de 300ms cu stingeri de 300ms si pauza intre "salve" de 1 secunda
    Daca scriu comanda @n3 voi avea 3 aprinderi de 300ms cu stingeri de 300ms si pauza intre "salve" de 3 secunde
   Programul (sketck-ul), care face tot posibil, se numeste serial_control_flashes_0d.ino si, cel mai bine se vede in filmuletele urmatoare:
comenzi de la tastatura PC catre Arduino prin USB
control Arduino thru USB commands
Arduino controlled thru commanda from PC using USB

marți, 25 martie 2014

Utilizare placa Arduino cu interfata USB defecta

   In timpul testelor la un indicator date mediu pentru masina (temperatura exterioara citita de un senzor DS18B20, temperatura si umiditatea interioara citite de un senzor DHT11, tensiunea bateriei masurata cu un divizor rezistiv si afisare date pe un ecran LCD alfanumeric cu 16 coloane si 2 randuri) cand am alimentat placa Arduino cu 12V dintr-o sursa stabilizata, datorita consumului mare al perifericelor si a diferentei mari de tensiune (tensiune de intrare si cea stabilizata de 5V pentru alimentarea microcontrolerului ATmega328P-PU si a interfetei USB), am depasit puterea suportata de stabilizatorul de pe placa Arduino.
   Din pacate, incercam sa fac un filmulet de prezentare si nu am mai verificat temperatura stabilizatorului de tensiune, asa ca de pe placa Arduino Uno R2 am "prajit" interfata USB realizata cu ATmega8u2 si microcontoler-ul ATmega328P-PU.. nerealizand problema, am incercat sa mai fac un film cu alta placa Arduino Uno (de data asta R3), dar am reusit sa fac acelasi lucru si la asta, unde s-au "dus" interfata USB realizata cu ATmega16u2 si microcontoler-ul ATmega328P-PU.
   Solutia eleganta este inlocuirea microcontrolerului ATmega8u2 (sau ATmega16u2) si reprogramarea ca interfata USB, dupa cum e prezentat inclusiv pe site-ul Arduino in articolul Updating the Atmega8U2 and 16U2 on an Uno or Mega2560 using DFU, utile fiind si informatiile din discutia de pe forum-ul Arduino numita [Solved] Wipe out sketch from arduino the hard way - 8U2 firmware bug.
   Detaliat se prezinta pasii reprogramarii la Bring your dead Uno/Mega back to life! How to fix ATMEGAXXU2 issues.
   Respectivele microcontroler-e se gasesc in Romania la TME, cel putin acolo am gasit cautand pe net.
    Interfata USB folosita de mine este cu integratul CP2102 si am prezentat-o in articolul Arduino de casa cu interfata USB CP2102
   Schema de conectare este:
   Aceasta varianta a functionat la una din placi, cealalta are scurt in interfata USB cu ATmega16u2 si trebuie intai eliminat...
   Am facut si 2 filmulete:
   Deci, cand se folosesc mai multe periferice (afisaje, senzori, etc) trebuie folosit un stabilizator extern pentru 5V din care sa fie alimentati acestia...de exemplu cu LM7805 (vezi articolul 78xx) sau cu LM317 (vezi articolele LM317 si/sau Stabilizator reglabil de tensiune (1,2..12V) cu LM317T).
   Pentru a intelege mai bine partea de adaptare, puteti studia schemele placilor Arduino Uno:
Arduino Uno R1
Arduino Uno R2
- Arduino Uno R3

27.03.2014
   Ca exemplu, la placa Arduino Uno R3, conectarea interfetei USB cu CP2102 se poate face in 2 etape:
- eliminarea (dezlipirea) integratului/microcontrolerului ATmega16u2
- realizarea unor legaturi (strapuri) pe cablajul unde au fost pinii 8 cu 11, respectiv 9 cu 10, pentru a se aprinde LED-urile care indica comunicatia cu USB-ul 
- lipirea unor conductoare/fire: DTR de la modulul USB la fostul pin 13, TxD la fostul pin 9, RxD la fostul pin 8
- lipirea unor fire de la mufa USB de pe modul la mufa USB de la placa Arduino (la asta se poate renunta si se face comunicatia si alimentarea pe mufa modului): USB5V se leaga la fostul pin 31, GND la GND, D- la fostul pin 30, iar D- la fostul pin 29.

marți, 26 noiembrie 2013

Comanda periferice de la calculator pe portul serial folosind Arduino

   O aplicatie de efect este aceea in care se comanda un motor, un ventilator, un proiector, o usa de acces prin introducerea unor cifre sau cuvinte de la tastatura calculatorului.
   Aceasta se poate baza pe comanda Serial.read() a limbajului placii de dezvoltare Arduino.
   Pe net se gasesc cateva articole despre acest tip de comanda, din care amintesc:
USING ARDUINO TO CONTROL A LED USING THE SERIAL PORT
   Am incercat si eu sa fac asta, rezultandu-mi filmuletul control a LED using Arduino thru keyboard, apoi control a LED using Arduino thru keyboard (II)
   Niste poze din timpul experimentelor:
   Un exemplu de skech simplu este: 
// sketch write by niq_ro from http://www.tehnic.go.ro
// and http://nicuflorica.blogspot.com/
// version 1.0

int motorPin = 13;
void setup()
{
pinMode(motorPin, OUTPUT);
digitalWrite(motorPin, LOW);
Serial.begin(9600);
Serial.println("Apasa 1 pentru a aprinde LED-ul si 2 sa-l stingi!!!");
}

void loop()
{
if (Serial.available())
{
int ch = Serial.read();
Serial.print(ch);

if (ch==49)
{
digitalWrite(motorPin, HIGH);
Serial.println(" Aprind LED-ul");
}
if (ch==50)
{
digitalWrite(motorPin, LOW);
Serial.println(" Sting LED-ul");
}
Serial.println("Apasa 1 pentru a aprinde LED-ul si 2 sa-l stingi!!!");
}
}

   Am modificat sketch-ul si am primit o aplicatie, cu care pot comanda pe langa LED-ul de pe placa (cel de la pinul D13) inca 3 LED-uri, dintr-ul LED multicolor, cum am prezentat in filmuletele control a few LEDs with Arduino and own software (I), respectiv control a few LEDs with Arduino and own software (II)
   Led-urile se pot inlocui cu optocuploare, relee, etc si se pot comanda si echipamente alimentate la retea... dar asta alta data...

vineri, 22 martie 2013

Interfata USB-TTL PL2303HX

   In prima comanda-test de la DealExteme - dx.com am inclus si o interfata USB-TTL cu integratul PL2303HX.

   Dupa ce am lansat comanda mi-am dat seama ca acest modul nu are "reset extern" si am inceput sa caut rezolvarea.
   Pe forum-ul Arduino este o schema a unui adaptor USB-TTL cu PL2303HX:

- resetare manuala (trebuie apasat butonul de RESET pe durata scrierii sketch-ului)

- auto-reset


    Pentru a doua varianta trebuie "tras" un fir de la pinul 2 (DTR_N) al integratului PL2303HX si conectat printr-un condensator de 100nF (0,1uF) la pinul 1 de RESET al microcontrolerului ATMega8, ATMega16 sau ATMega168 care are deja "bootloader"-ul incarcat, deci e un "Arduino de casa" sau va fi inclus in componenta unui montaj mai complex, urmand a fi programat sau reprogramt cu un anumit sketch.
   Deoarece eram curios daca e functional, am conectat interfata la calculator si s-a aprins un LED rosu
apoi a fost depistat ca nu are driver-ul instalat:
   Am cautat repede pe net driverul si l-am gasit la http://www.prolific.com.tw/
  Am instalat driverul:



   Din pacate nu am putut gasi momentan, la un pret decent, un microcontroler sa-i scriu bootloader-ul pentru a testa placa.