Агуулгын хүснэгт:

Arduino Datalogger: 8 алхам (зурагтай)
Arduino Datalogger: 8 алхам (зурагтай)

Видео: Arduino Datalogger: 8 алхам (зурагтай)

Видео: Arduino Datalogger: 8 алхам (зурагтай)
Видео: Видеоуроки по Arduino. SD-карты и регистрация данных (11-я серия) 2024, Долдугаар сарын
Anonim
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger
Arduino Datalogger

Энэхүү гарын авлагад бид Arduino ашиглан энгийн өгөгдөл бүртгэгч хийх болно. Мэдээлэл авах, терминал дээр хэвлэхийн тулд Arduino програмыг ашиглах үндсийг сурах нь чухал юм. Бид энэхүү үндсэн тохиргоог ашиглан олон ажлыг хийж болно.

Эхлэхийн тулд:

Танд Tinkercad (www.tinkercad.com) данс хэрэгтэй болно. И -мэйл эсвэл олон нийтийн мэдээллийн хэрэгслээр бүртгүүлж бүртгүүлнэ үү.

Нэвтрэх нь таныг Tinkercad хяналтын самбарт оруулна. Зүүн талд байгаа "Circuits" дээр дараад "Шинэ хэлхээ үүсгэх" -ийг сонгоно уу. Эхэлцгээе!

Та бүрэн файлыг TInkercad Circuits дээрээс олж болно - Үүнийг шалгасанд баярлалаа!

Алхам 1: Зарим бүрэлдэхүүн хэсгүүдийг нэмнэ үү

Зарим бүрэлдэхүүн хэсгүүдийг нэмнэ үү
Зарим бүрэлдэхүүн хэсгүүдийг нэмнэ үү
Зарим бүрэлдэхүүн хэсгүүдийг нэмнэ үү
Зарим бүрэлдэхүүн хэсгүүдийг нэмнэ үү
Зарим бүрэлдэхүүн хэсгүүдийг нэмнэ үү
Зарим бүрэлдэхүүн хэсгүүдийг нэмнэ үү

Танд зарим үндсэн бүрэлдэхүүн хэсгүүд хэрэгтэй болно. Үүнд:

  • Arduino самбар
  • Талхны самбар

Тэдгээрийг хайж олоод дунд хэсэг рүү чирж оруулна уу.

Талхны хавтанг 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 дээрх товчлуураар нээнэ үү. Blocks унах жагсаалтыг Текст болгон өөрчилнө үү. Гарч ирэх анхааруулах хайрцгийг зөвшөөрч байна. Одоо энэ алхам дахь гурав дахь зурган дээрх текстээс бусад бүх зүйлийг устга.

Хувьсагч

Эхлэхийн тулд бид зарим хувьсагчийг хуваарилах хэрэгтэй бөгөөд ингэснээр кодоо үнэхээр үр ашигтай болгодог.

Хувьсагчууд нь зөвхөн нэг объектыг багтаасан хувинтай адилхан байдаг (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 унших = analogRead (lightSensor); }

Бид уншилтыг хувьсагч хэлбэрээр хадгалсныг харах болно. Үүнийг хэвлэх шаардлагатай байгаа тул энэ нь чухал юм. Үүнийг цуваа дэлгэц дээр хэвлэхийн тулд Цуваа номын санг ашиглана уу (номын сан нь үүнийг бичихэд хялбар болгохын тулд кодондоо нэмж оруулах код юм).

int lightSensor = A0;

void setup () {// Пин горимыг тохируулах pinMode (lightSensor, INPUT); // Serial.begin (9600) цуваа номын санг нэмэх; } void loop () {// мэдрэгчийг уншина уу int унших = analogRead (lightSensor); // утгыг монитор дээр хэвлэх Serial.print ("Гэрэл:"); Serial.println (унших); // дараагийн давталтыг 3 секундын хугацаагаар хойшлуулах (3000); }

Хэд хэдэн шинэ зүйл! Нэгдүгээрт, та эдгээрийг харах болно:

// Энэ бол сэтгэгдэл

Манай код юу хийж байгааг бусад хүмүүст тайлбарлахын тулд ашигладаг. Та эдгээрийг байнга ашиглах ёстой. Хөрвүүлэгч эдгээрийг уншаад код болгон хөрвүүлэхгүй.

Одоо бид цуваа номын санг шугамаар нэмсэн

Цуваа. Эхлэх (9600)

Энэ бол аргумент авдаг функцын жишээ юм. Та номын сангаа Serial гэж нэрлээд дараа нь функцийг ажиллууллаа (энэ нь дугуй хаалтуудаас үүдэлтэй гэдгийг бид мэднэ), бүхэл тоог аргумент болгон өгч, Serial функцийг 9600baud дээр ажиллахаар тохируулсан. Яагаад гэж санаа зовох хэрэггүй - энэ нь яг одоо ажилладаг гэдгийг мэдэж аваарай.

Бидний хийсэн дараагийн зүйл бол цуваа дэлгэц дээр хэвлэх явдал байв. Бид хоёр функцийг ашигласан:

// Энэ нь цувралд мөр тасалдалгүй хэвлэгддэг (төгсгөлд нь оруулах)

Serial.print ("Гэрэл:"); // Энэ нь мөр тасалдаг тул бид унших, бичих бүрт шинэ мөрөнд явдаг Serial.println (унших);

Анхаарах зүйл бол тус бүр өөрийн гэсэн зорилготой байдаг. Таны мөрүүд давхар хашилтын тэмдэг хэрэглэж, бүдүүн гэдэсний дараа хоосон зай үлдээж байгаа эсэхийг шалгаарай. Энэ нь хэрэглэгчийг уншихад хялбар болгодог.

Эцэст нь бид хоцролтын функцийг ашиглан давталтаа удаашруулж, гурван секунд тутамд нэг удаа уншуулдаг. Үүнийг хэдэн мянган секундын дотор бичсэн болно. Үүнийг 5 секунд тутамд ганцхан удаа уншихаар өөрчил.

Агуу их! Бид явж байна!

Алхам 6: Симуляци

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

Симуляцийг ажиллуулснаар бүх зүйл үргэлж ажиллаж байгааг шалгаарай. Энэ хэлхээний хувьд симуляторыг ажиллуулж, үнэ цэнээ шалгахын тулд нээх шаардлагатай болно.

Симуляцийг эхлүүлж, цуваа дэлгэцийг шалгана уу. Гэрлийн мэдрэгчийн утгыг дарж, гулсагчийг ашиглан утгыг өөрчилнө үү. Цуваа дэлгэц дээрх утгын өөрчлөлтийг та бас харах ёстой. Хэрэв тийм биш бол, эсвэл Симуляцийг эхлүүлэх товчлуур дээр дарахад алдаа гардаг бол буцаж очоод бүх кодоо шалгаарай.

  • Танд танилцуулах улаан дибаг хийх цонхонд заасан мөрөнд анхаарлаа хандуулаарай.
  • Хэрэв таны код зөв бөгөөд симуляци ажиллахгүй хэвээр байвал утсаа шалгана уу.
  • Хуудсыг дахин ачаална уу - танд холбоогүй систем/серверийн алдаа гарсан байж магадгүй.
  • Компьютер руу нударгаа сэгсрээд дахин шалга. Бүх програмистууд үүнийг хийдэг. Бүгд. The. Цаг.

Алхам 7: Температур мэдрэгчийг холбоно уу

Температур мэдрэгчийг утсаар холбоно уу
Температур мэдрэгчийг утсаар холбоно уу

Та одоо зөв замаар явж байна гэж би таамаглаж байна. Зураг дээр үзүүлсэн шиг температур мэдрэгчийг холбоно уу. 5V ба GND утаснуудыг гэрэлтэй ижил зайнд байрлуулахыг анхаарна уу. Энэ зүгээр. Энэ нь зэрэгцээ хэлхээтэй адил бөгөөд симулятор дээр асуудал үүсгэхгүй. Бодит хэлхээний хувьд та илүү сайн эрчим хүчний менежмент, холболтыг хангахын тулд таслах самбар эсвэл бамбай ашиглах ёстой.

Одоо кодыг шинэчилье.

Температур мэдрэгчийн код

Энэ нь арай илүү төвөгтэй боловч уншиж буй зүйлийг хөрвүүлэхийн тулд бид математик хийх ёстой учраас л болно. Энэ нь тийм ч муу биш юм.

int lightSensor = A0;

int tempSensor = A1; void setup () {// Пин горимыг тохируулах pinMode (lightSensor, INPUT); // Serial.begin (9600) цуваа номын санг нэмэх; } void loop () {// Температур мэдрэгч // Нэг мөрөнд хоёр хувьсагч үүсгэх - үр ашиг! // Аравтын хөвөх хүчдэл, градусыг хадгалахын тулд Float var; // Пиний утгыг уншаад 0 - 5 хүртэлх утга руу хөрвүүлнэ // Үндсэндээ хүчдэл = (5/1023 = 0.004882814); хүчдэл = (analogRead (tempSensor) * 0.004882814); // C градус болгон хөрвүүлэх C = (хүчдэл - 0.5) * 100; // Serial.print цуврал монитор дээр хэвлэх ("Temp:"); Цуврал хэвлэх (градус 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: Туршилт, шалгалт

Туршилт ба шалгалт
Туршилт ба шалгалт

Төлөвлөх гэж байгаа бүх зүйл, та ажлын хэлхээтэй байх ёстой. Симуляцийг ажиллуулж, цуваа монитор ашиглан туршиж үзээрэй. Хэрэв танд алдаа байгаа бол шалгаад дахин шалгаад нударгаа сэгсэрнэ үү.

Та амжсан уу? Түүхээ хуваалцаж, бидэнд хэлээрэй!

Энэ бол танд зориулагдсан эцсийн хэлхээ бөгөөд та эцсийн бүтээлийг тоглуулах/турших боломжтой. Хичээлийг дуусгасанд баярлалаа!

Зөвлөмж болгож буй: