Dzisiaj opiszę jak dodać kolejne elementy do robota: serwo oraz ultradźwiękowy czujnik odległości HC-SR04 i w końcu napisać pierwszy program, który uruchomi robota Lixbot Racer.
Pierwszą czynnością jaką zrobimy, to wycentrujemy sobie położenie serwa i przykręcimy wkręt mocujący na trwale serwo.
Do sterowania serwem wykorzystujemy bibliotekę Servo, którą musimy najpierw dodać do programu Arduino.
Wymagane biblioteki przy niektórych projektach dodajemy wybierając w górnym menu programu Arduino: Szkic -> Dołącz bibliotekę -> Zarządzaj bibliotekami.
W filtrze wyszukiwania wpisujemy Servo i instalujemy wyszukaną bibliotekę Servo.
Serwo posiada 3 przewody: - brązowy - GND - masa (-) - czerwony - zasilanie (+) - pomarańczowy - sygnał
Podłączamy je do pinu 5 zgodnie ze schematem jak niżej, podłączając: - brązowy - G - czerwony - V - pomarańczowy - S
Teraz już możemy wgrać program, który ustawi serwo w pozycji środkowej, do pobrania tu -> Link
Po wgraniu do Arduino Uno serwo ustawi się w pozycji centralnej i możemy przykręcić wkręt mocujący trwale serwo do podstawy.
Kod programu jest z komentarzami objaśniającymi komendy.
int servoPin = 5;
- definiuje nam numer pinu podłączenia do Arduino
servo.write(90);
- ustawia serwo w zadanej pozycji, możemy wpisać wartości 0 do 180 stopni
Przykładowy program, który będzie obracał serwem w zakresie 0 do 90 do 180 z powrotem do 90 i znowu do 0 stopni, jest do pobrania tu -> Link
Widać to na poniższym filmie.
Lepszym rozwiązaniem do robot, będzie zastosowanie pętli:
for(pozycja = 0; pozycja < 180; pozycja++)
gdzie serwo będzie przesuwane o jeden stopień w zakresie od 0 do 180 stopni
W pętli loop podajemy czas w milisekundach przesuwu serwa do zadanej pozycji
delay(15);
Prędkość obrotu będzie zależeć od zdefiniowanego czasu, im czas krótszy, to serwo będzie się obracać szybciej.
Przykładowy kod programu jest do pobrania tu -> Link
Po wgraniu serwo będzie się płynnie przesuwało w zakresie od 0 do 180 stopni i z powrotem, co widać na poniższym filmie.
Teraz możemy zająć się ultradźwiękowym czujnikiem pomiaru odległości HC-SR04.
Czujnik HC-SR04 posiada, takie wejścia/wyjścia:
Czujnik HC-SR04 działa w zakresie 2 do 200 cm i wymaga zasilania 5V, działa on na zasadzie, takiej, że po podaniu sygnału wysokiego na pin Trig wysyłana jest fala dźwiękowa o częstotliwości 40 kHz, odbija się od przeszkody i jest odczytywana przez odbiornik, a odczyt przesyłany jest na pin Echo.
Więcej o czujniku HC-SR04 można poczytać na kursie Forbota -> Link
Czujnik HC-SR04 podłączamy do w następujący sposób:
Po podłączeniu czujnika HC-SR04 możemy wgrać prosty kod programu, który zmierzy odległość od czujnika od przeszkody, do pobrania tu -> Link
Po wgraniu do Arduino Uno, włączamy monitor portu szeregowego -> Narzędzia -> Monitor portu szeregowego i ustawiamy prędkość na 9600, jak pokazano niżej.
W monitorze portu szeregowego wyświetli się odległość w cm od czujnika HC-SR04 do przeszkody.
Ciąg dalszy nastąpi, gdy znajdę czas na kontynuowanie projektu.
Dzisiaj opiszę jak zmontować i zaprogramować robota na Arduino, jaki pojawił się w ofercie sklepu Propox pod nazwą Lixbot Racer -> Link
Lixbot Racer to robot oparty na Arduino Uno na podwoziu z 4 silnikami.
Zestaw otrzymujemy w dużym plastikowym pudełku.
Po wyciągnięciu z pudełka mamy, takie elementy.
Pierwszą czynnością jaką należy wykonać, to dolutować przewody zasilające do silników.
Silnik, to popularny silniczek do zabawek na zasilanie 6V, przewód czerwony (+) i masę GND - czarny (-) należy przylutować zgodnie z rysunkiem.
Silniki z dolutowanymi przewodami.
Proponuję założyć koszulki termokurczliwe na łączenia przewodów do silnika, niestety koszulek nie ma w zestawie.
Płyty podwozia posiadają założony ochronny papier na pleksi z obu stron, niestety trudno się go ściąga, proponuję więc zanurzyć płyty podwozia w wodzie na co najmniej 10 minut, aby rozmiękczyć papier, wtedy lepiej się go zdejmuje. Po ściągnięciu dobrze jest umyć płyty podwozia w wodzie z mydłem i wytrzeć suchym ręcznikiem.
Po przygotowaniu płyt podwozia przystępujemy do montażu silników, w zestawie otrzymujemy 8 szt. mocowań silników i 8 szt. śrubek z nakrętkami. Silniki montujemy zakładając mocowania z obu stron, jedno przekładamy przez szczelinę w podwoziu, a drugie zakładamy z boku, przekładamy śrubki od zewnętrznej strony zaczynając od dolnej śrubki, ponieważ jak włożymy górną śrubkę, to trudniej jest dokręcić nakrętkę dolnej śrubki. Od wewnętrznej strony na wał napędowy nakładamy czarne kółeczka.
Zamontowane silniki na podwoziu.
Teraz przystępujemy do montażu sterownika silników L298N na dolnej płycie podwozia, proponuję wykorzystać istniejącą szczelinę do przełożenia śrubek, niestety 2 pozostałe otwory musimy sobie nawiercić sami, przykładamy więc płytkę sterownika silnika i zaznaczamy miejsca wiercenia otworów.
Zamontowany sterownik silników.
Teraz przystępujemy do montażu koszyczka akumulatorków na górnej płycie podwozia, w tym celu przykładamy koszyczek zaznaczamy miejsca wiercenia otworów i nawiercamy otwory.
Zamontowany koszyczek na baterie.
Teraz montujemy Arduino Uno, ja zamontowałem go na środku górnej płyty podwozia, tak aby gniazdo zasilania i usb znajdowało się z boku pojazdu.
Zamontowane Arduino Uno.
Z najważniejszych części robota pozostał montaż wieżyczki z serwem i modułem HC-SR04.
Do podstawy wieżyczki przycinamy odpowiednio orczyk serwa, tak aby pasował do wycięcia podstawy wieżyczki.
Po odpowiednim przycięciu przykręcamy orczyk wkrętami do podstawy wieżyczki.
Montujemy serwo w pozostałym uchwycie oraz mocujemy moduł HC-SR04, ja uzyłem gumek recepturek, ale lepiej przymocować moduł opaskami zaciskowymi.
Zmontowana wieżyczka.
Pozostało nawiercić otwory i przykręcić podstawę wieżyczki do górnej płyty podwozia.
Teraz już wystarczy włożyć górną cześć wieżyczki głowicą serwa do orczyka, na razie nie przykręcamy wkrętu mocującego głowicę do orczyka, zrobimy, to po kalibracji serwa.
Zmontowany robot.
Nie przykręcamy jeszcze górnej części podwozia, bo musimy podłączyć przewody silników do sterownika L298N.
Łączymy razem przewody czerwone i czarne silników po lewej i prawej stronie. Podłączamy w następujący sposób: - czerwony przewód przedniego lewego silnika z czerwonym przewodem tylnego lewego silnika do OUT1 - czarny przewód przedniego lewego silnika z czarnym przewodem tylnego lewego silnika do OUT2 - czerwony przewód przedniego prawego silnika z czerwonym przewodem tylnego prawego silnika do OUT3 - czarny przewód przedniego prawego silnika z czarnym przewodem tylnego prawego silnika do OUT4
Schemat podłączenia silników do sterownika.
Zamontowane i podłączone silniki
Teraz krótko opiszę moduł sterownika L298N
Moduł posiada takie wejścia i wyjścia jak oznaczono na poniższym zdjęciu.
Wyjścia od OUT1 do OUT2 służą do podłączenia silników.
+12V tutaj podłączamy + z zasilania czyli czerwony przewód z koszyczka baterii +5V jest to wyjście +5V ze stabilizatora, który znajduje się płytce sterownika i z tego pinu będziemy zasilać Arduino GND tutaj łączymy masy z zasilania, czyli czarny przewód z koszyczka i masę GND do Arduino Uno.
IN1, IN2, IN3, IN4 są to wejścia sygnałów sterujących, które podłączamy do pinów Arduino.
ENA i ENB są to wejścia PWM, które sterują prędkością obrotową silników, normalnie są założone zworki, gdzie sygnały są podłączone do +5V i wtedy pracują z maksymalną prędkością, do działania robota ściągamy zworki z ENA i ENB, bo będziemy sobie definiować prędkość silników.
Zworkę zaznaczoną żółtym prostokątem zostawiamy założoną, ponieważ po ściągnięciu jej możemy zasilać moduł napięciem wyższym niż 12V, my będziemy używać napięcia do 12V więc zostawiamy ją założoną.
Proponuję zamontować włącznik na czerwonym przewodzie zasilania, ja wymieniłem przewody z koszyczka na baterie na grubsze przewody, bo te fabryczne były dosyć cienkie.
Zamontowany włącznik i podłączone zasilanie.
Teraz krótko o wyjściach Arduino Uno.
Opis wejść i wyjść Arduino Uno przedstawia poniższy schemat.
Do sterowania silnikami wykorzystujemy sygnały PWM, są to piny 3 i od 5 do 11, co to są sygnały PWM możemy szerzej poczytać na Forbocie -> Link
Do sterowania serwem, również wykorzystujemy sygnał PWM.
Proponuję pin 5 wykorzystać do sterowania serwem, a piny podłączenia sterownika silnika do Arduino tak:
ENA - pin 6 - włączający lewą stronę silników IN1 - pin 7 IN2 - pin 8 IN3 - pin 9 IN4 - pin 10 ENB - pin 11 - włączający prawą stronę silników
Sterowanie robotem będzie wyglądało w następujący sposób:
- jeżeli na pin ENA i ENB podamy stan wysoki, to włączy silniki, aby silnik działały musi na nich być podany stan wysoki, stan niski wyhamuje silniki - jeżeli na IN1 podamy stan niski, a na IN2 stan wysoki, to silnik będzie się kręcił do przodu, dla prawej strony silników IN3 stan wysoki, IN4 stan niski to prawa strona silników będzie kręcić się do przodu - jeżeli na IN1 podamy stan wysoki, a na IN2 stan niski, to lewa strona silników będzie kręcić się do tyłu, dla prawej strony IN3 - stan niski, IN4 - stan wysoki, to silnik będzie kręcił się do tyłu - skręcanie w lewo - lewe silniki do tyłu, prawe do przodu - skręcanie w prawo - lewe silniki do przodu, prawe do tyłu - hamowanie odbywa się poprzez podanie na wszystkie wejścia jednocześnie od IN1 do IN4 stanu wysokiego lub niskiego
Kierunki jazdy zależnie od stanów przedstawia poniższa tabela
Na Arduino Uno zakładamy Shield, niżej opis wejść/wyjśc
Schemat połączeń będzie taki.
Teraz już możemy przystąpić do wgrania pierwszego programu do Arduino Uno.
Najpierw musimy pobrać program Arduino -> Link i zainstalować go na Windows.
Na dzień dzisiejszy jest to wersja 1.8.0.
Po instalacji możemy podłączyć Arduino Uno do portu USB w komputerze, Windows wykryje nowe urządzenie na porcie com i zainstaluje sobie sterowniki.
Po uruchomieniu programu wybieramy w zakładce Narzędzia odpowiedni rodzaj Arduino, czyli Arduino/Genuino Uno i odpowiedni port Com.
Przykładowy kod programu, który przetestuje działanie silników pobieramy stąd -> Link
Wystarczy go rozpakować i kliknąć 2 razy w nazwę pliku, uruchomi się program Arduino i teraz wystarczy już tylko wgrać go Arduino Uno klikając u góry po lewej stronie w strzałkę Wgraj.
Po wgraniu uruchomi się program i robot pojedzie najpierw do przodu, później do tyłu, skręci w lewo i skręci w prawo, co widać na poniższym filmie.
Kod programu zawiera opisy, co robi dane polecenie.
Polecenie: analogWrite (ENA, 100) ; definiuje prędkość obrotową silnika i możemy sobie ją regulować w zakresie 0 do 255
Dla łatwiejszego późniejszego pisania kodu programu, będzie łatwiej jak sobie zdefiniujemy osobno w pętlach kierunki jazdy i później wystarczy już tylko w nowej pętli wpisać: nazwa_komendy();
W kodzie programu zdefiniowałem dodatkowo prędkość silnika na początku poleceniem: int predkosc = 150 ;
Możemy więc definiować prędkość jazdy na początku w zakresie od 0 do 255
Jeszcze jedną funkcją, która może się nam przydać w projektowaniu robotów, to płynne rozpędzanie i hamowanie, jest to szerzej opisane na kursach Arduino na Forbocie -> Link i jest realizowane funkcją:
for (int i = 0; i <= 255; i++) { analogWrite(6, i); //Spokojne rozpędzanie silnika delay(25);
Dzisiaj opiszę jak wykonać sterownik na Arduino do automatycznego podlewania małej szklarni.
Do swojego projektu wykorzystałem:
Sterownik:
1. Arduino Mini Pro 5V 16 MHz - koszt 9,90 zł -> Link 2. Wyświetlacz LCD 16x2 niebieski - koszt 9,90 zł -> Link 3. Czujnik wilgotności gleby - koszt 9,90 zł -> Link 4. Czujnik temperatury DS18B20 - koszt 4,50 zł -> Link 5. Potencjometr obrotowy 10k - koszt 2,50 zł -> Link 6. Płytka uniwersalna do zmontowania układu, ja wykorzystałem 2 płytki uniwersalne jakie miałem w domu, ale taka płytka powinna być dobra -> Link - koszt 3,50 zł 7. Obudowa czarna z okienkiem - koszt 5,70 zł -> Link
Będą jeszcze potrzebne 3 diody led, ja wykorzystałem jedną czerwoną, zieloną i żółtą oraz 3 rezystory 200 ohm do podłączenia diod i jeden rezystor podciągający 4,7k do czujnika DS18B20.
Koszt sterownika razem z obudową powinien się zamknąć w kwocie około 45 zł.
Pozostałe elementy:
Do włączania pompki wykorzystałem moduł przekaźnika 5v - koszt 6,40 zł -> Link
Woda będzie pobierana z beczki w ogrodzie, do pompowania wody wykorzystałem pompkę wymontowaną z starej uszkodzonej zmywarki.
Do zasilania Arduino wykorzystałem zasilacz 5v - koszt na Allegro około 5 zł.
Czujnik temperatury DS18B20 został podłączony do pinu 13 Arduino
Czujnik wilgotności gleby: pin A0 czujnika do A0 Arduino VCC czujnika do pinu 6 Arduino GND czujnika do GND Arduino
Diody led: Czerwona przez rezystor 200 ohm - pin 7 Arduino Żółta przez rezystor 200 ohm - pin 8 Arduino Zielona przez rezystor 200 ohm - pin 9 Arduino
Przekaźnik został podłączony do pinu 10 Arduino
Kod programu do wgrania do Arduino jest do pobrania tu -> Link
W kodzie programu wilgotność została ustawiona na 55 %, jeżeli wartości wilgotności będzie mniejsza niż 55% to włącza się pompa, zapala się czerwona dioda led informująca o włączeniu pompy oraz żółta dioda led informująca, że jest sucho.
Określono to w 74 linijce kodu:
if(moistureLevel < 55)
Jeżeli wilgotność będzie większa lub równa 55% wyłącza się pompa, czerwona i żółta dioda led i zapala się zielona dioda led informująca, że jest mokro.
Określono to 53 linijce kodu:
if(moistureLevel >= 55)
Na wyświetlaczu jest pokazywana aktualna wilgotność gleby oraz temperatura.
Dzisiaj opiszę działanie czujnika MQ-2 na odbiorniku MySensors.
Czujnik MQ-2 wykrywa takie gazy jak: propan, butan, metan, LPG, a także alkohol i dym. Czujnik mierzy stężenie tych gazów w powietrzu do wartości 10 000 ppm.
Czujnik MQ-2 wygląda jak na zdjęciu niżej, a koszt to około 10 zł.
Czujnik MQ-2 posiada następujące wejścia i wyjścia:
Do odbiornika MySensors podłączamy pin A0 czujnika do pinu A1 odbiornika oraz napięcie VCC +5V i masę GND.
Do odbiornika wgrywamy kod programu ze strony MySensors -> Link
W kodzie programu ze strony MySensors musimy sobie zmodyfikować domyślny pin na A1 i możemy również czas aktualizacji i przesyłania danych na 1000 mili sekund, czyli 1 sekundę, tak jak pokazano niżej.
Zmodyfikowany kod programu do pobrania jest tu -> Link
Po wgraniu programu do Arduino, w logach Domoticz -> Konfiguracja -> Logi pojawi się nazwa programu.
Teraz, aby wykryło czujnik i był on widoczny w Urządzeniach Domoticz musimy podać gaz z zapalniczki na czujnik. Po podaniu gazu zapali się zielona dioda na czujniku, czułość możemy regulować potencjometrem na płytce.
Powinno się pojawić w Urządzeniach Domoticz, Konfiguracja -> Urządzenia, urządzenie o nazwie Air Quality.
Teraz wystarczy już tylko kliknąć w zieloną strzałkę i wpisać nazwę urządzenia. Urządzenie będzie widoczne w zakładce Użytkowe.
Jak już napisałem na początku czujnik MQ-2 wykrywa gaz LPG, czyli wykryje gaz z zapalniczki, co widać na poniższym filmie.
Czujnik wykrywa również alkohol, ja użyłem zwykłego perfumu.