Hackanje kineskog vozila 2.dio

Hackanje kineskog vozila 2.dio

Pošto ćemo koristiti arduino uno razvojnu pločicu, koja radi na 5V, napon na pinovima definiranim kao izlaz će biti 5V. Kada smo mjerili izlaze sa čipa koji je na vozilu vidjeli smo da je napon 2,6V, znaći trebamo smanjiti napon na izlaznom pinu. To možemo na više načina, možemo koristiti recimo dva jednaka otpornika koji će u svojoj sredini dati polovicu napona. Ja sam pri ruci imao brdo dioda, pa sam odlučio iskoristiti njih. Pad napona na jednoj diodi je 0,7V, pa sam stavio 3 diode u seriju. 3 x 0,7 nam je 2.1V a ako od 5 oduzmemo 2.1 dobiti ćemo 2,9V to vjerojatno neće našteti čipu a sve bi trebalo raditi kako spada.

Kada spojimo te tri diode, dobro ih je nekako izolirati da slučajno nešto ne zbrikamo :) To je najbolje ako pri ruci imate termo bužira, navucite ga preko dioda.

Malo ga stavite na puhalicu i on ce se stisnuti. Temperatura 100 stupnjeva će mu biti dosta da se stisne. Ako nemate puhalicu možemo preko bužira preći sa lemilicom i on će se stisnuti.

Tako napravimo na sve četiri žice koje će sa arduina ići na vozilo.

Nakon toga pospajamo žice na predhodno izmjerena mjesta..

To sve spojimo sa arduinom.

 

I utočimo testni kod. Samo prije toga trebamo napraviti izmjenu jednog file-a. Ne bih puno ulazio u teoriju, ali da bi nam DC motor radio ok i da nebi bilo nekih čudnih zvukova iz njega, morati ćemo promjeniti frekvenciju pwm-a. To ćemo napraviti na sljedeći način. Unutar arduino foldera pronađite file wiring.c on je kad uđete u arduino folder unutar hardware\arduino\core\arduino\ foldera

Otvorimo ga u nekom editoru i pronademo linuju
#define MICROSECONDS_PER_TIMER0_OVERFLOW (clockCyclesToMicroseconds(64 * 256))

nju zamjenimo linijom
#define MICROSECONDS_PER_TIMER0_OVERFLOW (clockCyclesToMicroseconds(1 * 510))

I sad napokon kod, nisam ga komentirao jer je to samo prvi testni kod da vidimo da li možemo koristiti razlicite brzine brzine na vozilu i da li sve funkcije rade.

const int pwmFW = 5;
const int pwmBW = 6;
const int Left = 4;
const int Right = 7;

void setup() {        
TCCR0A = _BV(COM0A1) | _BV(COM0B1) | _BV(WGM00); 
TCCR0B = _BV(CS00);    
  pinMode(pwmFW, OUTPUT); 
  digitalWrite(pwmFW,LOW);
  pinMode(pwmBW, OUTPUT); 
  digitalWrite(pwmBW,LOW);
  pinMode(Left, OUTPUT); 
  digitalWrite(Left,LOW);
  pinMode(Right, OUTPUT); 
  digitalWrite(Right,LOW);  
}
void loop() {
digitalWrite(pwmBW,LOW);
digitalWrite(Right,LOW);
digitalWrite(Left,HIGH);
for (int i=130;i<210;i++)
{
  analogWrite(pwmFW,i);
  delay(60000);
}
  digitalWrite(pwmFW,LOW);
delay(50000);
digitalWrite(Left,LOW);
digitalWrite(Right,HIGH);
for (int i=130;i<210;i++)
{
  analogWrite(pwmBW,i);
  delay(60000);
}
}

Nakon toga spojimo napon da vidimo da li nam sve funkcije na vozilu rade…

Pripazite na to da smo promijenili jedan file unutar arduino foldera i da će on utjecati na neke stvari kao što je recimo delay funkcija.Najbolje je nakon što ste testirali da li vam sve radi taj file vratiti nazad u početno stanje…