Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: Luo syöte Adafruitissa
- Vaihe 2: Tehdään nyt koontinäyttö
- Vaihe 3: Hanki avaimemme
- Vaihe 4: Avaa esimerkki syötteen lukemisesta
- Vaihe 5: Asennetaan yhteys
- Vaihe 6: Tarkista yhteys Adafruit IO: hon
- Vaihe 7: Antaa LED -valon
- Vaihe 8: Lisää ajoitus ajastimeen
- Vaihe 9: Lähtölaskenta
- Vaihe 10: Tee se kauko -ohjattavaksi: Osa I
- Vaihe 11: Tee se kauko -ohjattavaksi: Osa II
- Vaihe 12: Pelaa! Olemme valmiita… vai olemmeko?
- Vaihe 13: LISÄ: Luo hetkellinen painike
- Vaihe 14: LISÄ: Lisää nollaustoiminto
2025 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2025-01-23 14:42
Tässä aiomme luoda ajastimen käyttämällä NodeMCU: ta ja Adafruitia. Aiomme näyttää ajastimemme LED -nauhalla ja voimme hallita sitä puhelimella tai tietokoneella!
Meidän maalimme:
Luo ajastin LED -nauhalla, jonka voimme: käynnistää, keskeyttää ja nollata puhelimella tai tietokoneella.
Tarvikkeet
Laitteisto:
- NodeMCU ESP 8266
- Adafruit NeoPixel LED -nauha
Kirjastot:
- Adafruit_NeoPixel.h
- AdafruitIO_WiFi.h
Muu:
Hyvä WiFi -yhteys
Vaihe 1: Luo syöte Adafruitissa
Nyt kun saimme kaiken tarvitsemamme, olemme valmiita rakentamaan! Ensinnäkin meidän on luotava syöte Adafruitiin. Adafruit on palvelu, jonka avulla voimme todella helposti yhdistää Arduinomme Internetiin ja tehdä hyödyllisiä kauko -ohjattavia ominaisuuksia. Jos et ole jo tehnyt niin, tilaa Adafruit.
Luodaan nyt uusi syöte
Voimme nimetä syötteemme mitä tahansa haluamme, kutsun sitä "ajastimeksi".
Syöte tallentaa kaiken tekemämme hallintapaneeliin (jonka me luomme vain minuutissa) ja lähettää tiedot hallituksellemme, mutta tarkastelemme sitä heti, kun meillä on tietoja lähetettäväksi.
Vaihe 2: Tehdään nyt koontinäyttö
Luomme uuden hallintapaneelin samalla tavalla kuin syötteen. Kutsun kojelautaani "ajastinkäyttöliittymäksi", koska se on pohjimmiltaan se, mitä kojelautamme tulee olemaan: käyttöliittymä, jossa on painikkeet ajastimen ohjaamiseksi.
Vaihe 3: Hanki avaimemme
Jos haluamme yhdistää Arduinomme syötteeseemme, meidän on hankittava Adafruit -avain, tämä on salainen salasanasi, joka varmistaa, että vain sinä voit muodostaa yhteyden syötteisiisi.
Voit saada avaimesi napsauttamalla keltaista AIO Key -painiketta näytön oikeassa yläkulmassa Adafruitissa.
Tallenna tämä avain jonnekin, tarvitsemme sitä myöhemmin.
Älä jaa avainta! Muuten ihmiset, joilla on pahat aikomukset, voivat muodostaa yhteyden syötteisiisi ja laitteisiisi.
Vaihe 4: Avaa esimerkki syötteen lukemisesta
Avaa nyt Arduino IDE ja aloita koodausprosessi. Ensinnäkin meidän on asennettava Adafruit IO Arduino -kirjasto.
Etkö tiedä kuinka asentaa kirjastoja? tämä on loistava Adafruitin opas: Arduino Libraries
Adafruit tarjoaa paljon valmiita esimerkkejä, joita voimme käyttää ja joista voimme oppia. Yksi näistä esimerkeistä on: adafruitio_21_feed_read. Löydät tämän esimerkin täältä: Tiedosto - Esimerkkejä Adafruit IO Arduino adafruitio_21_feed_read
(anteeksi hollantilainen käyttöliittymäni kuvassa)
Vaihe 5: Asennetaan yhteys
Jos olet avannut onnistuneesti adafruitio_21_feed_read -luonnoksen, luonnoksessasi pitäisi näkyä kaksi välilehteä: adafruitio_21_feed_read ja config.h. Tämä luonnos tehtiin, jotta voimme muodostaa yhteyden vaiheessa 1 tekemäämme syötteeseen.
Jotta voimme muodostaa yhteyden tähän syötteeseen, meidän on täytettävä muutamia tietoja WiFi -yhteydestämme ja Adafruit -tilistämme,
Siirrymme osoitteeseen config.h, tässä täytämme seuraavat tiedot:
Adafruit -käyttäjänimesi:
#define IO_USERNAME "joopert"
Adafruit -avaimesi:
#define IO_KEY "1234567890abcdefghijklmnop"
WiFi -verkon nimi:
#define WIFI_SSID "MyWifi"
Ja WiFi -salasanasi:
#define WIFI_PASS "aVerySecretPassword"
Palataan nyt adafruitio_21_feed_read -välilehdelle ja täytetään:
Adafruit -käyttäjätunnuksesi… uudelleen:
#define FEED_OWNER "joopert"
Ja lopuksi syötteenimi (vaiheessa 1 tekemästämme syötteestä):
AdafruitIO_Feed *sharedFeed = io.feed ("ajastin", FEED_OWNER);
Vaihe 6: Tarkista yhteys Adafruit IO: hon
Tarkistaaksemme, ovatko aiemmin suorittamamme vaiheet suoritettu oikein, lataamme luonnoksemme NodeMCU: hon. Jos avaat sarjamonitorisi, sen pitäisi näyttää yllä olevan kuvan kaltaiselta. Ensin sarjamonitori näyttää, että se yrittää muodostaa yhteyden WiFi -verkkoon ja Adafruitiin. jos se on valmis, sen pitäisi sanoa:
Adafruit IO yhdistetty
Tämä on hieno uutinen! Nyt voimme aloittaa toimintojen lisäämisen ajastimeemme…
Vaihe 7: Antaa LED -valon
Nyt on aika kytkeä LED -nauha päälle!
Liitä LED -nauha D5 -PIN -koodiin (jos et löydä D5 -liitintä, yhdistä se toiseen PIN -koodiin ja vaihda koodin LED_PIN -koodi).
Määritä LED -nauha
Seuraava koodi lisää NeoPixel-kirjaston (lue lisää tästä kirjastosta täältä: https://learn.adafruit.com/adafruit-neopixel-uberguide/arduino-library-use) ja varmista, että Arduino tietää missä LED-nauhamme on ja kuinka monta valoa siinä on. Jos LED -nauhallasi on eri tekniset tiedot, muuta se koodissa.
Lisää seuraava koodi mitätöityjen asetusten yläpuolelle ():
// aseta NeoPixel -yhteys #include #ifdef _AVR_ #include #endif
#define LED_PIN D5 // Mihin LED -nauha on kytketty?
#define LED_COUNT 30 // Kuinka monta pikseliä siinä on?
#define BRIGHTNESS 50 // NeoPixel -kirkkaus, 0 (min) - 255 (maksimi)
Adafruit_NeoPixel -nauha (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800);
Käynnistä LED -nauha
Käynnistämme nyt LED -nauhan ja asetamme kirkkauden (kirkkaus vaihtelee 0 minuutista 255 maksimi, mutta suosittelen 50… 255 on todella kirkas).
Lisää seuraava koodi tyhjään asetukseen ():
strip.begin (); // ALOITA NeoPixel -nauhaobjekti (VAATIMUS) strip.show (); // Sammuta kaikki pikselit ASAP strip.setBrightness (50); // Aseta KIRKKAUS arvoon noin 1/5 (enintään = 255)
ledsOn (); // Kutsuu toimintoa kytkemään kaikki LEDit yksitellen päälle
Sytytä valot
Ehkä olet jo huomannut, että kutsumme funktiota, jota ei ole vielä olemassa, se on seuraava osa koodausta. Jos haluamme sytyttää valot, meidän on luotava 'for loop', joka sytyttää jokaisen yksittäisen LED -valon yksitellen (etkö tiedä, mikä on for -silmukka? Tarkista se täältä: www.arduino.cc/reference/ fi/kieli/rakenne/ohjausrakenne/for/).
Nyt aiomme luoda funktion: ledsOn ();
Lisää seuraava koodi BOLOW void handleMessage ():
void ledsOn () {for (int i = 0; i <strip.numPixels (); i ++) {// Jokaiselle nauhan pikselille… strip.setPixelColor (i, 0, 0, 255); // Aseta pikselin väri sininen nauha.show (); // Päivitä liuska vastaamaan}}
Lataa
Nyt on hauska osa, lataamme koodimme NodeMCU: hon… Jos kaikki toimii oikein, LED -nauhan pitäisi nyt muuttua täysin siniseksi!
Eikö pikseleitä näy ?: oletko liittänyt nauhan oikeaan PIN -koodiin? Tai ehkä Internet -yhteys katkeaa.
Eikö vain jotkut pikselit näy?: Tarkista, asetatko oikean pikselimäärän!
Vaihe 8: Lisää ajoitus ajastimeen
Nyt aiomme varmistaa, että ajastimemme todella… no… kertaa, jotain.
On olemassa erilaisia tapoja tehdä ajoitus Arduinolla, yksi on delay (), tämä pysäyttää aluksemme käsittelyn määritetyn ajan. Emme aio käyttää tätä, koska Arduinomme jäätyy periaatteessa viiveen aikana, ja haluamme, että korttimme päivitetään säännöllisesti. Joten aiomme käyttää Milliä (), tämä on tyylikkäämpi tapa tehdä ajoitus Arduinossa, ja Millis (): llä voimme silti suorittaa koodia välien välillä.
Jos olet kiinnostunut tämän toiminnasta, voit lukea tämän artikkelin:
Lisätään Millis (): n koodi:
Laita tämä koodi tyhjän asennuksen yläpuolelle ()
allekirjoittamaton aikaisempiMillis = 0; // säilyttää LED -nauhan viimeisimmän päivityksen ajan = intervalli = 1000; // ajastimemme aikaväli (millisekuntia)
Ja laitetaan tämä koodi void loopiin ():
allekirjoittamaton pitkävirtaMillis = millis ();// käynnistä AJASTINRYTHM ******************************************** ********* if (currentMillis - previousMillis> = interval) {previousMillis = currentMillis;
// lopeta TIMER RYTHM ******************************************** ***********
Teimme juuri rytmin LED -nauhallemme LED -valojen sammuttamiseksi, seuraavassa vaiheessa lisäämme koodin juuri tämän tekemiseksi.
Vaihe 9: Lähtölaskenta
Tässä vaiheessa: teemme toiminnon, joka varmistaa, että sammutamme jokaisen sekunnin (tai minkä tahansa asettamasi välin) YKSI LED -valon nauhan päässä, kunnes kaikki LED -valot sammuvat.
Luomme "int" yläreunassa nimeltä "ledit". Tämä kertoo myöhemmin ajastimellemme, kuinka monta lediä sen on vielä sammuttava.
Lisää seuraava koodi mitätöityjen asetusten yläpuolelle ():
int ledit = LED_COUNT-1; // kertoo kuinka monta pikseliä pitäisi sytyttää
Lisätään nyt toiminto 'timer ();', tämä sammuttaa valon joka sekunti
Lisää seuraava koodi tyhjien LEDien alapuolelle ():
void timer () {strip.setPixelColor (ledit, 0, 0, 0);
jos (ledit> -1) {ledit--; } else {blinkie (); }}
Haluamme antaa käyttäjälle palautetta siitä, että ajastin on tehty, kun kaikki valot ovat palanneet. Kanssa 'blinkie ();' LED -valot vilkkuvat punaisena ajastimen jälkeen!
Lisää seuraava koodi mitätöityjen asetusten yläpuolelle ():
int blinkStatus = 1; // kertoo blinkie (); toiminto, jos valon pitäisi olla päällä tai pois päältä
Lisää seuraava koodi tyhjiöajastimen () alle:
void blinkie () {if (blinkStatus == 1) {
blinkStatus = 0; strip.clear (); } else {blinkStatus = 1; for (int i = 0; i <strip.numPixels (); i ++) {// Jokaiselle nauhan pikselille… strip.setPixelColor (i, 255, 0, 0); // Aseta pikselin väri (RAM -muistissa) strip.show (); // Päivitä liuska vastaamaan}}}}
Lopuksi meidän on kutsuttava funktio tyhjäsilmukassamme ();, Muistatko AJASTINYKSIKÖN, jonka lisäsimme vaiheessa 8? Tässä if -lauseessa kutsumme funktiota ajastimeksi ();.
TIMER RYTHM: n pitäisi nyt näyttää tältä:
// käynnistä AJASTINRYTHM ******************************************** *********
if (currentMillis - previousMillis> = väli) {previousMillis = currentMillis; ajastin(); strip.show ();} // end TIMER RYTHM ************************************* *******************
Lataa nyt tämä koodi!
Tällä hetkellä LED -nauhasi pitäisi sammuttaa 1 LED joka sekunti ja vilkkua punaisena, kun se on valmis …
Tehdään nyt tämä äidin rakastaja kauko -ohjattavaksi!
Vaihe 10: Tee se kauko -ohjattavaksi: Osa I
Meillä on ajastin, kaikki on hyvin ja hauskaa, mutta lupasin sinulle, että pystyt hallitsemaan sitä puhelimellasi? Siirrymme projektimme viimeiseen vaiheeseen: ajastimen tekeminen kauko -ohjattavaksi.
Onko Adafruit -välilehti vielä auki? Mennään takaisin osoitteeseen io.adafruit.com ja mennään ajastinkäyttöliittymän kojelautaan ja luodaan uusi lohko: TOGGLE
- Liitä kytkin AJASTIN -syötteeseen
- Aseta ON -arvoksi: 1
- Aseta OFF -arvoksi: 0
Syynä tähän on se, että Adafruit ei lähetä tekstitietoja NodeMCU: lle, vaan vain numeroita.
Voit myös antaa Togglelle nimen, jos haluat, esimerkiksi: On/Off -kytkin
Palataan nyt takaisin Arduino IDE: hen
Varmista vain, että koodimme on ajan tasalla, LATAA koodimme uudelleen.
AVAA SERIAL MONITOR, kun se on ladattu, ja PAINA KYTKENTÄ Adafruit -hallintapaneelissamme muutaman kerran. Meidän pitäisi nyt nähdä jotain tällaista ilmestyvän sarjamonitoriin:
vastaanotettu <- 0 vastaanotettu <- 1 vastaanotettu <- 0 vastaanotettu <- 1 vastaanotettu <- 0
Tämä tarkoittaa, että voimme itse lähettää ohjaimia NodeMCU -laitteellemme!
Jos et saa näitä viestejä, tarkista, ovatko konfiguraatiossa h olevat Adafruit -tiedot edelleen oikein.
Vaihe 11: Tee se kauko -ohjattavaksi: Osa II
Nyt ei muuta kuin tekemään jotain saamillamme ohjaimilla.
Tätä varten meidän on muutettava TIMER RYTHM if -lauseemme void -silmukassa (); hieman.
Kerromme NodeMCU: lle, että sen pitäisi käynnistää ajastin vasta, kun olemme saaneet Adafruitilta '1' (mikä tarkoittaa: ON).
Keräämme ensin tiedot, jotka Adafruit lähettää meille
Lisää seuraava koodi mitätöityjen asetusten yläpuolelle ():
int adaData; // kerää tietoja, jotka AdaFruit lähettää meille
Nyt kerätään tosiasiallisesti nämä tiedot
Lisää seuraava koodi tyhjäkädensijan sisälleMessage ():
adaData = data-> toInt ();
Muutetaan tyhjä silmukka ();
TIMER RYTHM: n pitäisi nyt näyttää tältä:
// käynnistä AJASTINRYTHM ******************************************** ********* if (currentMillis - previousMillis> = interval) {previousMillis = currentMillis; if (adaData == 0) {Serial.println ("en ole käynnissä"); } else if (adaData == 1) {timer (); } strip.show (); } // end TIMER RYTHM ******************************************* ************
LATAA koodisi…
Nyt sinun pitäisi pystyä kytkemään ajastin päälle ja pois päältä Adafruutin kytkimellä!
Vaihe 12: Pelaa! Olemme valmiita… vai olemmeko?
Nyt sinulla pitäisi olla täysin toimiva kauko -ajastin! Jos tämä on sinulle, kiitos, että olet mukana tässä projektissa!
Jos haluat jatkaa hieman pidempään, lisäämme seuraavien vaiheiden aikana RESET -painikkeen ajastimeemme!
Vaihe 13: LISÄ: Luo hetkellinen painike
Palataan kojelautaan. Nyt haluamme luoda uuden lohkon.
- Luo hetkellinen painike
- Liitä se ajastinsyöteeseen
- Aseta puristusarvoksi: 2
- POISTA vapautusarvo
- Anna sille kiva väri!
Kätevästi hetkellinen painike on jo nimeltään 'Reset'!
Kun olet luonut tämän lohkon, testaa se, painike toimii, jos saat:
sai <- 2
Sarjamonitorissasi.
Jos et näe tätä viestiä, yritä ladata luonnos uudelleen
Vaihe 14: LISÄ: Lisää nollaustoiminto
Jotta nollauspainike voisi tehdä mitä tahansa, meidän on lisättävä toiminto, joka palauttaa kaikki LEDit takaisin alkuperäiseen tilaansa.
Lisää seuraava koodi void blinkien () alle:
void rerun () {leds = LED_COUNT; ledsOn (); }
Nyt on jäljellä vain funktion kutsuminen, sillä meidän on vaihdettava AJASTINYKSIKKÖ viimeisen kerran
TIMER RYTHM: n pitäisi nyt näyttää tältä:
// käynnistä AJASTINRYTHM ******************************************** ********* if (currentMillis - previousMillis> = interval) {previousMillis = currentMillis if (adaData == 0) {Serial.println ("en ole käynnissä"); } else if (adaData == 1) {timer (); } else if (adaData == 2) {rerun (); } strip.show (); } // end TIMER RYTHM ******************************************* ************
LATAA koodisi…
Nyt sinun pitäisi myös pystyä nollaamaan ajastin painamalla painiketta!
Suositeltava:
Plug & Play CO2 -anturin näyttö solmulla MCU/ESP8266 kouluille, lastentarhoille tai kotiisi: 7 vaihetta
Plug & Play -CO2 -anturinäyttö NodeMCU/ESP8266 -kouluilla, kouluille, lastentarhoille tai kotiisi: Näytän sinulle, kuinka nopeasti rakentaa pistoke ja amp; toista CO2 -anturi, jossa kaikki projektin elementit liitetään DuPont -johtoihin. On vain 5 pistettä, jotka on juotettava, koska en juottanut ennen tätä projektia ollenkaan
Askelmoottori, jossa D -varvastossut ja 555 -ajastin; piirin ensimmäinen osa 555 -ajastin: 3 vaihetta
Askelmoottori, jossa D -varvastossut ja 555 -ajastin; piirin ensimmäinen osa 555 -ajastin: Askelmoottori on tasavirtamoottori, joka liikkuu erillisinä vaiheina, ja sitä käytetään usein tulostimissa ja jopa robotiikassa. Selitän tämän piirin vaiheittain. ajastin. Se on ensimmäinen kuva (katso yllä), jossa on 555 siru ja
Eleohjattu yleiskaukosäädin solmulla MCU: 12 vaihetta
Eleohjattu yleiskaukosäädin solmulla MCU: Hei kaikille ja tervetuloa tähän projektiin! Olen melko laiska ihminen ja laiska painajainen on katsoa televisiota, kun huomaat, että kaukosäädin on liian kaukana! Tajusin, että kaukosäädin ei ole koskaan liian kaukana, jos minulla on se käsillä
Liitäntä servomoottoriin solmulla MCU: 6 vaihetta (kuvilla)
Liitäntä servomoottoriin NodeMCU: n kanssa: Hei kaikki, tämä on ensimmäinen Instructable -projektini, joten haluatko aloittaa NodeMCU: n käytön? Tänään haluan kertoa teille, miten pääset alkuun NodeMCU: n kanssa. Mennään! NodeMCU: n ESP8266-12E-aluksella on b
TCA9548A I2C -multiplekserimoduuli - Arduinolla ja solmulla MCU: 11 vaihetta
TCA9548A I2C -multiplekserimoduuli - Arduinon ja NodeMCU: n kanssa: Oletko koskaan joutunut tilanteeseen, jossa jouduit kytkemään kaksi, kolme tai useampia I2C -antureita Arduinoosi vain ymmärtääksesi, että antureilla on kiinteä tai sama I2C -osoite. Lisäksi sinulla ei voi olla kahta laitetta, joilla on sama osoite samassa SDA