Përmbajtje:
- Hapi 1: Hyrje
- Hapi 2: Mbledhja e Pjesëve dhe Mjeteve
- Hapi 3: Instalimi i Arduino IDE
- Hapi 4: Kodi
- Hapi 5: Diagrami i Qarkut
- Hapi 6: Vendosja e të gjitha së bashku
- Hapi 7: Përfundimi
Video: Shprehësi i Emocionit të Bimëve Artificiale (A.P.E.X.): 7 hapa (me fotografi)
2024 Autor: John Day | [email protected]. E modifikuara e fundit: 2024-01-30 12:26
Por prisni … Ka më shumë!
Hapi 1: Hyrje
Çfarë është APEX?
APEX është një pajisje e zgjuar (për të mos përmendur bukur) për monitorimin e bimëve. Thjesht futeni atë në çdo bimë dhe do të shfaqë nivelin e "lumturisë" së bimës! Ky është një kujtesë e shkëlqyeshme për të ujitur bimët tuaja nëse keni një zakon të keq të harroni të ujisni ato.
Si punon?
Magjike. Vetëm shaka! APEX përdor një Arduino të lidhur me një sensor lagështie, i cili futet në tokën e uzinës. Ky sensor do të lexojë përmbajtjen e lagështirës së tokës, dhe pastaj Arduino llogarit se çfarë fytyre të shfaqet.
Por pse?
Pse jo?
Hapi 2: Mbledhja e Pjesëve dhe Mjeteve
Le të futemi në të! Për këtë Udhëzues, do t'ju duhen mjaft pjesë dhe mjete. Për fatin tuaj të mirë, të gjitha ato janë të listuara më poshtë:
Në frymën e Konkursit të Mikrokontrolluesve, ky projekt u bë plotësisht nga pjesët e blera në Amazon! (jo i sponsorizuar)
Lista e Pjesëve:
- Arduino Uno
- Ekran LED 8x8
- Sensori me prekje me kapacitet
- Sensor lagështie
- Lidhës baterie 9V
- Bateri 9V
Lista e mjeteve:
- 22 Tela matës
- Shirit Elektrik
- Zhveshëset me tela
- Makine per ngjitjen e metalit
- Pompë e shkrirjes
Pasi të keni mbledhur të gjitha pajisjet e nevojshme, është koha për të konfiguruar programin Arduino!
Hapi 3: Instalimi i Arduino IDE
Që ky projekt të funksionojë, do të na duhet të jemi në gjendje të programojmë Arduino. Kjo kërkon shkarkimin dhe instalimin e Arduino Integrated Development Environment (IDE) në kompjuterin tuaj. Ashtë një shpjegim mjaft i thjeshtë, por unë do t'ju tregoj përmes procesit:
1. Vizitoni Uebfaqen e Arduino
2. Shkoni te Faqja e Shkarkimeve (Softuer> Shkarkime)
3. Klikoni në Lidhjen e Shkarkimit për Sistemin tuaj Operativ
Shënim anësor: Programi do të funksionojë në Windows, Mac dhe Linux.
4. Instalimi në Windows
- Klikoni dy herë mbi skedarin e shkarkuar për ta ekzekutuar
- Klikoni "Pajtohem" për t'u pajtuar me Licencën
- Ndiqni pjesën tjetër të kërkesave
- Programi tani duhet të instalohet!
(Sigurohuni që të shikoni pamjet e ekranit nëse humbni)
5. Instalimi në Mac
- Klikoni në skedarin e shkarkuar
- Zgjidhni "Hap"
- Programi do të instalohet dhe ekzekutohet automatikisht!
(Sigurohuni që të shikoni pamjet e ekranit nëse ngatërroheni)
6. Kjo është ajo
Dhe mbaruat! Tani keni Arduino IDE të shkarkuar në sistemin tuaj!
Hapi 4: Kodi
Ky hap ka të bëjë me kodin. Shtë një program mjaft i shkurtër, kështu që unë do ta shqyrtoj me ju dhe do t'ju shpjegoj se si funksionon. Së pari, një përmbledhje e shkurtër, pastaj një shpjegim i thelluar, dhe më në fund si ta shtyni atë në Arduino!
Vështrim i shkurtër
Për ata prej jush që nuk janë të interesuar në shpjegimin e hollësishëm të kodit, unë po ofroj një segment TL; DR! Këtu është shpjegimi bazë. Arduino kap vlerat nga sensori i lagështisë çdo disa sekonda. Ky informacion përdoret më pas për të llogaritur dhe shfaqur një fytyrë të caktuar! Ekziston edhe një kod në fund, i cili le të ndezë dhe fikë ekranin butonin kapacitiv të prekjes. Mjaft e thjeshtë apo jo?
The Nitty Gritty
Kjo pjesë e mësimit është për ata që janë shumë të interesuar se si funksionon i gjithë programi, rresht pas rreshti. Unë do të ofroj pamje të ekranit më lart për t'ju ndihmuar të kuptoni se për çfarë po flas, si dhe të përfshijë disa nga linjat e kodit në këtë përshkrim.
Ky program është i ndarë në pesë pjesë:
- Përfshirë Bibliotekat dhe Krijimin e Variablave
- Funksioni i konfigurimit
- Funksionet për shprehjet e fytyrës
- Funksioni Shkruaj Arduino mbi Matricën
- Funksioni i lakut
Përfshirë Bibliotekat dhe Krijimin e Variablave:
Seksioni i parë i këtij kodi ka të bëjë me variablat dhe bibliotekat që do të përdorim.
#përfshi "LedControlMS.h"
#define TouchSensor 7 LedControl lc = LedControl (12, 11, 10, 1); int sensorPin = A5; int sensorVlera = 0; bool filluar = false; bool on = e vërtetë; boolean presion = LOW;
Linja e parë përfshin një bibliotekë të quajtur LedControlMS. Kjo bibliotekë kërkohet që të jetë në gjendje të dërgojë vlera në ekranin LED. Linja tjetër është një deklaratë e përcaktuar që vendos pinin për sensorin e prekjes në 7. Pas kësaj ne kemi tre ndryshore të tjera që përcaktojnë kunjat për ekranin LED, sensorin e lagështisë dhe vlerën e tij. Tre rreshtat e fundit janë të gjitha booleans që rregullojnë gjendjen e butonit të prekjes dhe ekranit. Pas kësaj, ne kemi vlerat tona të bajtit:
byte buzëqeshje [4] = {B00000100, B00110010, B01100100, B01100000}; byte surprizë [4] = {B00001110, B00001010, B01101110, B10010000}; byte meh [4] = {B00000100, B00100100, B00100100, B00100000}; byte e trishtuar [4] = {B00000010, B01100100, B00110010, B00110000}; byte i vdekur [6] = {B00001010, B00100100, B00101010, B00100000, B01100000, B01101010}; byte gabim [8] = {B00111100, B01000010, B10100001, B10010001, B10001001, B10000101, B01000010, B00111100}; // Fytyrat e liga byte esmile [4] = {B00000010, B00101010, B01000100, B01000000}; byte elaugh [4] = {B00000010, B00101010, B01100100, B01100000}; byte eplain [4] = {B00000010, B00101010, B00100100, B00100000}; byte eyell [4] = {B00000001, B01101001, B01100010, B01100000}; byte etalk [4] = {B00000001, B00101001, B01100010, B01100000};
Këto vlera përfaqësojnë të gjitha fytyrat e APEX. Çdo bajt është një grup i cili përmban bit të shumtë që diktojnë gjendjen e secilit piksel në një rresht të caktuar. "1" dhe "0" përfaqësojnë përkatësisht On/Off.
Funksioni i konfigurimit:
Duke kaluar në pjesën tjetër, ne kemi funksionin tonë të konfigurimit.
void setup () {// MS Serial Output Serial.begin (9600);
pinMode (TouchSensor, INPUT);
// LED Matrix Setup lc.shutdown (0, false); lc. Intensiteti (0, 4); lc. ClearDisplay (0); }
Emri e shpjegon shumë mirë. Këtu "konfigurojmë" sensorin dhe ekranin tonë të prekjes. Dy rreshtat e parë fillojnë daljen tonë serike (përdoret për korrigjim). Linja e tretë vendos pinin e sensorit të prekjes në një hyrje dhe katër rreshtat e fundit fillojnë ekranin.
Funksionet për shprehjet e fytyrës:
Ky është ndoshta pjesa më e gjatë mbi të gjitha, por është e gjitha shumë e thjeshtë dhe e përsëritur.
zbrazëti e thyer () {lc.setRow (0, 0, gabim [0]); lc.setRow (0, 1, gabim [1]); lc.setRow (0, 2, gabim [2]); lc.setRow (0, 3, gabim [3]); lc.setRow (0, 4, gabim [4]); lc.setRow (0, 5, gabim [5]); lc.setRow (0, 6, gabim [6]); lc.setRow (0, 7, gabim [7]); }
i zbrazët i lumtur () {
lc.setRow (0, 0, buzëqeshje [0]); lc.setRow (0, 1, buzëqeshje [1]); lc.setRow (0, 2, buzëqeshje [2]); lc.setRow (0, 3, buzëqeshje [3]); lc.setRow (0, 4, buzëqeshje [3]); lc.setRow (0, 5, buzëqeshje [2]); lc.setRow (0, 6, buzëqeshje [1]); lc.setRow (0, 7, buzëqeshje [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]); }
zbrazëti i befasuar () {
lc.setRow (0, 0, surprizë [0]); lc.setRow (0, 1, surprizë [1]); lc.setRow (0, 2, surprizë [2]); lc.setRow (0, 3, befasi [3]); lc.setRow (0, 4, befasi [3]); lc.setRow (0, 5, surprizë [2]); lc.setRow (0, 6, surprizë [1]); lc.setRow (0, 7, surprizë [0]); }
void vdes () {
lc.setRow (0, 0, i vdekur [0]); lc.setRow (0, 1, i vdekur [1]); lc.setRow (0, 2, i vdekur [2]); lc.setRow (0, 3, të vdekur [3]); lc.setRow (0, 4, të vdekur [4]); lc.setRow (0, 5, të vdekur [5]); lc.setRow (0, 6, të vdekur [1]); lc.setRow (0, 7, të vdekur [0]); }
qarje e zbrazët () {
lc.setRow (0, 0, i trishtuar [0]); lc.setRow (0, 1, i trishtuar [1]); lc.setRow (0, 2, i trishtuar [2]); lc.setRow (0, 3, i trishtuar [3]); lc.setRow (0, 4, e trishtuar [3]); lc.setRow (0, 5, i trishtuar [2]); lc.setRow (0, 6, i trishtuar [1]); lc.setRow (0, 7, trishtim [0]); }
i pavlefshem keq () {
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, syri [0]); lc.setRow (0, 1, qepalla [1]); lc.setRow (0, 2, qepalla [2]); lc.setRow (0, 3, qepalla [3]); lc.setRow (0, 4, qepalla [3]); lc.setRow (0, 5, qepalla [2]); lc.setRow (0, 6, qepalla [1]); lc.setRow (0, 7, qepalla [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]); }
Këto funksione përdoren për të përcaktuar çdo shprehje të fytyrës duke përdorur vlerat tona të bajtit nga pjesa e parë. Çdo rresht përcakton një pozicion x dhe vlera të bajtit dhe më pas aplikon vlerat në atë kolonë. Disa funksione kërkojnë më shumë rreshta sepse ka më shumë rreshta të përdorur për të shfaqur vlerat e asaj fytyre. Çdo faqe është simetrike, kjo është arsyeja pse ne përsërisim rreshtat.
Funksioni WriteArduinoOnMatrix:
Seksioni i katërt përdoret për të llogaritur dhe shkruar shkrimet e duhura në ekranin LED. Ai përbëhet nga një seri deklaratash të tjera if që kontrollojnë vlerat e ujit dhe më pas vendos ekranin duke thirrur funksione të ndryshme nga pjesa e mëparshme.
void writeArduinoOnMatrix () {if (sensorVlera> 0 && sensorVlera 30 && sensorVlera 100 && sensorVlera 200 && sensorVlera 400 && sensorVlera 650 && sensorVlera <= 800) {befasuar (); } else {e thyer (); }}
Ju mund të vini re se kemi shtuar fytyra "të thyera" vetëm në rast se sensori del jashtë kufijve të punës. Kjo parandalon disa gabime të pazakonta nul që ndodhin dhe na jep një kuptim më të mirë vizual të asaj që po ndodh brenda kodit.
Funksioni i lakut:
E fundit por jo më pak e rëndësishme është funksioni loop. Ky kod bën pikërisht atë që thotë emri i tij, ai bën sythe! Edhe pse ka mjaft rreshta në këtë funksion, është në të vërtetë mjaft e thjeshtë. Kodi së pari lexon gjendjen e butonit dhe shikon nëse ekrani është "On". Nëse e gjen këtë të vërtetë, atëherë do të thërrasë funksionin WriteArduinoOnMatrix, i cili më pas do të tërheqë një fytyrë në APEX. Meqenëse ky funksion lakon, ai do të azhurnojë ekranin aq shpesh sa ne duam. Kjo vonesë diktohet nga variabla e vonesës.
lak void () {if (start == true) {timetime = 3000; } // Butoni i leximit i shtypur = digitalRead (TouchSensor);
nëse (shtypur) {
nëse (në == e vërtetë) {lc.clearDisplay (0); on = false; vonesë (vonesë); } tjetër {në = e vërtetë; vonesë (vonesë); }} sensorValue = analogRead (sensorPin); vonesë (vonesë); if (on == true) {// Draw Faces writeArduinoOnMatrix (); }
filluar = e vërtetë;
}
Kjo është gjithçka që ka në kod. Shpresoj se tani ju keni një kuptim më të mirë se si funksionon gjithçka, dhe mund t'i përdorni këto njohuri për të filluar ta personalizoni atë në projektin tuaj!
Shtyrja e Kodit tek Arduino
Tani që kemi mbuluar të gjithë kodin, është koha ta shtyjmë atë në Arduino! Për fat të mirë, IDE e bën këtë shumë të thjeshtë. E tëra çfarë ju duhet të bëni është ta lidhni Arduino -n tuaj në kompjuterin tuaj me një kabllo USB dhe pastaj thjesht klikoni shigjetën e djathtë në pjesën e sipërme të majtë të IDE. Lëreni kodin të shtyjë dhe ju duhet të shihni një mesazh suksesi në fund të programit nëse e keni bërë atë si duhet!
Hapi 5: Diagrami i Qarkut
Ngjashëm me kodin, diagrami i qarkut nuk është shumë i komplikuar. Ai përbëhet vetëm nga tre sensorë dhe Arduino, kështu që unë do t'ju tregoj përfundimet për secilin, dhe nëse keni nevojë për ndonjë ndihmë tjetër, thjesht referojuni diagramit të mësipërm.
Ekrani LED:
- VCC -> 5V
- GRD -> GRD
- DIN -> Pin 12
- CS -> Pin 10
- CLK -> Pin 11
Sensori i lagështisë:
- Pozitiv -> 5V
- Negativ -> GRD
- Sinjali -> A5
Sensori prekës kapacitiv:
- VCC -> 5V
- GRD -> GRD
- SIG -> 7
Jo shumë e vështirë, apo jo? Nëse keni ndonjë problem me këtë dalje, sigurohuni që t'i referoheni videos më poshtë ku do t'ju tregoj se si ta lidhni atë.
Hapi 6: Vendosja e të gjitha së bashku
Hardshtë e vështirë të shpjegosh mbi tekstin se si përshtatet të gjitha së bashku, kështu që patjetër që do të sugjeroja të shikosh videon për këtë pjesë. Unë në fakt nuk do të shpjegoj saktësisht se si e bashkova timen, është shumë e vështirë. Por për t'i shpjeguar gjërat në mënyrë të paqartë, unë u ngjita në lidhjet me tela dhe i mbështolla ato në anën e pasme të tabelës. Pastaj vendosa sensorët dhe përdor kasetë elektrike për t'i mbajtur të gjitha së bashku. Së fundmi, e testova me baterinë 9V, dhe pastaj sapo e dija se funksiononte, e vendosa baterinë në anën e pasme dhe e fiksova atë gjithashtu. Siç thashë më parë, SHECNONI VIDEON P FORR KIST HAPEP, ai ka një segment të bukur të vogël të saldimit që është i shpejtë dhe do t'ju ndihmojë të mbështillni telat në mënyrë korrekte. Ndjehuni të lirë ta ndaloni ose ta luani me gjysmë shpejtësie nëse humbni.
Urime! Nëse gjithçka shkoi me sukses, tani duhet të keni një njësi APEX plotësisht funksionale!
Për të provuar njësinë tuaj, gjeni një bimë të ujitur dhe futeni në prizë! Ju duhet të gjeni se është ose i lumtur ose i befasuar dhe kjo do të thotë se duhet të funksionojë !!! Punë e shkëlqyeshme për përfundimin e projektit!
Hapi 7: Përfundimi
Dhe kjo është e tëra e udhëzueshme! Faleminderit që shikuat projektin! Lini çdo pyetje dhe koment më poshtë dhe sigurohuni që të ndiqni Djemtë e Bujqësisë Urbane për mësime më interesante si kjo! Ne do të donim të dëgjonim se si shkoi ndërtimi juaj APEX, dhe fotografitë vlerësohen shumë! Faleminderit përsëri për kalimin, kaloni një ditë të mrekullueshme!
(Ky Instructable u frymëzua nga një projekt më i vjetër, Poj Emoji!)
P. S. Ky udhëzues futet në konkursin e Mikrokontrolluesve, kështu që mos harroni të votoni për ne! Ne e vlerësojmë shumë:)
P. P. S. Le të marrim APEX në Make Magazine! Votoni këtu! Faleminderit:)
Recommended:
Sistemi automatik i ujitjes së bimëve duke përdorur një mikro: bit: 8 hapa (me fotografi)
Sistemi automatik i ujitjes së bimëve duke përdorur një mikro: bit: Në këtë udhëzues, unë do t'ju tregoj se si të ndërtoni një sistem automatik të ujitjes së bimëve duke përdorur një mikro: bit dhe disa përbërës të tjerë të vegjël elektronikë. Micro: bit përdor një sensor lagështie për të monitoruar nivelin e lagështisë në tokën e bimës dhe
Monitor i zgjuar i bimëve të brendshme - Mësoni kur bima juaj ka nevojë për lotim: 8 hapa (me fotografi)
Monitor i zgjuar i bimëve të brendshme - Mësoni kur bima juaj ka nevojë për lotim: Disa muaj më parë, unë bëra një shkop monitorues të lagështisë së tokës që është me bateri dhe mund të ngjitet në tokë në tenxheren e bimës tuaj të brendshme për t'ju dhënë disa informacione të dobishme në lidhje me tokën niveli i lagështisë dhe dritat LED për t'ju treguar kur duhet të
Inteligjenca artificiale dhe njohja e imazhit duke përdorur HuskyLens: 6 hapa (me fotografi)
Inteligjenca artificiale dhe njohja e imazhit duke përdorur HuskyLens: Hej, çfarë ka, djema! Akarsh këtu nga CETech. Në këtë projekt, ne do të kemi një vështrim mbi HuskyLens nga DFRobot. Shtë një modul kamerash i mundësuar nga AI që është i aftë të bëjë disa operacione të Inteligjencës Artificiale siç është Face Recognitio
Dhoma e automatizuar e rritjes së bimëve: 7 hapa (me fotografi)
Dhoma e Automatizuar e Rritjes së Bimëve: Projekti i mëposhtëm është paraqitja ime në Konkursin Growing Beyond Earth Maker në ndarjen e Shkollës së Mesme. Dhoma e rritjes së bimëve ka një sistem lotimi plotësisht të automatizuar. Kam përdorur pompa peristaltike, sensorë lagështie dhe një mikrokontrollues për të automatizuar
Drone e kopshtarisë për inspektimin e bimëve DIY (Tricopter i palosshëm me një buxhet): 20 hapa (me fotografi)
Drone për kopshtarinë e inspektimit të bimëve DIY (Tricopter i palosshëm me një buxhet): Në shtëpinë tonë të fundjavës ne kemi një kopsht të bukur të vogël me shumë fruta dhe perime, por ndonjëherë është thjesht e vështirë të vazhdosh me mënyrën se si ndryshojnë bimët. Ata kanë nevojë për mbikëqyrje të vazhdueshme dhe janë shumë të prekshëm nga moti, infeksionet, insektet, etj … Unë