Obsah:
- Krok 1: Úvod
- Krok 2: Zhromaždenie dielov a nástrojov
- Krok 3: Inštalácia Arduino IDE
- Krok 4: Kód
- Krok 5: Schéma zapojenia
- Krok 6: Dajte to všetko dohromady
- Krok 7: Záver
Video: Expresor emócií umelej rastliny (A.P.E.X.): 7 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:00
Ale počkajte … Je toho viac!
Krok 1: Úvod
Čo je to APEX?
APEX je inteligentné (nehovoriac o roztomilom) zariadení na monitorovanie rastlín. Jednoducho ho zapojte do akejkoľvek rastliny a zobrazí úroveň „šťastia“rastliny! Toto je skvelá pripomienka na polievanie vašich rastlín, ak máte zlozvyk, že ich zabúdate polievať.
Ako to funguje?
Mágia. Robím si srandu! APEX používa Arduino pripevnené k senzoru vlhkosti, ktorý je vložený do pôdy rastliny. Tento senzor odčíta obsah vlhkosti v pôde a potom Arduino vypočíta, akú tvár má zobraziť.
Ale prečo?
Prečo nie?
Krok 2: Zhromaždenie dielov a nástrojov
Poďme do toho! Na tento návod budete potrebovať niekoľko dielov a nástrojov. Našťastie pre vás sú všetky uvedené nižšie:
V duchu súťaže o mikrokontroléry bol tento projekt kompletne vyrobený z dielov zakúpených na Amazone! (nie je sponzorovaný)
Zoznam položiek:
- Arduino Uno
- LED displej 8x8
- Kapacitný dotykový senzor
- Senzor vlhkosti
- 9V konektor pre batériu
- 9V batéria
Zoznam nástrojov:
- 22 merací drôt
- Elektrická páska
- Odizolovače drôtov
- Spájkovačka
- Odpájacie čerpadlo
Keď máte zhromaždené všetko potrebné vybavenie, je čas nastaviť softvér Arduino!
Krok 3: Inštalácia Arduino IDE
Aby tento projekt fungoval, budeme potrebovať vedieť naprogramovať Arduino. Vyžaduje si to stiahnutie a nainštalovanie integrovaného vývojového prostredia (IDE) Arduino do počítača. Je to pomerne jednoduché vysvetlenie, ale prevediem vás týmto procesom:
1. Navštívte webovú stránku Arduino
2. Prejdite na stránku sťahovania (Softvér> Na stiahnutie)
3. Kliknite na odkaz Prevziať pre váš operačný systém
Bočná poznámka: Program bude fungovať na systémoch Windows, Mac a Linux.
4. Inštalácia v systéme Windows
- Stiahnutý súbor spustíte dvojitým kliknutím
- Kliknutím na „Súhlasím“súhlasíte s licenciou
- Postupujte podľa ostatných pokynov
- Program by mal byť nainštalovaný!
(Ak sa stratíte, pozrite sa na snímky obrazovky)
5. Inštalácia na Mac
- Kliknite na stiahnutý súbor
- Vyberte „Otvoriť“
- Program sa automaticky nainštaluje a spustí!
(Ak ste zmätení, nezabudnite si pozrieť snímky obrazovky)
6. To je všetko
A ste hotoví! Teraz máte Arduino IDE stiahnuté do vášho systému!
Krok 4: Kód
Tento krok je o kóde. Je to dosť krátky program, takže sa na to s vami pozriem a vysvetlím, ako to funguje. Najprv stručný prehľad, potom hĺbkové vysvetlenie a nakoniec, ako ho posunúť do Arduina!
Stručný prehľad
Pre tých z vás, ktorých nezaujíma podrobné vysvetlenie kódu, ponúkam segment TL; DR! Tu je základné vysvetlenie. Arduino každých pár sekúnd zachytáva hodnoty zo senzora vlhkosti. Tieto informácie sa potom použijú na výpočet a zobrazenie určitej tváre! Na konci je tiež kúsok kódu, pomocou ktorého kapacitné dotykové tlačidlo zapína a vypína displej. Celkom jednoduché nie?
The Nitty Gritty
Táto časť tutoriálu je pre tých, ktorých veľmi zaujíma, ako funguje celý program, riadok po riadku. Vyššie poskytnem snímky obrazovky, ktoré vám pomôžu porozumieť tomu, o čom hovorím, a tiež zahrniem niektoré riadky kódu do tohto popisu.
Tento program je rozdelený do piatich sekcií:
- Vrátane knižníc a vytvárania premenných
- Funkcia nastavenia
- Funkcie pre výrazy tváre
- Funkcia zápisu Arduino na maticu
- Funkcia slučky
Vrátane knižníc a vytvárania premenných:
Prvá časť tohto kódu je o premenných a knižniciach, ktoré budeme používať.
#include "LedControlMS.h"
#define TouchSensor 7 LedControl lc = LedControl (12, 11, 10, 1); int senzorPin = A5; int sensorValue = 0; bool začal = nepravda; bool on = pravda; booleovský stlačený = NÍZKY;
Prvý riadok obsahuje knižnicu s názvom LedControlMS. Táto knižnica je potrebná na odosielanie hodnôt na LED displej. Nasledujúci riadok je príkaz definície, ktorý nastaví kolík dotykového senzora na 7. Potom máme ďalšie tri premenné, ktoré definujú kolíky pre LED displej, snímač vlhkosti a jeho hodnotu. Posledné tri riadky sú všetky boolovské hodnoty, ktoré regulujú stav dotykového tlačidla a displeja. Potom máme naše bajtové hodnoty:
bajtový úsmev [4] = {B00000100, B00110010, B01100100, B01100000}; bajtové prekvapenie [4] = {B00001110, B00001010, B01101110, B10010000}; bajt meh [4] = {B00000100, B00100100, B00100100, B00100000}; bajt smutný [4] = {B00000010, B01100100, B00110010, B00110000}; mŕtvy byt [6] = {B00001010, B00100100, B00101010, B00100000, B01100000, B01101010}; chyba bajtu [8] = {B00111100, B01000010, B10100001, B10010001, B10001001, B10000101, B01000010, B00111100}; // Bajtový úsmev zlých tvárí [4] = {B00000010, B00101010, B01000100, B01000000}; uplynulý bajt [4] = {B00000010, B00101010, B01100100, B01100000}; eplain bajtov [4] = {B00000010, B00101010, B00100100, B00100000}; bajtové očko [4] = {B00000001, B01101001, B01100010, B01100000}; bajtový etalk [4] = {B00000001, B00101001, B01100010, B01100000};
Tieto hodnoty predstavujú všetky tváre APEX. Každý bajt je pole, ktoré obsahuje viac bitov, ktoré určujú stav každého pixelu v danom riadku. „1“a „0“predstavuje Zap/Vyp.
Funkcia nastavenia:
Prejdeme k ďalšej časti a máme funkciu nastavenia.
void setup () {// MS Serial Output Serial.begin (9600);
pinMode (TouchSensor, INPUT);
// Nastavenie matice LED lc.shutdown (0, false); lc.setIntensity (0, 4); lc.clearDisplay (0); }
Názov to vysvetľuje veľmi dobre. Tu „nastavíme“náš dotykový senzor a displej. Prvé dva riadky začínajú náš sériový výstup (používa sa na ladenie). Tretí riadok nastaví kolík dotykového senzora na vstup a posledné štyri riadky spustia displej.
Funkcie pre výrazy tváre:
Toto je pravdepodobne najdlhšia časť zo všetkých, ale je to všetko veľmi jednoduché a opakujúce sa.
void broken () {lc.setRow (0, 0, chyba [0]); lc.setRow (0, 1, chyba [1]); lc.setRow (0, 2, chyba [2]); lc.setRow (0, 3, chyba [3]); lc.setRow (0, 4, chyba [4]); lc.setRow (0, 5, chyba [5]); lc.setRow (0, 6, chyba [6]); lc.setRow (0, 7, chyba [7]); }
prázdny šťastný () {
lc.setRow (0, 0, úsmev [0]); lc.setRow (0, 1, úsmev [1]); lc.setRow (0, 2, úsmev [2]); lc.setRow (0, 3, úsmev [3]); lc.setRow (0, 4, úsmev [3]); lc.setRow (0, 5, úsmev [2]); lc.setRow (0, 6, úsmev [1]); lc.setRow (0, 7, úsmev [0]); }
prázdna pláň () {
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]); }
prázdne prekvapenie () {
lc.setRow (0, 0, prekvapenie [0]); lc.setRow (0, 1, prekvapenie [1]); lc.setRow (0, 2, prekvapenie [2]); lc.setRow (0, 3, prekvapenie [3]); lc.setRow (0, 4, prekvapenie [3]); lc.setRow (0, 5, prekvapenie [2]); lc.setRow (0, 6, prekvapenie [1]); lc.setRow (0, 7, prekvapenie [0]); }
void dying () {
lc.setRow (0, 0, mŕtvy [0]); lc.setRow (0, 1, mŕtvy [1]); lc.setRow (0, 2, mŕtvy [2]); lc.setRow (0, 3, mŕtvy [3]); lc.setRow (0, 4, mŕtvy [4]); lc.setRow (0, 5, mŕtvy [5]); lc.setRow (0, 6, mŕtvy [1]); lc.setRow (0, 7, mŕtvy [0]); }
prázdny plač () {
lc.setRow (0, 0, smutné [0]); lc.setRow (0, 1, smutné [1]); lc.setRow (0, 2, smutné [2]); lc.setRow (0, 3, smutné [3]); lc.setRow (0, 4, smutné [3]); lc.setRow (0, 5, smutné [2]); lc.setRow (0, 6, smutný [1]); lc.setRow (0, 7, smutné [0]); }
void evilsmile () {
lc.setRow (0, 0, úsmev [0]); lc.setRow (0, 1, úsmev [1]); lc.setRow (0, 2, esmile [2]); lc.setRow (0, 3, úsmev [3]); lc.setRow (0, 4, úsmev [3]); lc.setRow (0, 5, úsmev [2]); lc.setRow (0, 6, úsmev [1]); lc.setRow (0, 7, úsmev [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, očnica [0]); lc.setRow (0, 1, očnica [1]); lc.setRow (0, 2, očko [2]); lc.setRow (0, 3, očko [3]); lc.setRow (0, 4, oko [3]); lc.setRow (0, 5, očnica [2]); lc.setRow (0, 6, očnica [1]); lc.setRow (0, 7, očnica [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]); }
Tieto funkcie sa používajú na definovanie každého výrazu tváre pomocou našich bajtových hodnôt z prvej sekcie. Každý riadok definuje pozíciu x a hodnoty bajtov a potom aplikuje hodnoty na daný stĺpec. Niektoré funkcie vyžadujú viac riadkov, pretože na zobrazenie hodnôt tejto tváre sa používa viac riadkov. Každá tvár je symetrická, a preto riadky opakujeme.
Funkcia WriteArduinoOnMatrix:
Štvrtá časť sa používa na výpočet a zapísanie správnych tvárí na LED displej. Skladá sa zo série príkazov else if, ktoré kontrolujú hodnoty vody a potom nastavujú zobrazenie volaním rôznych funkcií z predchádzajúcej časti.
void writeArduinoOnMatrix () {if (sensorValue> 0 && sensorValue 30 && sensorValue 100 && sensorValue 200 && sensorValue 400 && sensorValue 650 && sensorValue <= 800) {prekvapilo (); } else {broken (); }}
Môžete si všimnúť, že sme pridali „zlomené“tváre len v prípade, že sa senzor dostane mimo pracovný rozsah. Tým sa zabráni vzniku podivných nulových chýb a poskytne nám to lepšie vizuálne porozumenie tomu, čo sa deje v kóde.
Funkcia slučky:
V neposlednom rade je to funkcia slučky. Tento kód robí presne to, čo hovorí jeho názov, ale slučky! Napriek tomu, že v tejto funkcii je niekoľko riadkov, je to v skutočnosti dosť jednoduché. Kód najskôr prečíta stav tlačidla a zistí, či je displej „zapnutý“. Ak zistí, že je to pravda, zavolá funkciu WriteArduinoOnMatrix, ktorá potom nakreslí tvár na APEX. Pretože sa táto funkcia opakuje, bude aktualizovať displej tak často, ako chceme. Toto oneskorenie je diktované premennou Delaytime.
void loop () {if (started == true) {delaytime = 3000; } // Tlačidlo čítania je stlačené = digitalRead (TouchSensor);
ak (stlačené) {
if (on == true) {lc.clearDisplay (0); on = false; oneskorenie (čas oneskorenia); } else {on = true; oneskorenie (čas oneskorenia); }} sensorValue = analogRead (sensorPin); oneskorenie (čas oneskorenia); if (on == true) {// Draw Faces writeArduinoOnMatrix (); }
začalo = pravda;
}
To je ku kódu všetko. Našťastie teraz lepšie porozumiete tomu, ako to všetko funguje, a môžete tieto znalosti použiť na začatie prispôsobovania svojmu projektu!
Posunutie kódu do Arduina
Teraz, keď sme pokryli celý kód, je čas ho posunúť do Arduina! Našťastie to IDE veľmi uľahčuje. Jediné, čo musíte urobiť, je pripojiť Arduino k počítaču pomocou kábla USB a potom už len kliknúť na šípku doprava v ľavom hornom rohu IDE. Nechajte kód stlačiť a v spodnej časti programu by ste mali vidieť správu o úspechu, ak ste to urobili správne!
Krok 5: Schéma zapojenia
Schéma zapojenia, podobne ako kód, nie je príliš komplikovaná. Skladá sa iba z troch senzorov a Arduina, takže vám poviem pin-out pre každý a ak potrebujete inú pomoc, pozrite sa na diagram vyššie.
LED displej:
- VCC -> 5V
- GRD -> GRD
- DIN -> Kolík 12
- CS -> Pin 10
- CLK -> Kolík 11
Senzor vlhkosti:
- Pozitívny -> 5V
- Negatívne -> GRD
- Signál -> A5
Kapacitný dotykový senzor:
- VCC -> 5V
- GRD -> GRD
- SIG -> 7
Nie je to príliš ťažké, však? Ak máte s týmto pin-out nejaké problémy, pozrite si nižšie uvedené video, kde vás prevediem jeho zapojením.
Krok 6: Dajte to všetko dohromady
Je ťažké vysvetliť cez text, ako to všetko ladí, takže by som určite odporučil pozrieť si video k tejto časti. V skutočnosti nebudem vysvetľovať, ako som to svoje dal dohromady, je to príliš ťažké. Ale aby som veci vysvetlil nejasne, spájkoval som drôtové spoje a omotal ich okolo zadnej časti dosky. Potom som umiestnil senzory a pomocou elektrickej pásky to všetko držal pohromade. Nakoniec som to otestoval s 9V batériou a potom, akonáhle som vedel, že funguje, umiestnil som batériu na zadnú stranu a tiež ju nalepil. Ako som už povedal, SKONTROLUJTE VIDEO PRE TENTO KROK, má pekný malý spájkovací segment, ktorý je zrýchlený a pomôže vám správne zabaliť vodiče. Ak sa stratíte, pokojne ho pozastavte alebo hrajte na polovičnú rýchlosť.
Gratulujem Ak všetko prebehlo úspešne, teraz by ste mali mať plne funkčnú jednotku APEX!
Ak chcete otestovať svoju jednotku, nájdite napojenú rastlinu a zapojte ju! Mali by ste zistiť, že je buď šťastný alebo prekvapený, a to znamená, že by to malo fungovať !!! Skvelá práca na dokončení projektu!
Krok 7: Záver
A to je celý Instructable! Ďakujeme, že ste si pozreli projekt! Akékoľvek otázky a komentáre nechajte nižšie a určite sledujte chlapcov z mestského poľnohospodárstva, kde nájdete ďalšie skvelé návody, ako je tento! Radi by sme sa dozvedeli, ako prebiehala vaša výstavba APEX, a veľmi si ceníme obrázky! Ešte raz ďakujem za zastavenie, príjemný deň!
(Tento návod bol inšpirovaný starším projektom Plant Emoji!)
P. S. Tento návod je zaradený do súťaže o mikrokontroléry, takže za nás nezabudnite hlasovať! Veľmi si to vážime:)
P. P. S. Získajte APEX v časopise Make Magazine! Hlasujte tu! Vďaka:)
Odporúča:
Vyjadrenie emócií: 4 kroky
Vyjadrenie emócií: Úvod: Tento stroj na vyjadrenie emócií funguje tak, že pomáha ľuďom, ktorí nie sú schopní vyjadriť svoje pocity, vyjadriť svoje pocity. Tento stroj môže pomôcť ľuďom, ktorí potrebujú pomoc alebo potrebujú niekoho, kto by ich počul, sťažovať sa na veci, ktoré sú
ZÁKLADNÝ NÁVOD O JAZYKU ZNAČKY ZNAČKY UMELEJ INTELIGENCIE (AIML) PRE Poznámkový blok: 8 krokov
ZÁKLADNÝ NÁVOD O JAZYKU ZNAČKY UMELECKEJ INTELIGENCIE (AIML) PROSTREDNÍCTVO: Artificial Intelligence Markup Language (AIML) je programovací jazyk, ktorý je špecifikáciou Extensible Markup Language (XML) a používa ho chatbot, verbot, pandorabot, superbot a ďalší hovoriaci robot. Bol vyvinutý Dr. Richardom Wallaceom a â € ¦
Hodiny trubice z umelej Nixie: 7 krokov (s obrázkami)
Faux Nixie Tube Clock: Milujem retro technológiu. Je zábavné hrať sa so staršími technológiami, pretože sú zvyčajne väčšie a estetickejšie ako moderné ekvivalenty. Jediným problémom starých technológií, akými sú rúrky Nixie, je to, že sú vzácne, drahé a všeobecne ťažko použiteľné
Vybudujte si vlastného asistenta AI (umelej inteligencie) 101: 10 krokov
Vybudujte si vlastného asistenta AI (umelej inteligencie) 101: Pamätáte si dobu, keď ste sledovali Iron Mana a premýšľali ste, aké by to bolo skvelé, keby ste mali vlastného J.A.R.V.I.S? Je načase splniť si tento sen. Umelá inteligencia je ďalším gen. Predstavte si, aké by to bolo cool
Ako urobiť šatku zo svetlej umelej kožušiny, ktorá zmení farbu: 11 krokov (s obrázkami)
Ako vyrobiť šatku z umelej kožušiny so zmenou farby: Tu je niekoľko tipov na vytvorenie fuzzy osvetlenej šatky s LED diódami meniacimi farbu s relatívne jednoduchým procesom, ktorý je vhodný pre niekoho, kto má obmedzené skúsenosti so šitím alebo spájkovaním. Objektív každej z týchto RGB LED diód obsahuje vlastnú červenú,