Ce fac când nu sunt la serviciu? Pentru proiectele electronice mici care la un moment dat trebuie să fie utile ... Astăzi vă prezint câteva exemple ...

Arduino

platforme

Microcontrolerul prin excelență ... Dar mulți aud numele de microcontroler și deja cred că este foarte complicat, că este necesară o diplomă, un master sau o diplomă susținută de o universitate scumpă pentru a putea lucra cu el ... Pe contrariul! Dacă puteți utiliza un calculator, lucrați cu un microcontroler (nu exact, dar conceptul este acela) ...

Ce este un microcontroler? În cuvinte simple, este un cip care face în mod repetat ceea ce i se spune să facă ... De exemplu, dacă îi spun să aprindă și să oprească un bec, microcontrolerul pornește și oprește continuu becul până când 1) schimbă instrucțiuni sau 2) se deconectează de la sursa de alimentare.

Adevăr simplu? Bine, deci cum îi spunem microcontrolerului ce instrucțiuni să îndeplinim? Ei bine, aici lucrurile se pot complica puțin ... Pentru anumite microcontrolere, sunt necesare echipamente specializate și limbaj de programare de nivel scăzut (Assembler). Dar, odată cu nașterea platformei Arduino, aceste microcontrolere de programare au devenit foarte simple, permițând ca această artă să fie făcută de oameni obișnuiți, ca tine și ca mine ...

Arduino [1] simplifică utilizarea microcontrolerelor după cum urmează:

Facilitează comunicarea între programator și microcontroler folosind standarde de comunicare precum USB. Fiecare computer are cel puțin un port USB.

Permite utilizarea limbajului de programare la nivel înalt (în principal limbajul de programare C ++) pentru a manipula microcontrolerul. Pot fi folosite și alte limbi, cum ar fi Python, JavaScript, chiar și Scratch!

Acestea fiind situația, acum singurul lucru care lipsește este cum să folosiți corect limba astfel încât microcontrolerul să o înțeleagă. Iată un exemplu:

Să analizăm codul:

  • Liniile 1 și 6: După cum am spus, un microcontroler este un cip care face ceva în mod repetat. Linia 1 stabilește configurația inițială. Linia 6 stabilește instrucțiunile care trebuie repetate.
  • Linia 3: Ca o configurație inițială, spunem că pinul LED_BUILTIN este afișat, acesta este faptul că acest pin va trimite informații. Dar ce înseamnă LED_BUILTIN? Diferitele plăci acceptate în platforma Arduino au o lumină, un LED, integrat, dar fiecare placă o are pe un pin diferit, de exemplu modelul UNO îl are pe pinul 13, modelul MKR1000 pe pinul 6. Deci, în loc de manual specificând pinul LED pentru fiecare model, folosim această variabilă care o face pentru noi.
  • Liniile 8 și 10: ceea ce face instrucțiunea digitalWrite () este să scrieți în LED_BUILTIN starea, HIGH, pornit sau LOW, oprit.
  • Liniile 9, 11: Ce face instrucțiunea delay () este să se oprească, se oprește pentru timpul indicat în milisecunde; în cazul nostru, 1000 milisecunde, care este egal cu 1 secundă.

Odată ce codul a fost analizat linie cu linie, putem vedea că ceea ce face scriptul este să aprindă un led pentru o secundă și să-l oprească pentru o secundă și acest lucru se repetă la nesfârșit, sau mai precis, până când instrucțiunile se schimbă sau până la pornirea este oprit microcontrolerul, așa cum am menționat anterior.

Odată cu trezirea comunității producătorilor datorită acestei platforme, există multe componente pentru a lucra cu Arduino. Favoritele mele sunt:

  • Afișaj OLED de 0,96 "- Afișaj OLED monocrom de 128x64 pixeli
  • DHT11 - Senzor de temperatură și umiditate
  • BMP180 - Senzor de presiune și temperatură atmosferică
  • HC-SR04 - Senzor de distanță cu ultrasunete
  • LDR - senzor de lumină
  • Modul releu canal N - Controlul echipamentelor de înaltă tensiune
  • HC-SR501 - Senzor de mișcare în infraroșu
  • 44E Efect Hall - Senzor magnetic

Sunt multe altele, dar acestea sunt în special preferatele mele. Dar aspectul interesant despre Arduino este că nu numai că funcționează cu module externe, dar permite, de asemenea, extinderea acestuia folosind ceea ce se numește '' '' scut '' ''. Un scut este o placă care este plasată deasupra Arduino și extinde funcționalitatea, cum ar fi:

Și la fel ca în cazul modulelor, există multe altele.

Putem vedea că este o platformă destul de flexibilă, unde ne putem lăsa imaginația să zboare pentru a crea.

Raspberry Pi

În lumea electronică de astăzi, Arduino nu este singura platformă care permite dezvoltarea proiectelor. Există, de asemenea, un alt jucător. Raspberry Pi. Spre deosebire de Arduino, care este un microcontroler, Raspberry Pi este un computer în toate sensurile cuvântului, nu numai că rulează un set de instrucțiuni pre-programate iar și iar, dar rulează procese și putem interacționa cu el ca și noi face cu un computer normal.

Confuzia constă adesea în aspectul tău fizic și în concentrarea ta. De exemplu, ambele pot fi utilizate cu module și HAT-uri (cum ar fi Shields, dar pentru Raspberry Pi). Dar cu Raspberry Pi nu ne limităm doar la a face o singură acțiune, ci putem efectua mai multe acțiuni în același timp. De exemplu, putem citi datele atmosferice și le putem stoca într-o bază de date, astfel încât să poată fi vizualizate pe o pagină web, toate pe același dispozitiv. Ieșind din lumea electronică, platforma Raspberry Pi este concepută pentru a fi un computer mic și accesibil pentru învățarea programării. [Două]

Programare

Deoarece Raspberry Pi este un computer cu propriul sistem de operare, nu este nevoie să-l programăm, dar putem scrie programe pentru a funcționa cu un anumit HAT sau doar folosind unele componente externe. Limbajul de programare pe care îl putem folosi sunt mai multe, Python și Scratch sunt cele mai populare. Să folosim Python pentru a recrea exemplul de mai sus.

Deși cu comentariile putem vedea ce se întâmplă, aici putem vedea că instrucțiunile sunt puțin mai clare. Putem vedea, de asemenea, câteva instrucțiuni speciale la început, de la LED-ul de import gpiozero și de la somnul de timp de import Spre deosebire de Arduino, care folosește o modificare a C ++ concepută pentru a programa microcontrolere, Python este un limbaj general de programare care nu știe că există pini pentru conectarea componentelor externe la computer, de aceea trebuie adăugată o bibliotecă la cod [ 3], sau cel puțin o componentă din acea bibliotecă, în cazul nostru am importat modulul LED din biblioteca gpiozero [4], facilitând utilizarea componentelor în proiectele electronice.

Proiecte

După cum puteți vedea, entuziasmul meu pentru acest subiect este mare. Pentru care am fost implicat în mai multe proiecte în ultimii ani. Iată cele mai importante momente:

Calometru

Cred că acesta a fost unul dintre primele mele proiecte. Obiectivul acestui proiect a fost de a măsura caloriile consumate pe baza rotirii roții unei biciclete de exerciții. Pentru acest proiect am folosit următoarele materiale:

  • Magnet
  • Senzor de efect Hall
  • Ecran LCD 16x2
  • Arduino
  • Bicicletă staționară

Conceptul este simplu, bazat pe forța exercitată pentru a mișca roata, pentru a calcula caloriile consumate. Sună simplu nu? Problema a fost găsirea calculelor fizico-matematice pentru a ajunge acolo, în special pentru ultima parte. Dar, ca orice problemă, trebuie rezolvată în părți. Primul lucru a fost să măsurăm viteza de rotație a roții. Apoi a fost să calculăm forța exercitată pentru a avea acea viteză. În cele din urmă, a fost să se calculeze caloriile consumate atunci când se exercită această forță [1] [2] [3]. Așa cum am spus, acesta din urmă a fost cel mai complicat, deoarece informațiile sunt rare și formula variază în funcție de greutatea și înălțimea persoanei, valori care ar trebui ajustate în fiecare sesiune.

Tastatură wireless

Nu știu dacă numele este corect, dar exprimă bine conceptul. Ideea este următoarea: un profesor postează un chestionar cu alegeri multiple, iar elevii răspund de la aceste dispozitive. Dar ceea ce a fost interesant la acest proiect au fost două lucruri: 1) a fost necesar să se facă latura administrativă pentru profesor (să creeze întrebări, răspunsuri, să aibă un tabel statistic cu răspunsurile pe chestionar) și serviciul web pentru panoul de butoane pentru a obține întrebările și opțiunile și a le afișa pe un ecran pe care îl are fiecare tastatură. Să vedem materialele:

  • Arduino Yún
  • Ecran LCD 20x4
  • Butoane

Pentru acest proiect a trebuit să fac multe cercetări, deoarece nu lucrasem niciodată cu un Yún. Din punct de vedere tehnic ar trebui să fie simplu, deoarece am lucrat mult timp cu Arduino, dar interfața wireless a fost gestionată de un microprocesor care a fost accesat prin alte biblioteci care nu erau cele normale. Și, pentru a completa, nu există prea multe documente despre utilizarea Yún, ceea ce a îngreunat lucrurile. Acolo am găsit un ghid despre cum să fac o cerere HTTP folosind un buton. Dar exemplul a funcționat pentru un singur buton ... Am avut mai multe! Apoi am găsit un videoclip care folosește un fel de întrerupere pentru a simți butoanele. Am amestecat ambele concepte și am reușit să funcționeze. Fiecare buton a trimis o cerere HTTP diferită pentru a stoca răspunsuri diferite în baza de date.

Totul a fost bine până când totul s-a schimbat ... Pe ecran nu ar trebui să fie afișate doar opțiunile de răspuns, ci și întrebările! O metodă suplimentară pentru serviciul web, o cerere HTTP suplimentară pe Arduino. Ce a rămas în așteptare a fost de a gestiona lungimea întrebării, deoarece a folosit o linie de pe ecran pentru a afișa întrebarea, dacă depășea 20 de caractere, întrebarea a fost tăiată.

Parcare inteligentă

Am făcut acest proiect de două ori, dar primul a eșuat. Dar din acel eșec, am învățat să mă îmbunătățesc în al doilea. În cea de-a doua versiune au existat complicații, dar totul a mers bine la final. Să mergem cu materialele:

  • Arduino Mega
  • Senzori de distanță HC-SR04
  • Senzor de obstacole FC-51
  • Servomotoare
  • Ecran LCD 16x2 cu interfață I2C
  • HC-05 BT
  • Cabluri, multe cabluri

Acest proiect a devenit un clasic pentru teze sau proiecte de diplomă. Sincer, ideea este simplă, detectând fiecare parcare și arătând starea fiecăruia pe un ecran. Deși această parte simplă este locul în care majoritatea eșuează. Ei tind să creeze o variabilă pentru fiecare senzor de distanță în loc să facă o matrice. Interesantul pentru această a doua oară a fost că parcările cu accesibilitate redusă trebuiau luate în considerare separat. Noutăți, gestionați și stiloul de acces cu o aplicație mobilă prin Bluetooth, afișând un mesaj în funcție de stare, unul de bun venit sau unul care spune că nu există disponibilitate.

Stația Meteorologică

Acesta este proiectul meu actual. Nu am scris încă niciun cod, tocmai am testat componentele. Până acum am:

  • Arduino uno
  • DHT11
  • BMP180

Cu aceasta am temperatura, presiunea și umiditatea, suficient pentru a prognoza ploaia (poate?). Cel puțin conceptul este simplu, umiditate și presiune ridicate, temperatura scăzută indică o probabilitate mare de ploaie. Matematica din spatele ei este probabil cea mai complicată. Încă nu mi-am făcut cercetările. Și, în cele din urmă, va face o înregistrare orară a măsurătorilor într-o bază de date, pentru care trebuie să am nevoie de un modul WIFI (ESP8266) sau să schimb platforma în Wemos (D1 Mini pare să fie cel mai bun candidat, deși încă nu pot stăpâni pe deplin ea). Un alt lucru pe care vreau să îl adaug este un indicator UV. Până acum ideea mea merge deocamdată.

Coding Overload este un blog despre un stil de viață pentru dezvoltatori. Concepte generale de programare și apoi câteva. Va ghida prin elementele de bază ale Python, C/C ++, Java, PHP, SQL și multe altele.