Mundarija:

Sun'iy o'simlik hissiyotlari ekspressori (A.P.E.X.): 7 qadam (rasmlar bilan)
Sun'iy o'simlik hissiyotlari ekspressori (A.P.E.X.): 7 qadam (rasmlar bilan)

Video: Sun'iy o'simlik hissiyotlari ekspressori (A.P.E.X.): 7 qadam (rasmlar bilan)

Video: Sun'iy o'simlik hissiyotlari ekspressori (A.P.E.X.): 7 qadam (rasmlar bilan)
Video: #253 AYOLLARNI KAYF QILDIRISHNING 5 TA OLTIN QOIDASI 2024, Noyabr
Anonim
Image
Image

Lekin kuting … Yana ko'p narsalar bor!

1 -qadam: kirish

Kirish
Kirish
Kirish
Kirish
Kirish
Kirish

APEX nima?

APEX - bu o'simliklarni kuzatib boradigan aqlli (yoqimsiz) qurilma. Faqat uni har qanday o'simlikka ulang va u o'simlikning "baxt" darajasini ko'rsatadi! Agar sizda sug'orishni unutish yomon odati bo'lsa, bu sizning o'simliklarni sug'orish uchun ajoyib eslatma.

Bu qanday ishlaydi?

Sehr. Hazillashayapman! APEX namlik sensori bilan biriktirilgan Arduino -dan foydalanadi, u o'simlikning tuproqiga kiradi. Bu sensor tuproq namligini o'qiydi, keyin Arduino qaysi yuzni ko'rsatish kerakligini hisoblab chiqadi.

Lekin nega?

Nega yo'q?

2 -qadam: ehtiyot qismlar va asboblarni yig'ish

Ehtiyot qismlar va asboblarni yig'ish
Ehtiyot qismlar va asboblarni yig'ish
Ehtiyot qismlar va asboblarni yig'ish
Ehtiyot qismlar va asboblarni yig'ish
Ehtiyot qismlar va asboblarni yig'ish
Ehtiyot qismlar va asboblarni yig'ish

Keling, unga kiraylik! Ushbu ko'rsatma uchun sizga juda ko'p qismlar va asboblar kerak bo'ladi. Yaxshiyamki, ularning barchasi quyida keltirilgan:

Mikrokontrollerlar tanlovi ruhida ushbu loyiha butunlay Amazonda sotib olingan qismlar tomonidan tayyorlangan! (homiy emas)

Qismlar ro'yxati:

  • Arduino Uno
  • 8x8 LED displey
  • Sensorli sig'im sensori
  • Namlik sensori
  • 9V batareya ulagichi
  • 9V batareya

Asboblar ro'yxati:

  • 22 o'lchash simlari
  • Elektr tasmasi
  • Tel -striptizchilar
  • Lehimlash temir
  • Chiqib ketadigan nasos

Barcha kerakli uskunalarni yig'ib olgach, Arduino dasturini o'rnatish vaqti keldi!

3 -qadam: Arduino IDE -ni o'rnatish

Arduino IDE -ni o'rnatish
Arduino IDE -ni o'rnatish
Arduino IDE -ni o'rnatish
Arduino IDE -ni o'rnatish
Arduino IDE -ni o'rnatish
Arduino IDE -ni o'rnatish

Ushbu loyiha ishlashi uchun biz Arduinoni dasturlashimiz kerak bo'ladi. Buning uchun kompyuteringizga Arduino Integrated Development Environment (IDE) ni yuklab olish va o'rnatish talab qilinadi. Bu juda oddiy tushuntirish, lekin men sizga bu jarayonni ko'rsataman:

1. Arduino veb -saytiga tashrif buyuring

2. Yuklamalar sahifasiga o'ting (dasturiy ta'minot> yuklamalar).

3. Operatsion tizimingiz uchun Yuklab olish havolasini bosing

Yon eslatma: Dastur Windows, Mac va Linuxda ishlaydi.

4. Windows -ga o'rnatish

  • Yuklab olingan faylni ishga tushirish uchun uni ikki marta bosing
  • Litsenziyaga rozi bo'lish uchun "Qabul qilaman" tugmasini bosing
  • Qolgan ko'rsatmalarga amal qiling
  • Endi dastur o'rnatilishi kerak!

(Agar siz adashib qolsangiz, ekran tasvirlariga qarang.)

5. Mac -ga o'rnatish

  • Yuklab olingan faylni bosing
  • "Ochish" -ni tanlang
  • Dastur avtomatik ravishda o'rnatiladi va ishlaydi!

(Agar siz adashib qolsangiz, ekran tasvirlarini tekshirganingizga ishonch hosil qiling)

6. Mana shu

Va siz tugatdingiz! Endi siz Arduino IDE -ni tizimingizga yukladingiz!

4 -qadam: Kod

Kodeks
Kodeks
Kodeks
Kodeks
Kodeks
Kodeks

Bu qadam kod haqida. Bu juda qisqa dastur, shuning uchun men uni siz bilan birga ko'rib chiqaman va u qanday ishlashini tushuntirib beraman. Birinchidan, qisqacha sharh, keyin chuqur tushuntirish va nihoyat, uni Arduino-ga qanday surish mumkin!

Qisqacha ma'lumot

Kodni batafsil tushuntirishga qiziqmaganlar uchun men TL; DR segmentini taqdim etaman! Mana asosiy tushuntirish. Arduino har bir soniyada namlik sensori qiymatlarini oladi. Bu ma'lumot ma'lum bir yuzni hisoblash va ko'rsatish uchun ishlatiladi! Oxirida bir nechta kod ham bor, u sig'imli sensorli tugmani displeyni yoqish va o'chirishga imkon beradi. Juda oddiy, to'g'rimi?

Nitty Gritty

O'quv qo'llanmaning bu qismi butun dastur qanday ishlashini juda qiziqqanlarga mo'ljallangan. Men nima haqida gapirayotganimni tushunishga yordam berish uchun yuqoridagi skrinshotlarni beraman, shuningdek, ushbu tavsifga ba'zi kod qatorlarini qo'shaman.

Ushbu dastur beshta bo'limga bo'lingan:

  1. Shu jumladan kutubxonalar va o'zgarmaydiganlarni yaratish
  2. O'rnatish funktsiyasi
  3. Yuz ifodalari uchun funktsiyalar
  4. Matn funktsiyasi bo'yicha Arduino yozish
  5. Loop funktsiyasi

Kutubxonalar va o'zgarmaydiganlarni yaratish, shu jumladan:

Ushbu kodning birinchi bo'limi biz foydalanadigan o'zgaruvchilar va kutubxonalar haqida.

#"LedControlMS.h" ni qo'shing

#define TouchSensor 7 LedControl lc = LedControl (12, 11, 10, 1); int sensorPin = A5; int sensorValue = 0; bool boshlandi = noto'g'ri; bool on = rost; boolean bosildi = LOW;

Birinchi qatorga LedControlMS nomli kutubxona kiradi. Bu kutubxona LED displeyga qiymatlarni yuborish imkoniyatiga ega bo'lishi uchun talab qilinadi. Keyingi satr - bu sensorli sensorning pinini 7 ga o'rnatadigan ta'rif. Shundan so'ng bizda LED displeyi, namlik sensori va uning qiymatini belgilaydigan yana uchta o'zgaruvchi bor. Oxirgi uchta qator sensorli tugma va displey holatini tartibga soluvchi barcha boolean. Shundan so'ng bizda bayt qiymatlari bo'ladi:

bayt tabassum [4] = {B00000100, B00110010, B01100100, B01100000}; bayt ajablanib [4] = {B00001110, B00001010, B01101110, B10010000}; bayt meh [4] = {B00000100, B00100100, B00100100, B00100000}; bayt sad [4] = {B00000010, B01100100, B00110010, B00110000}; bayt o'lik [6] = {B00001010, B00100100, B00101010, B00100000, B01100000, B01101010}; bayt xatosi [8] = {B00111100, B01000010, B10100001, B10010001, B10001001, B10000101, B01000010, B00111100}; // Yomon yuzlar bayt esmile [4] = {B00000010, B00101010, B01000100, B01000000}; bayt elaugh [4] = {B00000010, B00101010, B01100100, B01100000}; bayt eplen [4] = {B00000010, B00101010, B00100100, B00100000}; baytli ko'zoynak [4] = {B00000001, B01101001, B01100010, B01100000}; bayt etalk [4] = {B00000001, B00101001, B01100010, B01100000};

Bu qiymatlar APEXning barcha yuzlarini ifodalaydi. Har bir bayt - bu har bir pikselning holatini belgilaydigan qator bitlarni o'z ichiga olgan qator. "1" va "0" mos ravishda yoqish/o'chirishni bildiradi.

O'rnatish funktsiyasi:

Keyingi bo'limga o'tib, bizda sozlash funktsiyasi mavjud.

void setup () {// MS Serial Chiqish Serial.begin (9600);

pinMode (TouchSensor, INPUT);

// LED Matrix Setup lc.shutdown (0, false); lc.setIntensity (0, 4); lc.clearDisplay (0); }

Ism buni juda yaxshi tushuntiradi. Bu erda biz sensorli sensor va displeyni "o'rnatamiz". Birinchi ikkita qator bizning ketma -ket chiqishni boshlaydi (disk raskadrovka uchun ishlatiladi). Uchinchi qator sensorli pinni kirishga o'rnatadi va oxirgi to'rtta chiziq displeyni ishga tushiradi.

Yuz ifodalari uchun funktsiyalar:

Bu, ehtimol, eng uzun qism, lekin barchasi juda oddiy va takrorlanadi.

void singan () {lc.setRow (0, 0, xato [0]); lc.setRow (0, 1, xato [1]); lc.setRow (0, 2, xato [2]); lc.setRow (0, 3, xato [3]); lc.setRow (0, 4, xato [4]); lc.setRow (0, 5, xato [5]); lc.setRow (0, 6, xato [6]); lc.setRow (0, 7, xato [7]); }

void baxtli () {

lc.setRow (0, 0, tabassum [0]); lc.setRow (0, 1, tabassum [1]); lc.setRow (0, 2, tabassum [2]); lc.setRow (0, 3, tabassum [3]); lc.setRow (0, 4, tabassum [3]); lc.setRow (0, 5, tabassum [2]); lc.setRow (0, 6, tabassum [1]); lc.setRow (0, 7, tabassum [0]); }

void plain () {

lc.setRow (0, 0, meh [0]); lc.setRow (0, 1, meh [1]); lc.setRow (0, 2, meh [2]); lc.setRow (0, 3, meh [3]); lc.setRow (0, 4, meh [3]); lc.setRow (0, 5, meh [2]); lc.setRow (0, 6, meh [1]); lc.setRow (0, 7, meh [0]); }

hayron qoldim () {

lc.setRow (0, 0, ajablanib [0]); lc.setRow (0, 1, ajablanib [1]); lc.setRow (0, 2, ajablanib [2]); lc.setRow (0, 3, ajablanib [3]); lc.setRow (0, 4, ajablanib [3]); lc.setRow (0, 5, ajablanib [2]); lc.setRow (0, 6, ajablanib [1]); lc.setRow (0, 7, ajablanib [0]); }

bo'sh o'lish () {

lc.setRow (0, 0, o'lik [0]); lc.setRow (0, 1, o'lik [1]); lc.setRow (0, 2, o'lik [2]); lc.setRow (0, 3, o'lik [3]); lc.setRow (0, 4, o'lik [4]); lc.setRow (0, 5, o'lik [5]); lc.setRow (0, 6, o'lik [1]); lc.setRow (0, 7, o'lik [0]); }

bo'sh yig'lash () {

lc.setRow (0, 0, qayg'uli [0]); lc.setRow (0, 1, qayg'uli [1]); lc.setRow (0, 2, qayg'uli [2]); lc.setRow (0, 3, qayg'uli [3]); lc.setRow (0, 4, qayg'uli [3]); lc.setRow (0, 5, qayg'uli [2]); lc.setRow (0, 6, qayg'uli [1]); lc.setRow (0, 7, qayg'uli [0]); }

void evilsmile () {

lc.setRow (0, 0, esmile [0]); lc.setRow (0, 1, esmile [1]); lc.setRow (0, 2, esmile [2]); lc.setRow (0, 3, esmile [3]); lc.setRow (0, 4, esmile [3]); lc.setRow (0, 5, esmile [2]); lc.setRow (0, 6, esmile [1]); lc.setRow (0, 7, esmile [0]); }

void evillaugh () {

lc.setRow (0, 0, elaugh [0]); lc.setRow (0, 1, elaugh [1]); lc.setRow (0, 2, elaugh [2]); lc.setRow (0, 3, elaugh [3]); lc.setRow (0, 4, elaugh [3]); lc.setRow (0, 5, elaugh [2]); lc.setRow (0, 6, elaugh [1]); lc.setRow (0, 7, elaugh [0]); }

void badplain () {

lc.setRow (0, 0, eplain [0]); lc.setRow (0, 1, eplain [1]); lc.setRow (0, 2, eplain [2]); lc.setRow (0, 3, eplain [3]); lc.setRow (0, 4, eplain [3]); lc.setRow (0, 5, eplen [2]); lc.setRow (0, 6, eplain [1]); lc.setRow (0, 7, eplain [0]); }

void evilyell () {

lc.setRow (0, 0, ko'zoynak [0]); lc.setRow (0, 1, ko'zoynak [1]); lc.setRow (0, 2, ko'zoynak [2]); lc.setRow (0, 3, ko'zoynak [3]); lc.setRow (0, 4, ko'zoynak [3]); lc.setRow (0, 5, ko'zoynak [2]); lc.setRow (0, 6, ko'zoynak [1]); lc.setRow (0, 7, ko'zoynak [0]); }

void eviltalk () {

lc.setRow (0, 0, etalk [0]); lc.setRow (0, 1, etalk [1]); lc.setRow (0, 2, etalk [2]); lc.setRow (0, 3, etalk [3]); lc.setRow (0, 4, etalk [3]); lc.setRow (0, 5, etalk [2]); lc.setRow (0, 6, etalk [1]); lc.setRow (0, 7, etalk [0]); }

Bu funktsiyalar har bir yuz ifodasini birinchi bo'limdagi bayt qiymatlarimiz yordamida aniqlash uchun ishlatiladi. Har bir satr x pozitsiyasi va bayt qiymatlarini belgilaydi va keyin qiymatlarni o'sha ustunga qo'llaydi. Ba'zi funktsiyalar ko'proq chiziqlarni talab qiladi, chunki bu yuzning qiymatlarini ko'rsatish uchun ko'proq qatorlar mavjud. Har bir yuz nosimmetrik, shuning uchun biz chiziqlarni takrorlaymiz.

WriteArduinoOnMatrix funktsiyasi:

To'rtinchi qism LED displeyda to'g'ri yuzlarni hisoblash va yozish uchun ishlatiladi. U boshqa qiymatlar qatoridan iborat bo'lib, ular suv qiymatlarini tekshiradi, so'ngra oldingi bo'limdagi turli funktsiyalarni chaqirish orqali displeyni o'rnatadi.

void writeArduinoOnMatrix () {if (sensorValue> 0 && sensorValue 30 && sensorValue 100 && sensorValue 200 && sensorValue 400 && sensorValue 650 && sensorValue <= 800) {ajablanib (); } boshqa {singan (); }}

Agar sezgich ishchi diapazonidan tashqariga chiqsa, biz "singan" yuzlarni qo'shganimizni sezishingiz mumkin. Bu sodir bo'ladigan g'alati null xatolarning oldini oladi va kod ichida nima bo'layotganini yaxshiroq ingl.

Loop funktsiyasi:

Oxir -oqibat, pastadir funktsiyasi. Bu kod aynan uning nomi aytganini qiladi, aylanadi! Bu funktsiyada juda ko'p satrlar mavjud bo'lsa -da, aslida bu juda oddiy. Kod birinchi navbatda tugma holatini o'qiydi va displey "Yoqish" ekanligini ko'radi. Agar bu haqiqat deb topilsa, u holda WriteArduinoOnMatrix funksiyasi chaqiriladi, u APEXda yuzni chizadi. Chunki bu funksiya aylanib yuradi, displey biz xohlagancha yangilanadi. Bu kechikish kechikish vaqti o'zgaruvchisi tomonidan belgilanadi.

void loop () {if (boshlangan == rost) {kechikish vaqti = 3000; } // O'qish tugmasi bosildi = digitalRead (TouchSensor);

agar (bosilsa) {

if (on == true) {lc.clearDisplay (0); on = noto'g'ri; kechikish (kechikish); } else {on = true; kechikish (kechikish); }} sensorValue = analogRead (sensorPin); kechikish (kechikish); if (on == true) {// Draw Faces writeArduinoOnMatrix (); }

boshlandi = rost;

}

Kodda hamma narsa shu. Umid qilamanki, endi siz hammasi qanday ishlashini yaxshiroq tushunasiz va ushbu bilimlardan foydalanib, uni loyihangizga moslashtirishni boshlashingiz mumkin!

Kodni Arduino -ga yuborish

Endi biz barcha kodlarni ko'rib chiqdik, uni Arduino -ga o'tkazish vaqti keldi! Yaxshiyamki, IDE buni juda oddiy qiladi. Buning uchun Arduino -ni USB kabeli bilan kompyuterga ulang va IDE -ning yuqori chap burchagidagi o'ng o'qni bosing. Kodni bosishga ruxsat bering va agar siz to'g'ri bajargan bo'lsangiz, dasturning pastki qismida muvaffaqiyatli xabarni ko'rishingiz kerak!

5 -qadam: O'chirish diagrammasi

O'chirish diagrammasi
O'chirish diagrammasi

Xuddi kodga o'xshab, elektron sxemasi juda murakkab emas. U faqat uchta sensordan va Arduino-dan iborat, shuning uchun men sizga har birining pinlarini aytib beraman va agar sizga boshqa yordam kerak bo'lsa, yuqoridagi diagramaga murojaat qiling.

LED displeyi:

  • VCC -> 5V
  • GRD -> GRD
  • Din -> 12 -pin
  • CS -> 10 -pin
  • CLK -> Pin 11

Namlik sensori:

  • Ijobiy -> 5V
  • Salbiy -> GRD
  • Signal -> A5

Sensorli sig'im sensori:

  • VCC -> 5V
  • GRD -> GRD
  • SIG -> 7

Juda qiyin emas, to'g'rimi? Agar sizda bu chiqish muammosi bo'lsa, quyidagi videoga qarang, men sizga uni qanday ulashni ko'rsataman.

6 -qadam: Hammasini bir joyga to'plash

Hammasini bir joyga to'plash
Hammasini bir joyga to'plash
Hammasini bir joyga to'plash
Hammasini bir joyga to'plash
Hammasini bir joyga to'plash
Hammasini bir joyga to'plash

Matnni qanday qilib bir -biriga mos kelishini tushuntirish qiyin, shuning uchun men, albatta, ushbu qism uchun videoni ko'rib chiqishni taklif qilaman. Men o'zimni qanday qilib birlashtirganimni aniq tushuntirmoqchi emasman, bu juda qiyin. Lekin tushunarsiz narsalarni tushuntirish uchun men simli ulanishlarni lehimlab, taxtaning orqa tomoniga o'rab qo'ydim. Keyin men sensorlarni joylashtirdim va elektr tasmasini ishlatib, hammasini bir joyga to'pladim. Nihoyat, men uni 9V batareya bilan sinab ko'rdim, keyin bildimki, u ishlaganida batareyani orqa tomoniga qo'yib, uni ham yopishtirib qo'ydi. Yuqorida aytganimdek, bu qadam uchun videoni tekshiring, u juda yaxshi lehim segmentiga ega va u simlarni to'g'ri o'rashga yordam beradi. Agar adashib qolsangiz, uni to'xtatib turing yoki yarim tezlikda o'ynang.

Tabriklaymiz! Agar hamma narsa muvaffaqiyatli bo'lsa, endi sizda to'liq ishlaydigan APEX qurilmasi bo'lishi kerak!

Qurilmangizni sinab ko'rish uchun, sug'oriladigan o'simlikni toping va uni tarmoqqa ulang! Siz buni baxtli yoki hayratlanarli deb bilishingiz kerak va bu uning ishlashi kerakligini anglatadi !!! Loyihani yakunlash uchun ajoyib ish!

7 -qadam: Xulosa

Xulosa
Xulosa

Va bu to'liq ko'rsatma! Loyihani tekshirganingiz uchun tashakkur! Savol va sharhlaringizni quyida qoldiring va shunga o'xshash ajoyib darsliklar uchun Urban dehqonchilik yigitlariga rioya qiling! Sizning APEX qurilishi qanday o'tganini eshitishni xohlaymiz va rasmlar juda qadrlanadi! To'xtab qolganingiz uchun yana bir bor rahmat, kuningiz yaxshi o'tsin!

(Bu ko'rsatma eski emoji o'simlik emojisidan ilhomlangan!)

P. S. Bu ko'rsatma mikrokontrollerlar tanlovida qatnashgan, shuning uchun bizga ovoz berishni unutmang! Biz buni juda qadrlaymiz:)

P. P. S. Keling, Make jurnalida APEX -ni olaylik! Bu erda ovoz bering! Rahmat:)

Tavsiya: