Kancsi a robot! 1. rész

Mivel előzőekben bluetooth modult írtam le, ezért úgy gondolom a robot építését itt tárgyalom. Kancsinál is ugyan ezt a típust építettem be. Kancsi név a keresztbeálló infra szenzorai miatt ragadt rá. A robot egy korai projekt, így legyetek velem elnézőek.

Bascom-ban programoztam, aki nem ismerné ez egy BASIC nyelv Atmel mikrokontrollerekhez. Nem elhanyagolható ha régebbi is, tömörebb kódot ad az Arduinonál, viszont borzalmasan lehet több változós műveleteket végrehajtani vele. A robot mikrokontrollere egy ATmega 8 -as és nincs benne bootloader.

Eredetileg egy bluetoothon távvezérelt légpárnást akartam építeni, ami eljutott abba a fázisba, hogy siklott úgy, hogy szaladtam utána a vezetékre kötött akkuval, ami elég röhejes. 2 szerver ventilátor működtette az egyik a légpárnát hozta létre a másik a tolóerőt.

A tartalom nem elérhető.
A sütik használatát az "Elfogadás" gombra kattintva lehet jóváhagyni.

De mivel túl drága lett volna olyan akkut beszerezni ami könnyű, viszont nagy teljesítményt tud leadni ezért áttértem a kerekekre. Akkorra már meg volt az irányító elektronika ami blutoothon vezérelve bekapcsolta a ventilátorokat, valamint egy szervó motorral mozgatta volna a kormánylapátot, így ezt használtam fel Kancsi 1.0-hoz. Ez a robot még csak távirányított funkcióval rendelkezett. Három kereke volt, egy relé kapcsolta be a hajtóműveket, csak előre ment és a szervó forgatta jobbra-balra a kormánykereket. Bár már előkészítettem arra, hogy majd önmagát vezérelje, azaz kapott 4 darab infra érzékelőt, de ezeknek használata nem volt leprogramozva, később rájöttem, hogy az infrák fogyasztása is horribilis a 6db 1,2V -os akkunak.

A tartalom nem elérhető.
A sütik használatát az "Elfogadás" gombra kattintva lehet jóváhagyni.

Lecsökkentettem az infrák mennyiségét 2 db-ra, és kapott a robot egy motor vezérlő elektronikát kikerült a szervó a képből és megszületett az igazi Kancsi v1.1. Most már tényleg keresztbe álltak az infrák a jobboldali balra, a baloldali jobbra érzékelte a tárgyakat, valahogy úgy mint a vak ember tapogatódzik a fehér bottal. Az ifra érzékelőkön állítható a távolság, hogy hol kezdjenek jelet adni. Nem túl okos az egész de kísérletnek jó. Viszont ha valami vak foltba esik annak bizony neki megy. Ez a robot már önmagát vezérelte, csak arra van programozva,  hogy elkerülje az ütközést. Butább robot porszívók kb. ennyit tudnak.

A tartalom nem elérhető.
A sütik használatát az "Elfogadás" gombra kattintva lehet jóváhagyni.

Később mivel a robot elakadt amikor neki ütközött valaminek, visszakapott egy infra érzékelőt ami előre nézett, így látta a küszöböket. Jobb és bal oldalára kapott egy-egy mikrokapcsolót, ha mégis neki ütközik valaminek hátratolasson és elforduljon.

A tartalom nem elérhető.
A sütik használatát az "Elfogadás" gombra kattintva lehet jóváhagyni.

Még így is koránt sem tökéletes, de szórakoztató projekt volt és tanulságos, mellesleg a fiam is nagyon élvezi és kéri néha, hogy vegyük elő a polcról egy körre. Terveim közt szerepel a továbbfejlesztése, a kód áthelyezése Arduinoba, az infra szenzorok lecserélése ultrahangos távolságmérő szenzorokra, a robot méretének és a közelítés távolságának bevitele a programba stb. Ha időm engedi és nem lesz egyéb dolgom majd neki esek. 🙂 Ez valószínű már egy másik vázon fog felépülni.

Folyt. Köv.

Bluetooth modul + AT parancsok

Az előző cikkben tárgyalt „Akkulminátor ” készülék bluetooth modulját egyedivé alakíthatod néhány AT paranccsal, úgy mint név, pin, egyéb, sőt magát a modult is használhatod vezérlésre ha egyéb kimenetei ki vannak vezetve. (ezt most nem tárgyalom, mivel 6 lábbal rendelkező modullal foglalkozok)

Kapcsolási rajz:

A modul TTL szintű soros portját össze kell kapcsolni egy soros -> usb átalakító panellal. Így könnyen a számítógépre csatlakoztathatjuk. Az AT parancsok beviteléhez elegendő egy putty terminál program, vagy az Arduino soros monitorát is használhatjuk, sok egyéb soros kommunikációs program mellett amit most nem tárgyalunk. A tápellátást a modul az FTDI232 modulon keresztül a számítógép usb portjáról kapja.

HC-05 bluetooth modul

 

Az ellenállások csak 3,3 V nem illesztett modul esetén szükségesek. Némelyik modulnál a nyomógomb már be van ültetve.

 

Kommunikáció a géppel:

Terminál beállítása – Com 1 (az FTDI232 modul Kommunikációs portja amelyen települt a gépre ) baud 38400

Kocsi vissza új sor 🙂 (küldje el ezeket a karaktereket enter lenyomása után)

Fontosabb AT parancsok (teljesség igénye nélkül):

Ha több parancsra van szükséged: letöltés innen

  • AT : ha jó a kapcsolat OK-val válaszol
  • AT+NAMExyz : modul nevének lekérdezése/beállítása
  • AT+ADDR : modul címe
  • AT+VERSION : firmware verzió
  • AT+UART : kommunikációs adatok lekérdezése/beállítása; mint  baud, stop bit szám, paritás.
  • AT+ROLE: master vagy slave beállítása lekérdezése(1=master/0=slave)
  • AT+RESET : Reset és kilépés AT módból
  • AT+ORGL : Gyári állapot vissza állítása
  • AT+PSWD: PIN lekérdezés/beállítás

 

Akkulminátor :D

De nevezhetném  L.A.É.M.K. (Laptop Akku Élet Meghosszabbító Készüléknek) (Végig éltem a PC fejlődés jelentősebb részét nekem laptop marad! Még-hogy notebook!) esetleg angolul B.L.E.M. (Battery Life Expander Module) mondjon valaki valami jót, addig Akkulminátor marad. És hogy mi ez ? Laptop akkumulátor élettartamának meghosszabbítására szolgáló készülék.

Szóval ahogy egy félisten mondaná: „Kezdjük már el!

És ahogy a reklámszöveg:

Tapasztaltad már, hogy laptopod (akkor sem lesz notebook) egyre kevesebbet bírja az akkuról működést és mind több ideig tart a a feltöltése, a végén már ott lóg a kábel végén, oda a mobilitás, oda a szabadság? Nos azt nem állítom, hogy ez nem fog bekövetkezni de talán kicsit később.

A probléma oka természetesen Te vagy kedves laptop használó (akkor sem lesz notebook!), aki töltőn felejti a készüléket, emberek vagyunk néha előfordul.  Elárulom, hogy a töltést szabályozza a laptop, de nem kapcsolja le a töltőt az akkuról. HOLOTT MEGTEHETNÉ !!! (kedves gyártók ugye figyeltek) Még csak áramkörben sem igen kéne módosítani. Ebből származik némi túltöltés akku ellustulás és kész a baj.

csupakabra:

Vehetsz újat 20 rongyért.

break

Vagy a másik véglet. Te kedves felhasználó, tisztában vagy ezzel és előre látó módon ki veszed az akkut (már amelyikből manapság lehet) , elteszed az almáriumba, jó lesz az majd ha kell, megesszük befőtt helyett… Csak-hogy  ha nincs töltve akkor is lemerül idővel és elérhet egy olyan pontot ahonnan nincs visszaút tehát

go to csupakabra

(a teljesség igénye nélkül)

Fentieket orvosolandó, kell egy készülék ami figyeli az akku töltöttséget. 100% töltöttség esetén lekapcsolja a töltést, ha az akku töltöttség egy beállított százalék alá esik vissza kapcsolja azt. Így kondicionálja az akkumulátort. Az akkumulátor a tervezett módon van használva és több ideig bírja. Főleg asztalon használt állandóan töltőre dugott készülékekhez ajánlom. Előre bocsájtom nem kell szétszedned a note… izé… laptopod. Természetesen az megoldási is jó ha csak kihúzod a töltőt ha a készülék feltöltött, de elektronika őrültként ez a megoldás kicsit snassz. 😀

Hogy kompatibilis legyen minden típussal, a készülék a konnektor felöli oldalon fogja megszakítani az áramkört vagy bekapcsolni és bluetooth-on tartja a kapcsolatot a laptoppal. És akkor…

 

Szükséges anyagok:

Csak a burkolata 🙂
Arduino Pro Mini 5V
Arduino Pro Mini 5V
12V kapcsolóüzemű tápegység 400mA
5V kapcsolóüzemű tápegység 400mA
HC-05 Bluetooth modul

Egyéb hozzávalók:

  • ellenállás R1  1K   1db
  • tranzisztor Q1 BC817 1db
  • dióda D1 1N4148 1db
  • 5V relé 2A tudjon kapcsolni AC-ben (nagyon fontos, hogy a fogyasztó által felvett teljesítményhez igazítsd)

Működés:

Ahogy az előbbiekben is írtam a készülék egy köztes aljzatként beékelődik a töltő és a hálózat közé, buetooth-on párosítani kell a laptoppal, ahol egy virtuális soros portként fog jelentkezni. A laptopon fut 2 percenként egy kötegfájl (.bat) ami lekérdezi a töltöttség állapotát az operációs rendszertől, ha ez eléri a kötegfájlban megadott értéket mondjuk 10%-ot akkor meghív egy egyszerű soros kommunikációra alkalmas programot, és ennek segítségével küld egy 1-est a virtuális soros porton keresztül a készüléknek ami bekapcsolja a töltőt.  Ha eléri a 100% a töltés ugyanez megy végbe de ezúttal 0-át küld a készülék felé ami kikapcsolja a töltőt. A visszacsatolás maga a töltés megjelenése. A készülék a bekapcsolás után már csak 0-át fogad el. A dolgot picit bonyolítja, hogy a kötegfájlt ugyan meg lehet hívni direktben taskmanagerből, de akkor 2 percenként felvillanó sötét ablakokat kapunk ami eléggé zavaró, így egy szkriptet hívogatunk meg ami meghívja a kötegfájlt, így nem nyílnak ablakok. Aki tud jobb megoldást, hajrá.

Felhívom a figyelmet aki érez magában affinitást írni hozzá egy programot és hajlandó megosztani azt közzéteszem.

Egyébként egy egyszerű bluetooth-on vezérelhető kapcsoló, bármi egyéb bekapcsolására is alkalmas.

Kapcsolási rajz:

FONTOS! Az áramkör egyes részei életveszélyes feszültségen vannak, ennek figyelembevételével építsd meg. Bármilyen anyagi, illetve nem anyagi kár esetén engem felelősség nem terhel. Én szóltam!!! 🙂 Másrészt olyan bluetooth modult használj aminek illesztettek 5V-ra az RX-TX  lábai.

Program:

byte x = 0;

void setup() {
// soros kommunikáció 9600 baud
Serial.begin(9600);

pinMode(13, OUTPUT); // 13 láb a kimenet
establishContact(); // folamatos nagy A betű küldés debug célból elhagyható
}

void loop() {
// soros port figyelése
if (Serial.available() > 0) {
// bejövő adat elkapása
int inByte = Serial.parseInt();
if(inByte==1 && x==0){ //csak 1-et fogad el
x=1;
digitalWrite(13, HIGH); // bekapcsol
Serial.write(„ACK”); // visszajelzés debug célból

}
if(inByte==0 && x==1){ //csak 0-át fogad el
x=0;
digitalWrite(13, LOW);// kikapcsol
Serial.write(„ACK”);// visszajelzés debug célból

}

}
}
// A betűt küldő funkció,nem fontos
void establishContact() {
while (Serial.available() <= 0) {
Serial.print(‘A’); // küldj egy A-t
delay(300);
}
}

Program letöltése (tartalmazza a vezérlő kötegfájlokat magyarázat  readme.txt)

Végeredmény:

Működés közben (szimuláció):

A tartalom nem elérhető.
A sütik használatát az "Elfogadás" gombra kattintva lehet jóváhagyni.

Vasaló Őr :)

Kezdjük valami egyszerűvel.

Találkoztatok már azzal a jelenséggel, (főleg gyerekes családoknál fordul elő) hogy a frissen megszáradt ruha utolsó percben lesz kivasalva indulás előtt, és a vasaló bekapcsolva marad és ott kattog a vasalódeszkán ameddig hazajössz és észre nem veszed, hogy furcsán meleg van ebben a szobában pedig itt a fűtés alapjáraton szokott menni. 🙂

Aztán rájössz, hogy a vasaló volt és hogy tűzveszélyes meg, hogy 8 órán keresztül 1500W lógott a hálózaton és vámpírkodott a villanyszámládon.

A következő projekt ezt hivatott orvosolni.

Szükséges kellékek:

Csak a burkolata 🙂
Arduino Pro Mini 5V
Arduino Pro Mini 5V
12V kapcsolóüzemű tápegység 400mA
5V kapcsolóüzemű tápegység 400mA

Egyéb hozzávalók:

  • ellenállás R1,R2 1K   2db
  • ellenállás R3 10K 1db
  • tranzisztor Q1 BC817 1db
  • dióda D1 1N4148 1db
  • 3mm piros LED DS1 1db (nem kötelező)
  • 5V relé 10A tudjon kapcsolni AC-ben (nagyon fontos, hogy a vasaló által felvett teljesítményhez igazítsd)
  • mikrokapcsoló S1 1db
  • pc speeker (hangszóró) LS1 1db

Működés:

Az áramkör feladata időzítés, hogy a rákapcsolt eszköz csak bizonyos ideig működjön. A készüléken található egy bekapcsoló gomb, ezt megnyomva a készülék bekapcsolja a rádugott eszközt, jelzi a bekapcsolást zenével, leszámolja a programban megadott időt jelen estben 30 percet majd kikapcsol. 29 percnél zenével jelzi hogy ki fog kapcsolni, ha tovább akarunk vasalni meg kell nyomni a bekapcsoló gombot és újabb 30 perc áll rendelkezésre. 30-dik perc végén kikapcsol. (a hosszabbítás bármikor indítható a gomb benyomásával) Így megelőzi a bekapcsolva felejtett vasaló jelenségét. 🙂

NAGYON FONTOS, hogy a relé kapcsolási teljesítményét a fogyasztó, jelen estben vasaló által felvett teljesítményhez igazítsd, különben egy olvadt műanyag pacát találsz a helyén és tűzveszélyes is lehet. A vasalón fel van tüntetve mennyit fogyaszt pl.:1500W a relén viszont az átfolyatható áram van megadva pl.:10A. Mivel 230V feszültségen  és 10A fog átfolyni rajta ezért P=U x I x cos(Fi) jelen esetben a fázisszög elhanyagolható, mivel rezisztív  fogyasztónk van. Tehát a kapcsolható teljesítmény P= 230 x 10 tehát 2300W ami elegendő a vasalóhoz.

MÉG-FONTOSABB! Az áramkör egyes részei életveszélyes feszültségen vannak, ennek figyelembevételével építsd meg. Bármilyen anyagi, illetve nem anyagi kár esetén engem felelősség nem terhel. Én szóltam!!! 🙂

Program:

A programot több Arduino példaprogramból ollóztam össze (főleg csak a saját részeket fogom lefordítani). Az Arduino pro mini panel gyárilag beépített LED-jét hagytam villogni. A programban nincsenek késleltetések (delay) ugyanis egy delay idejére tulajdonképpen szünetel a mikrokontrollerben a programfutás, várakozik.

#include „pitches.h”

// hangok:
int melody[] = {
NOTE_C4, NOTE_G3, NOTE_G3, NOTE_A3, NOTE_G3, 0, NOTE_B3, NOTE_C4
};

// hangok ideje: 4 = quarter note, 8 = eighth note, etc.:
int noteDurations[] = {
4, 8, 8, 4, 4, 4, 4, 4
};
// kimenetek, bemenetek és változók megadása
const int ledPin = LED_BUILTIN;// the number of the LED pin
int rele=6; // relé a 6 lábon
int gomb=A1; // nyomógomb az A1 bemeneten
int g_allapot; // változó a nyomógomb állapotának tárolására
long kikapcs = 0;//ennyit várjon kikapcsolás előtt változó

// Variables will change :
int ledState = LOW; // ledState used to set the LED

// Generally, you should use „unsigned long” for variables that hold time
// The value will quickly become too large for an int to store
unsigned long previousMillis = 0; // will store last time LED was updated

// constants won’t change :
const long interval = 1000; // interval at which to blink (milliseconds)

void setup() {

pinMode(ledPin, OUTPUT);
pinMode(rele, OUTPUT);
digitalWrite(rele, LOW);
pinMode(gomb, INPUT);
}

void loop() {
g_allapot=analogRead(gomb); // gomb állapotának beolvasása
if(g_allapot<=100){ // mivel beépített AD átalakítót használunk ha 100 alá esik az AD által mért érték
kikapcs=1800000; // 30 perc milliszekundumban
digitalWrite(rele, HIGH); // relé behúz
hang(); // nóta indul 🙂
}
unsigned long currentMillis = millis();

if (currentMillis – previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
kikapcs=kikapcs-interval;

if(kikapcs==60000){ // mivel visszaszámlálás folyik ha kikapcs változó elérte az 1 percet

hang(); // nóta indul
}

if(kikapcs<=0){ // ha kikapcs változó elérte a 0-át
kikapcs=0;
digitalWrite(rele, LOW); // relé elenged
}
// if the LED is off turn it on and vice-versa:
if (ledState == LOW) {
ledState = HIGH;
} else {
ledState = LOW;
}

// set the LED with the ledState of the variable:
digitalWrite(ledPin, ledState);
}
}

// hang lejátszó funkció 8 lábon a hangszóró

void hang(){

// iterate over the notes of the melody:
for (int thisNote = 0; thisNote < 8; thisNote++) {

// to calculate the note duration, take one second
// divided by the note type.
//e.g. quarter note = 1000 / 4, eighth note = 1000/8, etc.
int noteDuration = 1000 / noteDurations[thisNote];
tone(8, melody[thisNote], noteDuration);

// to distinguish the notes, set a minimum time between them.
// the note’s duration + 30% seems to work well:
int pauseBetweenNotes = noteDuration * 1.30;
delay(pauseBetweenNotes);
// stop the tone playing:
noTone(8);
}

}

 

Program letöltése

Végeredmény:

Indul:

A tartalom nem elérhető.
A sütik használatát az "Elfogadás" gombra kattintva lehet jóváhagyni.

Többszöri újraindítás (fárasztó tartani a telefont 🙂 ):

A tartalom nem elérhető.
A sütik használatát az "Elfogadás" gombra kattintva lehet jóváhagyni.

Kikapcsolás jelzése és kikapcsolás:

A tartalom nem elérhető.
A sütik használatát az "Elfogadás" gombra kattintva lehet jóváhagyni.

 

Ez a weboldal sütiket használ. Az Uniós törvények értelmében kérem, engedélyezze a sütik használatát, vagy zárja be az oldalt. További információ

Az Uniós törvények értelmében fel kell hívnunk a figyelmét arra, hogy ez a weboldal ún. "cookie"-kat vagy "sütiket" használ. A sütik kicsik, teljesen veszélytelen fájlok, amelyeket a weboldal azért helyez el az Ön számítógépén, hogy minél egyszerűbbé tegye Ön számára a böngészést. A sütiket letilthatja a böngészője beállításaiban. Amennyiben ezt nem teszi meg, illetve ha az "Elfogadom" feliratú gombra kattint, azzal elfogadja a sütik használatát.

Bezárás