Съдържание:

Arduino Datalogger: 8 стъпки (със снимки)
Arduino Datalogger: 8 стъпки (със снимки)

Видео: Arduino Datalogger: 8 стъпки (със снимки)

Видео: Arduino Datalogger: 8 стъпки (със снимки)
Видео: Programming an Arduino from Raspberry Pi 2024, Ноември
Anonim
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger

В този урок ще направим прост регистратор на данни, използвайки Arduino. Въпросът е да научите самите основи на използването на Arduino за улавяне на информация и отпечатване до терминала. Можем да използваме тази основна настройка, за да изпълним редица задачи.

За да започнете:

Ще ви е необходим акаунт в Tinkercad (www.tinkercad.com). Насочете се и се регистрирайте с вашия имейл или акаунт в социалните медии.

Влизането ви отвежда до таблото за управление на Tinkercad. Кликнете върху „Вериги“вляво и изберете „Създаване на нова верига“. Да започваме!

Можете да намерите пълния файл на TInkercad Circuits - Благодаря, че го проверихте!

Стъпка 1: Добавете някои компоненти

Добавете някои компоненти
Добавете някои компоненти
Добавете някои компоненти
Добавете някои компоненти
Добавете някои компоненти
Добавете някои компоненти

Ще ви трябват някои основни компоненти. Те включват:

  • Дъска Arduino
  • Платка

Добавете ги, като ги потърсите и щракнете с плъзгане в средната област.

Поставете дъската върху Arduino. Това улеснява прегледа на връзките по -късно.

Стъпка 2: Бележка относно дъските

Забележка относно дъските
Забележка относно дъските

Планът е супер полезно устройство за бързо прототипиране. Използваме го за свързване на компоненти. Някои неща, които трябва да се отбележат.

  1. Точките са свързани вертикално, но линията в средата разделя тази връзка от горната и долната колони.
  2. Колоните не са свързани отляво надясно, както в целия ред. Това означава, че всички компоненти трябва да бъдат свързани през колоните, а не надолу по тях вертикално.
  3. Ако трябва да използвате бутони или превключватели, свържете ги през прекъсването в средата. Ще посетим това в по -късен урок.

Стъпка 3: Добавете два сензора

Добавете два сензора
Добавете два сензора

Двата сензора, които използваме, са фоточувствителен сензор и температурен сензор.

Тези сензори оценяват светлината и температурата. Използваме Arduino, за да прочетем стойността и да я покажем в серийния монитор на Arduino.

Потърсете и добавете двата сензора. Уверете се, че са разположени през колоните на макета. Поставете достатъчно пространство между тях, за да ги видите по -лесно.

Стъпка 4: Фоточувствителен сензор

Фоточувствителен сензор
Фоточувствителен сензор
Фоточувствителен сензор
Фоточувствителен сензор
Фоточувствителен сензор
Фоточувствителен сензор
Фоточувствителен сензор
Фоточувствителен сензор
  1. За фоточувствителния сензор добавете проводник от 5V щифта на Arduino към същата колона като десния крак на частта в макета. Променете цвета на проводника на червен.
  2. Свържете левия крак чрез щифта в същата колона към щифта A0 (A-нула) на Arduino. Това е аналоговият щифт, който ще използваме за отчитане на стойността от сензора. Оцветете този проводник в жълто или в нещо различно от червено или черно.
  3. Поставете резистор (търсене и щракване с плъзгане) на дъската. Това завършва веригата и защитава сензора и щифта.

    • Завъртете го така, че да минава през колоните.
    • Свържете единия крак към колоната на десния крак на дъската
    • Поставете проводник от другия край на резистора към земята

      Променете цвета на проводника на черен

  4. Проверете отново всички връзки. Ако нещо не е на правилното място, това няма да функционира правилно.

Стъпка 5: Стартирайте кода

Стартирайте кода
Стартирайте кода
Стартирайте кода
Стартирайте кода
Стартирайте кода
Стартирайте кода

Нека разгледаме кода за този компонент.

Първо, погледнете третото изображение в тази стъпка. Той съдържа код с две функции:

void setup ()

void loop ()

В C ++ всички функции предоставят своя връщащ тип, след това името, след това двете кръгли скоби, които могат да се използват за предаване на аргументи, обикновено като променливи. В този случай типът на връщане е невалиден или нищо. Името е настроено и функцията не приема аргументи.

Функцията за настройка се изпълнява веднъж при стартиране на Arduino (когато го включите или включите батерии).

Функцията цикъл работи в постоянен цикъл от милисекундата, която настройката завършва.

Всичко, което поставите във функцията цикъл, ще работи, когато Arduino работи. Всичко извън това ще работи само при повикване. Като ако определим и извикаме друга функция извън цикъла.

Задача

Отворете кодовия панел с бутона в Tinkercad. Променете падащото меню Блокове на Текст. Съгласете се с изскачащото поле за предупреждение. Сега изтрийте всичко, което виждате, освен текста в третото изображение в тази стъпка.

Променливи

За да започнем, трябва да присвоим някои променливи, за да направим нашия код наистина ефективен.

Променливите са като кофи, които могат да съдържат само един обект (C ++ е това, което наричаме обектно-ориентирано). Да, имаме масиви, но това са специални променливи и ще говорим за тях по -късно. Когато присвояваме променлива, трябва да й кажем какъв тип е, след което да й дадем стойност. Изглежда така:

int someVar = A0;

И така, ние зададохме променлива и й дадохме тип int. Int е цяло число или цяло число.

„Но ти не си използвал цяло число!“, Чувам те да казваш. Вярно е.

Arduino прави нещо специално за нас, така че можем да използваме A0 като цяло число, защото в друг файл дефинира A0 като цяло число, така че можем да използваме константата A0, за да се позоваваме на това цяло число, без да се налага да знаем какво е то. Ако просто въведохме 0, щяхме да се обърнем към цифровия щифт в позиция 0, което няма да работи.

Така че, за нашия код ще напишем променлива за сензора, който сме прикачили. Въпреки че препоръчвам да му дадете просто име, това зависи от вас.

Вашият код трябва да изглежда така:

int lightSensor = A0;

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

Сега, нека да кажем на Arduino как да борави със сензора на този щифт. Ще стартираме функция в рамките на настройката, за да зададем режим на закрепване и да кажем на Arduino къде да го търси.

int lightSensor = A0;

void setup () {pinMode (lightSensor, INPUT); } void loop () {}

функцията pinMode казва на Arduino, че щифтът (A0) ще се използва като щифт INPUT. Обърнете внимание на camelCaseUsed (вижте всяка първа буква е главна, тъй като в нея има гърбици, следователно … камила …!) За променливите и имената на функциите. Това е конвенция и е добре да се свиква.

И накрая, нека използваме функцията analogRead, за да получим някои данни.

int lightSensor = A0;

void setup () {pinMode (lightSensor, INPUT); } void loop () {int read = analogRead (lightSensor); }

Ще видите, че сме запазили показанията в променлива. Това е важно, тъй като трябва да го отпечатаме. Нека използваме серийната библиотека (библиотека е код, който можем да добавим към нашия код, за да направим нещата по -бързи за нас, за да напишем, просто като я извикаме по дефиницията си), за да отпечатаме това на серийния монитор.

int lightSensor = A0;

void setup () {// Задаване на pin режими pinMode (lightSensor, INPUT); // Добавяне на серийната библиотека Serial.begin (9600); } void loop () {// Прочетете сензора int read = analogRead (lightSensor); // Отпечатайте стойността на монитора Serial.print ("Light:"); Serial.println (четене); // забавяне на следващия цикъл с 3 секунди закъснение (3000); }

Няколко нови неща! Първо ще видите тези:

// Това е коментар

Използваме коментари, за да кажем на други хора какво прави нашият код. Трябва да ги използвате често. Компилаторът няма да ги прочете и да ги преобразува в код.

Сега добавихме и серийната библиотека с реда

Serial.begin (9600)

Това е пример за функция, която приема аргумент. Извикахте библиотеката Serial, след това стартирахте функция (знаем, че е функция поради кръглите скоби) и предадохте цяло число като аргумент, като зададете серийната функция да работи на 9600baud. Не се притеснявайте защо - просто знайте, че работи, засега.

Следващото нещо, което направихме, беше да отпечатаме на серийния монитор. Използвахме две функции:

// Това отпечатва в сериала без прекъсване на ред (въвеждане в края)

Serial.print ("Светлина:"); // Това поставя прекъсването на реда, така че всеки път, когато четем и пишем, той преминава на нов ред Serial.println (четене);

Важното е да се види, че всеки има отделна цел. Уверете се, че вашите низове използват двойни кавички и че напускате интервала след двоеточието. Това помага на читателя за четене.

И накрая, използвахме функцията за забавяне, за да забавим цикъла си и да го накараме да се чете само веднъж на всеки три секунди. Това е написано в хиляди секунди. Променете го да се чете само веднъж на всеки 5 секунди.

Страхотен! Тръгваме!

Стъпка 6: Симулация

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

Винаги проверявайте дали нещата работят, като стартирате симулацията. За тази верига също ще трябва да отворите симулатора, за да проверите дали работи и да проверите стойностите си.

Стартирайте симулацията и проверете серийния монитор. Променете стойността на сензора за светлина, като щракнете върху него и промените стойността с помощта на плъзгача. Трябва да видите промяната на стойността и в серийния монитор. Ако това не стане или ако при натискане на бутона Стартиране на симулация получите грешки, внимателно се върнете и проверете целия си код.

  • Съсредоточете се върху линиите, посочени в червения прозорец за отстраняване на грешки, които ще ви бъдат представени.
  • Ако вашият код е правилен и симулацията все още не работи, проверете кабелите си.
  • Презаредете страницата - може да имате несвързана грешка в системата/сървъра.
  • Разклатете с юмрук компютъра и проверете отново. Всички програмисти правят това. Всичко. The. Време.

Стъпка 7: Свържете сензора за температура

Свържете сензора за температура
Свържете сензора за температура

Предполагам, че сега сте на прав път. Продължете и свържете температурния сензор, както показва картината. Обърнете внимание на поставянето на проводниците 5V и GND в същото пространство като тези за светлината. Това е ок. Това е като паралелна верига и няма да причини проблеми в симулатора. В действителна верига трябва да използвате пробивна платка или щит, за да осигурите по -добро управление на захранването и връзки.

Сега нека актуализираме кода.

Код на сензора за температура

Това е малко по -сложно, но само защото трябва да направим малко математика, за да преобразуваме показанията. Не е чак толкова лошо.

int lightSensor = A0;

int tempSensor = A1; void setup () {// Задаване на pin режими 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 read = analogRead (lightSensor); // Отпечатайте стойността на монитора Serial.print ("Light:"); 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: Тестване и проверка

Тестване и проверка
Тестване и проверка

Всички неща, които ще се планират, трябва да имате работеща верига. Тествайте, като стартирате симулацията и използвате серийния монитор. Ако имате грешки, проверете, проверете отново и разклатете юмрук.

Направи ли го? Споделете и ни разкажете своята история!

Това е последната схема, вградена за вас, така че можете да играете/тествате окончателното творение. Благодаря, че завършихте урока!

Препоръчано: