Turinys:

Dirbtinis augalų emocijų ekspresorius (A.P.E.X.): 7 žingsniai (su nuotraukomis)
Dirbtinis augalų emocijų ekspresorius (A.P.E.X.): 7 žingsniai (su nuotraukomis)

Video: Dirbtinis augalų emocijų ekspresorius (A.P.E.X.): 7 žingsniai (su nuotraukomis)

Video: Dirbtinis augalų emocijų ekspresorius (A.P.E.X.): 7 žingsniai (su nuotraukomis)
Video: Высокая плотность 2022 2024, Lapkritis
Anonim
Image
Image

Bet palaukite … Yra daugiau!

1 žingsnis: Įvadas

Įvadas
Įvadas
Įvadas
Įvadas
Įvadas
Įvadas

Kas yra APEX?

APEX yra protingas (jau nekalbant apie mielą) augalų stebėjimo įrenginys. Tiesiog prijunkite jį prie bet kurio augalo ir jis parodys augalo „laimės“lygį! Tai puikus priminimas laistyti augalus, jei turite blogą įprotį pamiršti juos laistyti.

Kaip tai veikia?

Magija. Juokauju! APEX naudoja „Arduino“, pritvirtintą prie drėgmės jutiklio, kuris įterpiamas į augalo dirvą. Šis jutiklis nuskaitys drėgmės kiekį dirvožemyje, o tada „Arduino“apskaičiuoja, kokį veidą rodyti.

Bet kodėl?

Kodėl gi ne?

2 žingsnis: Surinkite dalis ir įrankius

Dalių ir įrankių surinkimas
Dalių ir įrankių surinkimas
Dalių ir įrankių surinkimas
Dalių ir įrankių surinkimas
Dalių ir įrankių surinkimas
Dalių ir įrankių surinkimas

Eikime į tai! Šiam „Instructable“jums reikės nemažai dalių ir įrankių. Laimei, visi jie yra išvardyti žemiau:

Remiantis mikrovaldiklių konkurso dvasia, šį projektą visiškai sukūrė dalys, įsigytos „Amazon“! (neremiamas)

Dalių sąrašas:

  • Arduino Uno
  • 8x8 LED ekranas
  • Talpinis jutiklinis jutiklis
  • Drėgmės jutiklis
  • 9V akumuliatoriaus jungtis
  • 9 V baterija

Įrankių sąrašas:

  • 22 matuoklio viela
  • Izoliacinė juosta
  • Vielos nuėmikliai
  • Lituoklis
  • Lydymosi siurblys

Surinkę visą reikalingą įrangą, laikas nustatyti „Arduino“programinę įrangą!

3 veiksmas: įdiekite „Arduino IDE“

„Arduino IDE“diegimas
„Arduino IDE“diegimas
„Arduino IDE“diegimas
„Arduino IDE“diegimas
„Arduino IDE“diegimas
„Arduino IDE“diegimas

Kad šis projektas veiktų, turėsime sugebėti užprogramuoti „Arduino“. Tam reikia atsisiųsti ir įdiegti „Arduino Integrated Development Environment“(IDE) į savo kompiuterį. Tai gana paprastas paaiškinimas, bet aš jums padėsiu:

1. Apsilankykite „Arduino“svetainėje

2. Eikite į atsisiuntimų puslapį (Programinė įranga> Atsisiuntimai)

3. Spustelėkite savo operacinei sistemai skirtą atsisiuntimo nuorodą

Šoninė pastaba: programa veiks „Windows“, „Mac“ir „Linux“.

4. Diegimas „Windows“

  • Dukart spustelėkite atsisiųstą failą, kad jį paleistumėte
  • Spustelėkite „Sutinku“, kad sutiktumėte su licencija
  • Vykdykite likusius nurodymus
  • Dabar programa turi būti įdiegta!

(Jei pasiklystumėte, būtinai peržiūrėkite ekrano kopijas)

5. Diegimas „Mac“

  • Spustelėkite atsisiųstą failą
  • Pasirinkite „Atidaryti“
  • Programa bus automatiškai įdiegta ir paleista!

(Jei susipainiotumėte, būtinai peržiūrėkite ekrano kopijas)

6. Štai ir viskas

Ir baigsite! Dabar „Arduino IDE“turite atsisiųsti į savo sistemą!

4 žingsnis: Kodas

Kodas
Kodas
Kodas
Kodas
Kodas
Kodas

Šis žingsnis yra susijęs su kodu. Tai gana trumpa programa, todėl kartu su jumis ją peržiūrėsiu ir paaiškinsiu, kaip ji veikia. Pirma, trumpa apžvalga, tada išsamus paaiškinimas ir, galiausiai, kaip ją nuvesti į „Arduino“!

Trumpa apžvalga

Tiems, kurie nesidomi išsamiu kodo paaiškinimu, aš siūlau TL; DR segmentą! Štai pagrindinis paaiškinimas. „Arduino“kas kelias sekundes paima vertes iš drėgmės jutiklio. Tada ši informacija naudojama tam tikram veidui apskaičiuoti ir parodyti! Pabaigoje taip pat yra šiek tiek kodo, kuris leis talpiniam jutikliniam mygtukui įjungti ir išjungti ekraną. Gana paprasta tiesa?

Nitty Gritty

Ši pamoka skirta tiems, kurie labai domisi, kaip visa programa veikia eilutėje. Pateiksiu ekrano kopijas aukščiau, kad suprastumėte, apie ką aš kalbu, taip pat į šį aprašymą įtraukiu kai kurias kodo eilutes.

Ši programa suskirstyta į penkias dalis:

  1. Įskaitant bibliotekas ir kintamųjų kūrimą
  2. Sąrankos funkcija
  3. Veido išraiškos funkcijos
  4. Funkcija „Write Arduino On Matrix“
  5. Ciklo funkcija

Įskaitant bibliotekas ir kintamųjų kūrimą:

Pirmasis šio kodo skyrius skirtas kintamiesiems ir bibliotekoms, kurias naudosime.

#include "LedControlMS.h"

#define TouchSensor 7 LedControl lc = LedControl (12, 11, 10, 1); int sensorPin = A5; int sensorValue = 0; bool prasidėjo = klaidinga; bool on = tiesa; loginis paspaudimas = LOW;

Pirmoje eilutėje yra biblioteka LedControlMS. Ši biblioteka reikalinga, kad būtų galima siųsti reikšmes į LED ekraną. Kita eilutė yra apibrėžimo teiginys, nustatantis jutiklinio jutiklio kaištį į 7. Po to turime dar tris kintamuosius, kurie apibrėžia LED ekrano, drėgmės jutiklio ir jo vertės kaiščius. Paskutinės trys eilutės yra loginės vertės, reguliuojančios jutiklinio mygtuko ir ekrano būseną. Po to mes turime savo baitų vertes:

baitų šypsena [4] = {B00000100, B00110010, B01100100, B01100000}; baitų staigmena [4] = {B00001110, B00001010, B01101110, B10010000}; baitų meh [4] = {B00000100, B00100100, B00100100, B00100000}; baitas liūdnas [4] = {B00000010, B01100100, B00110010, B00110000}; baitas negyvas [6] = {B00001010, B00100100, B00101010, B00100000, B01100000, B01101010}; baitų klaida [8] = {B00111100, B01000010, B10100001, B10010001, B10001001, B10000101, B01000010, B00111100}; // Blogų veidų baitas esmile [4] = {B00000010, B00101010, B01000100, B01000000}; baitas elaugh [4] = {B00000010, B00101010, B01100100, B01100000}; baitas eplain [4] = {B00000010, B00101010, B00100100, B00100000}; baitų akis [4] = {B00000001, B01101001, B01100010, B01100000}; baitų etalkas [4] = {B00000001, B00101001, B01100010, B01100000};

Šios vertės atspindi visus APEX veidus. Kiekvienas baitas yra masyvas, kuriame yra keli bitai, diktuojantys kiekvieno taško būseną tam tikroje eilutėje. „1“ir „0“atitinkamai reiškia įjungimą/išjungimą.

Sąrankos funkcija:

Pereidami į kitą skyrių, turime sąrankos funkciją.

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

pinMode (jutiklinis jutiklis, įvestis);

// LED matricos sąranka lc.shutdown (0, false); lc.setIntensity (0, 4); lc.clearDisplay (0); }

Pavadinimas tai labai gerai paaiškina. Čia mes „nustatome“jutiklinį jutiklį ir ekraną. Pirmosios dvi eilutės prasideda mūsų serijine išvestimi (naudojama derinimui). Trečioji eilutė nustato jutiklio jutiklio kaištį įvestį, o paskutinės keturios eilutės paleidžia ekraną.

Veido išraiškos funkcijos:

Tai turbūt ilgiausia dalis, tačiau viskas labai paprasta ir kartojama.

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

niekinis laimingas () {

lc.setRow (0, 0, šypsena [0]); lc.setRow (0, 1, šypsena [1]); lc.setRow (0, 2, šypsena [2]); lc.setRow (0, 3, šypsena [3]); lc.setRow (0, 4, šypsena [3]); lc.setRow (0, 5, šypsena [2]); lc.setRow (0, 6, šypsena [1]); lc.setRow (0, 7, šypsena [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]); }

tuštuma nustebinta () {

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

void miršta () {

lc.setRow (0, 0, negyvas [0]); lc.setRow (0, 1, miręs [1]); lc.setRow (0, 2, miręs [2]); lc.setRow (0, 3, miręs [3]); lc.setRow (0, 4, miręs [4]); lc.setRow (0, 5, miręs [5]); lc.setRow (0, 6, miręs [1]); lc.setRow (0, 7, negyvas [0]); }

tuščias verkimas () {

lc.setRow (0, 0, liūdnas [0]); lc.setRow (0, 1, liūdnas [1]); lc.setRow (0, 2, liūdnas [2]); lc.setRow (0, 3, liūdnas [3]); lc.setRow (0, 4, liūdnas [3]); lc.setRow (0, 5, liūdnas [2]); lc.setRow (0, 6, liūdnas [1]); lc.setRow (0, 7, liūdnas [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 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, akis [0]); lc.setRow (0, 1, akis [1]); lc.setRow (0, 2, akis [2]); lc.setRow (0, 3, akis [3]); lc.setRow (0, 4, akis [3]); lc.setRow (0, 5, akis [2]); lc.setRow (0, 6, akis [1]); lc.setRow (0, 7, akis [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]); }

Šios funkcijos naudojamos apibrėžti kiekvieną veido išraišką, naudojant mūsų baitų reikšmes iš pirmo skyriaus. Kiekviena eilutė apibrėžia x poziciją ir baitų reikšmes, tada taiko reikšmes šiam stulpeliui. Kai kurioms funkcijoms reikia daugiau eilučių, nes to veido reikšmėms rodyti naudojama daugiau eilučių. Kiekvienas veidas yra simetriškas, todėl kartojame eilutes.

„WriteArduinoOnMatrix“funkcija:

Ketvirtasis skyrius naudojamas apskaičiuoti ir užrašyti tinkamus veidus LED ekrane. Jį sudaro eilė kitų teiginių, kurie tikrina vandens vertes ir nustato ekraną, iškviesdami skirtingas funkcijas iš ankstesnio skyriaus.

void writeArduinoOnMatrix () {if (sensorValue> 0 && sensorValue 30 && sensorValue 100 && sensorValue 200 && sensorValue 400 && sensorValue 650 && sensorValue <= 800) {nustebęs (); } else {skaldytas (); }}

Galite pastebėti, kad pridėjome „sulaužytus“veidus tik tuo atveju, jei jutiklis išeina už darbo diapazono ribų. Tai užkerta kelią keistoms nulinėms klaidoms ir suteikia mums geresnį vaizdinį supratimą apie tai, kas vyksta kode.

Kilpos funkcija:

Paskutinis, bet ne mažiau svarbus dalykas yra ciklo funkcija. Šis kodas daro tiksliai tai, ką sako jo pavadinimas, jis kartojasi! Nors šioje funkcijoje yra nemažai eilučių, iš tikrųjų tai gana paprasta. Kodas pirmiausia nuskaito mygtuko būseną ir pamato, ar ekranas yra „Įjungtas“. Jei nustatys, kad tai tiesa, ji iškvies funkciją „WriteArduinoOnMatrix“, kuri tada nupieš APEX veidą. Kadangi ši funkcija veikia, ji atnaujins ekraną taip dažnai, kaip norime. Šį vėlavimą diktuoja delaytime kintamasis.

void loop () {jei (pradėta == tiesa) {delaytime = 3000; } // Paspaustas skaitymo mygtukas = digitalRead (TouchSensor);

jei (paspaustas) {

if (įjungta == tiesa) {lc.clearDisplay (0); įjungta = klaidinga; vėlavimas (vėlavimo laikas); } else {on = tiesa; vėlavimas (vėlavimo laikas); }} sensorValue = analogRead (sensorPin); vėlavimas (vėlavimo laikas); if (on == true) {// Piešti veidus writeArduinoOnMatrix (); }

pradėta = tiesa;

}

Tai viskas, kas yra kode. Tikimės, kad dabar jūs geriau suprantate, kaip visa tai veikia, ir galėsite pasinaudoti šiomis žiniomis, kad pradėtumėte jas pritaikyti savo projektui!

Kodo perkėlimas į „Arduino“

Dabar, kai apėmėme visą kodą, atėjo laikas jį perkelti į „Arduino“! Laimei, IDE tai labai paprasta. Viskas, ką jums reikia padaryti, tai prijungti „Arduino“prie kompiuterio USB kabeliu, tada tiesiog spustelėkite dešinę rodyklę IDE viršuje kairėje. Tegul kodas stumia, ir programos apačioje turėtumėte pamatyti sėkmės pranešimą, jei tai padarėte teisingai!

5 žingsnis: grandinės schema

Grandinės schema
Grandinės schema

Panašiai kaip ir kodas, schema nėra pernelyg sudėtinga. Jį sudaro tik trys jutikliai ir „Arduino“, todėl aš jums pasakysiu kiekvieno iš jų kištukus ir, jei jums reikia kitos pagalbos, tiesiog žiūrėkite aukščiau pateiktą schemą.

LED ekranas:

  • VCC -> 5V
  • GRD -> GRD
  • DIN -> 12 kaištis
  • CS -> 10 kaištis
  • CLK -> 11 kaištis

Drėgmės jutiklis:

  • Teigiamas -> 5V
  • Neigiamas -> GRD
  • Signalas -> A5

Talpinis jutiklinis jutiklis:

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

Ne per sunku, tiesa? Jei turite problemų dėl šio kištuko, būtinai žiūrėkite žemiau esantį vaizdo įrašą, kuriame paaiškinu, kaip jį prijungti.

6 žingsnis: sudėkite viską kartu

Viską sujungti
Viską sujungti
Viską sujungti
Viską sujungti
Viską sujungti
Viską sujungti

Tekstu sunku paaiškinti, kaip viskas dera, todėl tikrai siūlau peržiūrėti šios dalies vaizdo įrašą. Aš iš tikrųjų neketinu tiksliai paaiškinti, kaip aš sudėjau savo, tai per sunku. Tačiau norėdamas neaiškiai paaiškinti dalykus, lituodavau ant laidų jungčių ir apvyniojau juos lentos gale. Tada aš pastatiau jutiklius ir naudoju elektros juostą, kad visa tai laikyčiau. Galiausiai aš išbandžiau jį su 9 V baterija, o tada, kai sužinojau, kad jis veikia, padėjau bateriją ant nugaros ir taip pat užklijavau. Kaip jau sakiau anksčiau, PATIKRINKITE ŠĮ ŽINGSNĮ VIDEO, jame yra gražus mažas litavimo segmentas, kuris yra pagreitintas ir padės tinkamai apvynioti laidus. Jei pasiklysite, nedvejodami pristabdykite arba paleiskite pusę greičio.

Sveikinu! Jei viskas pavyko sėkmingai, dabar turėtumėte turėti visiškai veikiantį APEX įrenginį!

Norėdami išbandyti savo įrenginį, raskite laistomą augalą ir prijunkite jį! Turėtumėte pastebėti, kad jis yra laimingas arba nustebęs, o tai reiškia, kad jis turėtų veikti !!! Puikus darbas užbaigiant projektą!

7 žingsnis: Išvada

Išvada
Išvada

Ir tai yra visa instrukcija! Ačiū, kad apžiūrėjote projektą! Palikite visus klausimus ir komentarus žemiau ir būtinai sekite „Urban Farming Guys“, kad gautumėte daugiau tokių įdomių pamokų! Mes norėtume išgirsti apie tai, kaip sekėsi jūsų APEX kūrimui, o nuotraukos yra labai vertinamos! Dar kartą ačiū, kad užsukote, geros dienos!

(Šią instrukciją įkvėpė senesnis projektas „Plant Emoji“!)

P. S. Šis „Instructable“yra įtrauktas į mikrovaldiklių konkursą, todėl nepamirškite balsuoti už mus! Labai vertiname:)

P. P. S. Gaukite „APEX“žurnale „Make“! Balsuokite čia! Dėkoju:)

Rekomenduojamas: