Turinys:
- 1 žingsnis: Įvadas
- 2 žingsnis: Surinkite dalis ir įrankius
- 3 veiksmas: įdiekite „Arduino IDE“
- 4 žingsnis: Kodas
- 5 žingsnis: grandinės schema
- 6 žingsnis: sudėkite viską kartu
- 7 žingsnis: Išvada
Video: Dirbtinis augalų emocijų ekspresorius (A.P.E.X.): 7 žingsniai (su nuotraukomis)
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:48
Bet palaukite … Yra daugiau!
1 žingsnis: Į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
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“
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
Š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:
- Įskaitant bibliotekas ir kintamųjų kūrimą
- Sąrankos funkcija
- Veido išraiškos funkcijos
- Funkcija „Write Arduino On Matrix“
- 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
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
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
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:
Dirbtinis intelektas ir vaizdo atpažinimas naudojant „HuskyLens“: 6 žingsniai (su nuotraukomis)
Dirbtinis intelektas ir vaizdo atpažinimas naudojant „HuskyLens“: Ei, kas, vaikinai! Akarsh čia iš CETech. Šiame projekte mes pažvelgsime į „DFRobot“„HuskyLens“. Tai dirbtiniu intelektu varomas fotoaparato modulis, galintis atlikti keletą dirbtinio intelekto operacijų, tokių kaip veido atpažinimas
24 bitų RGB LED emocijų/„Sprite“ekranas: 4 žingsniai
24 bitų RGB šviesos diodų jaustukų/„Sprite“ekranas: būdamas mokytoju, grįžtančiu į klasę, esant COVID ir reikalavimui dėvėti AAP, supratau, kad mano mokiniai nematys mano veido išraiškų (mokau vidurinę mokyklą, bet turiu vaikų grįžta į pradinę ir antrąją
Dirbtinis debesis: 3 žingsniai
Dirbtinis debesis: Sveiki visi, šiandien aš gaminsiu vaivorykštės spalvos dirbtinį debesį
Emocijų išraiška: 4 žingsniai
Emocijų išraiška: Įvadas: Ši mašina yra emocijų išraiška, ji padeda žmonėms, kurie nemoka išreikšti savo jausmų, išreikšti savo jausmus. Ši mašina gali padėti žmonėms, kuriems reikia pagalbos ar reikia, kad kas nors jų išklausytų, skundžiasi dalykais, kurie yra
Dirbtinis maitinimo kištukas kaip jungiklis: 5 žingsniai (su nuotraukomis)
Dirbtinis maitinimo kištukas kaip jungiklis: senus televizorius perdirbau į parduotuvių ir restoranų ekranus ir pan. Prieš kurį laiką į mane kreipėsi žmonės, statę pabėgimo kambarį. Kambaryje, kurį jie statė, buvo 1940 -ųjų baisi odontologo praktikos tema. Netikėtai pasipylė kraujas