Sisällysluettelo:
- Vaihe 1: Johdanto
- Vaihe 2: Osien ja työkalujen kerääminen
- Vaihe 3: Arduino IDE: n asennus
- Vaihe 4: Koodi
- Vaihe 5: Piirikaavio
- Vaihe 6: Yhdistä kaikki
- Vaihe 7: Johtopäätös
Video: Keinotekoinen kasvien tunteiden ilmentäjä (A.P.E.X.): 7 vaihetta (kuvilla)
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 09:03
Mutta odota… On enemmän!
Vaihe 1: Johdanto
Mikä on APEX?
APEX on älykäs (puhumattakaan söpö) kasvien valvontalaite. Kytke se mihin tahansa laitokseen ja se näyttää laitoksen "onnellisuuden" tason! Tämä on hyvä muistutus kastella kasvejasi, jos sinulla on huono tapa unohtaa kastella niitä.
Kuinka se toimii?
Taika. Kiusoittelen vain! APEX käyttää Arduinoa, joka on kiinnitetty kosteusanturiin, joka työnnetään kasvin maaperään. Tämä anturi lukee maaperän kosteuspitoisuuden ja sitten Arduino laskee näytettävät kasvot.
Mutta miksi?
Miksi ei?
Vaihe 2: Osien ja työkalujen kerääminen
Mennään asiaan! Tätä Instructablea varten tarvitset melko vähän osia ja työkaluja. Onneksi ne on lueteltu alla:
Mikro -ohjauskilpailun hengessä tämä projekti tehtiin kokonaan Amazonista ostetuista osista! (ei sponsoroitu)
Osaluettelo:
- Arduino Uno
- 8x8 LED -näyttö
- Kapasitiivinen kosketusanturi
- Kosteusanturi
- 9V akun liitin
- 9V akku
Työkaluluettelo:
- 22 Mittarijohdin
- Sähköteippi
- Langanpoistimet
- Juotin
- Juotospoistopumppu
Kun olet kerännyt kaikki tarvittavat laitteet, on aika asentaa Arduino -ohjelmisto!
Vaihe 3: Arduino IDE: n asennus
Jotta tämä projekti toimisi, meidän on voitava ohjelmoida Arduino. Tämä edellyttää Arduinon integroidun kehitysympäristön (IDE) lataamista ja asentamista tietokoneellesi. Se on melko yksinkertainen selitys, mutta käyn läpi prosessin:
1. Käy Arduinon verkkosivustolla
2. Siirry lataussivulle (Ohjelmisto> Lataukset)
3. Napsauta käyttöjärjestelmäsi latauslinkkiä
Sivuhuomautus: Ohjelma toimii Windowsissa, Macissa ja Linuxissa.
4. Asennus Windowsiin
- Suorita se kaksoisnapsauttamalla ladattua tiedostoa
- Hyväksy lisenssi napsauttamalla "Hyväksy"
- Noudata muita ohjeita
- Ohjelma pitäisi nyt asentaa!
(Muista katsoa kuvakaappauksia, jos eksyt)
5. Asennus Mac -tietokoneeseen
- Napsauta ladattua tiedostoa
- Valitse "Avaa"
- Ohjelma asennetaan ja käynnistyy automaattisesti!
(Muista tarkistaa kuvakaappaukset, jos olet hämmentynyt)
6. Siinä se
Ja olet valmis! Sinulla on nyt Arduino IDE ladattu järjestelmääsi!
Vaihe 4: Koodi
Tämä vaihe koskee koodia. Se on melko lyhyt ohjelma, joten käyn sen läpi kanssasi ja selitän, miten se toimii. Ensin lyhyt katsaus, sitten perusteellinen selitys ja lopuksi kuinka työntää se Arduinolle!
Lyhyt yleiskatsaus
Niille teistä, jotka eivät ole kiinnostuneita koodin yksityiskohtaisesta selityksestä, tarjoan TL; DR -segmentin! Tässä on perus selitys. Arduino hakee arvot kosteusanturista muutaman sekunnin välein. Näitä tietoja käytetään sitten tietyn kasvon laskemiseen ja näyttämiseen! Lopussa on myös vähän koodia, jonka avulla kapasitiivinen kosketuspainike kytkee näytön päälle ja pois päältä. Aika yksinkertaista eikö?
Nitty Gritty
Tämä opetusohjelman osa on tarkoitettu niille, jotka ovat erittäin kiinnostuneita siitä, miten koko ohjelma toimii, rivi riviltä. Annan kuvakaappauksia yllä auttaakseni sinua ymmärtämään, mistä puhun, ja sisällytän joitain koodirivejä tähän kuvaukseen.
Tämä ohjelma on jaettu viiteen osaan:
- Sisältää kirjastot ja muuttujien luomisen
- Asetustoiminto
- Toiminnot kasvojen ilmeille
- Write Arduino On Matrix -toiminto
- Loop -toiminto
Sisältää kirjastot ja muuttujien luomisen:
Tämän koodin ensimmäinen osa koskee käyttämiämme muuttujia ja kirjastoja.
#include "LedControlMS.h"
#define TouchSensor 7 LedControl lc = LedControl (12, 11, 10, 1); int -anturiPin = A5; int sensorValue = 0; bool alkoi = epätosi; bool on = totta; boolean painettu = LOW;
Ensimmäinen rivi sisältää kirjaston nimeltä LedControlMS. Tätä kirjastoa tarvitaan arvojen lähettämiseen LED -näyttöön. Seuraava rivi on määritelmälauseke, joka asettaa kosketusanturin nastan arvoon 7. Sen jälkeen meillä on vielä kolme muuttujaa, jotka määrittävät LED -näytön, kosteusanturin ja sen arvon nastat. Kolme viimeistä riviä ovat kaikki booleaneja, jotka säätelevät kosketuspainikkeen ja näytön tilaa. Tämän jälkeen meillä on tavuarvot:
tavu hymy [4] = {B00000100, B00110010, B01100100, B01100000}; tavu yllätys [4] = {B00001110, B00001010, B01101110, B10010000}; tavu meh [4] = {B00000100, B00100100, B00100100, B00100000}; tavu surullinen [4] = {B00000010, B01100100, B00110010, B00110000}; tavu kuollut [6] = {B00001010, B00100100, B00101010, B00100000, B01100000, B01101010}; tavuvirhe [8] = {B00111100, B01000010, B10100001, B10010001, B10001001, B10000101, B01000010, B00111100}; // Evil Faces tavu esmile [4] = {B00000010, B00101010, B01000100, B01000000}; tavu elaugh [4] = {B00000010, B00101010, B01100100, B01100000}; tavu eplain [4] = {B00000010, B00101010, B00100100, B00100000}; tavu silmä [4] = {B00000001, B01101001, B01100010, B01100000}; tavu etalk [4] = {B00000001, B00101001, B01100010, B01100000};
Nämä arvot edustavat kaikkia APEX -kasvoja. Jokainen tavu on taulukko, joka sisältää useita bittejä, jotka sanelevat kunkin pikselin tilan tietyllä rivillä. "1" ja "0" vastaavat On/Off.
Asetustoiminto:
Siirrytään seuraavaan osaan, meillä on asetustoiminto.
void setup () {// MS Serial Output Serial.begin (9600);
pinMode (TouchSensor, INPUT);
// LED Matrix Setup lc.shutdown (0, false); lc.setIntensity (0, 4); lc.clearDisplay (0); }
Nimi selittää sen erittäin hyvin. Tässä "asennamme" kosketusanturimme ja näytön. Kaksi ensimmäistä riviä aloittavat sarjalähtömme (käytetään virheenkorjaukseen). Kolmas rivi asettaa kosketusanturin nastan tuloon, ja neljä viimeistä riviä käynnistävät näytön.
Toiminnot kasvojen ilmeille:
Tämä on luultavasti pisin jakso, mutta kaikki on hyvin yksinkertaista ja toistuvaa.
void rikki () {lc.setRow (0, 0, virhe [0]); lc.setRow (0, 1, virhe [1]); lc.setRow (0, 2, virhe [2]); lc.setRow (0, 3, virhe [3]); lc.setRow (0, 4, virhe [4]); lc.setRow (0, 5, virhe [5]); lc.setRow (0, 6, virhe [6]); lc.setRow (0, 7, virhe [7]); }
tyhjä onnellinen () {
lc.setRow (0, 0, hymy [0]); lc.setRow (0, 1, hymy [1]); lc.setRow (0, 2, hymy [2]); lc.setRow (0, 3, hymy [3]); lc.setRow (0, 4, hymy [3]); lc.setRow (0, 5, hymy [2]); lc.setRow (0, 6, hymy [1]); lc.setRow (0, 7, hymy [0]); }
mitätön tavallinen () {
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]); }
tyhjä yllättynyt () {
lc.setRow (0, 0, yllätys [0]); lc.setRow (0, 1, yllätys [1]); lc.setRow (0, 2, yllätys [2]); lc.setRow (0, 3, yllätys [3]); lc.setRow (0, 4, yllätys [3]); lc.setRow (0, 5, yllätys [2]); lc.setRow (0, 6, yllätys [1]); lc.setRow (0, 7, yllätys [0]); }
tyhjä kuoleva () {
lc.setRow (0, 0, kuollut [0]); lc.setRow (0, 1, kuollut [1]); lc.setRow (0, 2, kuollut [2]); lc.setRow (0, 3, kuollut [3]); lc.setRow (0, 4, kuollut [4]); lc.setRow (0, 5, kuollut [5]); lc.setRow (0, 6, kuollut [1]); lc.setRow (0, 7, kuollut [0]); }
tyhjä itku () {
lc.setRow (0, 0, surullinen [0]); lc.setRow (0, 1, surullinen [1]); lc.setRow (0, 2, surullinen [2]); lc.setRow (0, 3, surullinen [3]); lc.setRow (0, 4, surullinen [3]); lc.setRow (0, 5, surullinen [2]); lc.setRow (0, 6, surullinen [1]); lc.setRow (0, 7, surullinen [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, kesto [2]); lc.setRow (0, 3, kesto [3]); lc.setRow (0, 4, kesto [3]); lc.setRow (0, 5, kesto [2]); lc.setRow (0, 6, kesto [1]); lc.setRow (0, 7, kesto [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, silmä [0]); lc.setRow (0, 1, silmä [1]); lc.setRow (0, 2, silmä [2]); lc.setRow (0, 3, silmä [3]); lc.setRow (0, 4, silmä [3]); lc.setRow (0, 5, silmä [2]); lc.setRow (0, 6, silmä [1]); lc.setRow (0, 7, silmä [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]); }
Näitä toimintoja käytetään määrittämään jokainen ilme, käyttäen ensimmäisen osan tavuarvojamme. Jokainen rivi määrittää x -sijainnin ja tavuarvot ja käyttää sitten arvoja kyseiseen sarakkeeseen. Jotkin toiminnot vaativat enemmän rivejä, koska kasvojen arvojen näyttämiseen käytetään enemmän rivejä. Jokainen kasvot ovat symmetrisiä, minkä vuoksi toistamme rivit.
WriteArduinoOnMatrix -toiminto:
Neljännen osan avulla lasketaan ja kirjoitetaan oikeat kasvot LED -näyttöön. Se koostuu sarjan muista if -lauseista, jotka tarkistavat vesi -arvot ja asettavat sitten näytön kutsumalla eri toimintoja edellisestä osasta.
void writeArduinoOnMatrix () {if (sensorValue> 0 && sensorValue 30 && sensorValue 100 && sensorValue 200 && sensorValue 400 && sensorValue 650 && sensorValue <= 800) {yllättynyt (); } muu {rikki (); }}
Saatat huomata, että lisäsimme "rikki" kasvoja vain siltä varalta, että anturi menee toiminta -alueiden ulkopuolelle. Tämä estää joitakin outoja nollavirheitä ja antaa meille paremman visuaalisen käsityksen siitä, mitä koodissa tapahtuu.
Loop -toiminto:
Viimeisenä mutta ei vähäisimpänä on silmukkafunktio. Tämä koodi tekee juuri sen, mitä nimi sanoo, se silmukoi! Vaikka tässä toiminnossa on useita rivejä, se on itse asiassa melko yksinkertainen. Koodi lukee ensin painikkeen tilan ja tarkistaa, onko näyttö "päällä". Jos se toteaa tämän olevan totta, se kutsuu sitten WriteArduinoOnMatrix -funktiota, joka piirtää sitten kasvot APEXiin. Koska tämä toiminto kiertää, se päivittää näytön niin usein kuin haluamme. Tämän viiveen määrää delaytime -muuttuja.
void loop () {if (aloitettu == tosi) {delaytime = 3000; } // Lue -painiketta painettu = digitalRead (TouchSensor);
jos (painettu) {
jos (päällä == tosi) {lc.clearDisplay (0); päällä = epätosi; viive (viive) } muu {päällä = totta; viive (viive) }} sensorValue = analoginenLue (sensorPin); viive (viive) if (päällä == true) {// Draw Faces writeArduinoOnMatrix (); }
aloitettu = totta;
}
Siinä kaikki koodissa. Toivottavasti sinulla on nyt parempi käsitys siitä, miten kaikki toimii, ja voit käyttää tätä tietämystä mukauttaaksesi sen projektillesi!
Koodin siirtäminen Arduinolle
Nyt kun olemme käsitelleet kaiken koodin, on aika siirtää se Arduinolle! Onneksi IDE tekee tästä erittäin yksinkertaisen. Sinun tarvitsee vain kytkeä Arduino tietokoneeseesi USB -kaapelilla ja napsauttaa sitten oikeaa nuolta IDE: n vasemmassa yläkulmassa. Anna koodin työntää, ja sinun pitäisi nähdä onnistumisviesti ohjelman alaosassa, jos teit sen oikein!
Vaihe 5: Piirikaavio
Samoin kuin koodi, piirikaavio ei ole liian monimutkainen. Se koostuu vain kolmesta anturista ja Arduinosta, joten kerron teille pin-outit kullekin, ja jos tarvitset muuta apua, katso vain yllä olevaa kaaviota.
LED -näyttö:
- VCC -> 5V
- GRD -> GRD
- DIN -> Nasta 12
- CS -> Nasta 10
- CLK -> Nasta 11
Kosteusanturi:
- Positiivinen -> 5V
- Negatiivinen -> GRD
- Signaali -> A5
Kapasitiivinen kosketusanturi:
- VCC -> 5V
- GRD -> GRD
- SIG -> 7
Ei liian vaikeaa, eikö? Jos sinulla on ongelmia tämän pistorasian kanssa, muista katsoa alla oleva video, jossa opastan kuinka kytkeä se.
Vaihe 6: Yhdistä kaikki
On vaikea selittää tekstin kautta, miten se sopii yhteen, joten suosittelen ehdottomasti katsomaan tämän osan videon. En todellakaan aio selittää tarkkaan, miten olen koonnut omani, se on liian vaikeaa. Mutta selittääkseni asiat epämääräisesti, juotin johdinliitännät ja käärin ne levyn takaosan ympärille. Sitten asetin anturit paikoilleen ja käytin sähköteippiä pitämään kaikki yhdessä. Lopuksi testasin sitä 9 V: n akulla ja sitten kun tiesin sen toimivan, asetin akun taakse ja teipasin sen myös. Kuten sanoin aiemmin, TARKISTA VIDEO TÄSTÄ VAIHEESTA, siinä on mukava pieni juotossegmentti, joka on nopeutettu ja auttaa käärimään johdot oikein. Voit vapaasti keskeyttää sen tai toistaa sen puoleen nopeuteen, jos eksyt.
Onnittelut! Jos kaikki onnistui, sinulla pitäisi nyt olla täysin toimiva APEX -yksikkö!
Jos haluat testata laitettasi, etsi kasteltu kasvi ja kytke se pistorasiaan! Sinun pitäisi huomata, että se on joko iloinen tai yllättynyt ja tämä tarkoittaa, että sen pitäisi toimia !!! Hienoa työtä projektin loppuunsaattamiseksi!
Vaihe 7: Johtopäätös
Ja se on koko Instructable! Kiitos projektin katsomisesta! Jätä kaikki kysymykset ja kommentit alle ja muista seurata Urban Farming Guysia saadaksesi lisää tällaisia hienoja opetusohjelmia! Haluaisimme kuulla, kuinka APEX -rakennuksesi sujui, ja kuvia arvostetaan suuresti! Kiitos taas vierailustasi, mukavaa päivää!
(Tämä Instructable on saanut inspiraationsa vanhemmasta projektista, Plant Emoji!)
P. S. Tämä Instructable on mukana mikro -ohjauskilpailussa, joten älä unohda äänestää meitä! Arvostamme sitä suuresti:)
P. P. S. Saadaan APEX Make -lehteen! Äänestä täällä! Kiitos:)
Suositeltava:
Automaattinen kasvien kastelujärjestelmä mikron avulla: bitti: 8 vaihetta (kuvilla)
Automaattinen kasvien kastelujärjestelmä Micro: bitin avulla: Tässä ohjeessa näytän sinulle, kuinka rakentaa automaattinen kasvien kastelujärjestelmä käyttämällä Micro: bittiä ja joitain muita pieniä elektronisia komponentteja. Micro: bit käyttää kosteusanturia seurata kasvin maaperän kosteustasoa ja
Keinotekoinen pilvi: 3 vaihetta
Keinotekoinen pilvi: Hei kaikki, tänään teen sateenkaarenvärisen keinotekoisen pilven
Kuinka tehdä realistinen keinotekoinen neonkyltti - erittäin kirkas!: 8 vaihetta (kuvilla)
Kuinka tehdä realistinen Faux -neonkyltti - erittäin kirkas!: Hei kaverit, tämä on minun uusi, täysin alkuperäinen tapa luoda simuloitu neonkyltti LED -valoista, jotka näyttävät erittäin realistisilta. Se näyttää todella puhalletulta lasiputkelta, ja kaikki vaihteleva valo, joka tulee lasin läpi tapahtuvan taittumisen mukana, vaihtelee
Järjestelmä Conversație Bazat Pe Inteligență Keinotekoinen: 6 vaihetta
Sistem De Conversație Bazat Pe Inteligență Keinotekoinen: Kirjoittaja: Stanut Nicolae-RaduGrupa: 333ABNota: 8
Kerroin Lopullinen keinotekoinen artikkeli .: 6 vaihetta
Laajentamisen lopullinen artificielle .: Nous allons effectuer nos tekniikat de multiplication v é g é tative artificielle avec deux plantes