Jak podłączyć BMP280 I2C 5V do Arduino?
Cześć! W dzisiejszym wpisie pochylimy się nad prawidłowym podpięciem czujnika BMP280, a konkretnie wersji czujnika, który posiada wbudowany konwerter poziomów logicznych oraz stabilizator napięcia dzięki czemu toleruje napięcie zasilania 5V oraz komunikację na poziomie 5V co sprawia, że można go bez przeszkód podpiąć bezpośrednio do naszego Arduino.
Polecamy zakup modułu BMP280 i innych w naszym sklepie internetowym, oferujemy wsparcie po zakupowe dla wszyskich naszych klientów, oraz błyskawiczną dostawę!
BMP280 <- Kliknij aby zakupić w naszym sklepie
BMP280 vs BME280
Teraz szybko zapoznamy się jaka jest różnica między czujnikami BMP280 i BME280. Więc BMP280 to następca BMP180 i dzięki niemu uzyskamy dokładny pomiar ciśnienia, temperatury, określimy wysokość nad poziomem morza, a nawet sprawdzimy czy aktualnie nasz moduł pozostaje w miejscu, a może się wznosi lub opada? Dzięki tym możliwościom z powodzeniem wykorzystamy go do budowy barometru z termometrem, jako wysokościomierz, lub do budowy wariometru tanim kosztem. Wariometr to urządzenie pokazujące czy aktualnie nasza wysokość wzrasta czy maleje, jest on wykorzystywany na przykład przez paralotniarzy, którzy sprawdzają czy wpadli w prąd powietrza wznoszący czy powoli opadają i z jaką prędkością. BME280 w zasadzie potrafi wszystko to co poprzednik i dodatkowo pozwala na odczyt wilgotności – oferuje on wszystkie funkcje niezbędne do stacji meteo zamknięte na płytce wielkości 2x karty microSD.
Schemat podłączenia BMP280 do Arduino
Nasz moduł transmituje dane w protokole komunikacji I2C, i łączymy go następująco z naszym Arduino UNO:
BMP280 <-> Arduino UNO
VIN <-> 5V
GND <-> GND
SCL <-> A5
SDA <-> A4
Adres naszego modułu BMP280
Przy łączeniu urządzeń przez magistralę I2C kluczowe jest znanie ich adresu. Moduł sprzedawany aktualnie w naszym sklepie posiada adres: 0x76, ale równie popularne są z adresem 0x77. Żeby nie błądzić po omacku wykorzystamy skaner I2C preinstalowany w naszym środowisku I2C jako przykład w bibliotece Wire.
Zatem upewniamy się, że wybraliśmy prawidłowy port gdzie podłączone jest nasze Arduino, odpowiednią płytkę i że połączyliśmy BMP280 według schematu, a następnie wchodzimy w: PLIK -> Przykłady -> Wire -> I2C_scanner
I wgrywamy do Arduino gotowy przykład. Teraz pozostaje nam sprawdzić w monitorze portu adres podpiętego modułu.
W moim przypadku adres BMP280 to 0x76 i wygląda to tak:
Po tym jak ustaliliśmy już właściwy adres magistrali I2C musimy pobrać bibliotekę ułatwiającą nam odczyt parametrów. Wchodzimy w Narzędzia -> Zarządzaj Bibliotekami w oknie wyszukiwarki wpisujemy BMP280 i instalujemy najnowszą wersje biblioteki od Adafruit jak na screenie poniżej 1 od góry:
Po poprawnej instalacji bierzemy się za pisanie kodu, który wyświetli nam w monitorze portu szeregowego aktualną temperaturę, ciśnienie oraz wysokość na poziomem morza.
BMP280 wyświetla temperaturę w rozdzielczości do 0.01°C i posiada dokładność +/- 1°C
Jeśli chodzi o ciśnienie to mamy tu dokładność pomiaru do 1hPa.
Przykładowy kod Arduino dla BMP280
Wszystkie niezbędna objaśnienia pojawią się jako komentarze w kodzie dla konkretnej linijki. Pytania można zadawać w komentarzach pod tym artykułem.
/*
* Interfacing Arduino with BMP280 temperature and pressure sensor.
* Temperature and pressure values are displayed on 16x2 LCD.
* This is a free software with NO WARRANTY.
* https://simple-circuit.com/
*/
#include <Wire.h> // dodajemy bibliotekę od komunikacji I2C
#include <Adafruit_BMP280.h> // dodajemy bibliotekę od adafruit BMP280
Adafruit_BMP280 bmp280; // tworzymy odnośnik do biblioteki
void setup() {
Serial.begin(9600);
Serial.println(F("Arduino + BMP280"));
if (!bmp280.begin(0x76)) //w nawiasie podajemy nasz adres I2C tutaj wpisałem 0x76
{ // sprawdzamy czy czujnik odpowiada jesli nie wyświetlamy komunikat o błędzie
Serial.println("Nie znaleziono czujnika - sprawdź połączenie!");
while (1);
}
}
void loop()
{
// odczytujemy temperaturę, ciśnienie i wysokość
float temperature = bmp280.readTemperature();
float pressure = bmp280.readPressure();
float altitude_ = bmp280.readAltitude(1013.25);
// Wypisujemy wyniki pomiarów
// 1: temperatura
Serial.print("Temperatura = ");
Serial.print(temperature);
Serial.println("°C");
// 2: ciśnienie
Serial.print("Ciśnienie = ");
Serial.print(pressure/100);
Serial.println("hPa");
// 3: wysokość
Serial.print("Wysokość = ");
Serial.print(altitude_);
Serial.println("m");
Serial.println(); // nowa linie
delay(2000); // czekamy 2 sekundy
}
// koniec programu, wykonuje się w pętli od nowa
A efekt końcowy w serial monitorze wygląda u mnie następująco.
Podsumowanie
Mam nadzieję, że ten artykuł będzie pomocny dla wszystkich, którzy mieli kłopoty z poprawnym działaniem modułu BMP280. Jak zawsze zachęcam do śledzenia naszego facebooka, gdzie umieszczamy info o nowych wpisach na blogu oraz promocjach i nowościach w sklepie internetowym.
Polub naszego fejsa tutaj-> Facebook Elektroweb
Sprawdź ofertę sklepu -> Sklep elektroniczny sosnowiec

Author: admin
Date: 2021-09-29
Obsługa modułu ESP-01 z 2 przekaźnikami
W tym wpisie postaram się pokazać jak obsługiwać gotowy moduł ESP-01 z dwoma przekaźnikami. Istnieje podobny moduł ESP-01 z jednym przekaźnikiem i tam sprawa jest bardzo prosta, wystarczy zmienić stan z niskiego na wysoki na odpowiedniej nóżce naszego ESP-01 i przekaźnik również zmieni swój stan. Z modułem z 2 przekaźnikami sprawa komplikuje się o tyle, że płytka oczekuje konkretnej komendy, która została zaprogramowana przez producenta modułu i różny HEX jest dla otwarcia i zamknięcia każdego z dwóch przekaźników.
moduł ESP-01 z przekaźnikami kupicie w naszym sklepie internetowym
Jak sterować ESP-01 z przekaźnikami?
Każdy producent ma swoje komendy HEX, które działają z jego modułem. Należy zwrócić się bezpośrednio do sprzedawcy, od którego kupiliśmy nasz moduł jeśli nie możemy poradzić sobie ze znalezieniem odpowiedniego HEXa samemu. Moduły, które aktualnie posiadamy w ofercie działają z następującymi kombinacjami:
1 ON {0xA0, 0x01, 0x01, 0xA2};
1 OFF = {0xA0, 0x01, 0x02, 0xA3};
2 ON = {0xA0, 0x02, 0x01, 0xA3};
2 OFF = {0xA0, 0x02, 0x02, 0xA4};
Czym programować ESP-01?
Jak programować ESP-01 w wygodny sposób? Odpowiedzią jest moduł z podstawką dla ESP-01 dostępny w ofercie naszego sklepu. Programator ESP-01 moduł, który polecamy w linku ma tą przewagę nad tańszym zamiennikiem opartym o CH340, że nie trzeba tutaj bawić się w dodatkowe lutowanie przycisków i robienie zworek, aby ESP-01 wprowadzić w tryb programowania. W tym poradniku napiszemy i wgramy program przez darmowe środowisko ArduinoIDE.
Aby w ArduinoIDE wgrać program należy wybrać następujące ustawienia pamiętając, że ustawiamy u siebie port do jakiego podpięliśmy aktualnie nasz programator:
Jeśli nie masz dodanego repozytorium do obsługi modułów ESP8266 zrób to w ten sposób:
Zakładam, że posiadacie już środowisko Arduino IDE. Uruchamiamy je i wchodzimy kolejno w Arduino -> Preferencje.
W polu „Dodatkowe adresy URL do managera pytek” wklejamy następujący link: http://arduino.esp8266.com/stable/package_esp8266com_index.json
Teraz wybieramy płytkę ESP8266 Generic oraz ustawienia jak na poniższym screenie:
Kod programu do wgrania znajdziecie na końcu wpisu.
Sterowanie ESP-01 z przekaźnikami przez przeglądarkę
Kiedy zaprogramujemy nasze ESP-01 wpinamy je do modułu jak na zdjęciu. Pamiętamy, że ESP wysyła komendy w hexie do modułu pinami TX RX, dlatego musimy mieć wpięte zworki łączące TX i RX naszego ESP i płytki z przekaźnikami. Prawidłowo wpięte zworki ilustruje poniższy obrazek.

Teraz wystarczy podpiąć zasilania 5V DC do płytki z przekaźnikami.
Kod programu do sterowania przekaźnikami z ESP-01
Teraz zajmiemy się kodem. Będziemy pisać program, który pozwoli podpiąć się naszemu ESP-01 do naszej sieci WiFi, a każde urządzenie podpięte w tą samą sieć będzie mogło poprzez wpisanie odmiennego adresu w oknie przeglądarki zmienić stan przekaźników. W SSID podajemy nazwę sieci WiFi, do której ma podpiąć się nasze ESP oraz hasło do niej. Następnie logujemy się do naszego routera i sprawdzamy jaki adres IP przydzielił naszemu ESP-01. Teraz znając ip w przeglądarce wykorzystujemy następujące komendy do kontrolowania modułu podmieniając server_ip na adres przydzielony naszemu ESP-01:
- http://wpiszIP/1/on włącz 1 przekaźnik
- http://server_ip/1/off wyłącz 1 przekaźnik
- http://server_ip/2/on włącz 2 przekaźnik
- http://server_ip/2/off wyłącz 2 przekaźnik
/*
* W miejsce server_ip podaj adres ip ESP-01 jakie uzyska po podpięciu się do routera
* http://server_ip/1/on włącz 1 przekaźnik
* http://server_ip/1/off wyłącz 1 przekaźnik
* http://server_ip/2/on włącz 2 przekaźnik
* http://server_ip/2/off wyłącz 2 przekaźnik
*/
#include <ESP8266WiFi.h>
const char* ssid = "NazwaSieciWIFIgdzieSiePodpinasz";
const char* password = "HasloDoSieci";
WiFiServer server (80);
//hexy do kontrolowania przekaźników włącz/wyłącz
byte relON[] = {0xA0, 0x01, 0x01, 0xA2};
byte relOFF[] = {0xA0, 0x01, 0x02, 0xA3};
byte rel2ON[] = {0xA0, 0x02, 0x01, 0xA3};
byte rel2OFF[] = {0xA0, 0x02, 0x02, 0xA4};
void setup ()
{
delay (10);
Serial.begin (115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
}
// Start servera
server.begin();
delay(50);
}
void loop() {
int val;
//sprawdź połączenie
WiFiClient client = server.available();
if ( ! client ) {
return;
}
// czekaj na dane
while ( ! client.available () )
{
delay (100);
}
// czytaj 1 linie zapytania
String req = client.readStringUntil ('\r');
client.flush ();
// porównaj
if (req.indexOf ("/1/on") != -1)
{
Serial.write (relON, sizeof(relON));
val = 1;
} else if (req.indexOf ("/1/off") != -1) {
Serial.write (relOFF, sizeof(relOFF));
val = 0;
} else if (req.indexOf ("/2/on") != -1) {
Serial.write (rel2ON, sizeof(rel2ON));
val = 1;
} else {
if (req.indexOf ("/2/off") != -1)
Serial.write (rel2OFF, sizeof(rel2OFF));
val = 0; // if you want feedback
}
client.flush ();
// odpowiedz
String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nRelay is now ";
s += (val)?"on":"off";
s += "</html>\n";
// wyślij do klienta
client.print (s);
delay (10);
}

Author: admin
Date: 2021-08-30
Jak podłączyć i programować ESP32-CAM?
W tym krótkim wpisie pokażemy jak podłączyć i wgrać program do ESP32-CAM. ESP to mikrokontroler popularny na równi z Arduino i zyskuje coraz szersze grono użytkowników ze względu na możliwość łączności bezprzewodowej. Wersja ESP32-CAM jest wyposażona w slot na karty microSD oraz kamerę OV2640. W przypadku ESP32-CAM nie znajdziemy na płytce modułu konwertera USB-UART takiego jak CH340 czy CP2102 i nie uda nam się wgrać na płytkę programu bez zewnetrznego konwertera. W dalszej części artykułu doradzimy jaki konwerter wybrać i jak podłączyć moduł by udało nam się wgrać na niego szkic z ArduinoIDE.
ESP32-CAM od sprawdzonego dostawcy możecie nabyć w naszym sklepie klikając w ten cytat.
Jaki konwerter wykorzystać do programowania ESP32-CAM?
Prawda jest taka, że można wykorzystać dowolny konwerter współpracujący z naszym systemem operacyjnym jednak ze względu na jakość wykonania, dostępność sterowników, uniwersalność i zworkę do przełączania napięcia między 3.3V a 5V do całej operacji wykorzystamy konwerter FT232RL.
Podłączenie ESP32-CAM z konwerterem FT232RL
Podczas podłączania ESP32-CAM do konwertera USB zwróć uwagę czy przestawiłeś zworkę od napięcia na FT232RL w pozycje 5V jak na poniższym obrazku:
Następnie podepnij przewody jak pokazana na poniższym schemacie:

ESP32-CAM <-> konwerter FT232RL
- GND <-> GND
- 5V <-> VCC (5V)
- U0R <-> TX
- U0T <-> RX
- GPIO0 zworka z GND
Konfiguracja ArduinoIDE do obsługi ESP32-CAM
Teraz przyszedł czas żeby prawidłowo ustawić nasze środowisko ArduinoIDE. Jeśli jeszcze nie masz dodanej ścieżki do repozytorium dla płytem ESP32 należy wejść w Preferencje -> Dodatkowe adresy URL menedżera płytek
I w polu tym dodać adres: https://dl.espressif.com/dl/package_esp32_index.json

Jeśli prawidłowo dodaliśmy adres to przechodzimy do: Narzędzia -> Płytka -> Menedżer Płytek
Wyszukujemy paczkę z ESP32 jak pokazano na screenie poniżej i instalujemy jej najnowszą wersję:
Kolejno wybieramy w płytkach w zakładce ESP32 Arduino->AI Thinker ESP32-CAM

Teraz upewniamy się czy wybraliśmy port, do którego podpięty jest nasz konwerter FT232RL. Możemy wybrać jakiś przykładowy szkic i klikamy wgraj. Ja proponuję sprawdzić działanie naszej kamerki w akcji dlatego wybierzmy gotowy szkic z serwerem streamującym obraz po WiFi przez przeglądarke.
Wchodzimy w Plik -> Przykłady -> ESP32 -> Camera -> CameraWebServer

Teraz modyfikujemy kod w sekcji „Select camera model” zakomentowując domyślnie ustawiony model modułu wstawiając dwa ukośniki // i odkomentowujemy moduł AI Thinker, następnie uzupełniamy nazwę naszej sieci WiFi przy ssid i podajemy hasło przy stałej password .

Jak pojawi się napis CONNECTING odłączamy i podłączamy 5V zasilania naszego ESP32-CAM wtedy zacznie się wgrywanie kodu.
Po poprawnym wgraniu programu uruchamiamy serial monitor, rozpinamy zworkę na płytce ESP32 i resetujemy ją.
W okienku serial monitora powinno pojawić się nam ip, na które należy wejść przez przeglądarkę by otrzymać podgląd z kamerki.
Pamiętaj by zobaczyć obraz na dole listy z opcjami wybierz Start Stream!

Owocnego kodzenia!
Pamiętaj aby polubić nasz profil na Facebooku, dzięki temu dowiesz się o ciekawych wpisach albo nowych kodach rabatowych na sklepie -> https://www.facebook.com/elektrowebpl
Sprawdzony moduł ESP32-CAM możesz kupić u nas w sklepie w super cenie klikając w link-> ESP32-CAM

Author: admin
Date: 2021-06-01
Sterownik silnika DRV8825 jak podłączyć?
W dzisiejszym wpisie poświęconym popularnemu sterownikowi silników bipolarnych DRV8825 dowiesz się:
- Jak działa DRV8825
- Poznasz Pinout DRV8825
- jak podłączyć silnik krokowy do DRV8825
- jak podłączyć DRV8825 do Arduino
- napiszemy kod do sterowania silnikiem i wytłumaczymy jego działanie
- pokażemy jak wyregulować sterownik aby dostosować jego działanie do wybranego silnika
Wykorzystanie DRV8825
Jeśli planujesz zbudować własną drukarkę 3d lub maszynę CNC będziesz potrzebował sterownika kontrolującego dokładnie pracę zamontowanych tam silników. Jeśli będziesz realizował to samym mikrokontrolerem bez wykorzystania dodatkowych sterowników takich jak DRV8825 czy A4988, nie pozostanie Ci prawdopodobnie ani jedno wolne wyjście. Dlatego należy do tego celu wykorzystać dedykowane sterowniki, które pozwolą nam na sterownie silnikami bipolarnymi takimi jak NEMA17 przy pomocy zaledwie 2 pinów! Czy może być prościej?
Jak działa silnik krokowy?
Silnik krokowy wykorzystuje koło zębate i elektromagnesy by wykonać jeden krok za każdym razem. Każde podanie napięcia na cewkę uruchamia elektromagnes i przyciąga najbliższy ząb na kole w silniku co daje nam jeden krok.
Sposób w jaki podajemy zasilanie na cewki determinuje obroty silnika.
- Odpowiednia sekwencja impulsów determinuje kierunek obrotów
- Częstotliwość impulsów odpowiada za szybkość obrotu
- Ilość impulsów odpowiada o ile obróci się silnik.
SILNIK KROKOWY W ZESTAWIE Z RADIATOREM MOŻESZ ZAKUPIĆ W NASZYM SKLEPIE INTERNETOWYM KILIKAJĄC TUTAJ -> DRV8825 sterownik silnika krokowego
Wszystkie sprzedawane produkty są najwyższej jakości i pochodzą od sprawdzonych dostawców!
Budowa DRV8825
W sercu modułu znajduje się chip wyprodukowany przez Texas Instruments o nazwie DRV8825 odpowiada on za ruch silnikiem.
Posiada on możliwość sterowania napięciem do 45V i może podać aż do 2.2A na cewkę. Ma wbudowany wewnętrzny translator pozwalający na łatwiejsze sterowanie. Dzięki niemu została zredukowana liczba pinów potrzebnych do obsługi do zaledwie 2.
1 pin odpowiada za kontrolę korków, 2 pin za kierunek obrotu. Sterownik obsługuje 6 różnych rozdzielczości kroków czyli: pełny krok, 1/2 kroku, 1/4 kroku, 1/8 kroku, 1/16 kroku, 1/32 kroku.
DRV8825 Pinout
Sterownik posiada 16 pinów, które opisano na poniższym rysunku:
Zapoznamy się teraz z każdym pinem.
PINY ZASILANIA:
VMOT, GND MOT, GND LOGIC
Nasz sterownik posiada tylko jeden pin od zasilania, VMOT i GND MOT dostarczają napięcie do silnika z przedziału od 8.2V do 45V. Nie posiada on osobnego pinu do zasilania, podbiera on napięcie z tych pinów przez wewnętrzny regulator 3.3V. Należy jednak pamiętać, żeby połączyć GND Logic do masy naszego mikrokontrolera. Według noty producenta należy umieścić blisko płytki sterownika kondensator wytrzymujący prąd do 4A na przewodach od zasilania silnika.
Sterownik DRV8825 ma wbudowany ceramiczny kondensator filtrujący skoki napięcia. Jednak w przypadku gdy przekroczą one 45V, moduł może ulec całkowitemu uszkodzeniu. Dlatego dobrą praktyką jest zastosowanie dużego kondensatora około 100uF (najmniej 50uF) na przewodach zasilających silnik.
PINY M0, M1, M2
są to piny wyboru mikrokroków. Dzięki tym ustawieniom cewka zasilana jest z pośrednim natężeniem co pozwala silnikowi na zrobienie tylko małej części pełnego kroku. Dla przykładu NEMA17 mająca obrót 1.8° czyli 200 kroków na obrót, w trybie 1/4 kroku pozwala jej na zrobienie 800 mikrokroków co daje nam obrót o zaledwie 0.45°.
Ustawiając odpowiednie poziomy logiczne na powyżej wymienionych pinach możemy ustawić kroki jak w poniższej tabelce:
Piny mają ma płytce rezystory pull-down co oznacza, że jeśli pozostawiamy je nie podłączone ich stan ustawiony jest na LOW i silnik będzie pracował w trybie pełnych kroków.
PINY STEP 7 i DIR 8
STEP 7 odpowiada za mikrokroki silnika. Każdy impuls HIGH wysłany na ten port powoduje zrobienie jednego kroku (lub mikrokroku w zależności od ustawień) przez nasz silnik. Im wyższa częstotliwość pojawiania się stanu wysokiego na tym pinie tym szybciej będzie obracał się nasz silnik.
DIR 8 kontroluje kierunek obrotu silnika. Utrzymanie stanu wysokiego na tym pinie powoduje obracanie się zgodnie z kierunkiem wskazówek zegara, stan niski powoduje obrót w stronę przeciwną.
Jeśli silnik będzie w Twoim projekcie obracał się tylko w jednym kierunku, możesz zmostkować ten pin z plusem lub masą na stałe.
PINY EN, RST, SLP
Piny te pozwalają na kontrolę zasilania.
EN pin ten domyślnie ma ustawiony poziom logiczny na LOW co oznacza Enable czyli włączony. Podając na ten pin stan wysoki HIGH sprawimy, że sterownik zostanie wyłączony.
SLP pin ten zostaje aktywowany podaniem stanu niskiego LOW. Po podaniu LOW sterownik przechodzi w stan uśpienia, dzięki temu minimalizujemy zużycie prądu. Możesz wykorzystać go jeśli jakiś silnik dłużej pozostaje w spoczynku.
RST ten pin również aktywuje się stanem niskim LOW. Jeśli podasz na niego stan niski wszystkie ustawienia kroków zostaną zignorowane aż nie zostanie podany stan wysoki HIGH.
PIN wyjściowy FAULT
Pin ten zostaje uaktywniony zazwyczaj kiedy uruchomi się ochrona przed za dużym natężeniem prądu lub sterownik się przegrzeje i zostanie wyłączony. W każdym z tych przypadków stan na tym pinie zostanie automatyczny ustawiony na LOW. Pozostaje tak póki nie skorzystamy z piny RESET lub VMOT nie zostanie ponownie odłączone i podpięte.
PINY A1, A2, B1, B2
Kanały wyjściowe sterownika mają numery 11, 12, 13, 14 możemy połączyć je z silnikami krokowymi działającymi z napięciem z przedziału 8.2V do 45W. Każdy pin może dostarczyć do 2.2A. Jednak należy mieć na uwadze aby zapewnić odpowiednie zasilanie modułu, chłodzenie oraz dobrać ograniczniki natężenia prądu.
Grzanie się DRV8825
Podczas korzystania ze sterownika możemy zaobserwować znaczne podwyższenie temperatury. Należy mieć na uwadze, że nawet jeśli sterownik obsługuje maksymalnie 2.2A na cewkę to największy prąd aby się nie przegrzewał wynosi 1.5A . Aby zapobiec przegrzewaniu się do zestawu został dołączony radiator i należy go bezwzględnie zamocować przed przystąpieniem do korzystania z DRV8825.
Potencjometr ograniczający natężenie
Jeśli zastanawiałeś się do czego służy potencjometr na DRV8825 to jest on przeznaczony do ograniczania maksymalnego natężenia jakie może płynąć przez sterownik do silnika. Dzięki temu możemy lepiej chronić silnik przed uszkodzeniem. Należy go ustawić na takie natężenie jakie obsługuje nasz silnik lub delikatnie poniżej.
Podpowiem wam w jaki sposób najłatwiej to wykonać:
SPOSÓB 1 – wykorzystamy tutaj pomiar napięcia na pinie referencyjnym Vref.
- Sprawdzamy w karcie katalogowej naszego silnik jakie obsługuje natężenie, w naszym przypadku NEMA17 ma 350mA.
- Ustawiamy sterownik w tryb FULL STEP czyli wszystkie piny ustawień kroków zostawiamy odłączone.
- Przytrzymaj silnik w ustalonej pozycji bez podawania sygnału Kroku na PIN STEP.
- Zmierz napięcie Vref na metalowym potencjometrze i podstaw do wzoru:
Limit natężenia = Vref x 2
Jeśli nasz silnik jest oznaczona jako 350mA dzielimy to na 2 i wychodzi nam wynik 0.175V i tyle ustawiamy kręcąc potencjometrem
SPOSÓB 2 – wepniemy się pod jedną cewkę i sprawdzimy pobór prądu
- Powtarzamy kroki od 1 do 3 ze sposobu pierwszego
- Podpinamy miernik w szeregu z jedną cewką i badamy przepływ natężenia.
- Potencjometrem ustawiamy limit natężenia zgodnie z zaleceniami producenta silnika.
W naszym przypadku kręcimy potencjometrem aż multimetr nie wskaże 350mA
Jak podłączyć DRV8825 do Arduino?
To bardzo proste, zacznij od złączenia pinów RST i SLP do 5V w Arduino by sterownik utrzymać w stanie załączonym. Podepnij GND LOGIC do masy GND w Arduino. DIR i STEP można podłączyć przkładowo do pinów cyfrowych 2 i 3 w Arduino. B1, B2 oraz A1 i A2 podepnij do swojego silnika krokowego.
UWAGA PODŁĄCZANIE I ODŁĄCZANIE SILNIKA PODCZAS GDY DRV8825 JEST POD ZASILANIEM MOŻE SKUTKOWAĆ USZKODZENIEM STEROWNIKA.
Piny odpowiedzialne za mikro-kroki pozostawiamy odłączone. Na koniec podpinamy VMOT i GND MOT do naszego źródła prądu. Pamiętajmy aby zastosować kondensator dla zwiększenia bezpieczeństwa.
Schemat podłączenia zamieszamy poniżej:
Przykładowy kod dla Arduino do sterowania silnikiem przy pomocy DRV8825
Kod jest stosunkowo prosty, a wszystko zostanie wyłumaczone komentarzami przy każdej ważnej linijce:
// tworzymy stałe z numerami pinów podłączonych do Arduino dla DIR i STEP oraz podajemy liczbę kroków na obrót
const int dirPin = 2;
const int stepPin = 3;
const int stepsPerRevolution = 200;
void setup()
{
// deklarujemy piny jako wyjściowe
pinMode(stepPin, OUTPUT);
pinMode(dirPin, OUTPUT);
}
void loop()
{
// ustalamy kierunek obrotu zgodny z kierunkiem wskazówek zegara
digitalWrite(dirPin, HIGH);
// wolno obracamy silnikiem
for(int x = 0; x < stepsPerRevolution; x++)
{
digitalWrite(stepPin, HIGH);
delayMicroseconds(2000);
digitalWrite(stepPin, LOW);
delayMicroseconds(2000);
}
delay(1000); // czekamy sekundę
// zmieniamy kierunek obrotu silnika
digitalWrite(dirPin, LOW);
// obracamy szybko
for(int x = 0; x < stepsPerRevolution; x++)
{
digitalWrite(stepPin, HIGH);
delayMicroseconds(1000);
digitalWrite(stepPin, LOW);
delayMicroseconds(1000);
}
delay(1000); // czekamy sekunde
}
Przykładowy kod dla Arduino i DRV8825 z wykorzystaniem biblioteki AccelStepper.
W poniższym przykładzie pokazujemy jak w prosty sposób kontrolować pracę silnika wykorzystując bibliotekę AccelStepper. Aby zainstalować bibliotekę należy ja doinstalować ponieważ nie jest dołączona do ArduinoIDE. W tym celu wejdź w SZKIC -> Dołącz Bibliotekę -> Zarządzaj Bibliotekami
Wyszukaj accelstepper i zainstaluj najnowszą wersję.

Teraz przejdziemy do szkicu wraz z komentarzami opisującymi działanie konkretnych linijek:
// dołączamy bibliotekę AccelStepper
#include <AccelStepper.h>
// Definiujemy piny wpięte do Arduino do sterowania kierunkiem i krokiem
const int dirPin = 2;
const int stepPin = 3;
// Define motor interface type
#define motorInterfaceType 1
// Creates an instance
AccelStepper myStepper(motorInterfaceType, stepPin, dirPin);
void setup() {
// ustawiamy kolejno: prędkość maksymalną, przyspieszenie
// prędkość domyślą, ilość kroków do wykonania
myStepper.setMaxSpeed(1000);
myStepper.setAcceleration(50);
myStepper.setSpeed(200);
myStepper.moveTo(200);
}
void loop() {
// jeśli silnik osiągnie 200 kroków ustalony w moveTo to zmieniamy kierunek obrotu
if (myStepper.distanceToGo() == 0)
myStepper.moveTo(-myStepper.currentPosition());
// funkcja uruchamiająca silnik, dopiero po jej wywołaniu następuje obrót według ustalonych parametrów
myStepper.run();
}
Podsumowując to co dzieje się w kodzie kolejno:
dodajemy do sketchu bibliotekę AccelStepper, potem tworzymy stałe dirPin oraz stepPin i nadajemy im wartość jednakową z portem Arduino, który jest podłączony do pinów STEP i DIR na naszym DRV8825. Jeśli chodzi o motorInterfaceType to w naszym przypadku będzie to wartość 1, inne można odszukać w dokumentacji do biblioteki. Kolejno tworzymy obiekt myStepper i podajemy wymagane argumenty.
W sekcji SETUP ustalamy maksymalna prędkość na 1000, przyspieszenie na 50 i całkowity obrót silnika wokół osi na 200.
Następnie ustalamy, że chcemy aby wykonał 200 kroków wpisując tą wartość do moveTo();
W sekcji LOOP warunkiem if sprawdzamy ile kroków pozostało do końca ustalonego ruchu – w naszym przypadku było to 200 kroków. Pomaga nam w tym funkcja distanceToGo() która zwraca wynik w postaci pozostałej ilości kroków. Jeśli licznik dojdzie do 0 zmieniamy kierunek obrotu silnika linijką myStepper.moveTo(-myStepper.currentPosition());
Najważniejszą funkcją jest myStepper.run(); silnik wprawi się w ruch dopiero po tym jak zostanie ona wykonana.
Jeśli podobał Ci się ten artykuł polub nasz fanpage na facebooku
Dzięki temu dowiesz się jako pierwszy o nowych interesujących wpisach!

Author: admin
Date: 2021-05-12
Shield L293D dla Arduino UNO obsługa i podłączenie silników
Masz w planach zrobić własny pojazd albo składasz nowego robota? Najwygodniej będzie wykorzystać do tego Motor Shield L293D dedykowany do Arduino UNO i kompatybilny z MEGA2560. Jest to jeden z najprostszych i zarazem najtańszych sposobów do sterowania silnikami w projektach robotów i CNC. Shield pozwala sterować:
- 4 x silnik DC dwu kierunkowy z kontrolą prędkości 8-bit (0-255) lub
- 2 x silnik krokowy (unipolarnymi i bipolarnymi) z jedną i dwoma cewkami lub
- 2 x serwo
Budowa Motor Shieldu
L293D to dwukanałowy moduł mostka H pozwalający sterować jednym silnikiem krokowym lub dwoma silnikami DC. Shield posiada dwa L293D dzięki czemu pozwala na sterowanie 4 silnikami DC, a to idealny zestaw do napędzania 4 kołowej platformy pojazdu lub robota.
Mamy wbudowane 4-mostki H, a każdy z nich może dostarczyć prąd 0.6A do silnika. Dodatkowo na środku znajduje się rejestr przesuwny 74HC595 pozwalający rozszerzyć 4 wyjścia Arduino i sterować 8 wyjściami Motor Shielda odpowiadającymi za kierunek obrotu silników.

Zasilanie Motor Shield:
Zasilanie można rozwiązać na 3 sposoby:
- Zasilanie Arduino przez port DC lub zasilanie przez złącze zewnętrznego zasilania EXT_PWR w Motor Shield. Zworka PWRJ powinna być założona. Pamiętaj, że w tym przypadku ograniczenie napięcia to 12V!
- Zasilanie Arduino z USB, a Motor Shielda osobno z gniazda zewnetrznego zasilania EXT_PWR (REKOMENDOWANE) Pamiętaj by wyjąć zworkę PWRJ łączącą linie zasilania Arduino i Shielda.
- Zasilanie Arduino przez port DC i zasilanie Shielda z gniazda EXT_PWR. Zworka musi zostać wyjęta.
PAMIĘTAJ BY NIE ZASILAĆ MOTOR SHIELDA NAPIĘCIEM POWYŻEJ 12V KIEDY ZWROKA ŁĄCZĄCA LINIE ZASILANIA ARDUINO I MOTOR SHIELD JEST ZAŁOŻONA!
Na płytce znajdziemy również:
- diodę – pokazującą czy moduł prawidłowo pracuje – jeśli świeci na zielono możesz być spokojny o poprawną pracę
- rezystory obniżające – dzięki temu silniki nie pracują gdy podpinamy zasilanie do płytki
- Przycisk RESET – to przycisk RESET od Arduino wyprowadzony na Shieldzie dla wygodniejszego dostępu.

Wyjścia nakładki:

Wyjścia do podłączenia silników znajdują się na krańcach płytki i są zakończone terminalami ze śrubkami dla wygodniejszego mocowania przewodów. Możesz podpiąć 4 silniki DC w wyprowadzenia M1, M2, M3, M4. Lub 2 silniki krokowe podpinając jeden w M1 – M2 , i drugi w M4 – M4.
Każdy silnik może pracować z napięciem od 4.5V do 25V i pobierać do 0.6A na kanał.
Dla 2 serw zastosowano wyprowadzenia dające na każdym z nich sygnał PWM 16-bitowy.
Nakładka nie wykorzystuje cyfrowych pinów 2 i 13 oraz analgowych od A0 do A5. Możesz spokojnie wykorzystać je do podłączenia innych peryferii.
Jak zaprogramować to w Arduino IDE?
Zalecamy wykorzystać do tego celu bibliotekę od Adafruit. Należy przejść do Narzędzia -> Zarządzaj Bibliotekami
Kolejno wpisać w wyszukiwarce Motor Shield i zainstalować biblioteke od adafruit dla Shielda w wersji V1. Środkowe pole na poniższym screenie:

Teraz zaprezentuję przykładowy kod dla różnych typów silników oraz wyjaśnię linijka po linijce co tam się dzieje.
Jak podłączyć silnik DC do Motor Shielda i nim sterować?
Przykładowy kod sterowania silnikiem DC z Motor Shielda znajdziesz poniżej. Zakłada on podpięcie się pod wyjście M4. Wpinamy nasza nakładkę na górę Arduino. Arduino będzie zasilane z przewodu USB, Motor Shield z osobnego zasilania 9V ponieważ tyle potrzebuje nasz silniczek. Zworka pozostaje zdjęta.

Teraz napiszmy kod, który zademonstruje jak regulować prędkość oraz kierunek obrotu silnika.
#include <AFMotor.h> //dodajemy bibliotekę AFMotor
AF_DCMotor motor(4); //tworzymy obiekt motor i przypisujemy mu wyjście M4
void setup()
{
//ustawiamy prędkość początkową i stan silnika jako spoczynek
motor.setSpeed(200);
motor.run(RELEASE); //release oznacza zatrzymanie kręcenia
}
void loop()
{
uint8_t i;
// Włączamy silnik
motor.run(FORWARD); //obracanie do przodu
// Przyspieszamy od 0 do prędkości maksymalnej wykorzystując pętle FOR
for (i=0; i<255; i++)
{
motor.setSpeed(i);
delay(10);
}
// zmniejszamy prędkość silnika od MAX do 0
for (i=255; i!=0; i--)
{
motor.setSpeed(i);
delay(10);
}
// Zmieniamy kierunek obrotu
motor.run(BACKWARD); //obroty w tył
// przyspieszamy
for (i=0; i<255; i++)
{
motor.setSpeed(i);
delay(10);
}
// zwalniamy
for (i=255; i!=0; i--)
{
motor.setSpeed(i);
delay(10);
}
// wyłączamy silnik
motor.run(RELEASE);
delay(1000);
}
Większość kodu została wytłumaczona komentarzami wewnątrz. Jednak dla uściślenia w drugiej linijce tworzymy obiekt AF_DCMotor motor(motorPort#) w naszym przypadku motor port ustawiamy na 4 bo korzystamy z wyjścia M4. Jeśli podepniesz więcej silników dla każdego z osobna musisz zadeklarować obiekt odpowiadający później danemu silnikami, a każdy z nich musi mieć unikalną nazwę. Będzie to przykładowo:
- AF_DCMotor motor1 (1); dla silnik na porcie 1
- AF_DCMotor motor2 (2); dla silnika na porcie 2
- itp…
Funkcja setSpeed(prędkość); pozwala ustawić prędkość z zakresu od 0 do 255. Możesz podać tam dowolną liczbę przykładowo 120 aby silniczek obracał się z połową możliwej prędkości. Wartość 0 jest równoznaczna z całkowitym zatrzymaniem silnika.
Funkcja run(kierunek) może przyjmować następujące parametry:
FORWARD – kierunek obrotu zgodny z ruchem wskazówek zegara
BACKWARD – kierunek przeciwny do ruchu wskazówek zegara
RELEASE – zatrzymanie – równoznaczne z setSpeed(0);
Jak podłączyć silnik krokowy do Motor Shield?
Weźmiemy za przykład 2 najpopularniejsze wśród początkujących silniki. Pierwszy to silnik krokowy 28BYJ-48 znajdziesz go w naszym sklepie zarówno w wersji zasilanej 5V jak i 12V. Kolejnym będzie NEMA17 najczęściej wykorzystywany w druku 3D i urządzeniach CNC
Silnik unipolarny 28BYJ-48
Jeśli wykorzystujesz ten silnik musisz wiedzieć, że do pełnego obrotu potrzeba mu 48 kroków, podłącz go jak na schemacie poniżej:

Silnik bipolarny NEMA17
Podłączenie silnika NEMA17 wskazuje poniższy schemat. Silnik ten do pełnego obrotu potrzebuje 200 kroków. Nasz zasilamy napięciem 12V

#include <AFMotor.h>
// Ilość kroków dla podpiętego silnika według jego specyfikacji
const int stepsPerRevolution = 48;
// podłączamy pod M3 i M4 zatem będzie to port #2
AF_Stepper motor(stepsPerRevolution, 2);
void setup() {
Serial.begin(9600);
Serial.println("test silnika krokowego!");
motor.setSpeed(10); // ustawiamy prędkość na 10 obrotów na minutę
}
void loop() {
Serial.println("Single coil");
motor.step(100, FORWARD, SINGLE);
motor.step(100, BACKWARD, SINGLE);
delay(1000);
Serial.println("Double coil");
motor.step(100, FORWARD, DOUBLE);
motor.step(100, BACKWARD, DOUBLE);
delay(1000);
Serial.println("Interleave coil");
motor.step(100, FORWARD, INTERLEAVE);
motor.step(100, BACKWARD, INTERLEAVE);
delay(1000);
Serial.println("Micrsostep steps");
motor.step(100, FORWARD, MICROSTEP);
motor.step(100, BACKWARD, MICROSTEP);
}
Powyższy kod musisz dopasować pod siebie w zależności gdzie podepniesz silnik i czy będzie to jeden czy 2 silniki. W przypadku podpięcia w M1 i M2 wskazujesz port 1, dla M3 i M4 port 2 jak w naszym przykładzie. Deklarując obiekt motor dla silnika krokowego czeka on na 2 parametry: ilość kroków i port. Ilość kroków przypisujemy do stałej stepsPerRevolution i jest ona zależna od rodzaju podpiętego silnika.
Funkcja step oczekuja następujacych parametrów:
step(ilośćKroków, kierunek, typkroków) – ilośc kroków determinuje to o ile kroków ma się ruszyć silnik, kierunek określa kierunek, a typ kroków może być następujący:
- SINGLE – uruchamiana jest pojedyncza cewka za jednym zamachem
- DOUBLE – uruchamiane są 2 cewki w tym samym czasie dla lepszego ciągu.
- INTERLEAVE – cewka 1 i 2 są przełączane naprzemiennie by zrobić pół kroku – powoduje to zwiększenie czasu pełnego obrotu x2.
- MICROSTEP – dzięki temu silnik wykonuje mikro kroki co sprawia, że ruch jest dokładniejszy i płynniejszy lecz moment obrotowy silnika się zmniejsza przez co jest słabszy.
Sterowanie Serwem przy pomocy Motor Shielda
Sterowanie Serwami jest równie proste co silnikami.
Serwo wpinamy w 3 piny w rogu płytki, możemy podpiąć jednocześnie 2 serwa. Piny cyfrowe przypisane do sterowania serwami too D9 i D10.

W tym wypadku zasilamy tylko Arduino. Serwo potrzebuje napięcia 5V. Do sterowania wykorzystamy wbudowaną w IDE bibliotekę Servo.h
#include <Servo.h> //dołączamy bibliotekę Servo
Servo myservo; // tworzymy obiekt o nazwie myservo
int pos = 0; // tworzymy zmienną do przechowywania pozycji serwa
void setup()
{
// przypisujemy port do którego wpięliśmy serwo w naszym przypadku jest to pin 10
myservo.attach(10);
}
void loop()
{
// ruszamy ramieniem od 0 do 180 stopni w pętli FOR
for(pos = 0; pos <= 180; pos += 1)
{
myservo.write(pos);
delay(15);
}
// ruszamy ramieniem od 180 do 0 stopni
for(pos = 180; pos>=0; pos-=1)
{
myservo.write(pos);
delay(15);
}
}
Jak widzicie kod jest tutaj banalny nie ma co tłumaczyć.
Jeśli ten przewodnik wydał Ci się pomocny nie zapomnij polubić nas na Facebooku, dzięki temu zobaczysz w przyszłości informację o innych ciekawych wpisach.
Wymienione w poradniku części możesz zakupić w naszym sklepie internatowym w przystępnych cenach i z błyskawiczną dostawą kolejnego dnia!

Author: admin
Date: 2021-04-28
Sterowanie Arduino z telefonu przez bluetooth przy pomocy HC-05
W tym artykule dowiesz się:
- jak podłączyć bluetooth HC-05 do Arduino
- jak sterować Arduino przez bluetooth z telefonu komórkowego
- jak sparować HC-05 z telefonem
HC-05 i sterowanie telefonem to pierwsze co nasuwa się do głowy jeśli bierzemy pod lupę moduły bluetooth. Dzięki transmisji bezprzewodowej możemy zdalnie zmienić ustawienia naszego Arduino a tym samym sterować innymi czujnikami czy modułami, które wcześniej do niego podpięliśmy. Otwiera nam to możliwość obsługi samochodzików zdalnie sterowanych, włączanie i wyłączanie urządzeń dzięki listwom przekaźnikowym w tym świecenie i gaszenie światła, obsługę wentylatorów i innych urządzeń działających na większe napięcie.
W tym wpisie skupimy się na samym sposobie przekazywania komend do Arduino. Wysterujemy wybrany port oraz wbudowaną w Arduino diodę na pinie numer 13.
Jak podłączyć HC-05 z Arduino?
Aby prawidłowo połączyć HC-05 z Arduino powinniśmy trzymać się poniższego schematu.

Arduinio <-> HC-05
- 5V <-> VCC
- GND <-> GND
- RX <-> TX
- TX <-> RX

Pamiętajmy, że napięcia poziomów logicznych na HC-05 to 3.3V a na Arduino 5V dlatego najbezpieczniej jest wykorzystać konwerter poziomów logicznych dostępny w naszym sklepie: konwerter poziomów logicznych.
Konwerter pozwala nam na łączenie ze sobą modułów pracujących na różnych napięciach w naszym przypadku 3.3V z 5V – ten sprzedawany u nas działa dwukierunkowo i umożliwia bezproblemową transmisję danych.
Po podłączeniu zasilania powinniśmy zobaczyć diodę LED na HC-05 mrugającą parę razy na sekundę – oznacza to, że moduł jest gotowy do parowania z innym urządzeniem bluetooth.
Możemy teraz sprawdzić w naszym telefonie czy widzimy na liście bluetooth moduł HC-05.
Kod programu Arduino
Aby móc sterować portami Arduino przez bluetooth konieczne będzie napisanie programu.
Na gotowo wygląda on tak:
void setup() {
Serial.begin(9600);
pinMode(8, OUTPUT); // ustawiamy pin 8 jako wyjście
}
void loop() {
if(Serial.available()>0) //sprawdzamy czy są jakieś bity do odczytania jeśli są to przypisujemy je do zmiennej odczyt typu char.
{
char odczyt= Serial.read(); //przypisanie do zmiennej odczyt odebranego znaku
switch(odczyt) //pętla switch
{
case '1': digitalWrite(8, HIGH);break; // kiedy wyślemy z telefonu 1, Arduino ustawi stan wysoki na pinie 8
case '2': digitalWrite(8, LOW);break; // gdy wyślemy 2 Arduino ustawi stan niski na pinie 8
case '3': digitalWrite(13, HIGH);break; // kiedy wyślemy z telefonu 1, Arduino ustawi stan wysoki na pinie 13
case '4': digitalWrite(13, LOW);break; // gdy wyślemy 2 Arduino ustawi stan niski na pinie 13
default : break;
}
Serial.println(odczyt);
}
delay(50);
}
Każda linijka kodu została objaśniona komentarzem, w razie niejasności zapraszam do dodawania pytań w komentarzach pod wpisem.
Ogólna zasada działania programu opiera się o odczytywanie znaków wysyłanych po Porcie Szeregowym, porównujemy znaki w pętli, jeśli jakiś znak posiada swoją funkcję realizujemy ją i czekamy na kolejną komendę. Na pinie 13 Arduino UNO mamy podpiętą diodę oznaczoną L dzięki temu możemy od razu sprawdzić czy nasz program działa prawidłowo. Pod pin 8 możemy podpiąć jakiś przekaźnik wyzwalany napięciem 5V ja zamiast tego podpinam diodę tylko po to by sprawdzić czy na pinie 8 pojawia się napięcie. U mnie wszystko działa jak należy, a u Ciebie?
Pamiętaj, że podłączając diodę LED – dłuższą nóżkę wpinamy do + a krótszą do masy. Zdjęcie mojego połączenia znajdziesz poniżej.

Aplikacja na telefon do sterowania przez Bluetooth.
Jaką aplikację do sterowania wybrać? Dowolną, która może wysyłać coś przez Port Szeregowy Bluetooth. Ja w telefonie z androidem wykorzystuję aplikację „Serial Bluetooth Terminal” do pobrania z google store.
Po pobraniu aplikacji, wyszukujemy w naszym telefonie w ustawieniach na liście urządzeń bluetooth HC-05 klikamy połącz. Zapytani o PIN wklepujemy 1234. Wtedy połączenie powinno zostać poprawnie nawiązane. Teraz uruchamiamy naszą aplikację Bluetooth Terminal.
Z menu po lewej wybieramy Devices -> HC-05. Powinniśmy zobaczyć informację o poprawnym połączeniu się z modułem. Teraz na samym dole linii komend wpisujemy wcześniej zaprogramowane w arduino znaki i klikamy wyślij.

W kolejnym artykule podpowiem jak wykorzystać Arduino jako konwerter portu szeregowego by nawiązać komunikację HC-05 z komputerem. Jak wprowadzić HC-05 w tryb odbierania komend AT i jak za ich pomocą zmieniać ustawienia modułu bluetooth. Pamiętajcie żeby polubić naszego Facebooka, dzięki temu będziecie na bieżąco z kolejnymi wpisami:
Moduł bluetooth HC-05 możecie zakupić w naszym sklepie, oferowane przez nas moduły są oryginalne i w pełni zgodne ze specyfikacją, dzięki temu nie będzie problemów z odwrotną polaryzacją na pinach i innych dziwnych historii.
Moduł bluetooth HC-05 <- Kup w naszym sklepie
