Kurssi: Sähkön alkeet ja yleismittarin käyttö

Tänään oli ensimmäinen elektroniikan alkeet kurssi. Kurssilla ei ollut osallistujia, mutta pidin kurssin silti, kun sen nauhoitettua sai ja valmistelut oli kumminkin tehty.

Kurssilla käydään läpi jännite, virta resistanssi, teho ja niiden perus laskentakaavat sekä mittaillaan yleismittarilla ja koitetaan laskea vastuksen arvoja.

Kalvot:

Arduinon perusteet, osa #3: Servot ja moottorit

Arduinon perusteet kurssin kolmas osa. Kurssilla käsitellään servoja, moottoreita sekä askelmoottoreita. Esimerkit servon ja sähkömoottorin ohjaukseen.

Youtube

Kalvot

Koodit

Servo esimerkki löytyy Arduino IDE:n esimerkeistä.

 

#define LEFT_MOTOR_PWM 3
#define LEFT_MOTOR_1 12
#define LEFT_MOTOR_2 9

void setup() {
pinMode(LEFT_MOTOR_PWM, OUTPUT);
pinMode(LEFT_MOTOR_1, OUTPUT);
pinMode(LEFT_MOTOR_2, OUTPUT);
}

void loop() {

leftStop();
delay(2000);
leftForward(255);
delay(2000);
leftBackward(255);
delay(2000);
}
void leftForward(byte speed)
{
analogWrite(LEFT_MOTOR_PWM,speed);
digitalWrite(LEFT_MOTOR_1,HIGH);
digitalWrite(LEFT_MOTOR_2,LOW);
}
void leftBackward(byte speed)
{
analogWrite(LEFT_MOTOR_PWM,speed);
digitalWrite(LEFT_MOTOR_1,LOW);
digitalWrite(LEFT_MOTOR_2,HIGH);
}
void leftStop()
{
analogWrite(LEFT_MOTOR_PWM,255);
digitalWrite(LEFT_MOTOR_1,HIGH);
digitalWrite(LEFT_MOTOR_2,HIGH);
}

 

Kurssi: Arduinon perusteet, osa #2: Ohjelmointi

Arduinon perusteet kurssin toinen osa. Kurssilla ohjelmoinnin alkeita Arduinoon liittyen. Käydään läpi mmm muuttujia, ehtoja, toistolauseita, funktioita ja ohjelmamuistin käyttöä.

 

 

 

Koodit:

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

void loop() {

int luku=0;
if (Serial.available())
{
luku = Serial.parseInt();
if ( luku > 10) {
Serial.println(”Luku on suurempi kuin 10”);
}
else {
Serial.println(”Luku on pienempi kuin 11”);
}
}
delay(1000);
}

For loop 1

 

void setup() {
Serial.begin(9600);
}
int i;
void loop() {
for ( i=0; i<10; i+=1 ) {
Serial.println( i );
}

delay(1000);
}

For loop 2

 

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

void loop() {
char Str1[15] = ”Arduino”;

for (int i;i<15;i++) {
Serial.print(Str1[i]);
}

Serial.println(Str1);

delay(1000);
}

Switch+funktio

 

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

void loop() {

Serial.println(laske(2,7,0));
delay(1000);
Serial.println(laske(2,7,1));
delay(1000);
Serial.println(laske(2,7,2));
delay(1000);
Serial.println(laske(2,7,3));
Serial.println(”Laskut laskettu”);
delay(10000);
}

int laske(int a, int b, byte tyyppi) {
switch (tyyppi) {
case 0: return a+b;
case 1: return a-b;
case 2: return a*b;
case 3: return a/b;
}
}

 

 

Kurssi: Arduinon perusteet, Osa #1: Arduino-ympäristö [YouTube]

Tänään oli ensimmäinen osa pidemmästä Arduinon perusteet kurssista. Alta löydät videon nauhoitteen, kalvot ja kurssilla olleet ohjelma koodit. Seuraava osa kahden viikon kuluttua. Kiitoksia osallistumisesta!

 

 

Kalvot

 

Ohjelmakoodit

Blink: (Löytyy arduinon esimerkeistä Arduino IDEssä)

 

Liikennevalot:

int greenPin = 2;
int yellowPin = 3;
int redPin = 4;

void setup()
{
Serial.begin(9600);
Serial.println(”Setup()”);
pinMode(greenPin, OUTPUT);
pinMode(yellowPin, OUTPUT);
pinMode(redPin, OUTPUT);

digitalWrite(greenPin,LOW);
digitalWrite(yellowPin,LOW);
digitalWrite(redPin,LOW);
}
int globaali=0;
void loop()
{
globaali++;
int paikallinen=0;
paikallinen++;

if (Serial.available())
{
globaali = Serial.parseInt();
paikallinen = Serial.parseInt();

while(Serial.available()) Serial.read();
}

Serial.println(”Loop()”);
Serial.print(”Kierros: ”);
Serial.println(globaali);

Serial.print(”Paikallinen: ”);
Serial.println(paikallinen);

digitalWrite(redPin, HIGH);
delay(1000);
digitalWrite(yellowPin, HIGH);
delay(500);
digitalWrite(redPin, LOW);
delay(1000);
digitalWrite(yellowPin, LOW);
digitalWrite(greenPin, HIGH);
delay(1000);
digitalWrite(greenPin, LOW);

}

 

 

 

Akun ja laturin päivitys rikkaimuriin

DSC_0300

 

Tuli tarpeelliseksi vaihtaa Electrolux rapidoon akku ja latauspiiri. Uusi latauspiiri on perus 5V in, 4,2V out, jolla imuria voi ladata vaikka autossa.

Tässä selitetty miten sen vaihto käytännössä tapahtui.

Kyseinen rikkaimuri on 3,6V, ja sen akku koostuu 3×1,2V paristoista. Tilalle laittelin 18650 3,7V pariston + kyseiselle paristolle sopivan latauspiirin. Latauspiirissä on microusb-liitäntä, mutta koska minulla oli valmiina imurissa olevaan liittimeen sopiva uros DC Barrel Jack -kaapeli, jonka toisessa päässä on uros usb, niin käytän sitä. Tällöin ei tarvitse tehdä myöskään uutta reikää microusb liittimelle.

Osat:

DC Barrel Jack -kaapeli: http://www.ebay.com/itm/141777496700

Latauspiiri (vastaava): http://www.ebay.com/itm/281489251607

18650 paristo (vastaava): http://www.ebay.com/itm/161946381832

18650 kotelo (vastaava): http://www.ebay.com/itm/252091236855

Electrolux rapido: https://www.tokmanni.fi/siivouslaitteet/electrolux-rikkaimuri-rapido-zb5103/5999554158655/dp

 

 

DSC_0280
Takaosa avattuna.
DSC_0281
Ainoat erikoisruuvit olivat DC in -liittimessä.
DSC_0282
Paristot ja niiden kiinnitys.
DSC_0283
Paristot irroitettu, kiinnitysläpäkkeet jätetty paikalleen.
DSC_0284
Elektroniikka.
DSC_0285
Piiri lähti helposti irti. Tarkoitus käyttää ainakin samaa kytkintä.
DSC_0286
Akku irroitettu. Tarkoitus kytkeä samoihin johtoihin uusi akku. Eroa vain n. 0,5 volttia niin pitäs olla ok suurimmalta osin (paitsi lataus).
DSC_0287
Testausta uudella akulla. Toimi ok.
DSC_0289
Latauspiiri kytketty uuteen akkuun.
DSC_0291
Latauspiirin testaus. Valot ok.
DSC_0292
Elektroniikka valmiina, juotettu latauspiiriin DC naaras liittimen johdot.
DSC_0293
Teipattu latauspiiri imurin reunaa vasten. Kohta katsottu niin, että ledit näkee läpi toiselta puolelta. Jos teippi ei riitä, niin kuumaliimata myöhemmin.
DSC_0294
Ledin näkyvyys toiselta puolelta.
DSC_0296
Akkukotelonkin laittelin teipillä. Jos ei pysy niin liimailla myöhemmin.
DSC_0297
Seuraavaksi koppa takaisin kiinni.
DSC_0298
Koppa kiinnitetty ja merkitty sisääntuloksi 5V.
DSC_0299
Lisätty latauksen ohjeistus.
DSC_0300
Valmiina imurointiin 🙂

Testi uudella akulla.

Simppeli etäohjattu robo, video feedillä (ESP8266)

Robo on rakennettu yhdistäen ESP8266 + Motor Driverin + Robot chassiksen ja Android puhelimen (camera feed). Tässä testissä on käytössä tarpeettomasti kaksi eri wifi yhteyttä: robolle ja camera feedille. Kameran wifi toimii paremmin, robon joskus lagaa. Roboa ohjataan nuoli näppäimillä Angularilla tehdyn softan avulla, se lähettää JSON-requesteja robolle, jossa pyörii web-serveri. JON-requestien mukana tulee robolta myös sen antureiden tietoa. Tässä tapauksessa vain valo-anturin tiedot, mutta helpolla saisi muutakin.