Satura rādītājs:
- 1. darbība. Ievads
- 2. darbība: detaļu un rīku savākšana
- 3. darbība: instalējiet Arduino IDE
- 4. solis: kods
- 5. darbība: shēmas shēma
- 6. solis: salieciet to visu kopā
- 7. solis. Secinājums
Video: Mākslīgais augu emociju izteicējs (A.P.E.X.): 7 soļi (ar attēliem)
2024 Autors: John Day | [email protected]. Pēdējoreiz modificēts: 2024-01-30 10:57
Bet pagaidiet … Ir vēl!
1. darbība. Ievads
Kas ir APEX?
APEX ir gudra (nemaz nerunājot par mīļu) augu uzraudzības ierīce. Vienkārši pievienojiet to jebkuram augam, un tas parādīs auga "laimes" līmeni! Tas ir lielisks atgādinājums laistīt augus, ja jums ir slikts ieradums aizmirst tos laistīt.
Kā tas darbojas?
Maģija. Tikai jokoju! APEX izmanto Arduino, kas piestiprināts mitruma sensoram, kas tiek ievietots auga augsnē. Šis sensors nolasīs augsnes mitruma saturu, un pēc tam Arduino aprēķina, kādu seju parādīt.
Bet kāpēc?
Kāpēc ne?
2. darbība: detaļu un rīku savākšana
Iedziļināsimies tajā! Šai instrukcijai jums būs nepieciešamas diezgan daudz detaļu un rīku. Par laimi, tie visi ir uzskaitīti zemāk:
Mikrokontrolleru konkursa garā šo projektu pilnībā veidoja detaļas, kas iegādātas Amazon! (netiek sponsorēts)
Detaļu saraksts:
- Arduino Uno
- 8x8 LED displejs
- Kapacitatīvs skārienjūtīgais sensors
- Mitruma sensors
- 9V akumulatora savienotājs
- 9V akumulators
Rīku saraksts:
- 22 mērinstruments
- Elektriskā lente
- Stiepļu noņēmēji
- Lodāmurs
- Atkausēšanas sūknis
Kad esat savācis visu nepieciešamo aprīkojumu, ir pienācis laiks iestatīt Arduino programmatūru!
3. darbība: instalējiet Arduino IDE
Lai šis projekts darbotos, mums būs jāspēj programmēt Arduino. Tas prasa datorā lejupielādēt un instalēt Arduino integrēto izstrādes vidi (IDE). Tas ir diezgan vienkāršs skaidrojums, bet es jums pastāstīšu par procesu:
1. Apmeklējiet Arduino vietni
2. Dodieties uz lejupielādes lapu (Programmatūra> Lejupielādes)
3. Noklikšķiniet uz operētājsistēmas lejupielādes saites
Sānu piezīme: programma darbosies operētājsistēmās Windows, Mac un Linux.
4. Instalēšana sistēmā Windows
- Veiciet dubultklikšķi uz lejupielādētā faila, lai to palaistu
- Noklikšķiniet uz "Piekrītu", lai piekristu licencei
- Izpildiet pārējos norādījumus
- Tagad programma ir jāinstalē!
(Ja pazūdat, noteikti apskatiet ekrānuzņēmumus)
5. Instalēšana operētājsistēmā Mac
- Noklikšķiniet uz lejupielādētā faila
- Izvēlieties "Atvērt"
- Programma tiks automātiski instalēta un palaista!
(Ja rodas neskaidrības, noteikti pārbaudiet ekrānuzņēmumus)
6. Tas tā
Un jūs esat pabeidzis! Tagad jūsu sistēmā ir lejupielādēts Arduino IDE!
4. solis: kods
Šis solis ir saistīts ar kodu. Tā ir diezgan īsa programma, tāpēc es kopā ar jums to izskatīšu un paskaidrošu, kā tā darbojas. Pirmkārt, īss pārskats, tad padziļināts skaidrojums un, visbeidzot, kā to nospiest uz Arduino!
Īss pārskats
Tiem no jums, kurus neinteresē detalizēts koda skaidrojums, es piedāvāju TL; DR segmentu! Šeit ir pamata skaidrojums. Arduino ik pēc dažām sekundēm uztver vērtības no mitruma sensora. Pēc tam šī informācija tiek izmantota, lai aprēķinātu un parādītu noteiktu seju! Beigās ir arī mazliet kods, kas ļauj kapacitatīvajai skārientaustiņai ieslēgt un izslēgt displeju. Diezgan vienkārši, vai ne?
Nitty Gritty
Šī apmācības daļa ir paredzēta tiem, kurus ļoti interesē visas programmas darbība pa rindām. Es sniegšu ekrānuzņēmumus iepriekš, lai palīdzētu jums saprast, par ko es runāju, kā arī šajā aprakstā iekļaušu dažas koda rindiņas.
Šī programma ir sadalīta piecās sadaļās:
- Ieskaitot bibliotēkas un mainīgo izveidi
- Iestatīšanas funkcija
- Sejas izteiksmes funkcijas
- Funkcija Rakstīt Arduino uz matricas
- Cilpas funkcija
Ieskaitot bibliotēkas un mainīgo izveidi:
Šī koda pirmā sadaļa ir par mainīgajiem un bibliotēkām, kuras mēs izmantosim.
#include "LedControlMS.h"
#define TouchSensor 7 LedControl lc = LedControl (12, 11, 10, 1); int sensorsPin = A5; int sensorValue = 0; bool sākās = nepatiess; bool on = taisnība; Būla nospiests = LOW;
Pirmajā rindā ir bibliotēka ar nosaukumu LedControlMS. Šī bibliotēka ir nepieciešama, lai varētu nosūtīt vērtības uz LED displeju. Nākamā rinda ir definēšanas paziņojums, kas skārienjutīgā sensora tapu nosaka uz 7. Pēc tam mums ir vēl trīs mainīgie, kas nosaka LED displeja tapas, mitruma sensoru un tā vērtību. Pēdējās trīs rindas ir Būla vērtības, kas regulē pieskāriena pogas un displeja stāvokli. Pēc tam mums ir mūsu baitu vērtības:
baitu smaids [4] = {B00000100, B00110010, B01100100, B01100000}; baitu pārsteigums [4] = {B00001110, B00001010, B01101110, B10010000}; baits meh [4] = {B00000100, B00100100, B00100100, B00100000}; baits skumjš [4] = {B00000010, B01100100, B00110010, B00110000}; baits miris [6] = {B00001010, B00100100, B00101010, B00100000, B01100000, B01101010}; baitu kļūda [8] = {B00111100, B01000010, B10100001, B10010001, B10001001, B10000101, B01000010, B00111100}; // Ļaunās sejas baits esmile [4] = {B00000010, B00101010, B01000100, B01000000}; baits elaugh [4] = {B00000010, B00101010, B01100100, B01100000}; baits eplain [4] = {B00000010, B00101010, B00100100, B00100000}; baita acs [4] = {B00000001, B01101001, B01100010, B01100000}; baitu etalk [4] = {B00000001, B00101001, B01100010, B01100000};
Šīs vērtības attēlo visas APEX sejas. Katrs baits ir masīvs, kas satur vairākus bitus, kas nosaka katra pikseļa stāvokli noteiktā rindā. "1" un "0" ir attiecīgi ieslēgts/izslēgts.
Iestatīšanas funkcija:
Pārejot uz nākamo sadaļu, mums ir mūsu iestatīšanas funkcija.
void setup () {// MS Serial Output Serial.begin (9600);
pinMode (TouchSensor, INPUT);
// LED matricas iestatīšana lc.shutdown (0, false); lc.setIntensity (0, 4); lc.clearDisplay (0); }
Nosaukums to ļoti labi izskaidro. Šeit mēs "iestatām" savu skārienjūtīgo sensoru un displeju. Pirmās divas rindas sāk mūsu sērijas izvadi (izmanto atkļūdošanai). Trešā līnija pieskaras sensora tapu uz ievadi, un pēdējās četras rindas sāk displeju.
Sejas izteiksmes funkcijas:
Iespējams, šī ir garākā sadaļa, taču tā ir ļoti vienkārša un atkārtojas.
void sadalīti () {lc.setRow (0, 0, kļūda [0]); lc.setRow (0, 1, kļūda [1]); lc.setRow (0, 2, kļūda [2]); lc.setRow (0, 3, kļūda [3]); lc.setRow (0, 4, kļūda [4]); lc.setRow (0, 5, kļūda [5]); lc.setRow (0, 6, kļūda [6]); lc.setRow (0, 7, kļūda [7]); }
tukšs laimīgs () {
lc.setRow (0, 0, smaids [0]); lc.setRow (0, 1, smaids [1]); lc.setRow (0, 2, smaids [2]); lc.setRow (0, 3, smaids [3]); lc.setRow (0, 4, smaids [3]); lc.setRow (0, 5, smaids [2]); lc.setRow (0, 6, smaids [1]); lc.setRow (0, 7, smaids [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]); }
tukšums pārsteigts () {
lc.setRow (0, 0, pārsteigums [0]); lc.setRow (0, 1, pārsteigums [1]); lc.setRow (0, 2, pārsteigums [2]); lc.setRow (0, 3, pārsteigums [3]); lc.setRow (0, 4, pārsteigums [3]); lc.setRow (0, 5, pārsteigums [2]); lc.setRow (0, 6, pārsteigums [1]); lc.setRow (0, 7, pārsteigums [0]); }
tukšums mirst () {
lc.setRow (0, 0, miris [0]); lc.setRow (0, 1, miris [1]); lc.setRow (0, 2, miris [2]); lc.setRow (0, 3, miris [3]); lc.setRow (0, 4, miris [4]); lc.setRow (0, 5, miris [5]); lc.setRow (0, 6, miris [1]); lc.setRow (0, 7, miris [0]); }
tukša raudāšana () {
lc.setRow (0, 0, skumji [0]); lc.setRow (0, 1, skumji [1]); lc.setRow (0, 2, skumji [2]); lc.setRow (0, 3, skumji [3]); lc.setRow (0, 4, skumji [3]); lc.setRow (0, 5, skumji [2]); lc.setRow (0, 6, skumji [1]); lc.setRow (0, 7, skumji [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, acs [0]); lc.setRow (0, 1, acs [1]); lc.setRow (0, 2, acs [2]); lc.setRow (0, 3, acs [3]); lc.setRow (0, 4, acs [3]); lc.setRow (0, 5, acs [2]); lc.setRow (0, 6, acs [1]); lc.setRow (0, 7, acs [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]); }
Šīs funkcijas tiek izmantotas, lai definētu katru sejas izteiksmi, izmantojot mūsu baitu vērtības no pirmās sadaļas. Katra rinda nosaka x pozīciju un baitu vērtības un pēc tam attiecina šīs kolonnas vērtības. Dažām funkcijām ir vajadzīgas vairāk rindu, jo šīs sejas vērtību parādīšanai tiek izmantotas vairāk rindas. Katra seja ir simetriska, tāpēc mēs atkārtojam līnijas.
Funkcija WriteArduinoOnMatrix:
Ceturto sadaļu izmanto, lai aprēķinātu un rakstītu pareizās sejas uz LED displeja. Tas sastāv no virknes citu paziņojumu, kas pārbauda ūdens vērtības un pēc tam iestata displeju, izsaucot dažādas funkcijas no iepriekšējās sadaļas.
void writeArduinoOnMatrix () {if (sensorValue> 0 && sensorValue 30 && sensorValue 100 && sensorValue 200 && sensorValue 400 && sensorValue 650 && sensorValue <= 800) {pārsteigts (); } cits {salauzts (); }}
Jūs varat pamanīt, ka mēs pievienojām "salauztas" sejas tikai gadījumā, ja sensors iziet ārpus darba diapazona. Tas novērš dažas dīvainas nulles kļūdas un ļauj mums labāk vizuāli saprast, kas notiek kodā.
Cilpas funkcija:
Pēdējais, bet ne mazāk svarīgais ir cilpas funkcija. Šis kods dara tieši to, ko saka nosaukums, tas ir cilpas! Lai gan šajā funkcijā ir diezgan daudz rindu, patiesībā tas ir diezgan vienkārši. Kods vispirms nolasa pogas stāvokli un redz, vai displejs ir ieslēgts. Ja tā konstatē, ka tā ir patiesība, tā izsauks funkciju WriteArduinoOnMatrix, kas pēc tam uzzīmēs seju uz APEX. Tā kā šī funkcija darbojas, tā atjauninās displeju tik bieži, cik mēs vēlamies. Šo aizkavi nosaka delaytime mainīgais.
void loop () {ja (sākās == true) {delaytime = 3000; } // Lasīšanas poga nospiesta = digitalRead (TouchSensor);
ja (nospiests) {
ja (ieslēgts == true) {lc.clearDisplay (0); ieslēgts = nepatiess; kavēšanās (kavēšanās laiks); } cits {ies = patiess; kavēšanās (kavēšanās laiks); }} sensorValue = analogRead (sensorPin); kavēšanās (kavēšanās laiks); if (on == true) {// Draw Faces writeArduinoOnMatrix (); }
sākās = taisnība;
}
Tas ir viss, kas kodā. Cerams, ka tagad jūs labāk saprotat, kā tas viss darbojas, un varat izmantot šīs zināšanas, lai sāktu to pielāgot savam projektam!
Nosūtot kodu uz Arduino
Tagad, kad esam aptvēruši visu kodu, ir pienācis laiks to pārvietot uz Arduino! Par laimi, IDE to padara ļoti vienkāršu. Viss, kas jums jādara, ir savienot Arduino ar datoru, izmantojot USB kabeli, un pēc tam vienkārši noklikšķiniet uz labās bultiņas IDE augšējā kreisajā stūrī. Ļaujiet kodam spiest, un, ja to izdarījāt pareizi, programmas apakšā vajadzētu redzēt panākumu ziņojumu!
5. darbība: shēmas shēma
Līdzīgi kā kods, shēma nav pārāk sarežģīta. Tas sastāv tikai no trim sensoriem un Arduino, tāpēc es jums pastāstīšu, kā to izdarīt, un, ja jums nepieciešama cita palīdzība, vienkārši skatiet iepriekš redzamo diagrammu.
LED displejs:
- VCC -> 5V
- GRD -> GRD
- DIN -> 12. tapa
- CS -> 10. tapa
- CLK -> 11. tapa
Mitruma sensors:
- Pozitīvs -> 5V
- Negatīvs -> GRD
- Signāls -> A5
Kapacitīvais skārienjūtīgais sensors:
- VCC -> 5V
- GRD -> GRD
- SIG -> 7
Nav pārāk grūti, vai ne? Ja jums ir kādas problēmas ar šo piespraušanu, noteikti skatiet tālāk redzamo videoklipu, kur es jums pastāstīšu, kā to savienot.
6. solis: salieciet to visu kopā
Ar tekstu ir grūti izskaidrot, kā tas viss sader kopā, tāpēc es noteikti ieteiktu noskatīties šīs daļas video. Es patiesībā neskaidrošu, kā es saliku savējo, tas ir pārāk grūti. Bet, lai izskaidrotu lietas neskaidri, es pielodēju vadu savienojumus un aptinu tos ap dēļa aizmuguri. Tad es novietoju sensorus un izmantoju elektrisko lenti, lai to visu turētu kopā. Visbeidzot, es to pārbaudīju ar 9 V akumulatoru, un tad, kad es zināju, ka tas darbojas, ievietoju akumulatoru aizmugurē un arī to uzlīmēju. Kā jau teicu iepriekš, PĀRBAUDIET ŠO SOLI VIDEO, tajā ir jauks mazs lodēšanas segments, kas tiek paātrināts un palīdzēs pareizi aptīt vadus. Ja esat apmaldījies, varat to apturēt vai atskaņot ar pusi ātruma.
Apsveicam! Ja viss noritēja veiksmīgi, jums tagad vajadzētu būt pilnībā funkcionējošai APEX vienībai!
Lai pārbaudītu savu ierīci, atrodiet dzirdinātu augu un pievienojiet to! Jums vajadzētu atrast, ka tas ir laimīgs vai pārsteigts, un tas nozīmē, ka tam vajadzētu darboties !!! Lielisks darbs, lai pabeigtu projektu!
7. solis. Secinājums
Un tas ir viss Instructable! Paldies, ka pārbaudījāt projektu! Atstājiet visus jautājumus un komentārus zemāk un noteikti sekojiet Urban Farming Guys, lai iegūtu vairāk foršu pamācību, piemēram, šo! Mēs labprāt dzirdētu par to, kā gāja jūsu APEX uzbūve, un attēli tiek ļoti novērtēti! Paldies vēlreiz, ka apmeklējāt, lai jums lieliska diena!
(Šo pamācību iedvesmoja vecāks projekts - Plant Emoji!)
P. S. Šī pamācība ir iekļauta konkursā Mikrokontrolleri, tāpēc neaizmirstiet balsot par mums! Mēs to ļoti novērtējam:)
P. P. S. Iegūsim APEX žurnālā Make! Balso šeit! Paldies:)
Ieteicams:
Viedais iekštelpu augu monitors - ziniet, kad jūsu augu nepieciešams laistīt: 8 soļi (ar attēliem)
Viedais iekštelpu augu monitors - ziniet, kad jūsu augu nepieciešams laistīt: Pirms pāris mēnešiem es izveidoju augsnes mitruma uzraudzības nūju, kas darbojas ar akumulatoru un kuru var iestrēgt augsnē jūsu istabas auga podiņā, lai sniegtu jums noderīgu informāciju par augsni mitruma līmenis un zibspuldzes gaismas diodes, kas norāda, kad jāgaida
Mākslīgais intelekts un attēlu atpazīšana, izmantojot HuskyLens: 6 soļi (ar attēliem)
Mākslīgais intelekts un attēlu atpazīšana, izmantojot HuskyLens: Hei, kas notiek, puiši! Akarsh šeit no CETech. Šajā projektā mēs apskatīsim HuskyLens no DFRobot. Tas ir ar AI darbināms kameras modulis, kas spēj veikt vairākas mākslīgā intelekta darbības, piemēram, sejas atpazīšanu
Emociju izteicējs: 4 soļi
Emociju izteicējs: Ievads: Šī mašīna ir emociju izpausme, tā darbojas, palīdzot cilvēkiem, kuri nemāk izteikt savas jūtas, izteikt savas jūtas. Šī mašīna var palīdzēt cilvēkiem, kuriem nepieciešama palīdzība vai kāds, kas viņus uzklausa, sūdzas par lietām, kas ir
Emociju tastatūra: 5 soļi (ar attēliem)
Emociju tastatūra: dažreiz, rakstot korespondenci datorā, nepietiek ar vārdiem, un jums ir nepieciešams kaut kas nedaudz krāsaināks, lai nodotu savu ziņojumu, ievadiet emocijzīmes! Emocijas ir mazas grafiskas ikonas, kas sniedz sajūtu vai ideju, un to ir simtiem
Saules uz augu balstīta augu pārvaldība ar ESP32: 7 soļi (ar attēliem)
Saules uz augu balstīta augu pārvaldība ar ESP32: augu audzēšana ir jautra, un laistīšana un kopšana nav īsti apgrūtinoša. Mikrokontrolleru lietojumprogrammas, lai uzraudzītu viņu veselību, ir pieejamas visā internetā, un to dizaina iedvesma nāk no auga statiskā rakstura un vienkāršas uzraudzības