Inhoudsopgave:
- Stap 1: Verkrijg de hardware-onderdelen
- Stap 2: Snelle start
- Stap 3: Verkrijg de softwareonderdelen
- Stap 4: Installeer stuurprogramma's en kaartprofielen
- Stap 5: Nuttige informatie
- Stap 6: Laad de code op de NodeMCU
- Stap 7: Bevestig de servo aan de NodeMCU
- Stap 8: Fijnafstemming van de NearBot
- Stap 9: Hoe het werkt
- Stap 10: u moet weten …
- Stap 11: Dat is alles
Video: Veelzijdige NearBot - Ajarnpa
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:17
Deze instructable laat je zien hoe je een veelzijdige robottrigger kunt bouwen die iets zoals een knop, schakelaar of wijzerplaat op verschillende apparaten kan verplaatsen wanneer je (met je telefoon of een baken in je zak) in de buurt bent. Dit betekent dat het automatisch een deurvergrendeling kan ontgrendelen en opnieuw kan vergrendelen als *alleen jij* langskomt, een sprinklerklep afsluit zodat je ongedeerd door het water kunt gaan als een soort Mozes in de voorsteden, lager luidsprekervolume terwijl je in de garage bent bandroom, activeer een iPod die een dramatisch deuntje speelt of vertel een grap (Jaden Smith tweet?) terwijl je in de kamer bent, of pauzeer een film wanneer je opstaat om naar het toilet te gaan.
Dit project vereist geen solderen of speciaal gereedschap
Als je genoeg van deze instructables geniet, overweeg dan om op deze instructable te stemmen in de Robotics 2017-wedstrijd!
Stap 1: Verkrijg de hardware-onderdelen
Je zal nodig hebben:
- NodeMCU v2 of V3
- Micro 9G-servomotor ongeveer $ 1,40 USD gratis verzending op eBay of Aliexpress
- Arduino-jumperdraden vrouwelijk naar mannelijk.
- Een behuizing voor de NearBot - ik gebruikte een plastic afvalbak die ik vond.
- Micro-USB-datakabel (oude telefoononderdelen)
- USB-stroombron (oplader voor oude telefoons)
Als je geen smartphone met een mobiele hotspot-functie hebt, heb je ook het volgende nodig:
- ESP-01-module ongeveer $ 2,50 USD gratis verzending op DealExtreme, GearBest, Ebay of Aliexpress.
- 1 paar AAA-batterijen
- dubbele AAA-batterijhouder met schakelaar
Stap 2: Snelle start
Deze stap bevat een snelstartgids voor het geval je van dat soort dingen houdt. De rest van deze instructable gaat stap voor stap en voegt meer diepgaande informatie toe
// Boodschappenlijstje: //NodeMCU V3 (Lolin) ESP8266 microcontroller
// SG90 9G servomotor
//USB Power Bank of USB-muuradapter.
//Micro-USB-gegevens-/oplaadkabel
// Arduino mannelijk naar vrouwelijk type jumperdraden
//VOORDAT JE START:
//1. Als je de Arduino IDE nog niet hebt gedownload, download hem dan gratis (donatie optioneel) op:
//2. open de Arduino IDE (als je dit nog niet leest in de Arduino IDE!)…
//3. Ga naar bestanden en klik op de voorkeur in de Arduino IDE…
//4. kopieer de onderstaande code in de Extra boards Manager: //https://arduino.esp8266.com/stable/package_esp8266com_index.json
//5. klik op OK om het voorkeurentabblad te sluiten…
//6. Ga naar tools en board, en selecteer dan board manager…
//7. Navigeer naar esp8266 door esp8266 community en installeer de software voor Arduino…
//8. Mogelijk moet u het CH340-stuurprogramma downloaden en installeren als u de NodeMCU niet kunt laten praten met uw Arduino IDE:
// Nadat al het bovenstaande proces is voltooid, worden we gelezen om onze esp8266 NodeMCU-microcontroller te programmeren met de Arduino IDE.
//9.select NodeMCU V1.0 ESP12E in het bordmenu /
/10. Selecteer de COM-poort die u gebruikt.
//11. selecteer de code (download van www.makersa.ga) en klik op uploaden. /
/12. Sluit de servo aan op de NodeMCU met behulp van jumperdraden. D0 naar signaal, aarde naar aarde, +VCC naar VO of 3V. /
/13. Stel de servohoorn af met een schroevendraaier.
//14. Pas de maximale en minimale bewegingsgraden aan met behulp van de code.
//15. Upload opnieuw naar de NodeMCU wanneer de code is bijgewerkt.
//Misschien vindt u het belangrijk om erachter te komen welke NodeMCU-versie u heeft. Hier is een vergelijkingsgids:
frightanic.com/iot/comparison-of-esp8266-no… // NodeMCU v1 pinout-diagram: https://frightanic.com/iot/comparison-of-esp8266-no… // NodeMCU v2 pinout-diagram: https://frightanic.com/iot/comparison-of-esp8266-no… // NodeMCU v3 pinout-diagram:
//Uitleg van de rigs:
// Gemaakt van NodeMCU ESP8266 microcontroller, batterij of USB-voeding en SG90 Servo
// U kunt een 2e ongewijzigde esp8266-module gebruiken als een baken-hotspot-AP in plaats van een smartphone te gebruiken, programmeren is niet nodig.
Stap 3: Verkrijg de softwareonderdelen
U moet eerst de gratis Arduino IDE downloaden
De Arduino Web Editor werkt niet met de NodeMCU op het moment dat ik dit schrijf, dus je zult in plaats daarvan de IDE op je computer moeten installeren.
Je moet ook de NearBot-bestanden van www. MakerSa.ga halen - De downloadlink voor dit project staat op die site.
Stap 4: Installeer stuurprogramma's en kaartprofielen
In de NearBot-zip die u hebt gedownload en uitgepakt, bevinden zich de stuurprogramma's voor de NodeMCU-module. Installeer deze op uw computer.
Als deze niet voor u werken, kunt u mogelijk CH340G-stuurprogramma's vinden op wemos.cc/downloads
Uw NodeMCU gebruikt mogelijk geen CH340G-chip, dus u moet mogelijk commentaar geven met de driver die u zoekt, en ik zal antwoorden met de downloadlink voor die driver.
- Open vervolgens de Arduino IDE en ga naar File PreferencesAdditional Boards Manager in de Arduino IDE.
- Plak daar de volgende code:
- Klik op OK om het voorkeurentabblad te sluiten.
- Ga naar tools en board en selecteer vervolgens boardmanager.
- Navigeer naar "esp8266 by esp8266 community" en installeer de software voor Arduino.
Zodra al het bovenstaande proces is voltooid, zijn we klaar om onze esp8266 NodeMCU-microcontroller te programmeren met de Arduino IDE!
Stap 5: Nuttige informatie
Misschien vindt u het handig om erachter te komen welke NodeMCU-versie u heeft. Hier is een vergelijkingsgids:
frightanic.com/iot/comparison-of-esp8266-nodemcu-development-boards/
Elke versie heeft verschillende pin-arrangementen. Ik heb de v3-versie (Lolin) gekocht omdat deze 5V-uitgangspinnen heeft om de servomotor van stroom te voorzien. Ik heb uiteindelijk in plaats daarvan de 3 volt voedingspinnen gebruikt voor de veiligheid (de NodeMCU I / O-pinnen zijn niet 5V-tolerant), maar misschien wil je de 5V-pinnen gebruiken omdat dit soort servomotoren technisch gezien zijn gespecificeerd voor 4,5 tot 5 volt stroom.
Stap 6: Laad de code op de NodeMCU
- Sluit de NodeMCU aan op uw computer met behulp van een micro-USB-kabel.
- Open de Arduino IDE en selecteer onder "Boards" "ESP12E" en de COM-poort voor de NodeMCU.
- Ga in de IDE naar FileOpen en blader door de zip-map die eerder is gedownload van makersa.ga om de Arduino-schets genaamd "ProximityActuator013017DonovanMagryta.ino" te openen
- Bewerk vervolgens de coderegel die dit bevat om de naam en het wachtwoord van uw WiFi-baken toe te voegen. Daarover hieronder meer! Bijvoorbeeld:
const char* ssid = "mijnwifi"; // Zet de naam van je hotspot tussen de aanhalingstekens
const char* wachtwoord = "mijnwifiwachtwoord"; // Zet je hotspot-wachtwoord tussen de aanhalingstekens
Klik vervolgens op "uploaden" om de code op het NodeMCU-bord te flashen.
De NearBot gebruikt een wifi-baken in zakformaat om u te identificeren en de afstand in te schatten. Net als de naderingssleutels hebben sommige nieuwere auto's die de deur naar de auto ontgrendelen als je nadert.
U kunt de mobiele hotspot van uw smartphone als baken gebruiken of een goedkope ESP-01 WiFi-module gebruiken die wordt gevoed door een paar AAA-batterijen of een kleine lithium 3.7v-batterij. Het is niet nodig om de ESP-01 te programmeren, hij staat standaard in de hotspot-modus als hij wordt ingeschakeld. Het schakelschema daarvoor wordt in deze stap getoond.
Stap 7: Bevestig de servo aan de NodeMCU
U hebt enkele jumperdraden nodig om de servo op de NodeMCU V3 aan te sluiten.
Het schakelschema is eenvoudig.
Pin D0 op het signaal in de kabel (lichtste kleur draad op de servo. meestal geel of wit.)
Pin 3V of pin VO op de 5V-ingangskabel (op één na lichtste kleurdraad op de servo, meestal rood of oranje.)
Pin GND op de aardedraad (donkerste gekleurde draad op de servo, meestal bruin of zwart.)
Stap 8: Fijnafstemming van de NearBot
De code zet de signaalsterkte om in afstandsschatting. Het werkt betrouwbaar voor reactieafstanden van minder dan 2 meter of 6,5 voet. Omdat het een directe conversie is, is het voor grotere afstanden dan 3 meter niet zo soepel als het zou kunnen zijn met een betere berekeningsmethode. Daarover later meer.
Misschien wilt u aanpassen waar de servohoorn (de kleine witte arm die beweegt) wordt geplaatst. Dit wordt gedaan door de servo-arm eenvoudig met een schroevendraaier los te draaien en opnieuw te positioneren.
Het volgende deel is het aanpassen van de maximale en minimale bewegingsgraden met behulp van de code.
Dit kan worden gedaan door de getallen in regels te wijzigen die er als volgt uitzien:
mijnservo.write(10); // beweegt de servo-arm naar een rotatie van 10 graden
U kunt de gevoeligheid van de signaalsterkte ook aanpassen door de negatieve getallen te wijzigen in regels die er als volgt uitzien:
if (rssi > -30 && rssi < -5) {//Als de signaalsterkte sterker is dan -30 en zwakker dan -5. doe dan het volgende…
Stap 9: Hoe het werkt
- De NearBot maakt van tevoren eerst verbinding met de hotspot als een gebruiker nadert.
- Het scant de RSSI (ontvangen signaalsterkte) en zet die om in geschatte afstand.
- Terwijl de afstand binnen het gespecificeerde bereik ligt, wordt de servomotorarm naar positie 1 verplaatst.
- Anders wordt de servomotor naar positie 2 verplaatst.
Toen ik dit testte, verplaatst deze RSSI-afstemming (-50) de servo naar positie 1 terwijl de afstand 0 tot 1,5 meter is met het ESP-01 baken of telefoonhotspot in mijn zak.
De RSSI valt meestal binnen een bereik van -90 tot -20, waarbij -20 de sterkste signaalsterkte is.
Als u de Arduino IDE seriële monitor opent terwijl de NearBot op de computer is aangesloten, geeft deze de signaalsterkte en triggerpunten in realtime weer zodat u handige feedback kunt krijgen.
Hier is de volledige code:
//VOORDAT JE START:
//1. Als je de Arduino IDE nog niet hebt gedownload, krijg hem dan gratis (donatie optioneel) op: https://www.arduino.cc/en/Main/Software //2. open de Arduino IDE (als je dit nog niet leest in de Arduino IDE!)… //3. Ga naar bestanden en klik op de voorkeur in de Arduino IDE… //4. kopieer de onderstaande link in de Extra boards Manager: //https://arduino.esp8266.com/stable/package_esp8266com_index.json //5. klik op OK om het voorkeurentabblad te sluiten… //6. Ga naar tools en board, en selecteer dan board manager… //7. Navigeer naar esp8266 door de esp8266-community en installeer de software voor Arduino… //8. Mogelijk moet u het CH340-stuurprogramma downloaden en installeren als u de NodeMCU niet kunt laten praten met uw Arduino IDE: https://www.arduino.cc/en/Main/Software //Zodra al het bovenstaande proces is voltooid, zijn we lees om onze esp8266 NodeMCU-microcontroller te programmeren met de Arduino IDE. Misschien wil je erachter komen welke NodeMCU-versie je hebt. Hier is een vergelijkingsgids: https://www.arduino.cc/en/Main/Software //Gemaakt van NodeMCU ESP8266-microcontroller, batterij of USB-voeding en SG90 Servo //U kunt een 2e ongewijzigde esp8266-module als baken gebruiken hotspot AP in plaats van een smartphone te gebruiken. //NearBot Circuit: //D0-pin naar servosignaaldraad (lichtste kleurdraad) //3V-pin naar servo 5v-draad (middelste draad) (parallel gesplitst naar USB-kabel of de VO-pin op de NodeMCU als je V3 hebt. / /USB-stroom naar USB-stekker op de NodeMCU //GND-pin naar servo-aardingsdraad (draad in donkerste kleur) // Opmerkingsregels beginnen met twee schuine strepen naar voren en worden genegeerd door de computers. Opmerkingen zijn alleen voor ons mensen! #include #include //Kan nodig zijn voor serieel printen. #include //Servo-bibliotheek #define D0 16 //Definieert pinnen om het toewijzen van pinnen gemakkelijker te maken. #define D1 5 // I2C Bus SCL (klok) #define D2 4 // I2C Bus SDA (data) #define D3 0 #define D4 2 // Hetzelfde als "LED_BUILTIN", maar omgekeerde logica #define D5 14 // SPI Bus SCK (klok) #define D6 12 // SPI Bus MISO #define D7 13 // SPI Bus MOSI #define D8 15 // SPI Bus SS (CS) #define D9 3 // RX0 (Seriële console) #define D10 1 // TX0 (Seriële console) Servo myservo; //Maak een servo-object met de naam myservo //Telefoon of extra ESP8266-module ingesteld op hotspot AP-modus: const ch ar* ssid = " "; // Zet je hotspot-naam tussen de aanhalingstekens const char* password = " "; //Plaats uw hotspot-wachtwoord in de aanhalingstekens void setup () {Serial.begin (115200); // stelt de seriële baudrate in zodat de microcontroller kan praten met de seriële printinterface in de Arduino IDE - Mogelijk moet u deze in plaats daarvan wijzigen in 9600! mijnservo.attach(D0); // hecht de servo op pin D0 aka GPIO16 aan het servo-object - Zie meer op: https://www.esp8266.com/viewtopic.php?f=32&t=8862#… myservo.write(10); // verplaatst de servo-arm naar een rotatie van 10 graden Serial.println ("Vergrendeld"); // voer de seriële monitor het woord "Locked" WiFi.mode (WIFI_STA) uit; // Stelt wifi in op Station-modus WiFi.begin (ssid, wachtwoord); // Maakt verbinding met hotspotbeacon } void loop () { // De lus loopt steeds weer snel als (WiFi.status ()! = WL_CONNECTED) { //Als wifi NIET is aangesloten, doe dan het volgende … Serial.println ("Kan geen wifi-verbinding krijgen"); mijnservo.write(10); // Verplaatst servo-arm naar 10 graden Serial.println ("Vergrendeld"); } else { //Als WiFi IS aangesloten, doe dan het volgende… long rssi = WiFi. RSSI(); //Maakt een variabele met de naam rssi en wijst deze toe aan de functie die de signaalsterkte van het hotspotbeacon Serial.print(rssi) retourneert; // voert de rssi-uitlezing uit naar de seriële monitor als (rssi> -50 && rssi < -5) {//Als de signaalsterkte sterker is dan -50 en zwakker dan -5. doe dan het volgende… myservo.write(170); // Draai de servo-arm naar 170 graden Serial.println ("Ontgrendeld"); } else { //Als niet aan de bovenstaande voorwaarden wordt voldaan, doe dan het volgende… myservo.write(10); // Draait de servo-arm terug naar 10 graden. Serial.println("Vergrendeld"); } } }
Stap 10: u moet weten …
Vrijwaring:
De huidige iteratie van de NearBot-code werkt betrouwbaar voor afstanden van minder dan 2 meter of 6,5 voet. Verder wordt het minder precies, maar het werkt nog steeds.
Dit kan worden opgelost, maar op dit moment weet ik niet hoe ik dit moet doen. Ik zou het geweldig vinden als iemand met mij zou werken, zodat ik deze instructables kan bijwerken met een nauwkeurigere methode om afstand te berekenen!
Deze links kunnen handig zijn: YouTuber CNLohr ontwikkelde een firmware voor afstands- en positiedetectie voor de ESP8266 met beperkt succes:
Espressif ontwikkelde een Time of Flight-afstandsdetectiefunctie die zou werken met Arduino IDE voor de ESP8266, maar heeft deze nooit uitgebracht:
SubPos-positioneringssysteem gebruikt ESP8266-modules en Path Loss-berekening, wat ik niet weet hoe te implementeren in Arduino IDE:
Ik vond een voorbeeld in Java-taal, maar ik weet niet hoe ik dit moet repliceren, dit is Arduino IDE:
dubbele afstand = Math.pow(10.0, (((double)(tx_pwr/10)) - rx_pwr - 10*Math.log10(4*Math. PI/(c/frequency)))/(20*mu));
Stap 11: Dat is alles
Als je je eigen NearBot maakt, plaats dan je "I made it" in de reacties hieronder!
Als u nog meer ideeën heeft voor het gebruik van het veelzijdige NearBot-platform, geef dan commentaar op uw ideeën! Het kan een geweldige inspiratie zijn voor andere gebruikers van instructables!
Als je deze tutorial leuk vindt, overweeg dan om op deze instructable te stemmen in wedstrijden!