Ingyenesen letölthető a Simple Electronics with GPIO Zero kiadvány

The MagPi - Simple electronics with GPIO Zero

Ingyenesen elérhető a The MagPi Essentials sorozat legújabb tagja, a 12 fejezetből és 100+ oldalból álló Simple Electronics with GPIO Zero. Letölthető PDF-ben innen.

Hozzászólások

A MagPI osszes kiadvanya ingyenesen letoltheto.

Nagyon várom már a következő kiadást: "LED blinking with 8 node home cluster using Java language"! :D

Tetszik vagy sem, a ledvillogtatas kb. a mikrokontrollerek hello worldje (meg nem csak a uC-k, hanem az ilyen pici beagyazott vackok eseten is).
Senki nem mondta, hogy ehhez 555-nel meg par passziv alkatresznel tobb kene (vagy 2db tranyonal), de ha osszeraksz egy led villogtato aramkort raspberryvel/arduinoval/uC-vel, onnantol tudod, hogy hogy hasznalj ciklust, varakozast/timert, meg minimum 1 db. kimeneti pint. Meg persze az adott eszkozhoz tartozo forditot, egetot, fejlesztoi keszletet, stb. is kiprobalhatod. Raadasul meg haszna is van, lehet azon a pinen led helyett rele modul is, es az idozitest is allitgathatod, egy csomo, iparban hasznalatos feladatot mar ennyivel is meg tudnal oldani egy kis plusz vedelemmel.

Nem a hello world a vegcel, de egy hasznos elso lepes.

--
"Ne kúrd el mégegyszer a karakterkészletet, mert akkor ez a file is conflictolni fog a merge serveren és ez azért eléggé bosszantó!"

+10000

Szerintem minden iskolába szükség lenne 1-1 ilyen teremre vagyis ennek bőven ott kellene lennie az informatika termemben, ezzel egy igazi valóságos és kézzel fogható dolgot lehetne tanítani.

A jelen "informatika" "számítástechnika" oktatás kimerül az MS termékek oktatásában az iskolák jelentős részében. Igaz hallottam már példás ellenkezőjét is.

Tudom, hogy pénz meg ilyesmi, de ha van egy retek dalra 12 milliárd egy országban azért, hogy kitömjék az énekesek száját és a saját zsebüket, akkor van fele annyi arra, hogy oktassuk azokat a lehető legjobban azokat akik akkor fognak dolgozni mikor mi már nem tudunk.

+1e6
"Szerintem minden iskolába szükség lenne 1-1 ilyen teremre..."
A lényeg, ahogy írtad, a "minden" iskolában, azaz nem csak a szakosított intézményekben. Már az általános iskolák felső tagozatán ki kellene alakítani legalább egy ilyen termet.

________________________________________
https://sites.google.com/site/eutlantis/

Az egyik unokatestvérem 10 éves kora körül kezdett el programozni mert a számígóGÉPEZÉS volt a hobbija. Leérettségizett, elvégzett egy okj-s sulit, közben végig programozgatott hobbiból, alapvetően motiváció vagy életmotiváció nélkül. A suli után elment pizzafutárnak, mert azért inni kell valamiből, majd amikor látta a plakátokat, hogy jelentkezz hekkernek, ő jelentkezett. Alaposan szemügyre vették, tesztelték, elemezték és olyat ajánlottak neki hogy besírtok. Elvileg még ott van, de ha nem ott lesz akkor is jó lesz és ott mindenképpen alapos döntéseket hoznak.

És igen. Huszonévesen már fölösleges előtenni az alapokat, csak nyűglődni fog vele, igaz betanított indian level szintre bárki felhúzható később is de attól mert össze tudja rakni még nem biztos, hogy érti miért és miért működik.

Köszi, pontosan leírtad amit kifogásoltam! ;)
Ennek semmi köze sem a hardverhez, az olvasó semilyen hardver ismeretet nem szerez.
Valójában python függvények hívogatásáról van szó, ezért nem látok eltérést a képernyőn villogtatott piros pötty és a led között. A ciklusszervezéshez nem kell breadboard.
Ezt igazán nem nevezném hardver programozásának, sőt se fordítani se égetni nem kell hozzá.
Egy időzítés vagy relé nem igazán nevezhető "iparban használatos feladatnak". :D

Precíz magyarázatok!
Hogyan olvassunk kapcsolási rajzot. :)
The resistors are essential to limit the amount of current flowing to the Pi, to avoid damaging it; we’ve used 100Ω resistors, but you could get away with using ones with a slightly higher ohmage, such as 330Ω. - Ezek után jön a fórumozás... :) Persze ha idéznének valamit a specifikációból, a led adatlapból meg Ohm törvényéről (ezt úgy is kívülről tudja mindenki!) akkor még értelme is lenne.
Képzeld el, ha az autóversenyzést így tanítanák meg: Ott az a pedál - nyomod, azt kerek izét tekered. Én csak kicsit vagy közepesen szoktam, mert ha nagyon, akkor nekimész a falnak. Kizárólag kedvcsinálás céljából. :)
De mindjárt megtanítalak diszket is programozni! ;)
A Word-ben megnyomod a Save gombot...No, látod! Villog a diszken a led! Megcsináltuk!

Alapismeretek nélkül parasztvakítás az egész! Tetszett, ahogy elszóltad magad a villogtatás lehetséges megoldásainak felsorolásával!
Az első, amit el kellene sajátítani az, hogy mit is csinálunk tulajdonképpen. Néhány megoldás összehasonlításával meg lehetne adni azt az ismeretet, ami alapján eldöntjük mi mire való. Ehhez képest a "hardveresek" java része már biztosan tudja, hogy ipari folyamatokban időzített ledvillogtatásra kizárólag raspály alkalmazható. :(

Külön kiemelném a varakozast/timert, aminek a megvalósítása az ilyen irodalmakban 10000:1 a lineáris programozás javára, ami pont nem erre való.

Itt egy, a gyakorlatbol vett feladat:
Adott egy CNC vezerelt kerekeszterga. Van 2 hosszszan (jobb- es baloldalon), mindketton van 1-1 kes, meg egy orso, ami a kereket forgatja. Az orsot meg a szanokat kenni kell felvaltva (kiveve, ha veszstopban van a gep, akkor semmit nem csinalunk). Van egy kenopumpa engedelyezo pin, meg van 1-1 pin, ami meghatarozza, hogy az olajat a szanokra vagy az orso csapagyaira iranyitsa-e (magneskapcsolokon keresztul szelepeket allit). Azert, hogy ne kuldjunk tul sok olajat, idonkent nem olajozunk semmit (mondjuk fel percig adunk olajat az orsonak, aztan fel percig a szanoknak, aztan 5 percig nem csinalunk semmit).
Mi kell ehhez? 3 output pint kell allitani, es idoziteni a vegtelensegig (meg ha az estop nem vagna le az egeszet, akkor azt is kene figyelni). Attol most tekintsunk el, hogy a magneskapcsolokon van egy-egy led visszajelzesnek. Egy attiny13a-val kb. 60 ft-bol kenyelmesen megoldhato feladat, de a vegen ipari pc-t hasznaltunk hozza, meg egy marek uC-t ha mar a rendszer tobbi reszehez amugy is kellett, es ott volt.
(Linearis egyenlotlensegrendszerekhez nem nyultunk.)

A tobbiben kb. egyetertunk, alapismeretek is kellenek, viszont egy kifejezetten raspi-vel foglalkozo tutorial nem baj, ha nem ad altalanos elektronikai ismereteket is. Sokkal hosszabb lenne, es aki mar amugy is tudja, az kerulgethetne.

Ja, es mi a kulonbseg akozott, hogy a user python fuggvenyeket hiv, es az rejti el a HW reszleteit, meg az Arduinos DigitalWrite kozott? Utobbi nyilvan lassabb, mint ha a megfelelo regisztereket irnad (DDRx allitas utan PORTx), cserebe elfedi, hogy pontosan milyen uC van benne, ami a libraryk miatt neha jol jon. Ha alacsonyabb szinten akarod piszkalni a vasat, altalaban arra is van lehetoseg (bar a hordozhatosag akkor nem trivialis).

--
"Ne kúrd el mégegyszer a karakterkészletet, mert akkor ez a file is conflictolni fog a merge serveren és ez azért eléggé bosszantó!"

Ez egy kerékpáreszterga??
Értem én az "iparban előforduló" kifejezést, de ez egy fals túlzó megfogalmazás. Ha ugyanezt a néhány pint a víz adagolására használod a levesesfazékba akkor "home elektronika", ha egy űrhajón, akkor meg "NASA technológia"?
A ipari számomra inkább a zavarszintet, az összekötéseket és a megbízhatóságot jelenti. Az összekötés egyben az interfész is, mint pl. a CAN, LIN, ProfiBus, amiket pont ilyenre találtak ki. Amikor az automatizálás alapjait tanultam (ez a tárgy címe volt), akkor a folyamat vezérlésén kívül mindig szóba került a biztonság is.
Visszakanyarodva a Pi-s megoldásra, pont ez az ami nem ipari. Még a 80-as évek végén volt egy mondásom: A Commodore 64 segítségével egy okos mérnök vagy egy gyerek :) bármit meg tud valósítani, mint ahogy egy Mercedes hátsó ülésén is lehet trágyát szállítani, de nem biztos, hogy arra való.
A hordozhatóság meg olyan divatos kulcsszó, de nem túl jelentős. Általában rosseb sem akar hordozni semmit sehova. Ha meg mégis, akkor számtalan módon meg lehet oldani, hogy a működő kódban el legyen rejtve a hardver valódi kinézete.

Nem lineáris egyenlőtlenségrendszerről, hanem lineáris programról beszéltem! :)
Miután a led már vígan villog meg sleepel, meg lehetne mutatni ugyanezt 872 leddel és eltérő időzítésekkel. Tudtad, hogy a Microchip "magasszintű" C libjeiben a késleltetésekhez a fordító kiszámítja az adott órajelhez tartozó loopok és nopok darabszámát? Átírtam egy egyszerű c programot - amiben a néhány késleltetés mellett usb driver is volt - assemblerre és hoppá! A program fele a formai átírás után eltűnt, pedig első lépésben csak a delay_ms() és társait írtam át megszakításos timerre.
Tehát a hardver timer+megszakítás, nyomógomb+megszakítás kezelését is lehetne szemléltetni igen egyszerű példákkal. De ilyen nincs.

"Ez egy kerékpáreszterga??"
Igen. Befogod a kerekpart (nem a biciklit) a kopott/nyers kerekabroncsokkal, megmondod milyen kerek, es hogy meddig menjen le atmeroben, o lemeri a nyomtavot, kitalalja a nagyolociklusok szamat, fogast, meg effeleket, es lejon a kesz kerek.

Jo, az ipari lehet, hogy egy kicsit tulzas volt (nem veletlenul tettem oda, hogy plusz vedelmet igenyelne a dolog). De egyebkent szimpla a pinbillegtetessel meg idozitessel vizforralonal, es valoszinuleg a NASA-nal is eleg sok dolgot meg lehetne oldani. Utobbinal biztos nem raspi-vel, hanem valami minimum 30 eves, bejaratott (es sugarzasallo) technikaval.

Nekem infon nem volt "Automatizalas alapjai" cimu targyam. Linearis programozas viszont igen. :)
De egyebkent igen, fontos a zavarvedelem meg a megbizhatosag.

A hordozhatosag neha nagyon jol jon, maskor meg fel lehet aldozni a sebessegert (vagy mas elonyokert) cserebe. Mint ahogy forditva is igaz: a sebessegbol/funkciokbol be lehet aldozni egy keveset egy plusz absztrakcios reteggel a hordozhatosagert cserebe, ha arra van szukseg. Vagy meg lehet hatarozni forditaskor par dolgot, es akkor max. a kod lesz egy kicsit nehezkesebb az ifdef-ek miatt. (meg azert, mert nem hasznalhatod ki a HW-fuggo aprosagokat, pl. 1 regiszter tobb bitjet is tudnad egyszerre billenteni)

Igen, lehetne csinalni olyan tutorialt is, hogy mi van, ha tobb dolgot szeretnel idoziteni. Erre is tobb mod van, nehany tutorialban tobbet meg is mutatnak (raspi-be nem melyedtem bele ilyen szinten, azt foleg pici linuxos gepkent hasznalom).

Egyebkent nem tudtam, de a Microchiprol elhiszem. Szerencsere pic-hez nem kellett most nyulnom, ennek ellenere lattam furcsa dolgokat.

Megszakitaskeres nemtom mennyire bonyolult raspi-n. Ha nem az, akkor elfert volna benne, ha az, akkor viszont egy ilyen kezdoknek szant leirasbol nem baj, ha kimaradt. Akit erdekel, majd utananez, de eleg sokaig el lehet jutni ezek nelkul is, foleg egy ilyen eros procival (azert egy uC-nel sokkal gyorsabb, ha meg hard realtime dolog kell, amugy is kelleni fog valami plusz vas vagy egyeb trukkozes). O is (jatek)robotot epit, azert valamire csak jo ez az egesz.

--
"Ne kúrd el mégegyszer a karakterkészletet, mert akkor ez a file is conflictolni fog a merge serveren és ez azért eléggé bosszantó!"

Megszakitaskeres nemtom mennyire bonyolult raspi-n. Ha nem az, akkor elfert volna benne, ha az, akkor viszont egy ilyen kezdoknek szant leirasbol nem baj, ha kimaradt.

Ez a lényeg, hogy ez egy kezdőknek szóló írás. Még ha buckónak valahol talán van is némi igaza, az tuti, hogy amit ő szeretne látni, attól minden kezdőnek elmenne a kedve, nem csak a programozástól és az elektronikától de még az elektronikus eszközök használatától is.

Ave, Saabi.

Grrrr!

Feladat: Beszélni szeretnék a szomszéddal, de még nem ért haza.
Olvasgatok. (main program)
Ha megjött, akkor átmegyek hozzá. (if set szomszéd_megjött flag goto Átmegyek)
Ha nem, tovább olvasgatok. (goto Olvasgatok)
Átmegyek.

Az óra negyedóránként üt. (timer tick interrupt)
-> Kinézek az ablakon, hogy ott áll-e már a szomszéd autója. (timer interrupt routine)
-> Ha igen, akkor megjött! (set szomszéd_megjött flag)

Ez azért nagyon bonyolult ám!
Meg elmagyarázni a kezdőnek, ha folyton kibámulsz az ablakon, akkor nem tudsz olvasni!

De ha a szomszéd (asszony) nem jelzi, hogy áll a zászló, akkor csak kénytelen vagy pollozni az állapotát, tehát állandóan fel kell ugranod a fotelből, hogy megnézd, elment-e már az ura! :-D
A pollozás kontra esemény/megszakításkezelés nem egy programozást kezdő szinten tanuló gyereknek való dolog, a GPIO Zero viszont igen. Ahogy pl. a RaspIO Pro Hat is fujj, csúnya, elrejti, hogy kell előtét ellenállás egy LED elé, mégis inkább ilyennel kezdje a gyerek az ismerkedést. Aztán majd túllép rajta.

Ave, Saabi.

Akár igazad is lehetne. ;)
Nem is mondtam, hogy az első órán.
Anyám közel 30 év pedagógusi múlttal, továbbképzés keretében betűre ugyanazt az anyagot tanulta - halmazelméletet -, mint én a BME első évfolyamán. Mégpedig azért, hogy alsósokat, konkréten első és második osztályosokat taníthasson korszerűen.
A külső esemény kezelése nem bonyolultabb, mint a kecske és káposzta szállítása csónakon a túlsó partra. Különösen olyan gyereknek, aki se kecskét ,se káposztát, se csónakot nem látott még. ;)
A nyomógombot meg meg tudja nyomni.
Ja, és a továbbképzés 77-ben volt.

Akkor ez nem Vasúti Kerékpár Eszterga.

A marsjáró POWER processzorral megy. Ilyen célra több gyártónál van R toldalékkal ellátott típus, ami a sugárzásálló tokozást jelenti.

Még mindig nem AZ a lineáris. :)) Definiálom. Azt értem lineáris program alatt, ami nagyjábol olyan sorrendben fut, ahogy leírtad. Egy-egy függvényhívásnak csak "rövidítés" szerepe van, hiszen inline is lehetne. Ezzel szemben az esemény/megszakítás vezérelt program "nem sorrendben" fut. Attól függetlenül, hogy mi az esemény forrása.

A probléma forrása az ifdef?? Láttál már C stb. programot?? :))
Naugye!

(raspi-be nem melyedtem bele ilyen szinten, azt foleg pici linuxos gepkent hasznalom) ... Megszakitaskeres nemtom mennyire bonyolult raspi-n.

Semennyire! A sztori: Kezdetben assemblerben írtam (mechanika)vezérléseket, majd shellben végesállapotú automatákat. Thread-re nem is volt szükségem, de akkoriban még nem is volt. Aztán jött a probléma, hogy értem, de idegen volt, hogy nem én mondok meg mindent. Aztán egyik kolléga felviágosított: thread==interrupt. És már írtam is! :)

Lényegében bármilyen rendszerre lehet írni több feladatos/szálas programot, mivel minden rendelkezésedre áll a hardvertől függetlenül. Persze DOS alatt nincsen olyan rendszerhívás, ami ezt támogatná, de akkor "körül kell bástyázni" vagy nem kell használni. Ugyan nem ismerem, de létezik python alá is olyan lib, amivel timert lehet indítani/gpio-ra interruptot konfigurálni és függvényt hozzárendelni. Ez már multitasking!

Each GPIO pin, when configured as a general-purpose input, can be configured as an interrupt source to the ARM.
Several interrupt generation sources are configurable:

    Level-sensitive (high/low)
    Rising/falling edge
    Asynchronous rising/falling edge

Csak el kell kezdeni!

ha meg hard realtime kell
Csak a pontosság kedvéért: realtime != gyors.
Inkább olyan dolgok vannak, mint
- futástól független szinkron
- órajeltől független aszinkron
események kezelése, vagy művelet végzése. Ezak olyan dolgok, amit egy uC többnyire tud, a fejletteb és sokkal gyorsabb processzor meg ugye nem erre készült.

azert egy uC-nel sokkal gyorsabb
Ez egy kicsit off. Egy 12MIPS teljesítményű, 8 bites pic van a műszerben. A kolléga MAC-en, core i7 virtuális gépben windows/C#-ban dolgozza fel a méréseket. A mért adatokból keletkező görbe elemzését én végzem a két mérés között az idő <25%-ában, az eredmény megy az usb-re. (Összesen 4ks/s, 4 külön görbe. Most készül egy 30ks/s mérés, de itt már nem lesz idő a kiértékelésre. A következő lépés pic24 - 16 bites - lesz, ami legalább 5-10x gyorsabb minden szempontból.)
A két processzor sebességének aránya legalább 1:10000. Nem állítom, hogy a másik oldalon nem lehet megoldani, de csak az algoritmus kitalálása volt a kihívás...
Ebben az esetben a windows, grafikus felület és a C# együttese - no, meg a kolléga antihardveressége ;) - okozhat olyan sebességingadozást, ami megkérdőjelezheti az optimális felhasználást.