- Forutsetninger
- Nødvendige komponenter
- Installere Node-RED på Raspberry Pi
- Lanserer Node-RED i Raspberry Pi
- Forstå Node-RED-grensesnittet
- Skjemaer
- Opprette en strømning i Node-RED
- Legge til en trykknapp / bryter i Node-RED-grensesnitt med Raspberry Pi
Noen gang lurt på om det var en måte å lage enkle prototyper av IoT-løsninger uten å måtte bruke dager på å skrive koder eller å bygge praktiske avanserte prosjekter uten koding. Ja, dette er mulig med Node-Red Platform. Node-RED er utviklet av IBM, og er et programmeringsverktøy med åpen kildekode for å koble sammen maskinvareenheter, API-er og online-tjenester på en ny og interessant måte. Det gir en nettleserbasert editor som gjør det enkelt å koble sammen ' strømmer' ved hjelp av det brede spekteret av noder i paletten som kan distribueres til kjøretiden med et enkelt klikk.
Node-RED er et kraftig verktøy for å bygge IoT-applikasjoner (Internet of Things) med det formål å forenkle programmeringskomponenten.
Den bruker visuell programmering som lar deg koble kodeblokker, kjent som noder, sammen for å utføre en oppgave. For dagens opplæring vil vi undersøke hvordan du kan distribuere enkle prosjekter på bringebær-pi ved hjelp av Node-RED. The Raspberry Pi node-rød opplæringen vil dekke;
- Installere Node-RED på Raspberry Pi.
- Introduksjon til Node-RED brukergrensesnitt
- Hvordan sette opp Node-RED-strømmer
- Hvordan kontrollere Raspberry Pi GPIO-pinner med Node-RED
- Hvordan bruke Node-RED-innganger, utganger og hvis-annet som beslutningstaking ved hjelp av brytere
Forutsetninger
Denne opplæringen vil være basert på Raspbian stretch OS, og jeg antar at du er kjent med å sette opp Raspberry Pi med den, og at du vet hvordan du skal SSH inn i Pi ved hjelp av en terminalprogramvare som kitt. Hvis du har problemer med noe av dette, er det mange Raspberry Pi-veiledninger på dette nettstedet som kan hjelpe.
For å enkelt fullføre opplæringen, vil jeg råde deg til å bruke en skjerm som er koblet til bringebær-pi, eller at du bruker VNC Viewer-programvaren. Hvis du ikke har en skjerm og begynner på nytt med Pi, kan du lese dette Headless Raspberry Pi-oppsettet for å fortsette med denne veiledningen. Mens Node-Red kjører fra en nettleser og er tilgjengelig på PC-en din som Pi er koblet til via Pi's IP-adresse, tror jeg VNC / skjermopplevelsen vil gi deg et bedre heng på ting.
Som en demo for å vise hvordan Node-Red fungerer, vil vi bruke Node-RED til å programmere Raspberry Pi for å kontrollere en LED koblet til GPIO og senere modifisere programmet slik at LED-en kan styres fra en taktil trykknapp som er koblet til Pi-en. GPIO.
Nødvendige komponenter
Følgende komponenter kreves for å bygge dette prosjektet;
- Raspberry Pi 3 med SD-kort forhåndslastet med Raspbian Stretch forhåndslastet
- 100 ohm motstand (1)
- LED (1)
- Brettbrett (1)
- Mann-til-kvinnelig hoppetråd
- Taktil trykknapp (1)
Installere Node-RED på Raspberry Pi
Mens Node-Red er forhåndsinstallert på Raspbian Stretch OS, må vi oppgradere det før vi kan nyte noen av dets nyeste funksjoner. Oppgradere Node-Red- testamentet
- Oppgrader den eksisterende brukeren til LTS 8.x eller 10.x Node.js og siste Node-RED
- Migrer eksisterende globalt installerte noder til brukerne ~ /.node-rød plass, slik at de kan administreres via palettbehandling, det oppdaterer IKKE noen brukerinstallerte eksisterende noder. Dette må gjøres manuelt av brukeren (se nedenfor).
- Eventuelt (re) installere ekstra noder som er forhåndsinstallert på et fullstendig Raspbian Pi-bilde.
Prosessen med å oppgradere Node-Red ligner imidlertid på å installere en ny, så av hensyn til denne opplæringen vil vi bare behandle den som en ny installasjon, slik at folk som bruker andre OS-versjoner kan følge.
Følg trinnene nedenfor for å installere / oppgradere Node-RED på din Raspberry Pi.
Vi starter med å oppgradere og oppdatere pi, for å sikre at alt på det er oppdatert og unngå kompatibilitetsproblemer. Gjør dette ved å åpne en terminal eller via ssh, og kjør;
Sudo apt-get oppdatering
etterfulgt av
sudo apt-get oppgradering
Når dette er gjort, kjører du bash-skriptet nedenfor på terminalen;
bash <(krøll -sL
Den bash script vil gjøre følgende ting
- Spør om du vil (re) installere de ekstra Pi-noder
- Lagre en liste over globalt installerte node-rød- noder som finnes i / usr / lib / node_modules
- apt-get fjerne eksisterende Node-Red
- fjern eventuelle noderøde binærfiler fra / usr / bin og / usr / local / bin
- Fjern eventuelle node-røde moduler fra / usr / lib / node_modules og / usr / local / lib / node_modules
- Oppdag om Node.js ble installert fra Node.js-pakken eller Debian
- Hvis ikke v8 eller nyere - fjern etter behov og installer nyeste v8 eller v10 LTS (bruker ikke apt).
- Rengjør npm-hurtigbuffer og.node-gyp-hurtigbuffer for å fjerne eventuelle tidligere versjoner av koden
- Installer Node-RED siste versjon
- Installer noder som tidligere hadde blitt installert globalt under brukerkontoen
- Installer ekstra Pi-noder om nødvendig
- Bygge alle noder - for å kompilere eventuelle binære filer for å matche den siste Node.js-versjonen
- Legg kommandoer node-rød-start, node-rød-stopp og node-rød-logg til / usr / bin
- Legg til menygenvei og ikon
- Legg til systemskript og angi bruker
- Hvis du legger til en CPU-temperatur på en Pi -> IoT-eksempel
Bash-skriptet ovenfor kjører mange kommandoer som sudo og sletter eksisterende Node.js og de viktigste Node-RED-katalogene. Du kan sjekke innholdet i skriptet på denne GitHub-siden før du kjører det for å være sikker på at det ikke vil påvirke noe prosjekt du allerede har på Pi.
Når installasjonen er fullført, skal du nå se Node-Red-ikonet under listen over programmeringsapper på menyen din.
Lanserer Node-RED i Raspberry Pi
Node-Red kan lanseres via menyseksjonen fra ditt bringebær-pi-skrivebord, via terminalen eller over ssh.
For å starte på bringebær-pi-skrivebordet, klikk på Raspberry-ikonet, hold musen på Programmering, klikk på Node-RED (Meny> Programmering> NodeRed) for å starte den.
Den kan også lanseres fra ssh eller terminal ved å kjøre;
node-rød-start
Du bør se et vindu som det nedenfor som viser rød rød lansering på skrivebordet.
Når du ser dette, går du til meny-> internett og starter krom-nettleseren. Mens Raspberry pi ikke trenger internett for å kjøre Node-Red, bruker den en nettleser som grensesnitt.
Når krom lanseres, skriv inn localhost: 1880 i adressefeltet etterfulgt av enter-tasten. 1880 er porten på bringebær-pi som Node-Red er forhåndsinnstilt til å kommunisere. Dette skal vise Node-Red-grensesnittet som vist på bildet nedenfor.
Forstå Node-RED-grensesnittet
De Node-røde grensesnitt består av den strømningsplaten blir nodene palett, feilsøkingskonsollen og informasjonen konsollen som fremhevet i bildet ovenfor.
Den strømnings panel er der nodene er sammenføyd for å skape et program som i Node-Red kalles strømning, mens den Node palett består av gjenstander som er representative for maskinvare, programvare protokoller og har forbundet med enheter. Den inkluderer protokoller som MQTT for IoT, og GPIO-utgangs- og inngangsmodi for brett som bringebær-pi. Den info konsollen gir informasjon om uthevede / valgte objekter mens feilsøkingskonsollenfungerer akkurat som Arduino Serial monitor og kan gi tilbakemelding mens strømmen går. Distribusjonsknappen brukes til å laste opp strømmen til målvare. Menyknappen inneholder forskjellige opplastingstyper for å hjelpe deg med å få mest mulig ut av prosjektet. Når Node-Red er i gang, kan vi nå fortsette å bygge demoprosjektet.
Skjemaer
Som nevnt under introduksjonen, vil vårt demoprosjekt for i dag være å kontrollere Raspberry Pi's GPIO ved hjelp av en Node-RED-strøm. For å vise variasjonen i GPIO-tilstanden, kobler vi en LED til GPIO slik at når den bestemte GPIO-pinnen er slått på, lyser LED-lampen og omvendt.
Koble LED-en til Raspberry PI som vist i skjemaene nedenfor.
Jeg bygger også det samme på maskinvaren min ved hjelp av et brødbrett, LED, motstand og noen tilkoblingsledninger. Maskinvareoppsettet mitt ser omtrent slik ut når tilkoblingene er gjort.
Dette prosjektet kan enkelt konverteres til et hjemmeautomatiseringsprosjekt, bare ved å erstatte lysdioden med et relé og et hvilket som helst vekselstrømsapparat, lær hvordan du gjør det ved å gå gjennom forskjellige hjemmeautomatiseringsprosjekter.
Opprette en strømning i Node-RED
Når LED-en er tilkoblet, kan vi fortsette å utvikle strømmen. Programmer i NodeRed kalles strømmer akkurat som Arduino IDE kaller dem skisser. Flyter opprettes ved hjelp av en kombinasjon av noder. Du kan opprette flere flyter som alle kan kjøre samtidig, men for denne opplæringen lager vi en enkelt strøm for å slå LED på / av.
For å begynne med, bla til bunnen av noder-paletten, du vil se delen av bringebær-pi-noder mot slutten med to noder merket rpigpio. Disse nodene brukes til å kommunisere med raspberry pi's GPIO. En av nodene er for input, mens den andre er for output differensiert av posisjonen til bringebær Pi-logoen. For inngangsnoden kommer logoen foran teksten, mens for utgangsnoden kommer logoen etter teksten som vist på bildet nedenfor.
For denne opplæringen vil vi bruke utgangsnoden, dra den inn i strømningsdelen av grensesnittet. Dette trinnet ligner på å erklære en bestemt pin på Arduino som Output ved å bruke kommandoen pinMode () . Dobbeltklikk på utgangsnoden, og et popup-vindu åpnes som vist nedenfor for å tillate deg å redigere egenskapene til noden.
Under delen for pin-egenskap velger du GPIO17 (pin 11). Sett deretter typeegenskapen til “ digital utgang ” og kryss av for “ Initialiser pin-status?” avkrysningsruten og la alternativet “ initial level of pin ” være lavt (0). Gi noden det navnet du liker, og klikk på knappen ferdig.
Navnet på noden skal automatisk endres til det du skrev inn under egenskaperinnstillingen. For eksempel kalte jeg den som LED, og derfor blir nodenavnet også endret som LED som vist nedenfor.
For å slå LED på / av, må vi bruke en inngang, noe for å drive handlingen. Mens vi kunne bruke en trykknapp, vil jeg bruke denne til å introdusere funksjonen i Node-RED som gjør det mulig å injisere meldinger i strømmer. Disse funksjonene kalles injiseringsnoden. Vi bruker to injeksjonsnoder. Den ene vil være å slå på LED-en mens den andre vil være å slå den av.
Gå til nodepaletten og dra injeksjonsnoden til flyten. Det er den første noden i paletten med en pil, injeksjonsnoden er uthevet i bildet nedenfor.
Dobbeltklikk på den for å redigere egenskapene. Endre datatypen til streng ved å klikke på rullegardinmenyen foran nyttelasten, og skriv inn 1 i nyttelastboksen. Verdien i nyttelastboksen er det som skal injiseres i strømmen når noden trykkes. Sett navnet på noden til "ON" Trykk på "Done" -knappen for å lagre.
Gjenta ovenstående for den andre noden, og sett nyttelastverdien til “0” og dens navn som “av” som vist nedenfor.
Under egenskapsfunksjonen kan repeteringsmenyen brukes til å automatisere injeksjonen slik at knappene blir trykket med intervaller. Dette kan brukes til å skape blinkeffekten. Koble nodene sammen som vist nedenfor, ved å dra den grå prikken på en av nodene til den andre for å skape flyt.
Når det er gjort, har vi nå fullført vår aller første Node-Red Flow.
Neste trinn er at vi distribuerer strømmen på bringebær-pi. Klikk på den røde distribusjonsknappen. Du bør se "vellykket distribuert" -blits øverst på skjermen som vist nedenfor.
Klikk på den grå knappen bak injeksjonsnodene for å aktivere hver av nodene.
Ved å klikke på “på” injeksjonsnoden, skal du se at “på” ble injisert og lysdioden tennes. LED-lampen skal slukkes når du klikker på injeksjonsnoden "av".
Det er det. Fullstendig bearbeiding av dette oppsettet finner du i videoen som er lenket nederst på denne siden.
Legge til en trykknapp / bryter i Node-RED-grensesnitt med Raspberry Pi
For å forklare hvordan du kobler til / legger til et inngangselement til strømmen din, tar vi strømmen ovenfor ved å legge til en trykknapp for å erstatte injeksjonsnodene.
Koble trykknappen til bringebær-pi, slik at det ene benet på trykknappen er koblet til bakken og det andre er koblet til GPIO-pin 4 (pin 11) på raspbery pi, som vist i skjemaene nedenfor.
Når dette er gjort, gå tilbake til Node-Red og slett de to injeksjonsnodene vi brukte tidligere, ved å klikke på nodene og trykke på delete på tastaturet eller dobbeltklikke på nodene og trykke på delete i popup-vinduet. Når det er gjort, blar du ned noderpaletten til bringebær-pi-delen og velger inngangsnoden. Det er den med bringebær-pi-ikonet til venstre, før nodens navn.
Dra noden inn i flyten og dobbeltklikk på den for å redigere egenskaper. Sett pinnen til GPIO 4 (pinne 11), og sett rullegardinmen foran motstanden for å trekke opp. Dette vil "trekke opp" GPIO 4 til HØY. Klikk på knappen ferdig etter at du har angitt egenskapene.
For å tillate oss å ta logiske avgjørelser når bryteren trykkes i stedet for bare å kortslutte GPIO4 til bakken, vil vi bruke bryterenoden. Søk etter den i nodepaletten, under funksjonsdelen, og dra til flyten.
Bryternoden lar deg ta avgjørelser på en måte som ligner “if” -uttalelsene. Den kan settes opp til å ha forskjellige utganger avhengig av inngangsverdien. For denne opplæringen vil vi konfigurere den med to utgangsbaner, slik at når msg.payload-egenskapen er lik 1 (bryteren ikke trykkes), skal den følge den første banen og en annen vei vil bli fulgt hvis noen annen inngang annet enn 1 observeres ved inngangen (bryteren trykkes). Stier legges til ved hjelp av “+ legg til” -knappen. Dobbeltklikk på noden og konfigurer som beskrevet ovenfor. Klikk ferdig når du er ferdig.
Så snart du treffer knappen ferdig, bør du se de to banene gjenspeiler i outlook av bryteren node, som det vil nå ha to veikryss ved utgangen.
Deretter må vi hente inn en "endringsnode". Endringen noden vil bli brukt til å angi tilstanden til en LED basert på resultatet av argumentet noden.
Vi bruker to av endringsnodene. Nyttelasten til den første vil bli satt til 0 som vist på bildet nedenfor og nyttelasten til den andre sett til en. Klikk ferdig etter redigering av egenskaper for begge.
For å bedre forklare, husker vi at vi brukte opptrekksmotstanden? Når knappen ikke har blitt trykket inn, vil utgangen på den stiften være HØY (1), noe som betyr at hvis vi fører den gjennom bryteren, vil LED-lampen være "på", siden dette ikke burde være slik, vil vi bruk “endre” noden for å sette den som LAV (0). Den andre "endringsnoden" brukes til å sette verdien til en slik at når noe annet enn HIGH-tilstanden til GPIO-pin 4 oppdages, bør den slå LED-lampen "på", da dette betyr at trykknappen er blitt trykket. Koble endringsnodene og resten av nodene sammen som vist på bildet nedenfor.
Når dette er gjort, er vi nå klare til å distribuere prosjektet. Gå over tilkoblingen for å sikre at alt er som det skal, og klikk deretter på distribusjonsknappen. Som vanlig, hvis du lykkes, bør du se den vellykkede popupen og nå være i stand til å kontrollere ledet ved hjelp av bryteren.
Mens Node-Red gjør det enkelt og raskt å prototype bygningen din uten å bekymre deg for koden, kan det hende at den faktisk ikke passer best, spesielt for erfarne utviklere som vil ha fleksibilitet og kontroll over programmet. Likevel er det et flott verktøy som lar deg bygge prototype på få minutter.
Til neste gang!