Arduino konzol nosztalgia

Zsenge korom konzoljait juttatta eszembe a következő nem általam kitalált, de megépített Arduino alapú konzol játék.

Az áramkörre ezen az oldalon bukkantam: https://nootropicdesign.com/hackvision/

Néhány futtatható játék

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.

Játékok itt: https://nootropicdesign.com/hackvision/games.html

Kapcsolási rajz:

J12-betáp 9V

J13-soros interface (Kell hozzá egy USB -RS232 átalakító ha ezen akarod feltölteni a játékot)

J4-programozó csatlakozó USBasp kompatinilis

X2-1 – audio, video kimenet (ezzel kötöd a TV-re)

Nyák rajz itt.

 

 

 

ESP-01 + AT parancsok

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+RESTORE válasz OK gyári állapotra állítás
  • AT+UART_DEF=9600,8,1,0,0 válasz OK 9600 baud, 8 adat bit, 1 stop bit, paritás 0, átvitelvezérlés 0
  • 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.

Részletesen itt megtekinthető.

Elektromos autó

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ő modul
Szervó motor
RF modul adó-vevő 433MHz
Arduino Pro Mini 5V
Arduino 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. 🙂

Programok:

Letölthető itt.

Végeredmény:

Na meg a videó (részeg sofőrrel) 😀 :

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