Személyes kedvencem (anno egy már akkor is öreg árkád gépen nyomtam):
A tartalom nem elérhető. A sütik használatát az "Elfogadás" gombra kattintva lehet jóváhagyni.
És még egy:
A tartalom nem elérhető. A sütik használatát az "Elfogadás" gombra kattintva lehet jóváhagyni.
Természetesen rögtön tudtam hogy meg fogom építeni és így is tettem. Az én verzióm nem olyan szép mint a vásárolható kitt de egyoldalas nyákra készült, és így könnyebb megépíteni. Mellékelek kapcsolási rajzot nyákrajzot.
Későbbi elektronikus geoláda bejegyzésem, előfutáraként írom ezt a cikket, a láda programjának megértéséhez szükség van az ESP-01 modul AT-parancsainak ismeretére. A modul egy WIFI eszköz, soros kapcsolatot tesz lehetővé WIFI-n keresztül.
A modul tápfeszültsége 3,3V de ennek stabilnak kell lennie. Instabil tápfeszültség esetén hajlamos elfelejteni a programját.
ESP-01
Kapcsolási rajz a teszteléshez, flasheléshez:
Több helyen láttam , hogy a modult összekötik egy FTDI232 usb-soros átalakító, modullal amelynek a kimenő 3,3V feszültségét használják fel az ESP-01 modul tápfeszültsége gyanánt, ami látszólag egy egyszerű, frappáns megoldás. Így elkerülhető, hogy illeszteni kelljen a 3,3V TTL szintű modult az 5V TTL szintű átalakítóhoz. (Az FTDI232 modul ilyenkor 3,3V TTL szinteket használ) A probléma az, hogy az FTDI232 3,3V-os kimenete nem bírja el a modul néha 300mA-is elérő áramfelvételét. És ott az instabil táp, a modul belepusztul. 😀
Ergo illeszteni kell az ESP-01-et az átalakítóhoz, az átalakító 5V kimenetére egy 3,3V stabilizátort kötni, vagy külső tápot használni.
A fenti áramkör alkalmas, új AT parancsos firmware beégetésre valamint Arduino-s használathoz.
AT parancsok:
Nem fogom tárgyalni az összeset csak a legfontosabbakat. Putty-al, Telnet-el vagy egyéb terminál programmal tesztelheted. Kocsi vissza új sort kell küldeni a parancsok után. Mindig nagybetűvel küldünk parancsot.
Beállítások a terminál programhoz:
Az ESP-01 kiszállításkor 115200 baud-ra van beállítva. (ez módosítható)
AT áramkör válasza OK arra szolgál, hogy a soros kapcsolatot teszteljük
AT+RST áramkör válasza OK reszeteli az áramkört
AT+MODE=”1″ áramkör válasza OK 1-kliens mód, 2-accespoint mód, 3-kevert mód
AT+GMR áramkör a firmware verzióval válaszol majd OK
AT+GSLP áramkör altatása, áramkör módosítása szükséges a működéshez, következő cikkben kitérek rá
AT+CWJAP=ssid,jelszó válasz OK vagy hibakód -kapcsolódás egy WIFI-hez
AT+CWQAP- lekapcsolódás a WIFI-ről
AT+CWSAP=ssid,jelszó,(0-64)csatorna,(0,2,3,4)kódolás válasz OK vagy ERROR -accespointként viselkedés. (IP.:192.168.0.4 gyárilag)
AT+CHIPMUX=1 válasz OK-0 egy kapcsolat, 1 -több kapcsolat
AT+CIPSERVER=1,80 válasz OK szerver indítása a 80 porton
AT+CIPSERVER=0,80 válasz OK szerver kikapcsolása a 80 porton
AT+CIPSEND=kliens ID(0-4),üzenet hossza (1-2048 max byte) válasz ERROR kapcsolati hiba esetén SEND OK sikeres küldés esetén SEND FAIL ha nem sikerült minden adatot átvinni.Magát az üzenetet csak ezután kell elküldeni, a válaszok az üzenet elküldése után jönnek.
AT+CIPCLOSE=0 válasz OK üzenet küldés vége
A fenti parancsok a teljesség igénye nélkül vannak felsorolva, némelyik elavult, de még benne van a firmware-ben.
Hát persze, hogy klikk vadász a cím. 🙂 Ha a médiának lehet akkor nekem is …
A fiam elromlott TESCO-ban vásárolt távirányítós autójáról van szó, amit úgy felturbóztam, hogy porosabb talajon driftel 😀
A mostani játékok elektronikájára jellemző, hogy ha egyszer elromlik mehet a kukába, mert javíthatatlan. Ha szétbontod találsz benne egy áramkört aminek a közepén egy műgyantával leöntött paca van, és max néhány ellenállást kondenzátort tartalmaz. A fenti autónál is ez volt. Így fogtam az egész elektronikát és veszélyes hulladéknak leadtam, távirányítóval együtt. Viszont ha már a veszélyes hulladéknál tartunk, volt egy laptop akkumulátorom ami elhalálozott. Tudni kell, hogy ezek az akkuk több cellából állnak és nem egyszerre pusztul el az összes. 1-2 cella benne feladja, és a „védőáramköre” biztonsági okokból letiltja a töltést. Természetesen ennek semmi köze a tervezett elavuláshoz, bárminemű ezzel való összekapcsolása a témának a véletlen műve. (remélem egyet értetek kedves gyártók) Szétkaptam az akkut, kiszedtem belőle a működő cellákat, és már is volt egy amper-centrikus erőforrásom ingyen. 3,7V cellákról van szó, az autó kapott sorba kötve 3 db-ot az 11,1V. Eredetileg 4db ceruza elemmel működött, az 6V. Hogy, le fog égni majd a motor, igen le fog egyszer ha túl hajtjuk de addig remekül szórakozunk. 😀
Természetesen Arduino pro mini áramkörökkel építettem fel mind az adó, mind a vevő áramkört 1-1 433MHz-n működő adó-vevő modullal virtual-wire osztály felhasználásával. Még a lebegény (légpárnás) készítésének idejéből polcon hevert egy apró szervó motor, ez szabályozza a kanyarodást. Találkoztam azzal az inkompatibilitási problémával, hogy az Arduio alap szervovezérlési modulja nem kompatibilis a virtual-wire class-al, így ki kellett cserélnem a modult és egy másik szervovezérlési modult használnom. Természetesen mindent mellékelek. És akkor…
Hozzávalók:
L298 motorvezérlő modulSzervó motorRF modul adó-vevő 433MHzArduino Pro Mini 5V 2db
Kapcsolási rajz távirányító:
Távirányító
Kapcsolási rajz autó:
Autó
Működés:
Azt hiszem a működést nem kell különösebben részleteznem. Röviden annyi, hogy a távirányító potméter állását leolvassa az AD átalakító ami a Pro Miniben van ebből generálódik egy szám (ez a kormányállás) ennek a számnak a végére hozzácsapunk egy karaktert 0-> áll, 1->előre, 2->hátra és ez kerül elküldésre.
Az autóban az Arduino modul visszaalakítja ezt a számot és értelmezi. Először szétszedi kormányállásra és irányra, majd a kormányállásból generál egy szervó állást. A többi értelem szerű. Program forráskódjában erősen kommenteltem. Még annyit, hogy a távirányítóban lehet használni az Arduino pro mini butábbik verzióját is amelyben ATmega165 van. Mert olcsóbb. 🙂
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 5V5V 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.
// 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 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);
}
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.