Inhoudsopgave:

Raspberry PI & Arduino - Blynk Stepper Control - Ajarnpa
Raspberry PI & Arduino - Blynk Stepper Control - Ajarnpa

Video: Raspberry PI & Arduino - Blynk Stepper Control - Ajarnpa

Video: Raspberry PI & Arduino - Blynk Stepper Control - Ajarnpa
Video: Control Stepper Motor with Blynk IoT and ESP8266 | Blynk IoT and ESP8266 Stepper Motor Tutorial 2024, November
Anonim
Raspberry PI & Arduino - Blynk Stepper Control
Raspberry PI & Arduino - Blynk Stepper Control

Deze tutorial laat je zien hoe je een stappenmotor bestuurt met een Arduino, een Raspberry Pi en de Blynk-applicatie.

In een notendop, de app stuurt verzoeken naar de Raspberry Pi via virtuele pinnen, de Pi stuurt vervolgens een HOOG/LAAG-signaal naar de Arduino en de Arduino behandelt vervolgens de stappenmotor.

Ik denk dat het gemakkelijker is om die aanpak te gebruiken, omdat de meeste mensen gewend zijn om met Arduino te werken en niet veel met node.js op de Raspberry Pi.

Onderdelen die hiervoor nodig zijn:

- Raspberry PI (ik gebruik de Raspberry Pi 3 model b)

- Arduino (ik gebruik een Arduino Nano)

- Servomotor (ik gebruik een 28BYJ-48 5VDC met zijn controller)

- Enkele jumperdraden

- Stroombron (5VDC 2A.)

De Arduino-schets en de Node.js-code zijn beschikbaar om te downloaden. Zoek de bestanden maar op.

Stap 1: De app op uw telefoon maken

De app op uw telefoon maken
De app op uw telefoon maken
De app op uw telefoon maken
De app op uw telefoon maken

Download Blynk uit de AppStore of GooglePlay

Open de app en maak een gebruiker aan of log in met facebook.

- Maak een nieuw project

Geef uw project een naam: MijnProject

Kies apparaat: Rasapberry Pi 3 B

Verbindingstype: Wifi (of Ethernet als uw Pi op uw netwerk is aangesloten)

- Klik op Maken

Controleer uw e-mail voor uw token

(ziet er zo uit 3aa19bb8a9e64c90af11e3f6b0595b3c)

Deze Token is gekoppeld aan uw huidige app. Als u een andere app doet, genereert u een ander token.

Voeg in de App de volgende widgets toe (zie afbeelding)

- Voeg 3 knoppen toe

- Voeg 1 LCD toe

- Bewerk de knop

noem de eerste Command1, stel de pin in als virtuele pin 1 en stel de modus in als SCHAKELAAR

noem de tweede CW, stel de pin in als virtuele pin 2 en stel de modus in als PUSH

noem de derde CCW, stel de pin in als virtuele pin 3 en stel de modus in als PUSH

- Bewerk het LCD-scherm

stel de pinnen in als virtuele pin 4 en virtuele pin 5 en stel de modus in op PUSH

Stap 2: De PI voorbereiden

Eerst moet je Node.js installeren. Voordat je Node.js bijwerkt, moet je ervoor zorgen dat je oude versies verwijdert:

Terminal openen en typen

sudo apt-get purge node nodejs

node.js -ysudo apt-get autoremove

Automatische installatie van Node.js Repositories toevoegen:

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -

Installeer Node.js

sudo apt-get update && sudo apt-get upgrade

sudo apt-get install build-essentiële nodejs -y

Zodra Node.js is geïnstalleerd, installeer Blynk

sudo npm installeer blynk-library -g

sudo npm install onoff -g

Stap 3: Uw project maken

Begin met het wijzigen van de map (cd-opdracht) naar de pi-map

Open Terminal en typ:

cd /home/pi/

Maak vervolgens een map waar uw project zich zal bevinden

mkdir MijnProject

Wijzig de map naar MyProject, typ het volgende in de Terminal:

cd MijnProject

Controleer de inhoud van de map (deze moet leeg zijn). Typ gewoon het volgende in de Terminal:

ls

Typ vervolgens het volgende om uw projectbeschrijving te maken (package.json)

npm init

Typ gewoon de projectnaam, auteur, versie, enz …

Zodra dit is gebeurd, installeert u de Blynk-bibliotheek, de onoff-bibliotheek en de systeemslaapbibliotheek in UW projectdirectory. Typ het volgende in uw Terminal:

npm install blynk-library --save

npm installeren aanuit --save

npm install system-sleep --save

Maak ten slotte uw.js-bestand (dit is waar uw code zich zal bevinden). Typ het volgende in de Terminal:

nano MijnProject.js

Zodra u die opdracht uitvoert, wordt nano (terminalteksteditor) geopend.

Stap 4: MijnProject.js

Schrijf in nano de volgende regels code:

var Blynk = vereisen('blynk-bibliotheek');

var AUTH = ' **************** '; DIT IS JOUW TOKEN

var blynk = nieuwe Blynk. Blynk(AUTH);

var Gpio = vereisen ('aanuit'). Gpio,

command1 = nieuwe Gpio (18, 'out'), // Zal worden aangesloten op Arduino D2

commandCW = nieuwe Gpio (23, 'out'), // Zal worden aangesloten op Arduino D3

commandCCW = nieuwe Gpio(24, 'uit'); // Zal worden aangesloten op Arduino D4

var sleep = vereisen('systeem-slaap');

var v1 = nieuwe blynk. VirtualPin(1); //dit is je Command1-knop in de app

var v2 = nieuwe blynk. VirtualPin(2); //dit is je CW-knop in de app

var v3 = nieuwe blynk. VirtualPin (3); //dit is je CCW-knop in de app

var v4 = nieuwe blynk. VirtualPin(4); //dit is je LCD-lijn 1 in de app

var v5 = nieuwe blynk. VirtualPin(5); //dit is je LCD-lijn 2 in de app

v1.on('write', function (param) //Check voor de Command1 knop in de app

{

if (param == 1) //Als de knop wordt ingedrukt (wat 1) is, doe dan het volgende:

{

v4.write("Uitvoeren"); // Schrijf "Executing" op de eerste regel van het LCD-scherm

v5.write("Opdracht"); // Schrijf "Command" op de tweede regel van het LCD-scherm

command1.writeSync(1); //Stel de GPIO18 (dat is een variabele opdracht1) in op 1 (HOOG)

slaap (4000); //Wacht 4 seconden

command1.writeSync(0); // Stel de GPIO18 (dat is een variabele opdracht1) in op 0 (LAAG)

v4.write("Gereed"); // Schrijf "Klaar" op de eerste regel van het LCD-scherm

v5.write(" "); //Schrijf " " (niets) op de tweede regel van het LCD-scherm

v1.write(0); //Schrijf 0 naar je Command1-knop, dat zal het terugzetten naar de UIT-positie

}

});

v2.on('write', function (param) //Controleer op de CW-knop in de app

{

if (param == 1) //Als de knop wordt ingedrukt (wat 1) is, doe dan het volgende:

{

commandCW.writeSync(1); // Stel de GPIO23 (variabele commandCW) in op 1 (HIGH)

}

else if (param == 0) //Als de knop niet is ingedrukt (wat 0 is), doe dan het volgende:

{

commadCW.writeSync(0); // Stel de GPIO23 (variabele commandCW) in op 0 (LOW)

}

});

v3.on('write', function (param) //Check voor de CCW-knop in de app

{

if (param == 1) //Als de knop wordt ingedrukt (wat 1) is, doe dan het volgende:

{

commandoCCW.writeSync(1); //Stel de GPIO24 (die variabele commandCCW is) in op 1 (HIGH)

}

else if (param == 0) //Als de knop niet is ingedrukt (wat 0 is), doe dan het volgende:

{

commandCCW.writeSync(0); //Stel de GPIO24 (die variabele commandCCW is) in op 1 (HIGH)

}

});

Sla het op en verlaat nano

- om CTRL+O. op te slaan

- om CTRL+X. af te sluiten

Je bent klaar met de Raspberry Pi.

Test het nu om te zien of er fouten zijn (meestal zijn het typefouten)

Om het te testen, typt u gewoon het volgende in uw Terminal:

knooppunt MijnProject.js

Je zou een output moeten krijgen die er zo uitziet

AanUit-modus

Verbinding maken met: blynk-cloud.com 8441

SSL-autorisatie…

Geautoriseerd

Stap 5: MijnProject in Arduino

Ok dus nu hebben we 2/3 dingen voltooid!

Nu hoeven we alleen nog wat code voor de Arduino te schrijven.

- Maak een nieuwe Arduino-schets en typ de volgende code.

#erbij betrekken

#define STEPS_PER_MOTOR_REVOLUTION 32

#define STEPS_PER_OUTPUT_REVOLUTION 32 * 64 //2048

// De pin-verbindingen moeten op pinnen 8, 9, 10, 11 aangesloten zijn

// naar Motor Driver In1, In2, In3, In4

// Vervolgens worden de pinnen hier ingevoerd in de volgorde 1-3-2-4 voor de juiste volgorde

Stepper small_stepper (STEPS_PER_MOTOR_REVOLUTION, 8, 10, 9, 11);

int Steps2Take;

int Opdracht1;

int CommandCW;

int CommandCCW;

ongeldige setup()

{

pinMode(2, INPUT);

pinMode (3, INGANG);

pinMode (4, INGANG);

//(Stepper Library stelt pinnen in als uitgangen)

}

lege lus()

{

Command1 = digitalRead (2);

CommandCW = digitalRead (3);

CommandCCW = digitalRead(4);

if(Commando1 == 0)

{

//niets doen

}

anders

{

Uitvoeringsfunctie();

}

if(CommandoCW == 1)

{

small_stepper.setSpeed(700);

kleine_stepper.stap(-1);

vertraging(1);

}

if(CommandoCCW ==1)

{

small_stepper.setSpeed(700);

kleine_stepper.stap(1);

vertraging(1);

}

}

void Uitvoeringsfunctie()

{

Steps2Take = STEPS_PER_OUTPUT_REVOLUTION / 4; // Draai linksom 1/4 slag

small_stepper.setSpeed(700);

small_stepper.step (Steps2Take); // U kunt Steps2Take vervangen door elke waarde tussen 0 en 2048

vertraging (500);

Steps2Take = - STEPS_PER_OUTPUT_REVOLUTION / 4; // Draai CW 1/4 slag

small_stepper.setSpeed(700);

small_stepper.step (Steps2Take); // U kunt Steps2Take vervangen door elke waarde tussen 0 en 2048

vertraging (2000);

}

Compileren en uploaden naar uw Arduino.

Zorg er nu voor dat je alles goed aansluit! Zie de volgende stap voor bedrading.

Stap 6: Bedrading

Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading
Bedrading

Sluit Arduino D3 aan op RaspberryPi GPIO18 (wat eigenlijk pin 12 is)

Sluit Arduino D4 aan op RaspberryPi GPIO23 (wat eigenlijk pin 16 is)

Verbind Arduino D4 met RaspberryPi GPIO24 (wat eigenlijk pin 18 is)

Sluit Arduino GND aan op RaspberryPi GND (pin 6)

Sluit Arduino D8 aan op Stepper Controller In1

Sluit Arduino D9 aan op Stepper Controller In2

Sluit Arduino D10 aan op Stepper Controller In3

Sluit Arduino D11 aan op Stepper Controller In4

Sluit 5VDC aan op Arduino, Raspberry Pi en Stepper Controller

Stap 7: Dat is het

Bekijk de video en je zou klaar moeten zijn!

Bedankt en geniet ervan!

Aanbevolen: