Mündəricat:

Süni Bitki Duyğu Ekspresoru (A.P.E.X.): 7 addım (şəkillərlə)
Süni Bitki Duyğu Ekspresoru (A.P.E.X.): 7 addım (şəkillərlə)

Video: Süni Bitki Duyğu Ekspresoru (A.P.E.X.): 7 addım (şəkillərlə)

Video: Süni Bitki Duyğu Ekspresoru (A.P.E.X.): 7 addım (şəkillərlə)
Video: Как уберечься от ротавируса, дизентерии, отита и не испортить отдых 2024, Noyabr
Anonim
Image
Image

Amma gözləyin… Daha çoxu var!

Addım 1: Giriş

Giriş
Giriş
Giriş
Giriş
Giriş
Giriş

APEX nədir?

APEX, ağıllı bir bitkiyə nəzarət cihazıdır. Sadəcə hər hansı bir bitkiyə qoşun və bitkinin "xoşbəxtlik" səviyyəsini göstərəcək! Bitkilərinizi sulamağı unutmaq pis bir vərdişiniz varsa, bu, bitkilərinizi sulamaq üçün əla bir xatırlatmadır.

Bu necə işləyir?

Sehrli. Sadəcə zarafat! APEX, bitkinin torpağına daxil olan bir nəm sensoru ilə əlaqəli bir Arduino istifadə edir. Bu sensor torpağın rütubətini oxuyacaq və sonra Arduino hansı üzün göstəriləcəyini hesablayacaq.

Bəs niyə?

Niyə də yox?

Addım 2: Parça və Alətlərin Toplanması

Alətlərin və hissələrin toplanması
Alətlərin və hissələrin toplanması
Alətlərin və hissələrin toplanması
Alətlərin və hissələrin toplanması
Alətlərin və hissələrin toplanması
Alətlərin və hissələrin toplanması

Gəlin buna girək! Bu Təlimat üçün çoxlu hissələrə və vasitələrə ehtiyacınız olacaq. Şansınız olsun ki, bunların hamısı aşağıda verilmişdir:

Mikrokontroller Yarışması ruhunda bu layihə tamamilə Amazon -da satın alınan hissələr tərəfindən hazırlanmışdır! (sponsor deyil)

Parça siyahısı:

  • Arduino Uno
  • 8x8 LED Ekran
  • Kapasitiv Toxunma Sensoru
  • Nəm Sensoru
  • 9V batareya konnektoru
  • 9V Batareya

Alət siyahısı:

  • 22 Ölçü Teli
  • Elektrik lenti
  • Tel çıxarıcılar
  • Lehimleme dəmir
  • Sökülmə nasosu

Bütün lazımi avadanlıqları topladıqdan sonra Arduino proqramını qurmağın vaxtı gəldi!

Addım 3: Arduino IDE -nin quraşdırılması

Arduino IDE -nin quraşdırılması
Arduino IDE -nin quraşdırılması
Arduino IDE -nin quraşdırılması
Arduino IDE -nin quraşdırılması
Arduino IDE -nin quraşdırılması
Arduino IDE -nin quraşdırılması

Bu layihənin işləməsi üçün Arduino'yu proqramlaşdıra bilməliyik. Bunun üçün Arduino İnteqrasiya edilmiş İnkişaf Mühitinin (IDE) kompüterinizə yüklənməsi və quraşdırılması tələb olunur. Bu olduqca sadə bir izahatdır, amma bu prosesi sizə izah edəcəyəm:

1. Arduino Veb saytına daxil olun

2. Yükləmələr səhifəsinə keçin (Proqram təminatı> Yükləmələr)

3. Əməliyyat Sisteminiz üçün Yükləmə Bağlantısına basın

Yan Qeyd: Proqram Windows, Mac və Linux -da işləyəcək.

4. Windows -da Quraşdırma

  • Yüklənmiş faylı işə salmaq üçün üzərinə iki dəfə vurun
  • Lisenziyanı qəbul etmək üçün "Razıyam" düyməsini basın
  • Qalan əmrləri izləyin
  • Proqram indi quraşdırılmalıdır!

(Əgər itirsəniz ekran görüntülərinə baxdığınızdan əmin olun)

5. Mac -da quraşdırma

  • Yüklənmiş faylı vurun
  • "Aç" seçin
  • Proqram avtomatik olaraq quraşdırılacaq və işləyəcək!

(Çaşqın olsanız ekran görüntülərinə diqqət yetirin)

6. Budur

Və bitirdiniz! İndi sisteminizə Arduino IDE yüklədiniz!

Addım 4: Kod

Kod
Kod
Kod
Kod
Kod
Kod

Bu addım bütün kod haqqında. Bu olduqca qısa bir proqramdır, buna görə sizinlə birlikdə gedəcəyəm və necə işlədiyini izah edəcəyəm. Əvvəlcə qısa bir baxış, sonra dərin bir izahat və nəhayət Arduinoya necə itələmək olar!

Qısa Baxış

Kodun ətraflı izahı ilə maraqlanmayanlar üçün TL; DR seqmenti təqdim edirəm! Budur əsas izah. Arduino bir neçə saniyədə nəm sensorundan dəyərlər alır. Bu məlumatlar daha sonra müəyyən bir üzü hesablamaq və göstərmək üçün istifadə olunur! Sonda, kapasitif toxunma düyməsinin ekranı açıb söndürməsini təmin edən bir az kod da var. Çox sadə, elə deyilmi?

Nitty Gritty

Dərsliyin bu hissəsi, bütün proqramın necə işlədiyini, sətir -satır çox maraqlananlar üçündür. Nə danışdığımı başa düşməyinizə və bu təsvirə bəzi kod sətirlərini daxil etməyinizə kömək etmək üçün yuxarıdakı ekran görüntüləri verəcəyəm.

Bu proqram beş hissəyə bölünür:

  1. Kitabxanalar və dəyişənlərin yaradılması da daxil olmaqla
  2. Quraşdırma funksiyası
  3. Üz ifadələri üçün funksiyalar
  4. Matris Fonksiyonuna Arduino Yazın
  5. Döngə funksiyası

Kitabxanalar və dəyişənlərin yaradılması da daxil olmaqla:

Bu kodun birinci bölümü, istifadə edəcəyimiz dəyişənlər və kitabxanalarla bağlıdır.

#"LedControlMS.h" daxil edin

#define TouchSensor 7 LedControl lc = LedControl (12, 11, 10, 1); int sensorPin = A5; int sensorValue = 0; bool başladı = yalan; bool on = doğru; boolean preslənmiş = LOW;

Birinci sətirdə LedControlMS adlı kitabxana var. Bu kitabxana LED ekrana dəyər göndərə bilməsi üçün lazımdır. Növbəti sətir, toxunma sensoru pimini 7 olaraq təyin edən bir təyin ifadəsidir. Bundan sonra LED displey, nəmlik sensoru və onun dəyərini təyin edən daha üç dəyişənimiz var. Son üç sətir, toxunma düyməsinin və ekranın vəziyyətini tənzimləyən bütün booleanlardır. Bundan sonra bayt dəyərlərimiz var:

bayt təbəssümü [4] = {B00000100, B00110010, B01100100, B01100000}; bayt sürprizi [4] = {B00001110, B00001010, B01101110, B10010000}; bayt meh [4] = {B00000100, B00100100, B00100100, B00100000}; bayt sad [4] = {B00000010, B01100100, B00110010, B00110000}; bayt ölü [6] = {B00001010, B00100100, B00101010, B00100000, B01100000, B01101010}; bayt xətası [8] = {B00111100, B01000010, B10100001, B10010001, B10001001, B10000101, B01000010, B00111100}; // Evil Faces byte esmile [4] = {B00000010, B00101010, B01000100, B01000000}; bayt elaugh [4] = {B00000010, B00101010, B01100100, B01100000}; bayt eplain [4] = {B00000010, B00101010, B00100100, B00100000}; bayt gözü [4] = {B00000001, B01101001, B01100010, B01100000}; bayt etalk [4] = {B00000001, B00101001, B01100010, B01100000};

Bu dəyərlər APEX -in bütün simalarını təmsil edir. Hər bir bayt, müəyyən bir cərgədəki hər bir pikselin vəziyyətini diktə edən birdən çox bitdən ibarət bir sıra. "1" və "0" sırasıyla On/Off -u təmsil edir.

Quraşdırma funksiyası:

Növbəti hissəyə keçərək, quraşdırma funksiyamız var.

void setup () {// MS Serial Çıxış Serial.begin (9600);

pinMode (TouchSensor, GİRİŞ);

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

Adı çox gözəl izah edir. Toxunma sensorumuzu və ekranımızı "qurduğumuz" yer budur. İlk iki xətt seriyalı çıxışımıza başlayır (ayıklama üçün istifadə olunur). Üçüncü xətt toxunma sensoru pinini girişə qoyur və son dörd xətt ekranı işə salır.

Üz ifadələri üçün funksiyalar:

Bu, ehtimal ki, ən uzun hissədir, amma hamısı çox sadə və təkrarlanır.

void broken () {lc.setRow (0, 0, error [0]); lc.setRow (0, 1, səhv [1]); lc.setRow (0, 2, səhv [2]); lc.setRow (0, 3, səhv [3]); lc.setRow (0, 4, səhv [4]); lc.setRow (0, 5, səhv [5]); lc.setRow (0, 6, səhv [6]); lc.setRow (0, 7, səhv [7]); }

boşluq xoşbəxt () {

lc.setRow (0, 0, gülümsəmə [0]); lc.setRow (0, 1, gülümsəmə [1]); lc.setRow (0, 2, gülümsəmə [2]); lc.setRow (0, 3, gülümsəmə [3]); lc.setRow (0, 4, gülümsəmə [3]); lc.setRow (0, 5, gülümsəmə [2]); lc.setRow (0, 6, gülümsəmə [1]); lc.setRow (0, 7, gülümsəmə [0]); }

boş boş () {

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]); }

boşluq təəccübləndi () {

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

boş ölmək () {

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

boş ağlamaq () {

lc.setRow (0, 0, kədərli [0]); lc.setRow (0, 1, kədərli [1]); lc.setRow (0, 2, kədərli [2]); lc.setRow (0, 3, kədərli [3]); lc.setRow (0, 4, kədərli [3]); lc.setRow (0, 5, kədərli [2]); lc.setRow (0, 6, kədərli [1]); lc.setRow (0, 7, kədərli [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, gülüş [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 evilplain () {

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, eplain [2]); lc.setRow (0, 6, eplain [1]); lc.setRow (0, 7, eplain [0]); }

void evilyell () {

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

boş 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 funksiyalar, ilk hissədəki bayt dəyərlərimizdən istifadə edərək hər bir üz ifadəsini təyin etmək üçün istifadə olunur. Hər bir sətir x mövqeyi və bayt dəyərlərini təyin edir və sonra dəyərləri həmin sütuna tətbiq edir. Bəzi funksiyalar daha çox sətir tələb edir, çünki bu üzün dəyərlərini göstərmək üçün daha çox satır var. Hər üz simmetrikdir, buna görə də xətləri təkrarlayırıq.

WriteArduinoOnMatrix funksiyası:

Dördüncü bölmə, LED ekranda uyğun üzləri hesablamaq və yazmaq üçün istifadə olunur. Su dəyərlərini yoxlayan və sonra əvvəlki hissədən fərqli funksiyaları çağıraraq ekranı quran ifadələr başqa bir sıra ibarətdir.

void writeArduinoOnMatrix () {if (sensorValue> 0 && sensorValue 30 && sensorValue 100 && sensorValue 200 && sensorValue 400 && sensorValue 650 && sensorValue <= 800) {təəccübləndi (); } başqa {broken (); }}

Sensorun iş diapazonundan kənara çıxması halında "qırıq" üzlər əlavə etdiyimizi görə bilərsiniz. Bu, baş verən bəzi qəribə sıfır səhvlərin qarşısını alır və kod daxilində nələrin baş verdiyini daha yaxşı görmə qabiliyyətimizlə təmin edir.

Döngə funksiyası:

Nəhayət, ən azı loop funksiyasıdır. Bu kod adının dediklərini tam yerinə yetirir, dönər! Bu funksiyada kifayət qədər çox xətt olsa da, əslində olduqca sadədir. Kod əvvəlcə düymə vəziyyətini oxuyur və ekranın "Açıq" olub olmadığını görür. Bunun doğru olduğunu taparsa, daha sonra APEX -də üz çəkəcək WriteArduinoOnMatrix funksiyasını çağıracaq. Bu funksiya döndərdiyi üçün ekranı istədiyimiz qədər tez -tez yeniləyəcək. Bu gecikmə gecikmə vaxtı dəyişəninə bağlıdır.

void loop () {if (başlamış == doğru) {gecikmə vaxtı = 3000; } // Oxu düyməsinə basıldı = digitalRead (TouchSensor);

əgər (basıldıqda) {

if (on == true) {lc.clearDisplay (0); on = yalan; gecikmə (gecikmə vaxtı); } başqa {on = doğru; gecikmə (gecikmə vaxtı); }} sensorValue = analogRead (sensorPin); gecikmə (gecikmə vaxtı); if (on == true) {// Draw Faces writeArduinoOnMatrix (); }

başladı = doğru;

}

Kodun hamısı budur. İnşallah indi hamısının necə işlədiyini daha yaxşı anlayırsınız və bu bilikdən istifadə edərək layihənizə uyğunlaşdırmağa başlaya bilərsiniz!

Kodu Arduinoya itələmək

İndi bütün kodları əhatə etdiyimiz üçün onu Arduinoya köçürməyin vaxtı gəldi! Xoşbəxtlikdən, IDE bunu çox sadə edir. Etməyiniz lazım olan şey Arduino -nuzu USB kabel ilə kompüterinizə qoşmaq və sonra IDE -nin sol üst hissəsindəki sağ oxu vurmaqdır. Kodun itməsinə icazə verin və düzgün etdinizsə proqramın altındakı bir uğur mesajı görməlisiniz!

Addım 5: Dövrə Şeması

Dövrə diaqramı
Dövrə diaqramı

Koda bənzər şəkildə, dövrə diaqramı çox mürəkkəb deyil. Yalnız üç sensordan və Arduinodan ibarətdir, buna görə hər biri üçün pin-çıxışları söyləyəcəyəm və başqa bir yardıma ehtiyacınız varsa, yuxarıdakı diaqrama baxın.

LED Ekran:

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

Nəm Sensoru:

  • Müsbət -> 5V
  • Mənfi -> GRD
  • Siqnal -> A5

Kapasitiv Toxunma Sensoru:

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

Çox çətin deyil, elə deyilmi? Bu çıxışla bağlı hər hansı bir probleminiz varsa, onu necə bağlayacağınızı sizə göstərdiyim aşağıda göstərilən videoya baxın.

Addım 6: Hamısını bir araya gətirmək

Hamısını bir araya gətirmək
Hamısını bir araya gətirmək
Hamısını bir araya gətirmək
Hamısını bir araya gətirmək
Hamısını bir araya gətirmək
Hamısını bir araya gətirmək

Mətn üzərində necə bir araya gəldiyini izah etmək çətindir, buna görə də bu hissənin videosunu mütləq yoxlamağı məsləhət görürəm. Əslində mənimki necə bir araya gətirdiyimi izah etməyəcəyəm, çox çətindir. Ancaq hər şeyi qeyri -müəyyən şəkildə izah etmək üçün tel əlaqələrini lehimlə lövhənin arxasına sardım. Sonra sensorları yerləşdirdim və hamısını bir yerdə saxlamaq üçün elektrik lentindən istifadə etdim. Nəhayət, 9V batareya ilə sınadım və sonra işlədiyini bildikdən sonra batareyanı arxa tərəfə qoydum və onu da yapışdırdım. Daha əvvəl dediyim kimi, VİDEONU BU ADIM ÜÇÜN Baxın, sürətləndirilmiş və telləri düzgün bir şəkildə sarmanıza kömək edəcək gözəl bir kiçik lehimləmə seqmentinə malikdir. Məğlub olsanız fasilə verin və ya yarı sürətlə oynayın.

Təbrik edirik! Hər şey uğurla gedirsə, indi tam işlək bir APEX vahidinə sahib olmalısınız!

Cihazınızı sınamaq üçün suvarılan bir bitki tapın və qoşun! Bunun ya xoşbəxt olduğunu, ya da təəccübləndiyini və bu işləmək lazım olduğunu anlamalısan !!! Layihəni tamamlamaq üçün əla işdir!

Addım 7: Nəticə

Nəticə
Nəticə

Və hamısı Təlimatlandırılır! Layihəni yoxladığınız üçün təşəkkürlər! Aşağıdakı suallarınızı və şərhlərinizi buraxın və bunun kimi daha sərin dərslər üçün Urban Farming Guys -i izlədiyinizə əmin olun! APEX quruluşunuzun necə getdiyini eşitmək istərdik və şəkillər çox bəyənilir! Dayandığınız üçün bir daha təşəkkürlər, gününüz xoş keçsin!

(Bu Təlimat daha köhnə bir layihə olan Bitki Emojisindən ilhamlandı!)

P. S. Bu Təlimat Mikrokontroller müsabiqəsinə daxil edilmişdir, buna görə bizə səs verməyi unutmayın! Çox təşəkkür edirik:)

P. P. S. Make Magazine -də APEX əldə edək! Burada səs verin! Təşəkkürlər:)

Tövsiyə: