Mga kategorya: Itinatampok na Mga Artikulo » Praktikal na Elektronika
Bilang ng mga tanawin: 67360
Mga puna sa artikulo: 7
Pagkonekta at pagprograma ng Arduino para sa mga nagsisimula
Ang pag-aaral ba ng mga microcontroller ay mukhang kumplikado at hindi maintindihan? Bago ang hitsura ng Arudino, talagang hindi madali at nangangailangan ng isang tiyak na hanay ng mga programmer at iba pang kagamitan.
Ano ang isang Arduino?
Ito ay isang uri ng elektronikong tagapagtayo. Ang paunang layunin ng proyekto ay upang payagan ang mga tao na madaling malaman kung paano i-program ang mga elektronikong aparato, habang ang paglalaan ng kaunting oras sa elektronikong bahagi.
Ang pagpupulong ng mga pinaka-kumplikadong circuit at ang koneksyon ng mga board ay maaaring isagawa nang walang isang paghihinang bakal, at sa tulong ng mga jumpers na may nababato na koneksyon "ama" at "ina". Sa ganitong paraan, maaaring magkakonekta ang parehong mga kalakip at mga card ng pagpapalawak, na sa lexicon ng arduinists ay tinatawag na "Shields".

Ano ang unang Arduino board na bumili para sa isang newbie?
Ang base at pinakasikat na board ay isinasaalang-alang Arduino uno. Ang bayad na ito ay kahawig ng isang credit card. Medyo malaki. Karamihan sa mga kalasag na ibinebenta ay perpekto para sa kanya. May mga socket sa board para sa pagkonekta sa mga panlabas na aparato.

Sa mga domestic store para sa 2017, ang presyo nito ay mga 4-5 dolyar. Sa mga modernong modelo, ang Atmega328 ay ang kanyang puso.
Arduino board image at pag-decode ng function ng bawat pin, Arduino UNO pinout
Ang microcontroller sa board na ito ay isang mahabang chip sa DIP28 package, na nagpapahiwatig na mayroon itong 28 binti.
Ang susunod na pinakasikat na board ay nagkakahalaga ng halos dalawang beses na mas mura kaysa sa nauna - 2-3 dolyar. Ito ang board Arduino nano. Ang mga aktwal na board ay itinayo ng parehong Atmega328, na functionally sila ay katulad ng UNO, pagkakaiba sa laki at pagtutugma sa USB, higit pa sa ibang pagkakataon. Ang isa pang pagkakaiba ay ang isang plug, sa anyo ng mga karayom, ay ibinigay para sa pagkonekta ng mga aparato sa circuit board.

Ang bilang ng mga pin (binti) ng board na ito ay pareho, ngunit maaari mong makita na ang microcontroller ay ginawa sa isang mas siksik na pakete ng TQFP32, ang ADC6 at ADC7 ay idinagdag sa kaso, ang iba pang dalawang "dagdag" na mga binti ay nagdoble sa power bus. Ang mga sukat nito ay medyo siksik - tungkol sa laki ng isang hinlalaki ng iyong kamay.
Ang pangatlong pinakasikat na board ay Arduino Pro Mini, wala itong USB port para sa pagkonekta sa isang computer, sasabihin ko sa iyo kung paano makipag-usap nang kaunti sa ibang pagkakataon.

Arduino Nano vs Pro Mini Sukat na Paghahambing
Ito ang pinakamaliit na motherboard ng lahat na isinasaalang-alang, kung hindi man ito ay katulad sa nakaraang dalawa, at ang Atmega328 pa rin ang puso nito. Hindi namin isasaalang-alang ang iba pang mga board, dahil ito ay isang artikulo para sa mga nagsisimula, at ang paghahambing ng mga board ay ang paksa ng isang hiwalay na artikulo.
Arduino Pro Mini pinout, sa itaas na bahagi, ang diagram ng koneksyon ng USB-UART, pin "GRN" - ay naka-wire sa reset circuit ng microcontroller, maaari itong tawaging naiiba, kung saan kailangan mong malaman sa ibang pagkakataon.
Buod:
Kung ang UNO ay maginhawa para sa prototyping, kung gayon ang Nano at Pro Mini ay maginhawa para sa pangwakas na mga bersyon ng iyong proyekto, sapagkat kumukuha sila ng kaunting puwang.

Paano ikonekta ang Arduino sa isang computer?
Arduino Uno at Nano kumonekta sa isang computer sa pamamagitan ng USB. Kasabay nito, walang suporta sa hardware para sa USB port, isang solusyon sa circuit ng conversion ng antas, na karaniwang tinatawag na USB-to-Serial o USB-UART (rs-232), ay ginagamit dito. Kasabay nito, ang isang espesyal na boot na driver ng Arduino ay na-flaced sa microcontroller, na nagpapahintulot sa pag-flash sa mga bus na ito.
Sa Arduino Uno, ang ligature na ito ay ipinatupad sa isang microcontroller na may suporta sa USB - ATmega16U2 (AT16U2). Ito ay lumiliko na ang karagdagang microcontroller sa board ay kinakailangan para sa pag-flash ng pangunahing microcontroller.
Sa Arduino Nano, ito ay ipinatupad ng FT232R chip, o ang analogue na CH340. Ito ay hindi isang microcontroller - ito ay isang antas ng converter, ang katotohanang ito ay ginagawang madali upang tipunin ang Arduino Nano mula sa simula ng iyong sariling mga kamay.
Karaniwan, ang mga driver ay awtomatikong mai-install kapag ang Arduino board ay konektado. Gayunpaman, nang bumili ako ng isang kopya ng Intsik ng Arduino Nano, kinilala ang aparato, ngunit hindi ito gumana, ang isang bilog na sticker na may data sa petsa ng paglabas ay nakadikit sa converter, hindi ko alam kung ginawa ito nang may layunin, ngunit pagkatapos ng pagbabalat nito nakita ko ang pagmamarka ng CH340.
Bago ito, hindi ko nakatagpo ito at naisip na ang lahat ng mga convert ng USB-UART ay natipon sa FT232, kailangan kong mag-download ng mga driver, napakadali silang makahanap sa pamamagitan ng kahilingan ng "driver ng Arduino ch340". Matapos ang isang simpleng pag-install - nagtrabaho ito!
Sa pamamagitan ng parehong USB port, ang microcontroller ay maaari ring mapalakas, i.e. kung ikinonekta mo ito sa adapter mula sa isang mobile phone, gagana ang iyong system.
Ano ang dapat kong gawin kung ang aking board ay walang USB?
Mas maliit ang Arduino Pro Mini. Nakamit ito sa pamamagitan ng pag-alis ng USB konektor para sa firmware at ang parehong converter ng USB-UART. Samakatuwid, dapat itong bilhin nang hiwalay. Ang pinakasimpleng converter sa CH340 (ang pinakamurang), CPL2102 at FT232R, para sa mga gastos sa pagbebenta mula sa $ 1.
Kapag bumili, bigyang-pansin kung anong boltahe ang adapter na ito ay dinisenyo para sa. Magagamit ang Pro mini sa mga bersyon 3.3 at 5 V, ang isang lumulukso ay madalas na matatagpuan sa mga nagko-convert upang lumipat ang boltahe ng supply.

Kapag kumikislap sa Pro Mini, bago ka magsimula, dapat mong mag-click sa RESET, gayunpaman, sa mga nagko-convert na may DTR hindi mo kailangang gawin ito, ang diagram ng koneksyon sa figure sa ibaba.

Sila ay sumali sa pamamagitan ng mga espesyal na terminal na "Mama-Mama" (babaeng-babae).

Sa totoo lang, ang lahat ng mga koneksyon ay maaaring gawin gamit ang mga naturang mga terminal (Dupont), pareho silang nasa magkabilang panig na may mga socket, at may mga plug, at sa isang gilid ng socket, at sa iba pang mga plug.

Paano magsulat ng mga programa para sa Arduino?
Upang magtrabaho kasama ang mga sketch (ang pangalan ng firmware ay nasa wika ng arduino), mayroong isang espesyal na integrated na kapaligiran para sa pagbuo ng Arduino IDE, maaari mo itong i-download nang libre mula sa opisyal na website o mula sa anumang pampakay na mapagkukunan, kadalasan walang mga problema sa pag-install nito.
Ito ang hitsura ng interface ng programa. Maaari kang sumulat ng mga programa sa pinasimple na wika ng C AVR na espesyal na binuo para sa arduino, sa katunayan ito ay isang hanay ng mga aklatan na tinatawag na Wiring, pati na rin sa purong C AVR. Ang paggamit nito ay pinadali ang code at pabilisin ang gawa nito.
Sa tuktok ng bintana mayroong isang pamilyar na menu kung saan maaari mong buksan ang file, mga setting, piliin ang board na nakikipagtulungan ka (Uno, Nano at marami, marami pa) at buksan din ang mga proyekto na may mga handa na mga halimbawa ng code. Sa ibaba ay isang hanay ng mga pindutan para sa pagtatrabaho sa firmware, ang mga susi na makikita mo sa figure sa ibaba.

Sa ilalim ng window ay isang lugar para sa pagpapakita ng impormasyon tungkol sa proyekto, ang katayuan ng code, firmware at ang pagkakaroon ng mga error.
Mga pangunahing kaalaman sa programming ng Arduino IDE
Sa simula ng code, kailangan mong magpahayag ng mga variable at kumonekta ng mga karagdagang aklatan, kung mayroon sila, ito ay ginagawa bilang mga sumusunod:
#include biblioteka.h; // ikonekta ang library gamit ang pangalang "Biblioteka.h"
#define peremennaya 1234; // Ipahayag ang isang variable na may halaga ng 1234
Pinapayagan ng utos ng Tukuyin ang compiler na pumili ng uri ng variable, ngunit maaari mo itong itakda nang manu-mano, halimbawa, isang integer int, o isang lumulutang na point float.
int led = 13; // nilikha ang variable na "humantong" at itinalaga ito ang halaga "13"
Ang programa ay maaaring matukoy ang estado ng pin bilang 1 o 0. 1 ay isang lohikal na yunit, kung ang pin 13 ay 1, kung gayon ang boltahe sa pisikal na paa nito ay katumbas ng supply boltahe ng microcontroller (para sa arduino UNO at Nano - 5 V)
Ang digital signal ay naitala gamit ang digitalWrite na utos (pin, halaga), halimbawa:
digitalWrite (humantong, mataas); // isulat ang yunit upang i-pin 13 (inihayag namin sa itaas) mag-log. Mga Yunit
Tulad ng naiintindihan mo, ang pag-access sa mga port ay sa pamamagitan ng pagbilang sa board, kaukulang figure. Narito ang isang halimbawa na katulad sa nakaraang code:
digitalWrite (13, mataas); // itakda ang pin 13 hanggang isa
Kadalasan ang hinahangad na oras ng pag-antala ng oras ay tinawag ng utos ng pagkaantala (), ang halaga ng kung saan ay nakatakda sa milliseconds, ang mga microsecond ay nakamit gamit ang
pagkaantalaMicroseconds () Pag-antala (1000); // hihintayin ng microcontroller ang 1000 ms (1 segundo)
Ang mga setting ng port para sa input at output ay naka-set sa walang bisa na pag-setup ng {}, kasama ang utos:
walang pag-setup () {
pinMode (NOMERPORTA, OUTPUT / INPUT); // argumento - variable na pangalan o numero ng port, input o output na pipiliin
}
Walang bisa na loop
Pag-unawa sa unang programa ng Blink
Bilang isang uri ng "Kumusta, mundo" para sa mga microcontroller, mayroong isang LED flashing program, suriin natin ang code nito:
Sa simula, kasama ang utos ng PinMode, sinabi namin sa microcontroller na magtalaga ng isang port na may isang LED sa output.Napansin mo na ang code ay hindi ipinahayag ang variable na "LED_BUILTIN", ang katotohanan ay sa Uno, Nano at iba pang mga board mula sa pabrika, ang built-in na LED ay konektado sa pin 13 at ito ay ibinebenta sa board. Maaari itong magamit sa iyo para sa indikasyon sa iyong mga proyekto o para sa pinakasimpleng pagsusuri ng iyong mga kumikislap na programa.
Susunod, itinakda namin ang output kung saan ang LED ay naibenta sa pagkakaisa (5 V), ang susunod na linya ay gumagawa ng MK maghintay ng 1 segundo, at pagkatapos ay itinatakda ang LED_BUILTIN pin sa zero, naghihintay ng isang segundo at ang programa ay umuulit sa isang bilog, kaya kapag ang LED_BUILTIN ay 1 - ang LED ( at anumang iba pang pag-load na konektado sa port) ay naka-on, kapag sa 0 ito ay naka-off.
Gumagana ba ang lahat at malinaw ang lahat? Pagkatapos ay lumipat!
Nabasa namin ang halaga mula sa analog port at ginagamit ang data ng basahin
Ang Atmega328 AVR microcontroller ay may built-in na 10-bit na analog-to-digital converter. Pinapayagan ka ng 10-bit ADC na basahin ang halaga ng boltahe mula 0 hanggang 5 volts, sa mga pagdaragdag ng 1/1024 ng buong saklaw ng amplitude ng signal (5 V).
Upang mas malinaw ito, isaalang-alang ang sitwasyon, ipagpalagay na ang halaga ng boltahe sa analog input ay 2.5 V, pagkatapos ay babasahin ng microcontroller ang halaga mula sa pin "512" kung ang boltahe ay 0 - "0", at kung 5 V - (1023). 1023 - dahil ang bilang ay mula sa 0, i.e. 0, 1, 2, 3, atbp. hanggang sa 1023 - isang kabuuang 1024 na halaga.
Narito kung paano ito nakikita sa code, gamit ang karaniwang sketch na "analogInput" bilang isang halimbawa
int sensorPin = A0;
int ledPin = 13;
int sensorValue = 0;
walang pag-setup () {
pinMode (ledPin, OUTPUT);
}
walang bisa na loop () {
sensorValue = analogRead (sensorPin);
digitalWrite (ledPin, HIGH);
pagkaantala (sensorValue);
digitalWrite (ledPin, LOW);
pagkaantala (sensorValue);
}

Ang scheme ng koneksyon ng potensyomiter sa Arduino, sa pamamagitan ng pagkakatulad, ang gitnang output na maaari mong kumonekta sa anumang pag-input ng analog.
Ipahayag ang mga variable:
-
Ledpin - nakapag-iisa na magtalaga ng isang pin na may built-in na LED sa output at magbigay ng isang indibidwal na pangalan;
-
sensorPin - input ng analog, na itinakda nang naaayon sa pagmamarka sa board: A0, A1, A2, atbp;
-
sensorValue - isang variable para sa pag-iimbak ng isang halaga ng basahin ng integer at karagdagang trabaho dito.
Ang code ay gumagana tulad nito: sensorValue i-save ang analog na halaga na basahin kasama sensorPin (analogRead na utos). - Dito natapos ang gawain kasama ang analog signal, pagkatapos ang lahat ay tulad ng sa nakaraang halimbawa.
Sinusulat namin ang yunit sa ledPin, ang LED ay lumiliko at maghintay ng isang oras na katumbas ng halaga ng sensorValue, i.e. mula 0 hanggang 1023 millisecond. I-off ang LED at maghintay muli para sa panahong ito, pagkatapos kung saan ulitin ang code.
Kaya, sa posisyon ng potentiometer, itinakda namin ang dalas ng kumikislap na LED.
Pag-andar ng mapa para sa Arudino
Hindi lahat ng mga function para sa mga actuators (wala akong alam) ay sumusuporta sa "1023" bilang isang argumento, halimbawa, ang servo ay limitado sa pamamagitan ng anggulo ng pag-ikot, iyon ay, sa pamamagitan ng kalahating rebolusyon (180 degree) (kalahating rebolusyon) ng servo motor, ang maximum na argumento ng pagpapaandar ay "180"
Ngayon tungkol sa syntax: mapa (ang halaga na isinasalin namin ay ang minimum na pag-input, ang maximum na pag-input, ang minimum na output, ang maximum na output).
Sa code, ganito ang hitsura nito:
(mapa (analogRead (palayok), 0, 1023, 0, 180));
Nabasa namin ang halaga mula sa potensyomiter (analogRead (palayok)) mula 0 hanggang 1023, at sa output na nakukuha namin ang mga numero mula 0 hanggang 180
Halaga ng Halaga ng Mapa
-
0=0;
-
1023=180;
Sa pagsasagawa, inilalapat namin ito sa gawain ng parehong code ng servo, tingnan ang code kasama ang Arduino IDE, kung maingat mong basahin ang mga nakaraang mga seksyon, kung gayon hindi ito nangangailangan ng paliwanag.

At ang diagram ng koneksyon.

Konklusyon Ang Arduino ay isang napaka-maginhawang tool para sa pag-aaral kung paano magtrabaho sa mga microcontroller. At kung gumagamit ka ng purong C AVR, o kung minsan ay tinatawag itong "Purong C", makabuluhang bawasan mo ang bigat ng code at higit pa sa memorya ng microcontroller, bilang isang resulta, makakakuha ka ng isang mahusay na debugging board na gawa sa pabrika na may USB firmware.

Opinyon ng may-akda:
Gusto ko ng arduino. Nakalulungkot na maraming nakaranas ng mga programista ng microcontroller ang pumuna rito nang hindi makatuwiran, na ito ay napaka pinasimple. Sa prinsipyo, ang wika lamang ang pinasimple, ngunit walang sinumang nagpipilit sa iyo na gamitin ito, kasama mo maaaring i-flash ang microcontroller sa pamamagitan ng konektor ng ICSP at punan ang code na nais mo nang walang anumang mga bootloader na hindi mo kailangan.
Para sa mga nais makipaglaro sa electronics, bilang isang advanced na tagabuo, perpekto ito, ngunit para sa mga bihasang programer, isang board na hindi nangangailangan ng pagpupulong ay magiging kapaki-pakinabang din!
Para sa karagdagang impormasyon tungkol sa Arduino at ang mga tampok ng paggamit nito sa iba't ibang mga scheme, tingnan ang e-book -Arduino para sa mga dummies. Naipakita ang praktikal na gabay.
Tingnan din sa electro-tl.tomathouse.com
: