Мазмуну:

Arduino Datalogger: 8 кадам (сүрөттөр менен)
Arduino Datalogger: 8 кадам (сүрөттөр менен)

Video: Arduino Datalogger: 8 кадам (сүрөттөр менен)

Video: Arduino Datalogger: 8 кадам (сүрөттөр менен)
Video: Lesson 98: Arduino 10 LED Push button Projects, Potentiometer LED Voltmeter and Traffic Light 2024, Июль
Anonim
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger

Бул үйрөткүчтө биз Arduino менен жөнөкөй маалыматтарды каттоочу кылабыз. Кеп Arduino аркылуу маалыматты басып алуу жана терминалга басып чыгаруу үчүн эң негиздерин үйрөнүүдө. Биз бул негизги орнотууну бир катар тапшырмаларды аткаруу үчүн колдоно алабыз.

Баштоо үчүн:

Сизге Tinkercad (www.tinkercad.com) эсеби керек болот. Барыңыз жана электрондук почтаңызга же социалдык медиа каттоо эсебиңизге катталыңыз.

Кирүү сизди Tinkercad Dashboardго алып барат. Сол жактагы "Микросхемаларды" чыкылдатып, "Жаңы схеманы түзүү" дегенди тандаңыз. Кел, баштайлы!

Сиз толук файлды TInkercad схемаларынан таба аласыз - аны текшергениңиз үчүн рахмат!

1 -кадам: Кээ бир компоненттерди кошуу

Кээ бир компоненттерди кошуу
Кээ бир компоненттерди кошуу
Кээ бир компоненттерди кошуу
Кээ бир компоненттерди кошуу
Кээ бир компоненттерди кошуу
Кээ бир компоненттерди кошуу

Сизге кээ бир негизги компоненттер керек болот. Буларга төмөнкүлөр кирет:

  • Arduino тактасы
  • Breadboard

Аларды издеп жана чыкылдатып ортоңку аймакка кошуу.

Нан тактасын Arduino үстүнө коюңуз. Бул байланыштарды кийинчерээк көрүүнү жеңилдетет.

2 -кадам: Breadboards жөнүндө эскертүү

Breadboards жөнүндө эскертүү
Breadboards жөнүндө эскертүү

Нан тактасы - тез прототиптөө үчүн абдан пайдалуу түзмөк. Биз аны компоненттерди туташтыруу үчүн колдонобуз. Кээ бир нерселерди белгилей кетүү керек.

  1. Чекиттер тигинен туташкан, бирок ортодогу сызык бул байланышты жогорку жана төмөнкү мамычалардан бөлүп турат.
  2. Мамычалар катардагыдай солдон оңго туташкан эмес. Бул бардык компоненттер тигинен эмес, мамычалар аркылуу туташтырылышы керек дегенди билдирет.
  3. Эгерде сиз баскычтарды же өчүргүчтөрдү колдонушуңуз керек болсо, анда аларды ортодогу тыныгуу аркылуу туташтырыңыз. Биз муну кийинчерээк үйрөткүчтө көрөбүз.

3 -кадам: эки сенсорду кошуу

Эки сенсорду кошуу
Эки сенсорду кошуу

Биз колдонуп жаткан эки сенсор - бул фотосезгич сенсор жана температура сенсору.

Бул сенсорлор жарык менен температураны баалашат. Биз Arduino баасын окуп, Arduinoдогу сериялык монитордо көрсөтүү үчүн колдонобуз.

Эки сенсорду издеңиз жана кошуңуз. Алар нан тактасындагы мамычалардын арасына жайгаштырылганын текшериңиз. Аларды көрүүнү жеңилдетүү үчүн алардын ортосуна жетиштүү боштук коюңуз.

4 -кадам: Фотосезгич сенсор

Фотосезгич сенсор
Фотосезгич сенсор
Фотосезгич сенсор
Фотосезгич сенсор
Фотосезгич сенсор
Фотосезгич сенсор
Фотосезгич сенсор
Фотосезгич сенсор
  1. Фотосезгич сенсор үчүн Arduinoдогу 5V пинден бир зымды нан тактасындагы бөлүктүн оң буту менен бир эле тилкеге кошуңуз. Зымдын түсүн кызылга өзгөртүңүз.
  2. Сол бутун ошол эле тилкедеги пин аркылуу Arduinoдогу A0 (A-нөл) пинке туташтырыңыз. Бул аналогдук пин, биз аны сенсордон маанини окуу үчүн колдонобуз. Бул зымды сары же кызыл же кара түстөн башка түскө боёгула.
  3. Тактага резисторду (издөө жана чыкылдатуу) коюңуз. Бул схеманы бүтүрөт жана сенсор менен пинти коргойт.

    • Аны айлантып, мамычаларды аралап өтүңүз.
    • Бир бутуңузду нан тактасынын оң буту мамысына туташтырыңыз
    • Резистордун экинчи четинен жерге зым коюңуз

      Зымдын түсүн кара кылып өзгөртүңүз

  4. Бардык байланыштарды эки жолу текшериңиз. Эгерде бир нерсе керектүү жерде болбосо, бул туура иштебейт.

5 -кадам: Кодду баштаңыз

Кодду баштаңыз
Кодду баштаңыз
Кодду баштаңыз
Кодду баштаңыз
Кодду баштаңыз
Кодду баштаңыз

Бул компоненттин кодун карап көрөлү.

Биринчиден, бул кадамдын үчүнчү сүрөтүн караңыз. Бул эки функциясы бар кээ бир коддорду камтыйт:

жараксыз орнотуу ()

боштук цикл ()

C ++ тилинде, бардык функциялар кайтарым түрүн, андан кийин атын, андан кийин аргументтерди берүү үчүн колдонула турган эки тегерек кашааны камсыз кылат, көбүнчө өзгөрмөлөр. Бул учурда, кайтарып берүү түрү жараксыз, же эч нерсе эмес. Аты жөндөө жана функция эч кандай аргумент албайт.

Орнотуу функциясы Arduino жүктөлгөндө бир жолу иштейт (аны туташтырганда же батареяларды туташтырганда).

Цикл функциясы миллисекунддан кийин туруктуу циклде иштейт, орнотуу функциясы бүтөт.

Сиз цикл функциясына койгон нерселердин баары Arduino иштегенде иштейт. Сырттагы нерсенин баары чалганда гана иштейт. Эгерде биз циклден башка дагы бир функцияны аныктап, чакырсак.

Тапшырма

Код панелин Tinkercadдагы баскыч менен ачыңыз. Блоктор ачылуучу тизмесин Текстке өзгөртүңүз. Пайда болгон эскертүү кутучасына макул бол. Эми, бул кадамдын үчүнчү сүрөтүндөгү тексттен башка көргөн нерселердин баарын жок кылыңыз.

Variables

Баштоо үчүн, биз кээ бир өзгөрмөлөрдү дайындообуз керек, ошондуктан биздин кодду чындап эффективдүү кылабыз.

Өзгөрмөлөр бир объектини гана кармай турган чакаларга окшош (C ++-биз объектке багытталган деп атайбыз). Ооба, бизде массивдер бар, бирок булар өзгөчө өзгөрмөлөр жана алар жөнүндө кийинчерээк сүйлөшөбүз. Биз өзгөрмөнү дайындаганда, биз анын кандай түрү экенин айтып, анан ага маани беришибиз керек. Бул мындай көрүнөт:

int someVar = A0;

Ошентип, биз өзгөрмөнү дайындап, int түрүн бердик. Int - бүтүн сан же бүтүн сан.

"Бирок сен бүтүн санды колдонгон жоксуң!", - деп айтканыңды угуп жатам. Бул чын.

Arduino биз үчүн өзгөчө бир нерсе кылат, ошондуктан биз A0ду бүтүн сан катары колдоно алабыз, анткени башка файлда A0 бүтүн сан катары аныкталат, андыктан биз A0 константасын колдонуп, бул бүтүн санга шилтеме кылбай туруп, анын эмне экенин билбей туруп колдоно алабыз. Эгерде биз жөн эле 0 терсек, анда 0 позициядагы санарип пинге кайрылабыз, ал иштебейт.

Ошентип, биздин код үчүн биз тиркелген сенсор үчүн өзгөрмө жазабыз. Мен жөнөкөй ат коюуну сунуштап жатам, бул сизге байланыштуу.

Сиздин кодуңуз мындай болушу керек:

int lightSensor = A0;

void setup () {} void loop () {}

Эми, Arduinoго бул пиндеги сенсорду кантип иштетүү керектигин айталы. Биз орнотуу ичинде функцияны иштетип, пин режимин орнотобуз жана Arduinoго аны кайдан издей турганын айтабыз.

int lightSensor = A0;

жараксыз орнотуу () {pinMode (lightSensor, INPUT); } void loop () {}

pinMode функциясы Arduinoго пин (A0) INPUT пини катары колдонуларын айтат. CamelCaseUsedка көңүл буруңуз (ар бир биринчи тамга баш тамга, анын ичинде өркөчтөр бар, демек… төө…!) Өзгөрмөлөр жана функция аттары үчүн. Бул конвенция жана көнүү жакшы.

Акырында, аналогдук окуу функциясын колдонуп, кээ бир маалыматтарды алалы.

int lightSensor = A0;

жараксыз орнотуу () {pinMode (lightSensor, INPUT); } void loop () {int reading = analogRead (lightSensor); }

Окууну өзгөрмөлүү түрдө сактаганыбызды көрөсүз. Бул маанилүү, анткени биз аны басып чыгарышыбыз керек. Келгиле, сериялык китепкананы колдонобуз (китепкана - бул биздин кодубузга тезирээк жазуу үчүн кошо ала турган код, аны аныктамасы менен чакырып) муну сериялык мониторго басып чыгаруу үчүн.

int lightSensor = A0;

void setup () {// PinMode (lightSensor, INPUT) пин режимдерин коюу; // Сериялык китепкананы кошуу Serial.begin (9600); } void loop () {// Sens read int reading = analogRead (lightSensor); // Мониторго маанини басып чыгаруу Serial.print ("Жарык:"); Serial.println (окуу); // кийинки циклди 3 секунд кечиктирүү (3000); }

Бир нече жаңы нерселер! Биринчиден, сиз буларды көрөсүз:

// Бул комментарий

Комментарийлерди башкаларга биздин код эмне кылып жатканын айтып берүү үчүн колдонобуз. Сиз буларды көп колдонушуңуз керек. Компилятор буларды окубайт жана аларды кодго айландырбайт.

Эми биз Сериялык китепкананы сап менен коштук

Seria.bg (9600)

Бул аргументти талап кылган функциянын мисалы. Сиз китепкананы Serial деп атадыңыз, андан кийин функцияны иштеттиңиз (биз муну тегерек кашаанын аркасы менен билебиз) жана аргумент катары бүтүн сандарга өтүп, Serial функциясын 9600baud режиминде иштетиңиз. Эмнеге экени жөнүндө кабатыр болбоңуз - азырынча анын иштээрин билиңиз.

Кийинки кылган ишибиз сериялык мониторго басып чыгаруу болду. Биз эки функцияны колдондук:

// Бул сериалга сап үзүлбөстөн басып чыгарат (аягында киргизүү)

Serial.print ("Жарык:"); // Бул сап үзүлүшүн киргизет, ошондуктан биз окуган жана жазган сайын, ал жаңы сапка чыгат Serial.println (окуу);

Көрө турган нерсе, ар биринин өзүнчө максаты бар. Саптарыңыз эки тырмакча колдонулганын жана эки чекиттен кийин боштукту калтырганыңызды текшериңиз. Бул колдонуучуга окууга жардам берет.

Акыр -аягы, биз кечигүү функциясын колдонуп, циклибизди жайлатып, аны үч секундда бир жолу окууга мажбур кылдык. Бул миңдеген секундада жазылган. Аны 5 секундда бир жолу окуу үчүн өзгөртүңүз.

Абдан жакшы! Барабыз!

6 -кадам: Симуляция

Симуляция
Симуляция
Симуляция
Симуляция
Симуляция
Симуляция

Дайыма симуляцияны иштетүү менен иштерди текшериңиз. Бул схема үчүн тренажердун иштешин жана баалуулуктарыңызды текшерүү үчүн ачышыңыз керек болот.

Симуляцияны баштаңыз жана сериялык мониторду текшериңиз. Жарык сенсорунун маанисин аны чыкылдатып, сыдырманы колдонуу менен өзгөртүңүз. Сиз сериялык монитордун маанисинин өзгөрүшүн көрүшүңүз керек. Эгер андай болбосо же Симуляцияны баштоо баскычын басканыңызда каталар чыкса, кылдаттык менен артка кайтыңыз жана бардык кодуңузду текшериңиз.

  • Сизге сунуштала турган кызыл мүчүлүштүктөрдү оңдоо терезесинде көрсөтүлгөн саптарга көңүл буруңуз.
  • Эгерде сиздин код туура болсо жана симуляция дагы эле иштебесе, зымдарды текшериңиз.
  • Баракты кайра жүктөңүз - сизде тиешеси жок система/сервер катасы болушу мүмкүн.
  • Компьютерден муштумуңузду чайкап, кайра текшериңиз. Муну бардык программисттер жасашат. Баары.. Убакыт.

7 -кадам: Температура сенсорун иштетүү

Температура сенсорун иштетүү
Температура сенсорун иштетүү

Мен сизди азыр туура жолдо деп ойлоп жатам. Баргыла жана сүрөттө көрсөтүлгөндөй температура сенсорун зымга байлаңыз. 5V жана GND зымдарын жарык үчүн бирдей мейкиндикте жайгаштырууга көңүл буруңуз. Бул макул. Бул параллель схемага окшош жана симулятордо көйгөйлөрдү жаратпайт. Чыныгы схемада, кубаттуулукту жакшыраак башкарууну жана байланыштарды камсыз кылуу үчүн үзүлүш тактасын же калканчты колдонушуңуз керек.

Эми кодду жаңырталы.

Температура сенсорунун коду

Бул бир аз татаалыраак, бирок окууну которуу үчүн математиканы кылышыбыз керек болгону үчүн. Бул өтө жаман эмес.

int lightSensor = A0;

int tempSensor = A1; void setup () {// PinMode (lightSensor, INPUT) пин режимдерин коюу; // Сериялык китепкананы кошуу Serial.begin (9600); } void loop () {// Температура сенсору // Бир сапта эки өзгөрмөнү түзүү - о эффективдүүлүк! // Float var ондук калкыма чыңалуусун сактоо үчүн, градусC; // Пиндин маанисин окуп, аны 0 - 5ке чейин окууга айландырыңыз // Негизги чыңалуу = (5/1023 = 0.004882814); чыңалуу = (analogRead (tempSensor) * 0.004882814); // Даражаларга айландыруу C градусC = (чыңалуу - 0,5) * 100; // Сериялык мониторго басып чыгаруу Serial.print ("Temp:"); Serial.print (градус C); Serial.println ("oC"); // сенсор int окуу = analogRead (lightSensor) окуу; // Мониторго маанини басып чыгаруу Serial.print ("Жарык:"); Serial.println (окуу); // кийинки циклди 3 секунд кечиктирүү (3000); }

Мен кодго бир аз жаңыртууларды киргиздим. Келгиле, аларды жекече карап көрөлү.

Биринчиден, мен линияны коштум

int tempSensor = A1;

LightSensor сыяктуу эле, кийинчерээк жеңилдетүү үчүн маанини өзгөрмөлүү түрдө сактоо керек. Эгерде мен бул сенсордун ордун өзгөртүүгө туура келсе (тактанын кайра туташуусу сыяктуу), анда мен A0 же A1ди өзгөртүү үчүн бүт код базасын издебей, коддун бир сабын гана алмаштырышым керек.

Андан кийин, биз окуу жана темпти калкып жүрүү үчүн сапты коштук. Бир сапта эки өзгөрмөгө көңүл буруңуз.

калкыма чыңалуу, градус C;

Бул чынында эле пайдалуу, анткени ал жазышым керек болгон саптардын санын кыскартат жана кодду тездетет. Каталарды табуу кыйыныраак болушу мүмкүн.

Эми биз окуп, аны сактайбыз, анан аны өндүрүш маанисине айландырабыз.

чыңалуу = (analogRead (tempSensor) * 0.004882814);

градусC = (чыңалуу - 0,5) * 100;

Бул эки сап татаал көрүнөт, бирок биринчисинде биз окууну кабыл алып, 0,004кө көбөйтүп жатабыз … анткени ал 1023 (аналогдук окуу бул маанини кайтарат) 5тен окууга айландырат.

Ал жердеги экинчи сап ондук чекитти жылдыруу үчүн бул окууну 100гө көбөйтөт. Бул бизге температураны берет. Тыкан!

8 -кадам: Тестирлөө жана текшерүү

Тестирлөө жана текшерүү
Тестирлөө жана текшерүү

Баары пландаштырылууда, сизде жумушчу схема болушу керек. Симуляцияны иштетүү жана сериялык мониторду колдонуу менен тестирлөө. Эгер каталарыңыз болсо, текшериңиз, кайра текшериңиз жана муштумуңузду чайкаңыз.

Сиз жетиштиңизби? Бөлүшүп, окуяңызды айтып бериңиз!

Бул сиз үчүн камтылган акыркы схема, андыктан сиз акыркы жаратууну ойной/сынай аласыз. Окутууну бүтүргөнүңүз үчүн рахмат!

Сунушталууда: