Mit tegyek, ha nem vagyok a munkahelyemen? Kis elektronikus projekteknek, amelyeknek valamikor hasznosnak kell lenniük ... Ma bemutatok néhány példát ...

Arduino

túlterhelés

A mikrovezérlő par excellence ... De sokan hallják a mikrovezérlő nevét, és már azt gondolják, hogy nagyon bonyolult, hogy egy drága egyetem által megszerzett oklevélre, mesterképzésre vagy valamilyen fokozatra van szükség ahhoz, hogy képes legyen vele dolgozni ... az ellenkezője! Ha tud számológépet használni, akkor mikrovezérlővel dolgozik (nem pontosan, de a koncepció az) ...

Mi az a mikrovezérlő? Egyszerű szavakkal, ez egy chip, amely ismételten megteszi azt, amit meg kell mondani neki. Például, ha azt mondom neki, hogy kapcsoljon be és ki egy izzót, akkor a mikrovezérlő folyamatosan be- és kikapcsolja az izzót, amíg 1) meg nem változtatja vagy 2) válassza le az áramforrásról.

Egyszerű igazság? Ok, akkor hogyan mondhatjuk el a mikrovezérlőnek, hogy milyen utasításokat hajtson végre? Nos, itt a dolgok kissé bonyolulttá válhatnak ... Bizonyos mikrovezérlőkhöz speciális berendezésekre és alacsony szintű programozási nyelvre (Assembler) van szükség. De az Arduino platform megszületésével ez a programozó mikrovezérlő nagyon bonyolulttá vált, lehetővé téve ezt a művészetet olyan egyszerű emberek számára, mint te és én ...

Az Arduino [1] az alábbiak szerint bonyolítja a mikrovezérlők használatát:

Megkönnyíti a kommunikációt a programozó és a mikrovezérlő között azáltal, hogy olyan kommunikációs szabványokat használ, mint az USB. Minden számítógép rendelkezik legalább egy USB-porttal.

Lehetővé teszi magas szintű programozási nyelv (elsősorban C ++ programozási nyelv) használatát a mikrovezérlő manipulálására. Más nyelvek, például Python, JavaScript, sőt a Scratch is használhatók!

Ilyen esetben most már csak az hiányzik, hogy hogyan kell a nyelvet helyesen használni, hogy a mikrovezérlő megértse. Íme egy példa:

Elemezzük a kódot:

  • 1. és 6. sor: Mint mondtam, a mikrovezérlő egy chip, amely ismételten csinál valamit. Az 1. sor létrehozza a kezdeti konfigurációt. A 6. sor meghatározza az ismételendő utasításokat.
  • 3. sor: Kezdeti konfigurációként azt mondjuk, hogy a LED_BUILTIN tű kimenet, ez az, hogy ez a tű információkat küld. De mit jelent a LED_BUILTIN? Az Arduino platformon támogatott különféle táblákon világítás, LED van, integrálva, de mindegyik tábla más-más csapon van, például az UNO modellnél a 13, az MKR1000 modellnél a 6. érintkezõ van. Tehát kézi helyett Ha megadjuk a LED csapot az egyes modellekhez, akkor ezt a változót használjuk, amely megteszi helyettünk.
  • 8. és 10. sor: A digitalWrite () utasítás azt írja le, hogy LED_BUILTIN írja be az állapotot, HIGH, be vagy LOW, off.
  • 9., 11. sor: Amit a delay () utasítás végez, az megáll, ez milliszekundumban szünetel; esetünkben 1000 milliszekundum, ami 1 másodpercnek felel meg.

Miután a kódot soronként elemeztük, láthatjuk, hogy amit a szkript csinál, az egy másodpercre bekapcsol egy ledet és egy másodpercre kikapcsolja, és ez a végtelenségig, vagy pontosabban megismétlődik, amíg az utasítások megváltoznak, vagy amíg a hatalom mikrokapcsoló, amint azt korábban említettük.

A platformnak köszönhetően a készítői közösség felébredt, és az Arduino-val való együttműködéshez számos összetevő létezik. Kedvenceim:

  • 0,96 "OLED kijelző - 128x64 pixel monokróm OLED kijelző
  • DHT11 - Hőmérséklet és páratartalom érzékelő
  • BMP180 - légköri nyomás és hőmérséklet érzékelő
  • HC-SR04 - Ultrahangos távolságérzékelő
  • LDR - fényérzékelő
  • N csatornás relemodul - nagyfeszültségű berendezések vezérlése
  • HC-SR501 - Infravörös mozgásérzékelő
  • 44E Hall Effect - mágneses érzékelő

Sokkal többen vannak, de különösen ezek a kedvenceim. De az Arduino érdekessége, hogy nem csak külső modulokkal működik, hanem lehetővé teszi kibővítését az úgynevezett '' 'pajzs' '' 's használatával. A pajzs egy tábla, amelyet az Arduino tetejére helyeznek, és kibővíti a funkcionalitást, például:

És csakúgy, mint a modulokkal, sokkal több van.

Láthatjuk, hogy ez egy meglehetősen rugalmas platform, ahol a fantáziánkat lendülhetünk létrehozni.

Raspberry Pi

A mai elektronikai világban nem az Arduino az egyetlen platform, amely lehetővé teszi a projektek fejlesztését. Van egy másik játékos is. Raspberry Pi. Ellentétben az Arduinóval, amely egy mikrokontroller, a Raspberry Pi a szó teljes kiterjesztésű számítógépe, és nemcsak előre programozott utasításokat hajt végre újra és újra, hanem folyamatokat hajt végre, és kölcsönhatásba léphetünk vele normál számítógéppel csináljuk.

Sokszor a zavart a fizikai megjelenésed és az összpontosításod rejti. Például mindkettő használható modulokkal és HAT-okkal (például Shields, de Raspberry Pi esetén). De a Raspberry Pi-vel nem csak egyetlen művelet végrehajtására korlátozódunk, hanem egyszerre több műveletet is elvégezhetünk. Például leolvashatjuk a légköri adatokat és tárolhatjuk őket egy adatbázisban, hogy azok megtekinthetők legyenek egy weboldalon, mindez ugyanazon az eszközön. Az elektronika világából kilépve a Raspberry Pi platformot úgy tervezték, hogy egy kicsi és hozzáférhető számítógép legyen a programozás megtanulásához. [két]

Programozás

Mivel a Raspberry Pi egy számítógép, saját operációs rendszerrel, nem kell programoznunk, de programokat írhatunk úgy, hogy működjenek egy adott HAT-tal, vagy csak néhány külső komponenst használva. A használni kívánt programozási nyelv többféle, a Python és a Scratch a legnépszerűbb. Használjuk a Pythont a fenti példa újrateremtéséhez.

Bár a megjegyzésekkel láthatjuk, mi történik, itt láthatjuk, hogy az utasítások egy kicsit világosabbak. Az elején néhány speciális utasítást is láthatunk, a gpiozero import LED-től és az idő import alvásától. Ellentétben az Arduinóval, amely a mikrovezérlők programozására tervezett C ++ módosítást használja, a Python egy általános programozási nyelv, amely nem tudja, hogy léteznek csapok külső komponensek számítógéphez történő csatlakoztatásához, ezért könyvtárat kell hozzáadni a kódhoz [ 3], vagy legalább egy komponens abból a könyvtárból, esetünkben a LED modult importáltuk a gpiozero [4] könyvtárból, megkönnyítve ezzel az alkatrészek használatát elektronikai projektekben.

Projektek

Mint látható, nagy a lelkesedésem e témával kapcsolatban. Ennek érdekében az elmúlt években több projektben is részt vettem. Itt vannak a legfontosabbak:

Kalóriamérő

Azt hiszem, ez volt az egyik első projektem. A projekt célja az volt, hogy megmérje az elfogyasztott kalóriákat egy szobakerékpár kerékpörgése alapján. Ehhez a projekthez a következő anyagokat használtam:

  • Mágnes
  • Hall Effect Sensor
  • 16x2 LCD képernyő
  • Arduino
  • Helyhez kötött kerékpár

A koncepció egyszerű, a kerék mozgatására, az elfogyasztott kalóriák kiszámítására alkalmazott erő alapján. Egyszerűen hangzik, igaz? A probléma az eléréshez szükséges fizikai-matematikai számítások megtalálása volt, különösen az utolsó résznél. De mint minden problémát, ezt is részenként kell megoldani. Az első dolog a kerék forgási sebességének mérése volt. Ezután ki kellett számolni a sebesség elérésére kifejtett erőt. Végül ki kellett számolni az elfogyasztott kalóriákat, amikor ezt az erőt kifejtették [1] [2] [3]. Mint mondtam, ez utóbbi volt a legbonyolultabb, mivel az információk szűkösek, és a képlet a személy súlyától és magasságától függően változik, ezeket az értékeket minden egyes foglalkozásnál módosítani kell.

Vezeték nélküli kezelő

Nem tudom, hogy a név helyes-e, de jól kifejezi a koncepciót. Az ötlet a következő: egy tanár feleletválasztós kérdőívet tesz közzé, és a diákok ezekről az eszközökről válaszolnak. De ami érdekes volt ebben a projektben, az két dolog volt: 1) meg kellett tenni az adminisztratív oldalt a tanár számára (létrehozni a kérdéseket, a válaszokat, a kérdőívenként statisztikus táblázatot kell készíteni a válaszokról), és a gomb panel webszolgáltatását. hogy megkérdezze a kérdéseket és a lehetőségeket, és megjelenítse azokat az egyes billentyűzetek képernyőjén. Lássuk az anyagokat:

  • Arduino Yún
  • 20x4 LCD képernyő
  • Gombok

Ehhez a projekthez sok kutatást kellett elvégeznem, mivel soha nem dolgoztam Yun-nal. Technikailag ennek egyszerűnek kell lennie, mivel sokáig dolgoztam az Arduinóval, de a vezeték nélküli interfészt egy mikroprocesszor kezelte, amelyhez más, nem a normál könyvtárakon keresztül lehetett hozzáférni. És a tetejére: nincs sok dokumentáció a Yún használatáról, ami megnehezítette a dolgokat. Találtam egy útmutatót a HTTP-kérelem gombnyomással történő elkészítéséhez. De a példa egy gombhoz működött ... Nekem több is volt! Aztán találtam egy videót, amely egyfajta megszakítást használ a gombok érzékeléséhez. Mindkét fogalmat összekevertem, és működni kezdtem. Minden gomb külön HTTP kérést küldött, hogy különböző válaszokat tároljon az adatbázisban.

Minden rendben ment, amíg minden megváltozott ... A képernyőn nemcsak a válaszlehetőségeket, hanem a kérdéseket is meg kell jelenítenie! További módszer a webszolgáltatáshoz, további HTTP kérés az Arduino-n. Maradt függőben a kérdés hosszának kezelése, mivel a képernyőn egy sorral mutatta a kérdést, ha meghaladja a 20 karaktert, akkor a kérdést levágják.

Intelligens parkolás

Kétszer is elvégeztem ezt a projektet, de az első kudarcot vallott. De ebből a kudarcból megtanultam javítani a másodikban. A második változatban voltak komplikációk, de végül minden rendben ment. Menjünk az anyagokkal:

  • Arduino Mega
  • HC-SR04 távolságérzékelők
  • FC-51 akadályérzékelő
  • Servo Motors
  • 16x2 LCD képernyő I2C interfésszel
  • HC-05 BT
  • Kábelek, sok kábel

Ez a projekt a diplomamunka vagy a diplomamunka klasszikusává vált. Őszintén szólva az ötlet egyszerű, érzékeli az egyes parkolókat, és a képernyőn megmutatja mindegyik állapotát. Bár ez az egyszerű rész az, ahol a legtöbb kudarcot vall. Tömb létrehozása helyett hajlamosak egy változót létrehozni minden távolságérzékelőhöz. A második alkalom érdekessége, hogy a csökkent akadálymentességű parkolókat külön kellett figyelembe venni. Ami újdonság, a hozzáférési tollat ​​is kezelheti mobilalkalmazással Bluetooth-on keresztül, üzenetet mutatva az állapotnak megfelelően, egyet üdvözlő üzenetet vagy azt, hogy nincs elérhetőség.

Meteorológiai állomás

Ez a jelenlegi projektem. Még nem írtam kódot, csak teszteltem az összetevőket. Eddig:

  • Arduino uno
  • DHT11
  • BMP180

Ezzel megvan a hőmérséklet, a nyomás és a páratartalom, elég az eső előrejelzéséhez (esetleg?) Legalábbis a koncepció egyszerű, magas páratartalom és nyomás, alacsony hőmérséklet az eső nagy valószínűségét jelzi. A mögötte álló matematika valószínűleg a legbonyolultabb. Még mindig nem végeztem el a kutatásomat. És végül óránként rögzíti a méréseket egy adatbázisban, ehhez szükségem van egy WIFI modulra (ESP8266), vagy át kell állítanom a platformot Wemos-ra (a D1 Mini tűnik a legjobb jelöltnek, bár még mindig nem tudom teljes mértékben elsajátítani) azt). Egy másik dolog, amit hozzá szeretnék adni, az UV-indexmérő. Eddig az ötletem egyelőre érvényes.

A Coding Overload egy blog a fejlesztői életmódról. Általános programozási koncepciók, majd néhány. Végigvezeti a Python, a C/C ++, a Java, a PHP, az SQL és még sok más alapjait.