- Eerste vereisten
- Vereiste componenten
- Node-RED installeren op Raspberry Pi
- Lancering van Node-RED in Raspberry Pi
- Inzicht in de Node-RED-interface
- Schema's
- Een stroom maken in Node-RED
- Een drukknop / schakelaar toevoegen in Node-RED-interface met Raspberry Pi
Ooit afgevraagd of er een manier was om eenvoudige prototypes van IoT-oplossingen te maken zonder dagenlang codes te hoeven schrijven of om praktische geavanceerde projecten te bouwen zonder codering. Ja, dit is mogelijk met het Node-Red Platform. Node-RED, ontwikkeld door IBM, is een open-source programmeertool om hardwareapparaten, API's en online services op een nieuwe en interessante manier met elkaar te verbinden. Het biedt een browsergebaseerde editor die het gemakkelijk maakt om ' stromen' met elkaar te verbinden met behulp van het brede scala aan knooppunten in het palet die met een enkele klik kunnen worden geïmplementeerd in de runtime.
Node-RED is een krachtig hulpmiddel voor het bouwen van Internet of Things (IoT) -toepassingen met als doel de programmeercomponent te vereenvoudigen.
Het maakt gebruik van visuele programmering waarmee u codeblokken, ook wel knooppunten genoemd, met elkaar kunt verbinden om een taak uit te voeren. Voor de tutorial van vandaag zullen we onderzoeken hoe je eenvoudige projecten op de Raspberry Pi kunt implementeren met Node-RED. De Raspberry Pi Node-Red-zelfstudie behandelt;
- Node-RED installeren op de Raspberry Pi.
- Inleiding tot de gebruikersinterface van Node-RED
- Node-RED-stromen instellen
- Hoe Raspberry Pi GPIO-pinnen te bedienen met Node-RED
- Hoe u Node-RED-ingangen, uitgangen en eventuele besluitvorming gebruikt met behulp van schakelaars
Eerste vereisten
Deze tutorial zal gebaseerd zijn op het Raspbian stretch OS en ik neem aan dat je bekend bent met het opzetten van de Raspberry Pi ermee, en je weet hoe je SSH in de Pi moet zetten met behulp van terminalsoftware zoals stopverf. Als je hier problemen mee hebt, zijn er talloze Raspberry Pi-zelfstudies op deze website die kunnen helpen.
Om de tutorial gemakkelijk af te maken, adviseer ik je om gebruik te maken van een monitor aangesloten op de raspberry pi of om de VNC Viewer software te gebruiken. Als je geen monitor hebt en opnieuw begint met Pi, kun je deze Headless Raspberry Pi-set-up lezen om verder te gaan met deze tutorial. Hoewel Node-Red wordt uitgevoerd vanuit een webbrowser en toegankelijk is op uw pc waarmee de Pi is verbonden via het IP-adres van de Pi, geloof ik dat de VNC / monitor-ervaring u een beter inzicht zal geven.
Als demo om te laten zien hoe Node-Red werkt, zullen we Node-RED gebruiken om de Raspberry Pi te programmeren om een LED te besturen die is aangesloten op zijn GPIO en later het programma te wijzigen zodat de LED kan worden bediend vanaf een tactiele drukknop die is aangesloten op de Pi GPIO.
Vereiste componenten
De volgende componenten zijn vereist om dit project te bouwen;
- Raspberry Pi 3 met vooraf geladen SD-kaart met vooraf geladen Raspbian Stretch
- 100 ohm weerstand (1)
- LED (1)
- Broodplank (1)
- Man-naar-vrouw doorverbindingsdraden
- Tactiele drukknop (1)
Node-RED installeren op Raspberry Pi
Hoewel Node-Red vooraf is geïnstalleerd op het Raspbian Stretch-besturingssysteem, moeten we het upgraden voordat we kunnen genieten van enkele van de nieuwste functies. Het upgraden van de Node-Red zal
- Upgrade de bestaande gebruiker naar LTS 8.x of 10.x Node.js en de nieuwste Node-RED
- Migreer alle bestaande wereldwijd geïnstalleerde knooppunten naar de gebruikers ~ /.node-red-ruimte zodat ze kunnen worden beheerd via de paletmanager, het GEEFT GEEN update van een door de gebruiker geïnstalleerde bestaande knooppunten. Dit moet handmatig door de gebruiker worden gedaan (zie hieronder).
- Optioneel (her) installeer de extra knooppunten die vooraf zijn geïnstalleerd op een volledige Raspbian Pi-afbeelding.
Het proces van het upgraden van de Node-Red is echter vergelijkbaar met het installeren van een nieuwe, dus voor deze tutorial behandelen we het als een nieuwe installatie, zodat mensen die andere OS-versies gebruiken het kunnen volgen.
Volg de onderstaande stappen om Node-RED op uw Raspberry Pi te installeren / upgraden.
We beginnen met het upgraden en updaten van de pi, om ervoor te zorgen dat alles erop up-to-date is en compatibiliteitsproblemen te voorkomen. Doe dit door een terminal te openen of via ssh, en voer uit;
Sudo apt-get update
gevolgd door
sudo apt-get upgrade
Als dit klaar is, voer je het bash-script hieronder uit op de terminal;
bash <(curl -sL
Het bash-script doet de volgende dingen
- Vraag of je de extra Pi-nodes wilt (her) installeren
- Bewaar een lijst met alle wereldwijd geïnstalleerde node- red - nodes gevonden in / usr / lib / node_modules
- apt-get verwijder bestaande Node-Red
- verwijder alle node-red binaries uit / usr / bin en / usr / local / bin
- Verwijder alle node-red modules uit / usr / lib / node_modules en / usr / local / lib / node_modules
- Detecteer of Node.js is geïnstalleerd vanuit het Node.js-pakket of Debian
- Indien niet v8 of nieuwer - verwijder indien nodig en installeer de nieuwste v8 of v10 LTS (niet met apt).
- Ruim de npm-cache en.node-gyp-cache op om eerdere versies van de code te verwijderen
- Installeer de nieuwste versie van Node-RED
- Installeer alle knooppunten die eerder wereldwijd waren geïnstalleerd opnieuw onder het gebruikersaccount
- Installeer indien nodig de extra Pi-knooppunten opnieuw
- Herbouw alle knooppunten - om alle binaire bestanden opnieuw te compileren zodat ze overeenkomen met de nieuwste versie van Node.js
- Voeg node-red-start, node-red-stop en node-red-log commando's toe aan / usr / bin
- Menusnelkoppeling en pictogram toevoegen
- Systeemscript toevoegen en gebruiker instellen
- Als op een Pi een CPU-temperatuur wordt toegevoegd -> IoT-voorbeeld
Het bash-script hierboven voert veel opdrachten uit als sudo en verwijdert bestaande Node.js en de kern Node-RED-mappen. Je kunt de inhoud van het script op deze GitHub-pagina controleren voordat je het uitvoert om er zeker van te zijn dat het geen invloed heeft op een project dat je al op de Pi hebt.
Nu de installatie is voltooid, zou je nu het Node-Red-pictogram moeten zien onder de lijst met programmeerapps van je menu.
Lancering van Node-RED in Raspberry Pi
Node-Red kan worden gestart via het menugedeelte vanaf het bureaublad van uw Raspberry Pi, via de terminal of via ssh.
Om op het bureaublad van de Raspberry Pi te starten, klikt u op het Raspberry-pictogram, beweegt u uw muis over Programmeren en klikt u op Node-RED (Menu> Programming> NodeRed) om het te starten.
Het kan ook worden gestart vanuit ssh of terminal door te draaien;
knooppunt-red-start
U zou een venster zoals hieronder moeten zien met de rode start van het knooppunt op het bureaublad.
Zodra je dit ziet, ga je naar menu-> internet en start je de Chromium-webbrowser. Hoewel je Raspberry pi geen internet nodig heeft om Node-Red uit te voeren, gebruikt hij een browser als interface.
Als Chromium is gestart, voert u localhost: 1880 in de adresbalk in, gevolgd door de enter-toets. 1880 is de poort op de Raspberry Pi waarop Node-Red vooraf is ingesteld om te communiceren. Dit zou de Node-Red-interface moeten weergeven zoals weergegeven in de onderstaande afbeelding.
Inzicht in de Node-RED-interface
De Node-Red-interface bestaat uit het stroompaneel, het nodes-palet, de debug-console en de info-console, zoals aangegeven in de bovenstaande afbeelding.
Het stroompaneel is waar de knooppunten worden samengevoegd om een programma te creëren dat in Node-Red stroom wordt genoemd, terwijl het knooppuntpalet bestaat uit objecten die representatief zijn voor hardware, protocollen en softwarefuncties die zijn gekoppeld aan apparaten. Het bevat protocollen zoals MQTT voor IoT en GPIO-uitvoer- en invoermodi voor kaarten zoals de Raspberry Pi. De info-console geeft informatie over gemarkeerde / geselecteerde objecten terwijl de debug-consolewerkt net als de Arduino Serial monitor en kan feedback geven terwijl de flow loopt. De implementatieknop wordt gebruikt om de stroom naar de doelhardware te uploaden. De menuknop bevat verschillende uploadtypes om u te helpen het beste uit uw project te halen. Nu Node-Red actief is, kunnen we doorgaan met het bouwen van het demoproject.
Schema's
Zoals vermeld tijdens de introductie, zal ons demoproject voor vandaag zijn om de GPIO van de Raspberry Pi te besturen met behulp van een Node-RED-stroom. Om de variatie in de GPIO-status te laten zien, zullen we een LED op de GPIO aansluiten, zodat wanneer die specifieke GPIO-pin wordt ingeschakeld, de LED gaat branden en vice versa.
Verbind de LED met de Raspberry PI zoals weergegeven in het onderstaande schema.
Ik bouw hetzelfde ook op mijn hardware met behulp van een breadboard, LED, weerstand en enkele verbindingsdraden. Mijn hardware-installatie ziet er ongeveer zo uit als de verbindingen zijn gemaakt.
Dit project kan eenvoudig worden omgezet in een huisautomatiseringsproject, gewoon door de LED te vervangen door een relais en een willekeurig AC-apparaat, leer hoe u dat moet doen door verschillende huisautomatiseringsprojecten te doorlopen.
Een stroom maken in Node-RED
Met de aangesloten LED kunnen we doorgaan met het ontwikkelen van de stroom. Programma's in NodeRed worden stromen genoemd, net zoals de Arduino IDE ze sketches noemt. Stromen worden gemaakt met behulp van een combinatie van knooppunten. U kunt meerdere stromen maken die allemaal tegelijkertijd kunnen worden uitgevoerd, maar voor deze zelfstudie maken we een enkele stroom om de LED aan / uit te zetten.
Om te beginnen, scrol je naar de onderkant van het Nodes-palet, je zult het frambozen-pi-nodes-gedeelte tegen het einde zien met twee nodes met het label rpigpio. Deze knooppunten worden gebruikt om te communiceren met de GPIO van de Raspberry Pi. Een van de knooppunten is voor invoer, terwijl de andere voor uitvoer is, gedifferentieerd door de positie van het Raspberry Pi-logo. Voor het invoerknooppunt komt het logo voor de tekst, terwijl voor het uitvoerknooppunt het logo na de tekst komt zoals weergegeven in de onderstaande afbeelding.
Voor deze tutorial maken we gebruik van het output-knooppunt, sleep het naar het stroomgedeelte van de interface. Deze stap is vergelijkbaar met het declareren van een bepaalde pin van uw Arduino als uitvoer met behulp van de opdracht pinMode () . Dubbelklik op het uitvoerknooppunt en een pop-upvenster wordt geopend zoals hieronder weergegeven, zodat u de eigenschappen van het knooppunt kunt bewerken.
Selecteer GPIO17 (pin 11) onder het gedeelte met pin-eigenschappen . Stel vervolgens de eigenschap type in op " digitale uitvoer " en vink " Initialize pin state?" selectievakje waarbij de optie " initiële pinniveau " op laag staat (0). Geef het knooppunt een willekeurige naam en klik op de knop Gereed.
De naam van het knooppunt zou automatisch moeten veranderen in de naam die u heeft ingevoerd onder de eigenschappeninstelling. Ik noemde het bijvoorbeeld LED en daarom wordt de knooppuntnaam ook gewijzigd als LED, zoals hieronder wordt weergegeven.
Om de LED aan / uit te zetten, hebben we een input nodig, iets om de actie aan te sturen. Hoewel we een drukknop zouden kunnen gebruiken, wil ik deze gebruiken om de functie in Node-RED te introduceren waarmee berichten in stromen kunnen worden geïnjecteerd. Deze functie wordt het injecteerknooppunt genoemd. We zullen twee injectieknooppunten gebruiken. Een daarvan is om de LED aan te zetten, terwijl de andere is om hem uit te schakelen.
Ga naar het knooppuntpalet en sleep het injectieknooppunt naar de stroom. Het is het eerste knooppunt in het palet met een pijl, het injectieknooppunt is gemarkeerd in de onderstaande afbeelding.
Dubbelklik erop om de eigenschappen ervan te bewerken. Wijzig het gegevenstype in tekenreeks door op de vervolgkeuzelijst voor payload te klikken en 1 in het veld Payload in te voeren. De waarde in de payload-box is wat er in de stroom wordt geïnjecteerd wanneer op het knooppunt wordt gedrukt. Zet de naam van het knooppunt op "AAN". Druk op de knop "Gereed" om op te slaan.
Herhaal het bovenstaande voor het tweede knooppunt en stel de payload-waarde in op "0" en de naam op "off", zoals hieronder weergegeven.
Onder de eigenschappenfunctie kan de vervolgkeuzelijst voor herhalen worden gebruikt om de injectie te automatiseren, zodat de knoppen met tussenpozen worden ingedrukt. Dit kan worden gebruikt om het knippereffect te creëren. Verbind de knooppunten met elkaar zoals hieronder getoond, door de grijze stip op een van de knooppunten naar de andere te slepen om de stroom te creëren.
Nu dat klaar is, hebben we nu onze allereerste Node-Red Flow voltooid.
De volgende stap is dat we de stroom op de framboos pi inzetten. Klik op de rode implementatieknop. U zou bovenaan het scherm "succesvol geïmplementeerd" moeten zien knipperen, zoals hieronder getoond.
Klik op de grijze knop achter de injectieknooppunten om elk van de knooppunten te activeren.
Door op de "on" inject-node te klikken, zou u succesvol geïnjecteerd "on" moeten zien verschijnen en de LED gaat branden. De LED moet uitgaan als op de "uit" injectieknoop wordt geklikt.
Dat is het. De volledige werking van deze set-up is te vinden in de video die onderaan deze pagina is gelinkt.
Een drukknop / schakelaar toevoegen in Node-RED-interface met Raspberry Pi
Om uit te leggen hoe u een invoerelement aan uw stroom kunt verbinden / toevoegen, zullen we de bovenstaande stroom verder brengen door een drukknop toe te voegen om de injectieknooppunten te vervangen.
Sluit de drukknop aan op de raspberry pi, zodanig dat de ene poot van de drukknop is verbonden met aarde en de andere is verbonden met GPIO-pin 4 (pen 11) van de raspbery pi, zoals weergegeven in het onderstaande schema.
Als dit klaar is, ga je terug naar Node-Red en verwijder je de twee injectieknooppunten die we eerder gebruikten, door op de knooppunten te klikken en op delete op je toetsenbord te drukken of door op de knooppunten te dubbelklikken en op delete te drukken in het pop-upvenster. Als dat klaar is, scrol je door het knooppuntpalet naar de Raspberry Pi-sectie en selecteer je het invoerknooppunt. Het is degene met het frambozen pi-pictogram aan de linkerkant, vóór de naam van het knooppunt.
Sleep het knooppunt in de stroom en dubbelklik erop om eigenschappen te bewerken. Stel de pin in op GPIO 4 (pin 11) en zet de dropdown voor de weerstand op pull-up. Hierdoor wordt GPIO 4 naar HIGH "getrokken". Klik op de knop Gereed nadat u de eigenschappen heeft ingesteld.
Om ons in staat te stellen logische beslissingen te nemen wanneer de schakelaar wordt ingedrukt in plaats van alleen GPIO4 naar aarde te kortsluiten, zullen we het schakelknooppunt gebruiken. Zoek ernaar in het knooppuntpalet, onder het functiesectie en sleep naar de stroom.
Met de switch-node kunt u beslissingen nemen op een manier die vergelijkbaar is met de "if" -instructies. Het kan worden ingesteld om verschillende uitgangen te hebben, afhankelijk van de ingangswaarde. Voor deze zelfstudie zullen we het configureren met twee uitvoerpaden, zodat, wanneer de eigenschap msg.payload gelijk is aan 1 (schakelaar niet ingedrukt), deze het eerste pad moet volgen en een tweede pad zal worden gevolgd als een andere invoer anders dan 1 wordt waargenomen bij de ingang (schakelaar is ingedrukt). Paden worden toegevoegd met de knop "+ toevoegen". Dubbelklik op het knooppunt en configureer zoals hierboven beschreven. Klik op klaar als u klaar bent.
Zodra je op de knop Gereed drukt, zou je de twee paden moeten zien weerspiegelen in het uiterlijk van het schakelknooppunt, omdat het nu twee knooppunten aan de uitgang heeft.
Vervolgens moeten we een "change" -knooppunt introduceren. De wijziging knooppunt zal worden gebruikt om de toestand van de LED op basis van het resultaat van het argument te stellen knooppunt.
We zullen twee van de wijzigingsknooppunten gebruiken. De payload van de eerste wordt ingesteld op 0 zoals weergegeven in de onderstaande afbeelding en de payload van de tweede wordt ingesteld op één. Klik op klaar na het bewerken van eigenschappen voor beide.
Om het beter uit te leggen, weet je nog dat we de pull-up-weerstand hebben gebruikt? Dus als de knop niet is ingedrukt, is de uitvoer op die pin HOOG (1), wat betekent dat als we het door het schakelknooppunt gaan, de LED 'aan' zal zijn, aangezien dit niet zo zou moeten zijn, zullen we gebruik de "change" node om het in te stellen als LOW (0). Het tweede "change" -knooppunt wordt gebruikt om de waarde zo in te stellen dat wanneer iets anders dan de HIGH-status van GPIO-pin 4 wordt gedetecteerd, het de LED "aan" moet zetten, aangezien dit betekent dat de drukknop is ingedrukt. Verbind de veranderingsknooppunten en de rest van de knooppunten met elkaar zoals weergegeven in de onderstaande afbeelding.
Nu dit klaar is, zijn we nu klaar om het project in te zetten. Bekijk de verbinding om er zeker van te zijn dat alles naar behoren is en klik vervolgens op de implementatieknop. Zoals gewoonlijk, als dit lukt, zou u de pop-up met succesvolle implementatie moeten zien en nu de led kunnen bedienen met de schakelaar.
Hoewel de Node-Red het gemakkelijk en snel maakt om een prototype van je build te maken zonder je zorgen te hoeven maken over de code, is het misschien niet de beste keuze, vooral niet voor ervaren ontwikkelaars die flexibiliteit en controle over het programma willen. Desalniettemin is het een geweldige tool waarmee u binnen enkele minuten prototypes kunt bouwen.
Tot de volgende keer!