- Forudsætninger
- Nødvendige komponenter
- Installation af Node-RED på Raspberry Pi
- Lancering af Node-RED i Raspberry Pi
- Forståelse af Node-RED interface
- Skemaer
- Oprettelse af et flow i Node-RED
- Tilføjelse af en trykknap / switch i Node-RED-interface med Raspberry Pi
Nogensinde spekuleret på, om der var en måde at lave enkle prototyper af IoT-løsninger uden at skulle bruge dage på at skrive koder eller at opbygge praktiske avancerede projekter uden kodning. Ja, dette er muligt med Node-Red Platform. Node-RED er udviklet af IBM og er et open source-programmeringsværktøj til sammenkobling af hardwareenheder, API'er og onlinetjenester på en ny og interessant måde. Det giver en browserbaseret editor, der gør det let at koble ' flow' sammen ved hjælp af den brede vifte af noder i paletten, der kan distribueres til dens driftstid med et enkelt klik.
Node-RED er et kraftfuldt værktøj til opbygning af IoT-applikationer (Internet of Things) med det formål at forenkle programmeringskomponenten.
Det bruger visuel programmering, der giver dig mulighed for at forbinde kodeblokke, kendt som noder, sammen for at udføre en opgave. Til dagens vejledning undersøger vi, hvordan du kan implementere enkle projekter på hindbær pi ved hjælp af Node-RED. Den hindbær pi node-rød tutorial vil dække;
- Installation af Node-RED på Raspberry Pi.
- Introduktion til Node-RED brugergrænseflade
- Sådan opsættes Node-RED-strømme
- Sådan styres Raspberry Pi GPIO-ben med Node-RED
- Sådan bruges Node-RED-indgange, -udgange og hvis-lignende beslutningstagning ved hjælp af switche
Forudsætninger
Denne vejledning vil være baseret på Raspbian stretch OS, og jeg antager, at du er fortrolig med at opsætte Raspberry Pi med det, og du ved, hvordan man SSH ind i Pi ved hjælp af en terminalsoftware som kitt. Hvis du har problemer med noget af dette, er der masser af Raspberry Pi-vejledninger på dette websted, der kan hjælpe.
For let at gennemføre vejledningen vil jeg råde dig til at bruge en skærm, der er tilsluttet hindbær pi, eller du bruger VNC Viewer-softwaren. Hvis du ikke har en skærm og starter frisk med Pi, kan du læse denne Headless Raspberry Pi-opsætning for at fortsætte med denne vejledning. Mens Node-Red kører fra en webbrowser og kan tilgås på din pc, som Pi er tilsluttet via Pi's IP-adresse, tror jeg, at VNC / skærmoplevelsen giver dig et bedre greb om ting.
Som en demo for at vise, hvordan Node-Red fungerer, bruger vi Node-RED til at programmere Raspberry Pi til at styre en LED, der er tilsluttet sin GPIO og senere ændre programmet, så LED'en kan styres fra en taktil trykknap tilsluttet Pi'erne GPIO.
Nødvendige komponenter
Følgende komponenter er nødvendige for at opbygge dette projekt;
- Raspberry Pi 3 med SD-kort forudindlæst med Raspbian Stretch forudindlæst
- 100 ohm modstand (1)
- LED (1)
- Brødbræt (1)
- Han-til-hun-jumpertråde
- Taktil trykknap (1)
Installation af Node-RED på Raspberry Pi
Mens Node-Red er forudinstalleret på Raspbian Stretch OS, er vi nødt til at opgradere det, før vi kan nyde nogle af dets nyeste funktioner. Opgradering af Node-Red testamente
- Opgrader den eksisterende bruger til LTS 8.x eller 10.x Node.js og nyeste Node-RED
- Migrer eventuelle eksisterende globalt installerede noder til brugerne ~ /.node-rød plads, så de kan administreres via paletmanageren, det opdaterer IKKE nogen brugerinstallerede eksisterende noder. Dette skal udføres manuelt af brugeren (se nedenfor).
- Valgfrit (gen) installer de ekstra noder, der er forudinstalleret på et fuldt Raspbian Pi-billede.
Processen med at opgradere Node-Red svarer imidlertid til at installere en ny, så af hensyn til denne vejledning vil vi bare behandle det som en ny installation, så folk, der bruger andre OS-versioner, kan følge.
Følg trinene nedenfor for at installere / opgradere Node-RED på din Raspberry Pi.
Vi starter med at opgradere og opdatere pi for at sikre, at alt på det er opdateret og undgå kompatibilitetsproblemer. Gør dette ved at åbne en terminal eller via ssh, og kør;
Sudo apt-get opdatering
efterfulgt af
sudo apt-get opgradering
Når dette er gjort, skal du køre bash-scriptet nedenfor på terminalen;
bash <(krølle -sL
Den bash script vil gøre følgende ting
- Spørg, om du vil (gen) installere de ekstra Pi-noder
- Gem en liste over eventuelle globalt installerede knudepunkter , der findes i / usr / lib / node_modules
- apt-get fjern eksisterende Node-Red
- fjern eventuelle node-røde binære filer fra / usr / bin og / usr / local / bin
- Fjern eventuelle node-røde moduler fra / usr / lib / node_modules og / usr / local / lib / node_modules
- Find ud af om Node.js blev installeret fra Node.js-pakken eller Debian
- Hvis ikke v8 eller nyere - fjern efter behov og installer nyeste v8 eller v10 LTS (bruger ikke apt).
- Rens npm-cache og.node-gyp-cache for at fjerne eventuelle tidligere versioner af koden
- Installer Node-RED seneste version
- Geninstaller under brugerkontoen alle noder, der tidligere var installeret globalt
- Geninstaller de ekstra Pi-noder, hvis det kræves
- Genopbyg alle noder - for at kompilere eventuelle binære filer for at matche den nyeste Node.js-version
- Føj kommandoer med node-rød-start, node-rød-stop og node-rød-log til / usr / bin
- Tilføj menugenvej og ikon
- Tilføj system script og indstil bruger
- Hvis der på en Pi tilføjes en CPU-temperatur -> IoT-eksempel
Bash-scriptet ovenfor kører mange kommandoer som sudo og sletter eksisterende Node.js og de centrale Node-RED-mapper. Du kan kontrollere indholdet af scriptet på denne GitHub-side, før du kører det for at være sikker på, at det ikke påvirker noget projekt, du allerede har på Pi.
Når installationen er afsluttet, skal du nu se Node-Red-ikonet under listen over programmeringsapps i din menu.
Lancering af Node-RED i Raspberry Pi
Node-Red kan startes via menusektionen fra dit hindbær pi-skrivebord, via terminalen eller over ssh.
For at starte på hindbær-pi-skrivebordet skal du klikke på Raspberry-ikonet, holde musen over Programmering, klikke på Node-RED (Menu> Programmering> NodeRed) for at starte det.
Det kan også startes fra ssh eller terminal ved at køre;
node-rød-start
Du skal se et vindue som det nedenfor, der viser rød rød start på skrivebordet.
Når du først har set dette, skal du gå til menu-> internet og starte chromium-webbrowseren. Mens din Raspberry pi ikke har brug for internettet til at køre Node-Red, bruger den en browser som grænseflade.
Når chrom er lanceret, skal du indtaste localhost: 1880 i adresselinjen efterfulgt af enter-nøglen. 1880 er porten på hindbær pi, som Node-Red er forudindstillet til at kommunikere. Dette skal vise Node-Red-grænsefladen som vist på billedet nedenfor.
Forståelse af Node-RED interface
De Knude-Red-interface består af den strøm-panel, den knuder palet, debug konsol og info konsol som fremhævet i billedet ovenfor.
Den flow-panelet er, hvor knuderne er gået sammen om at skabe et program, som i Node-Rød kaldes flow, mens Node palet består af objekter, som er repræsentative for hardware, protokoller og software træk forbundet med enheder. Det inkluderer protokoller som MQTT til IoT og GPIO-output og inputtilstande til kort som hindbær pi. Den info konsol giver oplysninger om fremhævet / valgte objekter, mens debug konsolfungerer ligesom Arduino Serial monitor og kan give feedback, mens strømmen kører. Distribueringsknappen bruges til at uploade strømmen til målhardware. Menu-knappen indeholder forskellige uploadtyper, der hjælper dig med at få det bedste ud af dit projekt. Når Node-Red er i gang, kan vi nu fortsætte med at opbygge demoprojektet.
Skemaer
Som nævnt under introduktionen vil vores demo-projekt i dag være at kontrollere Raspberry Pi's GPIO ved hjælp af en Node-RED-strøm. For at vise variationen i GPIO-tilstanden tilslutter vi en LED til GPIO, så når den pågældende GPIO-pin er tændt, tændes LED'en og omvendt.
Tilslut lysdioden til Raspberry PI som vist i skemaerne nedenfor.
Jeg bygger også det samme på min hardware ved hjælp af et brødbræt, LED, modstand og nogle forbindelsesledninger. Min hardwareopsætning ser sådan ud, når forbindelserne er oprettet.
Dette projekt kan let konverteres til et hjemmeautomatiseringsprojekt, bare ved at udskifte lysdioden med et relæ og et hvilket som helst AC-apparat.
Oprettelse af et flow i Node-RED
Med tilsluttet LED kan vi fortsætte med at udvikle strømmen. Programmer i NodeRed kaldes flow ligesom Arduino IDE kalder dem skitser. Flow oprettes ved hjælp af en kombination af noder. Du kan oprette flere strømme, som alle kan køre på samme tid, men til denne vejledning opretter vi et enkelt flow for at tænde / slukke for LED.
For at begynde med skal du rulle til bunden af Noder-paletten, du vil se sektionen hindbær pi-noder mod slutningen med to noder mærket rpigpio. Disse noder bruges til at kommunikere med raspberry pi's GPIO. En af knudepunkterne er til input, mens den anden er til output, der er differentieret ved placeringen af hindbær-pi's logo. For inputknude, logoet kommer før teksten, mens det for output node logoet kommer efter teksten som vist på billedet nedenfor.
Til denne vejledning bruger vi outputknudepunktet, træk det ind i flowafsnittet i grænsefladen. Dette trin svarer til at erklære en bestemt pin på din Arduino som output ved hjælp af kommandoen pinMode () . Dobbeltklik på outputknudepunktet, og et pop op-vindue åbnes som vist nedenfor for at give dig mulighed for at redigere egenskaberne for knudepunktet.
Under GP- egenskabssektionen skal du vælge GPIO17 (pin 11). Indstil derefter typeegenskaben til " digital output ", og marker " Initialiser pin-tilstand?" afkrydsningsfelt efterlader indstillingen “ startniveau for pin ” som lav (0). Giv noden uanset hvilket navn du kan lide, og klik på knappen færdig.
Navnet på noden ændres automatisk til det, du indtastede under egenskabsindstillingen. For eksempel navngav jeg det som LED, og derfor ændres nodenavnet også som LED som vist nedenfor.
For at tænde / slukke for LED'en er vi nødt til at bruge en indgang, noget til at drive handlingen. Mens vi kunne bruge en trykknap, vil jeg bruge dette til at introducere funktionen i Node-RED, der tillader injektion af meddelelser i strømme. Disse funktioner kaldes injektionsnoden. Vi bruger to injektionsnoder. Den ene er at tænde lysdioden, mens den anden skal slukke den.
Gå til nodepaletten og træk injektionsnoden til flowet. Det er den første node i paletten med en pil, injektionsnoden er fremhævet i billedet nedenfor.
Dobbeltklik på den for at redigere dens egenskaber. Skift datatypen til streng ved at klikke på rullemenuen foran nyttelasten, og indtast 1 i feltet Nyttelast. Værdien i nyttelastboksen er, hvad der injiceres i strømmen, når der trykkes på knuden. Indstil navnet på noden til "ON" Tryk på "Done" -knappen for at gemme.
Gentag ovenstående for den anden knude, og indstil nyttelastværdien til “0” og dens navn som “fra” som vist nedenfor.
Under egenskabsfunktionen kan den gentagne rulleliste bruges til at automatisere injektionen, så knapperne trykkes med intervaller. Dette kan bruges til at skabe blinkeffekten. Slut noder sammen som vist nedenfor ved at trække den grå prik på en af noder til den anden for at skabe flow.
Med det gjort, har vi nu afsluttet vores allerførste Node-Red Flow.
Næste trin er for os at implementere strømmen på hindbær pi. Klik på den røde implementeringsknap. Du skal se "succesfuldt implementeret" blinke øverst på skærmen som vist nedenfor.
Klik på den grå knap bag indsprøjtningsknuderne for at aktivere hver af knudepunkterne.
Ved at klikke på "til" injektionsnoden, skal du se, at den er injiceret "til", og LED'en tændes. LED'en skal slukke, når der klikkes på "off" -injektionsknudepunktet.
Det er det. Den komplette bearbejdning af denne opsætning kan findes i den linkede video nederst på denne side.
Tilføjelse af en trykknap / switch i Node-RED-interface med Raspberry Pi
For at forklare, hvordan du forbinder / tilføjer et inputelement til dit flow, tager vi ovenstående flow videre ved at tilføje en trykknap for at erstatte injektionsnoderne.
Forbind trykknappen til hindbær pi, således at det ene ben på trykknappen er forbundet til jorden, og det andet er forbundet til GPIO-pin 4 (pin 11) på raspbery pi, som vist i skemaerne nedenfor.
Når dette er gjort, gå tilbage til Node-Red og slet de to injektionsnoder, vi brugte tidligere, ved at klikke på noderne og trykke på delete på dit tastatur eller dobbeltklikke på noderne og trykke på delete i pop op-vinduet. Når det er gjort, skal du rulle ned ad nodepaletten til hindbær pi-sektionen og vælge inputknudepunktet. Det er den med hindbær-pi-ikonet til venstre før knudepunktets navn.
Træk noden ind i strømmen, og dobbeltklik på den for at redigere egenskaber. Indstil stiften til GPIO 4 (stift 11), og indstil dropdown foran modstanden til at trække op. Dette “trækker” GPIO 4 op til HIGH. Klik på den færdige knap efter indstilling af egenskaberne.
For at give os mulighed for at træffe logiske beslutninger, når der trykkes på kontakten i stedet for kun at kortslutte GPIO4 til jorden, bruger vi switchnoden. Søg efter det i nodepaletten under funktionsafsnittet, og træk til strømmen.
Omskifterknudepunktet giver dig mulighed for at træffe beslutninger på en måde, der svarer til udsagnet "hvis". Det kan indstilles til at have forskellige udgange afhængigt af inputværdien. Til denne vejledning konfigurerer vi den med to outputstier, således at når msg.payload-egenskaben er lig med 1 (der trykkes ikke på kontakten), skal den følge den første sti, og en anden sti følges, hvis der er andre input andet end 1 observeres ved indgangen (der trykkes på kontakten). Stier tilføjes ved hjælp af knappen "+ tilføj". Dobbeltklik på noden og konfigurer som beskrevet ovenfor. Klik på færdig, når du er færdig.
Så snart du trykker på den færdige knap, skal du se de to stier afspejler i udsigten til switchknudepunktet, da den nu har to kryds ved udgangen.
Dernæst er vi nødt til at bringe en "ændring" -knude ind. Ændringen node vil blive brugt til at indstille tilstanden af LED baseret på resultatet af argumentet knude.
Vi bruger to af skiftknudepunkterne. Nyttelasten for den første indstilles til 0 som vist på billedet nedenfor og nyttelasten for den anden sættes til en. Klik på færdig efter redigering af egenskaber for begge.
For bedre at forklare, husk at vi brugte pull-up-modstanden? Når der ikke er blevet trykket på knappen, vil udgangen på den pin være HIGH (1), hvilket betyder, at hvis vi passerer den gennem switchnoden, vil LED'en være "tændt", da dette ikke skulle være sådan, vil vi brug “ændre” noden til at indstille den som LAV (0). Den anden “ændringsnode” bruges til at indstille værdien til en sådan, at når noget andet end HIGH-tilstanden af GPIO-pin 4 detekteres, skal den tænde lysdioden “tændt”, da dette betyder, at trykknappen er blevet trykket. Forbind skiftknudepunkterne og resten af knudepunkterne sammen som vist på billedet nedenfor.
Når dette er gjort, er vi nu klar til at implementere projektet. Gå over forbindelsen for at sikre, at alt er som det skal, og klik derefter på implementeringsknappen. Som sædvanlig, hvis du lykkes, skal du se den vellykkede popup-implementering og nu være i stand til at styre ledningen ved hjælp af kontakten.
Mens Node-Red gør det nemt og hurtigt at prototype din build uden at bekymre sig om koden, er det muligvis ikke den bedste pasform, især for erfarne udviklere, der ønsker fleksibilitet og kontrol over programmet. Ikke desto mindre er det et godt værktøj, der giver dig mulighed for at bygge prototype på få minutter.
Indtil næste gang!