Spisu treści:

Wszechstronny NearBot: 11 kroków (ze zdjęciami)
Wszechstronny NearBot: 11 kroków (ze zdjęciami)

Wideo: Wszechstronny NearBot: 11 kroków (ze zdjęciami)

Wideo: Wszechstronny NearBot: 11 kroków (ze zdjęciami)
Wideo: 13 полезных насадок для шуруповерта и дрели с Aliexpress 2024, Lipiec
Anonim
Image
Image

Ta instrukcja pokaże Ci, jak zbudować wszechstronny wyzwalacz robota, który może poruszać czymś, takim jak przycisk, przełącznik lub wybieranie numerów na różnych urządzeniach, gdy jesteś w pobliżu (z telefonem lub latarnią morską w kieszeni). Oznacza to, że może automatycznie odblokować i ponownie zablokować zatrzask drzwi, gdy *tylko Ty* przechodzisz, odciąć zawór zraszacza, abyś mógł przejść przez wodę bez szwanku jak coś w rodzaju podmiejskiego Mojżesza, zmniejszyć głośność głośnika, gdy jesteś w garażu pokoju zespołu, uruchom iPoda odtwarzającego dramatyczną melodię wejścia lub opowiedz dowcip (twitt Jaden Smith?), gdy jesteś w pokoju, lub wstrzymaj film, gdy wstaniesz, aby skorzystać z toalety.

Ten projekt nie wymaga lutowania ani specjalnych narzędzi

Jeśli podobają Ci się te instrukcje, rozważ zagłosowanie na tę instrukcję w konkursie Robotics 2017!

Krok 1: Zdobądź części sprzętowe

Będziesz potrzebować:

  • NodeMCU v2 lub V3
  • Micro 9G Servo Motor około 1,40 USD darmowa wysyłka na eBay lub Aliexpress
  • Przewody Arduino Jumper żeńskie-męskie.
  • Obudowa do NearBota - użyłem złomowego plastikowego pudełka, które znalazłem.
  • Kabel do transmisji danych Micro USB (złom części telefonu)
  • Źródło zasilania USB (złomowa ładowarka do telefonu)

Jeśli nie masz smartfona z funkcją mobilnego hotspotu, będziesz potrzebować również:

  • Moduł ESP-01 około 2,50 USD bezpłatnej wysyłki na DealExtreme, GearBest, Ebay lub Aliexpress.
  • 1 para baterii AAA
  • podwójny uchwyt na baterie AAA z przełącznikiem

Krok 2: Szybki start

Ten krok zawiera przewodnik szybkiego startu, jeśli lubisz takie rzeczy. Reszta tej instrukcji idzie krok po kroku i dodaje więcej szczegółowych informacji

//Lista zakupów: //Mikrokontroler NodeMCU V3 (Lolin) ESP8266

//SG90 9G serwosilnik

//USB Power Bank lub adapter ścienny USB.

//Micro USB do transmisji danych/kabel do ładowania

//Przewody połączeniowe Arduino typu męskiego do żeńskiego

//ZANIM ZACZNIESZ:

//1. Jeśli jeszcze nie pobrałeś Arduino IDE, pobierz je za darmo (opcjonalnie darowizna) pod adresem:

//2. otwórz Arduino IDE (jeśli jeszcze tego nie czytasz w Arduino IDE!)…

//3. Przejdź do plików i kliknij preferencję w Arduino IDE…

//4. skopiuj poniższy kod w Menedżerze tablic dodatkowych: //https://arduino.esp8266.com/stable/package_esp8266com_index.json

//5. kliknij OK, aby zamknąć kartę preferencji…

//6. Przejdź do narzędzi i tablicy, a następnie wybierz menedżera tablicy…

//7. Przejdź do esp8266 przez społeczność esp8266 i zainstaluj oprogramowanie dla Arduino…

//8. Może być konieczne pobranie i zainstalowanie sterownika CH340, jeśli nie możesz uzyskać połączenia NodeMCU z Twoim Arduino IDE:

//Po zakończeniu całego powyższego procesu jesteśmy czytani, aby zaprogramować nasz mikrokontroler esp8266 NodeMCU za pomocą Arduino IDE.

//9.wybierz NodeMCU V1.0 ESP12E z menu płyty /

/10. Wybierz port COM, którego używasz.

//11. wybierz kod (pobierz z www.makersa.ga) i kliknij prześlij. /

/12. Podłącz serwo do NodeMCU za pomocą przewodów połączeniowych. D0 do sygnału, uziemienie do ziemi, +VCC do VO lub 3V. /

/13. Wyreguluj klakson serwa za pomocą śrubokręta.

//14. Dostosuj maksymalny i minimalny stopień ruchu za pomocą kodu.

//15. Prześlij ponownie do NodeMCU po każdej aktualizacji kodu.

//Może się okazać, że ważne jest, aby dowiedzieć się, którą wersję NodeMCU posiadasz. Oto przewodnik porównawczy:

frightanic.com/iot/comparison-of-esp8266-no… // Schemat wyprowadzeń NodeMCU v1: https://frightanic.com/iot/comparison-of-esp8266-no… // Schemat wyprowadzeń NodeMCU v2: https://frightanic.com/iot/comparison-of-esp8266-no… // Schemat pinów NodeMCU v3:

//Wyjaśnienie platform:

//Wykonane z mikrokontrolera NodeMCU ESP8266, zasilania bateryjnego lub USB oraz Servo SG90

//Możesz użyć drugiego niezmodyfikowanego modułu esp8266 jako beacon hotspot AP zamiast używać smartfona, bez konieczności programowania.

Krok 3: Kup części oprogramowania

Najpierw musisz pobrać darmowe Arduino IDE

Arduino Web Editor nie współpracuje z NodeMCU w momencie pisania tego, więc zamiast tego będziesz musiał zainstalować IDE na swoim komputerze.

Będziesz także musiał pobrać pliki NearBot z www. MakerSa.ga - Link do pobrania pliku dla tego projektu znajduje się na tej stronie.

Krok 4: Zainstaluj sterowniki i profile płyt

Kilka przydatnych informacji
Kilka przydatnych informacji

Wewnątrz pobranego i rozpakowanego archiwum NearBot będą znajdować się sterowniki modułu NodeMCU. Zainstaluj je na swoim komputerze.

Jeśli to nie zadziała, możesz znaleźć sterowniki CH340G na wemos.cc/downloads

Twoje NodeMCU może nie używać układu CH340G, więc być może będziesz musiał skomentować sterownik, którego szukasz, a ja odpowiem, podając link do pobrania tego sterownika.

  1. Następnie otwórz Arduino IDE i przejdź do File PreferencesAdditional Boards Manager w Arduino IDE.
  2. Wklej tam następujący kod:
  3. Kliknij OK, aby zamknąć kartę preferencji.
  4. Przejdź do narzędzi i tablicy, a następnie wybierz menedżera tablicy.
  5. Przejdź do „esp8266 by esp8266 community” i zainstaluj oprogramowanie dla Arduino.

Po zakończeniu wszystkich powyższych procesów jesteśmy gotowi do zaprogramowania naszego mikrokontrolera esp8266 NodeMCU za pomocą Arduino IDE!

Krok 5: Przydatne informacje

Kilka przydatnych informacji
Kilka przydatnych informacji
Kilka przydatnych informacji
Kilka przydatnych informacji

Może Ci się przydać, aby dowiedzieć się, którą wersję NodeMCU posiadasz. Oto przewodnik porównawczy:

frightanic.com/iot/comparison-of-esp8266-nodemcu-development-boards/

Każda wersja ma inny układ pinów. Kupiłem wersję v3 (Lolin), ponieważ ma piny wyjściowe 5V do zasilania silnika Servo. Ostatecznie zamiast tego użyłem 3-woltowych pinów zasilania dla bezpieczeństwa (piny We/Wy NodeMCU nie tolerują 5 V), ale możesz chcieć użyć pinów 5 V, ponieważ technicznie tego rodzaju serwosilniki są określone dla mocy od 4,5 do 5 woltów.

Krok 6: Załaduj kod do NodeMCU

Załaduj kod do NodeMCU
Załaduj kod do NodeMCU
Załaduj kod do NodeMCU
Załaduj kod do NodeMCU
  1. Podłącz NodeMCU do komputera za pomocą dowolnego kabla micro USB.
  2. Otwórz Arduino IDE i w sekcji „Płyty” wybierz „ESP12E” i port COM dla NodeMCU.
  3. W IDE przejdź do FileOpen i przejrzyj folder zip pobrany wcześniej z makersa.ga, aby otworzyć szkic Arduino o nazwie „ProximityActuator013017DonovanMagryta.ino”
  4. Następnie edytuj wiersz kodu zawierający ten kod, aby dodać nazwę i hasło sygnału nawigacyjnego Wi-Fi. Więcej na ten temat poniżej! Na przykład:

const char* ssid = "moja-wifi"; //Umieść swoją nazwę hotspotu w cudzysłowie

const char* hasło = "mywifipassword"; //Umieść hasło do hotspotu w cudzysłowie

Następnie kliknij „prześlij”, aby sflashować kod na płytę NodeMCU.

NearBot wykorzystuje kieszonkowy beacon Wi-Fi, aby Cię zidentyfikować i oszacować odległość. Podobnie jak klucze zbliżeniowe, w niektórych nowszych samochodach otwierają się drzwi do samochodu, gdy się zbliżasz.

Możesz użyć mobilnego hotspotu smartfona jako beacon lub alternatywnie użyć taniego modułu WiFi ESP-01 zasilanego parą baterii AAA lub małą baterią litową 3.7v. Nie ma potrzeby programowania ESP-01, domyślnie działa w trybie hotspot, gdy jest włączony. Schemat obwodu jest pokazany w tym kroku.

Krok 7: Podłącz serwo do NodeMCU

Będziesz potrzebować kilku przewodów połączeniowych, aby podłączyć serwo do NodeMCU V3.

Schemat obwodu jest prosty.

Pin D0 do sygnału w przewodzie (najjaśniejszy kolor przewodu na serwo. zwykle żółty lub biały.)

Pin 3V lub pin VO do przewodu wejściowego 5V (drugi najjaśniejszy kolor przewodu na serwo, zwykle czerwony lub pomarańczowy).

Pin GND do przewodu masy (najciemniejszy przewód na serwo, zwykle brązowy lub czarny.)

Krok 8: Dostrój NearBota

Kod konwertuje siłę sygnału na oszacowanie odległości. Działa niezawodnie dla odległości reakcji mniejszych niż 2 metry lub 6,5 stopy. Ponieważ jest to konwersja bezpośrednia, nie jest tak płynna dla odległości większych niż 3 metry, jak mogłaby potencjalnie być przy lepszej metodzie obliczeniowej. Więcej o tym później.

Możesz chcieć wyregulować, gdzie znajduje się klakson serwomechanizmu (małe białe ramię, które się porusza). Odbywa się to po prostu odkręcając ramię serwomechanizmu za pomocą śrubokręta i ponownie je ustawiając.

Kolejna część to dostosowanie maksymalnych i minimalnych stopni ruchu za pomocą kodu.

Można to zrobić, zmieniając liczby zawarte w wierszach, które wyglądają tak:

myservo.write(10); //przenosi ramię serwa do 10 stopni obrotu

Możesz także dostosować czułość siły sygnału, zmieniając liczby ujemne w liniach, które wyglądają tak:

if (rssi > -30 && rssi < -5) { //Jeśli siła sygnału jest silniejsza niż -30 i słabsza niż -5. następnie wykonaj następujące czynności…

Krok 9: Jak to działa

  1. NearBot najpierw łączy się z hotspotem z wyprzedzeniem, gdy zbliża się użytkownik.
  2. Skanuje RSSI (siła odbieranego sygnału) i konwertuje go na przybliżoną odległość.
  3. Gdy odległość mieści się w określonym zakresie, ramię serwomotoru przesuwa się do pozycji 1.
  4. W przeciwnym razie serwomotor zostanie przesunięty do pozycji 2.

Kiedy to testowałem, to strojenie RSSI (-50) przesuwa serwo do pozycji 1, podczas gdy odległość wynosi od 0 do 1,5 metra z beaconem ESP-01 lub hotspotem telefonu w mojej kieszeni.

RSSI zwykle mieści się w zakresie od -90 do -20, przy czym -20 oznacza najsilniejszy sygnał.

Jeśli otworzysz monitor szeregowy Arduino IDE, gdy NearBot jest podłączony do komputera, wyświetli on siłę sygnału i punkty wyzwalania w czasie rzeczywistym, aby uzyskać przydatne informacje zwrotne.

Oto pełny kod:

//ZANIM ZACZNIESZ:

//1. Jeśli nie pobrałeś jeszcze Arduino IDE, pobierz je za darmo (opcjonalnie darowizna) pod adresem: https://www.arduino.cc/en/Main/Software //2. otwórz Arduino IDE (jeśli jeszcze tego nie czytasz w Arduino IDE!)… //3. Przejdź do plików i kliknij preferencję w Arduino IDE… //4. skopiuj poniższy link w Menedżerze tablic dodatkowych: //https://arduino.esp8266.com/stable/package_esp8266com_index.json //5. kliknij OK, aby zamknąć kartę preferencji… //6. Przejdź do narzędzi i tablicy, a następnie wybierz menedżera tablicy… //7. Przejdź do esp8266 przez społeczność esp8266 i zainstaluj oprogramowanie dla Arduino… //8. Może być konieczne pobranie i zainstalowanie sterownika CH340, jeśli nie możesz uzyskać połączenia NodeMCU z Twoim Arduino IDE: https://www.arduino.cc/en/Main/Software // Po zakończeniu całego powyższego procesu jesteśmy przeczytaj, aby zaprogramować nasz mikrokontroler esp8266 NodeMCU z Arduino IDE. Możesz dowiedzieć się, którą wersję NodeMCU posiadasz. Oto przewodnik porównawczy: https://www.arduino.cc/en/Main/Software //Wykonany z mikrokontrolera NodeMCU ESP8266, zasilania bateryjnego lub USB i serwomechanizmu SG90 //Można użyć drugiego niezmodyfikowanego modułu esp8266 jako beacon hotspot AP zamiast smartfona. //Obwód NearBot: //Pin D0 do przewodu sygnałowego Servo (najjaśniejszy przewód kolorowy) /Pin/3V do przewodu serwo 5V (przewód środkowy) (spleciony równolegle z kablem USB lub pinem VO na NodeMCU, jeśli masz V3. / / Zasilanie USB do wtyczki USB w NodeMCU // GND do przewodu Servo Ground (przewód o najciemniejszym kolorze) // Linie notatek zaczynają się od dwóch ukośników i są ignorowane przez komputery. Notatki są tylko dla nas, ludzi! #include #include //Może być potrzebny do drukowania szeregowego. #include //Biblioteka serwo #define D0 16 //Define pinów, aby ułatwić przypisywanie pinów. #define D1 5 // I2C Bus SCL (zegar) #define D2 4 // I2C Bus SDA (dane) #define D3 0 #define D4 2 // To samo co "LED_BUILTIN", ale odwrócona logika #define D5 14 // SPI Bus SCK (zegar) #define D6 12 // SPI Bus MISO #define D7 13 // SPI Bus MOSI #define D8 15 // SPI Bus SS (CS) #define D9 3 // RX0 (konsola szeregowa) #define D10 1 // TX0 (konsola szeregowa) Servo myservo //Utwórz obiekt servo o nazwie myservo //Phone lub dodatkowy moduł ESP8266 ustawiony na tryb hotspot AP: const ch ar* ssid = " "; //Umieść swoją nazwę hotspotu w cudzysłowie const char* password = " "; //Umieść hasło do hotspotu w cudzysłowie void setup(){ Serial.begin(115200); //ustawia szybkość transmisji szeregowej, aby mikrokontroler mógł komunikować się z interfejsem drukowania szeregowego w środowisku Arduino IDE - zamiast tego może być konieczna zmiana na 9600! myservo.attach(D0); // dołącza serwo na pinie D0 aka GPIO16 do obiektu serwo - Zobacz więcej na: https://www.esp8266.com/viewtopic.php?f=32&t=8862#… myservo.write(10); //przenosi ramię serwa o 10 stopni obrotu Serial.println("Zablokowane"); //wypisz na monitorze szeregowym słowo "Zablokowane" WiFi.mode(WIFI_STA); //Ustawia Wi-Fi na tryb stacji WiFi.begin(ssid, hasło); //Łączy się z sygnałem nawigacyjnym hotspotu } void loop() { //Pętla przebiega szybko i bez przerwy if (WiFi.status() != WL_CONNECTED) { //Jeśli Wi-Fi NIE jest połączone, wykonaj następujące czynności… Serial.println(„Nie udało się uzyskać połączenia Wi-Fi”); myservo.write(10); //Przenosi ramię serwa do 10 stopni Serial.println("Zablokowane"); } else { //Jeśli WiFi JEST połączone, wykonaj następujące czynności… long rssi = WiFi. RSSI(); //Tworzy zmienną o nazwie rssi i przypisuje ją do funkcji, która zwraca odczyt siły sygnału sygnału nawigacyjnego hotspotu Serial.print(rssi); //wyprowadza odczyt rssi do monitora szeregowego if (rssi > -50 && rssi < -5) { //Jeśli siła sygnału jest silniejsza niż -50 i słabsza niż -5. następnie wykonaj następujące czynności… myservo.write(170); //Obróć ramię serwomechanizmu o 170 stopni Serial.println("Odblokowane"); } else { //Jeśli powyższe warunki nie są spełnione, wykonaj następujące czynności… myservo.write(10); //Obraca ramię serwa z powrotem o 10 stopni. Serial.println("Zablokowane"); } } }

Krok 10: Powinieneś wiedzieć…

Zastrzeżenie:

Obecna iteracja kodu NearBot działa niezawodnie na odległościach mniejszych niż 2 metry lub 6,5 stopy. Poza tym robi się mniej precyzyjny, ale nadal działa.

Można to naprawić, ale w tej chwili nie wiem, jak to zrobić. Chciałbym, żeby ktoś ze mną współpracował, abym mógł zaktualizować te instrukcje o bardziej precyzyjną metodę obliczania odległości!

Te linki mogą być przydatne: YouTuber CNLohr opracował oprogramowanie układowe do wykrywania odległości i położenia dla ESP8266 z ograniczonym sukcesem:

Espressif opracował funkcję wykrywania odległości czasu lotu, która będzie działać z Arduino IDE dla ESP8266, ale nigdy jej nie wydała:

System pozycjonowania SubPos wykorzystuje moduły ESP8266 i Path Loss Calculation, czyli to, czego nie wiem jak zaimplementować w Arduino IDE:

Znalazłem przykład w języku Java, ale nie wiem, jak powielić to Arduino IDE:

podwójna odległość = Math.pow(10.0, (((double)(tx_pwr/10)) - rx_pwr - 10*Math.log10(4*Math. PI/(c/częstotliwość))))/(20*mu));

Krok 11: To wszystko

Jeśli tworzysz własnego NearBota, opublikuj swoje „Udało mi się” w komentarzach poniżej!

Jeśli masz więcej pomysłów na to, do czego wykorzystać platformę Versatile NearBot, skomentuj swoje pomysły! Może być świetną inspiracją dla innych użytkowników instrukcji!

Jeśli podoba Ci się ten samouczek, rozważ głosowanie na tę instrukcję w konkursach!

Zalecana: