Съдържание:
- Стъпка 1: Добавете някои компоненти
- Стъпка 2: Бележка относно дъските
- Стъпка 3: Добавете два сензора
- Стъпка 4: Фоточувствителен сензор
- Стъпка 5: Стартирайте кода
- Стъпка 6: Симулация
- Стъпка 7: Свържете сензора за температура
- Стъпка 8: Тестване и проверка
Видео: Arduino Datalogger: 8 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:52
В този урок ще направим прост регистратор на данни, използвайки Arduino. Въпросът е да научите самите основи на използването на Arduino за улавяне на информация и отпечатване до терминала. Можем да използваме тази основна настройка, за да изпълним редица задачи.
За да започнете:
Ще ви е необходим акаунт в Tinkercad (www.tinkercad.com). Насочете се и се регистрирайте с вашия имейл или акаунт в социалните медии.
Влизането ви отвежда до таблото за управление на Tinkercad. Кликнете върху „Вериги“вляво и изберете „Създаване на нова верига“. Да започваме!
Можете да намерите пълния файл на TInkercad Circuits - Благодаря, че го проверихте!
Стъпка 1: Добавете някои компоненти
Ще ви трябват някои основни компоненти. Те включват:
- Дъска Arduino
- Платка
Добавете ги, като ги потърсите и щракнете с плъзгане в средната област.
Поставете дъската върху Arduino. Това улеснява прегледа на връзките по -късно.
Стъпка 2: Бележка относно дъските
Планът е супер полезно устройство за бързо прототипиране. Използваме го за свързване на компоненти. Някои неща, които трябва да се отбележат.
- Точките са свързани вертикално, но линията в средата разделя тази връзка от горната и долната колони.
- Колоните не са свързани отляво надясно, както в целия ред. Това означава, че всички компоненти трябва да бъдат свързани през колоните, а не надолу по тях вертикално.
- Ако трябва да използвате бутони или превключватели, свържете ги през прекъсването в средата. Ще посетим това в по -късен урок.
Стъпка 3: Добавете два сензора
Двата сензора, които използваме, са фоточувствителен сензор и температурен сензор.
Тези сензори оценяват светлината и температурата. Използваме Arduino, за да прочетем стойността и да я покажем в серийния монитор на Arduino.
Потърсете и добавете двата сензора. Уверете се, че са разположени през колоните на макета. Поставете достатъчно пространство между тях, за да ги видите по -лесно.
Стъпка 4: Фоточувствителен сензор
- За фоточувствителния сензор добавете проводник от 5V щифта на Arduino към същата колона като десния крак на частта в макета. Променете цвета на проводника на червен.
- Свържете левия крак чрез щифта в същата колона към щифта A0 (A-нула) на Arduino. Това е аналоговият щифт, който ще използваме за отчитане на стойността от сензора. Оцветете този проводник в жълто или в нещо различно от червено или черно.
-
Поставете резистор (търсене и щракване с плъзгане) на дъската. Това завършва веригата и защитава сензора и щифта.
- Завъртете го така, че да минава през колоните.
- Свържете единия крак към колоната на десния крак на дъската
-
Поставете проводник от другия край на резистора към земята
Променете цвета на проводника на черен
- Проверете отново всички връзки. Ако нещо не е на правилното място, това няма да функционира правилно.
Стъпка 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: Тестване и проверка
Всички неща, които ще се планират, трябва да имате работеща верига. Тествайте, като стартирате симулацията и използвате серийния монитор. Ако имате грешки, проверете, проверете отново и разклатете юмрук.
Направи ли го? Споделете и ни разкажете своята история!
Това е последната схема, вградена за вас, така че можете да играете/тествате окончателното творение. Благодаря, че завършихте урока!
Препоръчано:
LED светлина (и) със захранване от батерията със слънчево зареждане: 11 стъпки (със снимки)
LED светлини (и), захранвани от батерии, със слънчево зареждане: Жена ми учи хората как да правят сапун, повечето от часовете й бяха вечер и тук през зимата се стъмва около 16:30 ч. Някои от нейните ученици имаха проблеми с намирането на нашите къща. Имахме табела отпред, но дори и с улично осветление
Лек хак за стая със зрителни увреждания със слухови увреждания: 7 стъпки (със снимки)
Лек хак на стаята със слухови увреждания на вратата: Проблем: баща ми е регистриран като глух, а майка ми е с увреден слух и поради това често им е трудно да чуят звънеца на вратата. Това би могло да бъде проблем, претърпян и от много други.Купиха мигащ светлинен звънец на вратата, за да им помогнат с
Alaska Datalogger: 5 стъпки (със снимки)
Alaska Datalogger: Аляска е на ръба на напредващите промени в климата. Уникалната му позиция, че има доста недокоснат пейзаж, населен с различни канари от въглищни мини, дава възможност за много изследователски възможности. Нашият приятел Монти е археолог, който помага на
Raspberry Pi Zero W Datalogger: 8 стъпки (със снимки)
Raspberry Pi Zero W Datalogger: Използвайки Raspberry Pi Zero W, можете да направите евтин и лесен за използване регистратор на данни, който може да бъде или свързан към локална wifi мрежа, или да служи като точка за достъп в полето, което ви позволява да изтегляте данни безжично с вашия смартфон. Представям
Персонализиран часовник със стрелки за снимки: 5 стъпки (със снимки)
Персонализиран часовник със стрелки за снимки: Някои хора наблюдават часовника. Сега всеки може да бъде часовник. Други проекти персонализират лицето на часовника. Този персонализира стрелките на часовника. Изглежда скъп, но е по -малко от 5 долара и около 30 минути на часовник. Перфектен за Chr