Sommario:

NearBot versatile: 11 passaggi (con immagini)
NearBot versatile: 11 passaggi (con immagini)

Video: NearBot versatile: 11 passaggi (con immagini)

Video: NearBot versatile: 11 passaggi (con immagini)
Video: NEAR Telegram Bot Setup - Tipping 2024, Dicembre
Anonim
Image
Image

Questo tutorial ti mostrerà come costruire un robot versatile che può muovere qualcosa come un pulsante, un interruttore o un quadrante su vari dispositivi quando tu (con il tuo telefono o un faro in tasca) sei nelle vicinanze. Ciò significa che potrebbe automaticamente sbloccare e richiudere una serratura della porta mentre *solo tu* passa, chiudere una valvola di irrigazione in modo da poter attraversare l'acqua illeso come una sorta di Mosè di periferia, abbassare il volume dell'altoparlante mentre sei in garage band room, attivare un iPod che suona una melodia d'ingresso drammatica o raccontare una barzelletta (un tweet di Jaden Smith?) mentre sei nella stanza, o mettere in pausa un film quando ti alzi per usare il bagno.

Questo progetto non richiede saldatura o strumenti speciali

Se ti piacciono abbastanza queste istruzioni, considera di votare per queste istruzioni nel concorso Robotica 2017!

Passaggio 1: acquisire le parti hardware

Avrai bisogno:

  • NodeMCU v2 o V3
  • Servomotore Micro 9G circa $ 1,40 USD spedizione gratuita su eBay o Aliexpress
  • Cavi per ponticelli Arduino da femmina a maschio.
  • Un involucro per il NearBot - ho usato una scatola di plastica di scarto che ho trovato.
  • Cavo dati micro USB (rottami parti del telefono)
  • Fonte di alimentazione USB (caricatore del telefono di scarto)

Se non disponi di uno smartphone con funzionalità di hotspot mobile, avrai anche bisogno di:

  • Modulo ESP-01 circa $ 2,50 USD spedizione gratuita su DealExtreme, GearBest, Ebay o Aliexpress.
  • 1 paio di batterie AAA
  • portabatteria doppio AAA con interruttore

Passaggio 2: avvio rapido

Questo passaggio contiene una guida rapida nel caso ti piaccia questo genere di cose. Il resto di questo istruibile va passo dopo passo e aggiunge informazioni più approfondite

// Lista della spesa: // Microcontrollore NodeMCU V3 (Lolin) ESP8266

// Servomotore SG90 9G

//USB Power Bank o adattatore da parete USB.

//Cavo dati/ricarica micro USB

//Cavi per ponticelli di tipo Arduino maschio-femmina

//PRIMA CHE INIZI:

//. Se non hai ancora scaricato l'IDE Arduino, scaricalo gratuitamente (donazione facoltativa) su:

//. apri l'IDE di Arduino (se non lo stai già leggendo nell'IDE di Arduino!)…

///3. Vai ai file e fai clic sulla preferenza nell'IDE di Arduino…

///4. copia il codice seguente in Gestione schede aggiuntive: //https://arduino.esp8266.com/stable/package_esp8266com_index.json

///5. fare clic su OK per chiudere la scheda delle preferenze…

///6. Vai su strumenti e bacheca, quindi seleziona gestore bacheca…

//7. Passare a esp8266 dalla community esp8266 e installare il software per Arduino…

//8. Potrebbe essere necessario scaricare e installare il driver CH340 se non riesci a far parlare il NodeMCU con il tuo IDE Arduino:

//Una volta completato tutto il processo di cui sopra, siamo pronti a programmare il nostro microcontrollore NodeMCU esp8266 con l'IDE Arduino.

//9.selezionare NodeMCU V1.0 ESP12E dal menu della scheda /

/10. Seleziona la porta COM che stai utilizzando.

//11. seleziona il codice (scaricalo da www.makersa.ga) e clicca su carica. /

/12. Collega il servo al NodeMCU usando i cavi dei ponticelli. D0 per segnalare, terra a terra, +VCC a VO o 3V. /

/13. Regolare la squadretta del servo usando un cacciavite.

//14. Regolare i gradi di movimento massimo e minimo utilizzando il codice.

//15. Ricarica sul NodeMCU ogni volta che il codice viene aggiornato.

//Potresti trovare importante capire quale versione di NodeMCU hai. Ecco una guida comparativa:

frightanic.com/iot/comparison-of-esp8266-no… // Diagramma di pinout di NodeMCU v1: https://frightanic.com/iot/comparison-of-esp8266-no… // Diagramma di pinout di NodeMCU v2: https://frightanic.com/iot/comparison-of-esp8266-no… // Diagramma di pinout NodeMCU v3:

//Spiegazione dei rig:

// Realizzato con microcontrollore NodeMCU ESP8266, batteria o alimentatore USB e servo SG90

//Puoi utilizzare un secondo modulo esp8266 non modificato come AP hotspot beacon invece di utilizzare uno smartphone, non è necessaria alcuna programmazione.

Passaggio 3: acquisire le parti del software

Dovrai prima scaricare l'IDE Arduino gratuito

L'editor Web Arduino non funziona con NodeMCU al momento in cui scrivo, quindi dovrai installare l'IDE sul tuo computer.

Dovrai anche prendere i file NearBot da www. MakerSa.ga - Il link per il download del file per questo progetto è elencato su quel sito.

Passaggio 4: installare i driver e i profili della scheda

Alcune informazioni utili
Alcune informazioni utili

All'interno dello zip NearBot che hai scaricato e decompresso ci saranno i driver per il modulo NodeMCU. Installali sul tuo computer.

Se quelli non funzionano per te, potresti essere in grado di trovare i driver CH340G su wemos.cc/downloads

Il tuo NodeMCU potrebbe non utilizzare il chip CH340G, quindi potresti dover commentare con il driver che stai cercando e io risponderò con il link per il download per quel driver.

  1. Quindi, apri l'IDE di Arduino e vai su Preferenze fileGestione schede aggiuntive nell'IDE di Arduino.
  2. Incolla lì il seguente codice:
  3. Fare clic su OK per chiudere la scheda delle preferenze.
  4. Vai a strumenti e bacheca, quindi seleziona gestore bacheca.
  5. Vai a "esp8266 by esp8266 community" e installa il software per Arduino.

Una volta completato tutto il processo di cui sopra, siamo pronti per programmare il nostro microcontrollore NodeMCU esp8266 con l'IDE Arduino!

Passaggio 5: alcune informazioni utili

Alcune informazioni utili
Alcune informazioni utili
Alcune informazioni utili
Alcune informazioni utili

Potresti trovare utile capire quale versione di NodeMCU hai. Ecco una guida comparativa:

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

Ogni versione ha diverse disposizioni dei pin. Ho acquistato la versione v3 (Lolin) perché ha pin di uscita 5V per alimentare il servomotore. Alla fine ho invece utilizzato i pin di alimentazione a 3 volt per sicurezza (i pin I/O NodeMCU non sono tolleranti a 5 V), ma potresti voler utilizzare i pin a 5 V perché tecnicamente questi tipi di servomotori sono specificati per una potenza da 4,5 a 5 volt.

Passaggio 6: caricare il codice sul NodeMCU

Carica il codice sul NodeMCU
Carica il codice sul NodeMCU
Carica il codice sul NodeMCU
Carica il codice sul NodeMCU
  1. Collega il NodeMCU al tuo computer utilizzando qualsiasi cavo micro USB.
  2. Apri l'IDE Arduino e in "Schede", seleziona "ESP12E" e la porta COM per NodeMCU.
  3. Nell'IDE, vai su FileOpen e sfoglia la cartella zip precedentemente scaricata da makersa.ga per aprire lo sketch Arduino chiamato "ProximityActuator013017DonovanMagryta.ino"
  4. Quindi, modifica la riga di codice contenente questo per aggiungere il nome e la password del tuo beacon WiFi. Maggiori informazioni qui sotto! Per esempio:

const char* ssid = "miowifi"; //Inserire il nome dell'hotspot tra virgolette

const char* password = "mywifipassword"; //Inserire la password dell'hotspot tra virgolette

Quindi fare clic su "carica" per far lampeggiare il codice sulla scheda NodeMCU.

Il NearBot utilizza un beacon WiFi tascabile per identificarti e stimare la distanza. Proprio come le chiavi di prossimità, alcune auto più recenti hanno che sbloccano la porta dell'auto mentre ti avvicini.

Puoi utilizzare l'hotspot mobile del tuo smartphone come beacon o, in alternativa, utilizzare un modulo WiFi ESP-01 economico alimentato da un paio di batterie AAA o una piccola batteria al litio da 3,7 V. Non è necessario programmare l'ESP-01, l'impostazione predefinita è la modalità hotspot quando è acceso. Lo schema del circuito per questo è mostrato in questo passaggio.

Passaggio 7: collegare il servo al NodeMCU

Avrai bisogno di alcuni ponticelli per collegare il servo al NodeMCU V3.

Lo schema del circuito è semplice.

Pin D0 al segnale in testa (filo di colore più chiaro sul servo, solitamente giallo o bianco.)

Pin 3V o pin VO al cavo di ingresso 5V (secondo filo di colore più chiaro sul servo, solitamente rosso o arancione.)

Pin GND al cavo di massa (filo di colore più scuro sul servo, solitamente marrone o nero.)

Passaggio 8: sintonizzare il NearBot

Il codice converte l'intensità del segnale in una stima della distanza. Funziona in modo affidabile per distanze di reazione inferiori a 2 metri o 6,5 piedi. Poiché si tratta di una conversione diretta, non è così uniforme per distanze superiori a 3 metri come potrebbe essere potenzialmente con un metodo di calcolo migliore. Più su quello più tardi.

Potresti voler regolare la posizione della squadretta del servo (il piccolo braccio bianco che si muove). Questo viene fatto semplicemente svitando il braccio del servo con un cacciavite e riposizionandolo.

La parte successiva è regolare i gradi di movimento massimo e minimo utilizzando il codice.

Questo può essere fatto modificando i numeri contenuti in righe che assomigliano a questa:

mioservo.write(10); // sposta il braccio del servo a una rotazione di 10 gradi

Puoi anche regolare la sensibilità della potenza del segnale modificando i numeri negativi nelle linee che assomigliano a questa:

if (rssi > -30 && rssi < -5) { //Se la potenza del segnale è più forte di -30 e più debole di -5. quindi fai quanto segue…

Passaggio 9: come funziona

  1. Il NearBot si connette prima all'hotspot in anticipo quando l'utente si avvicina.
  2. Esegue la scansione dell'RSSI (intensità del segnale ricevuto) e lo converte in una distanza approssimativa.
  3. Mentre la distanza rientra nell'intervallo specificato, sposta il braccio del servomotore in posizione 1.
  4. In caso contrario, il servomotore viene spostato in posizione 2.

Quando l'ho testato, questa sintonizzazione RSSI (-50) sposta il servo in posizione 1 mentre la distanza è compresa tra 0 e 1,5 metri con il faro ESP-01 o l'hotspot del telefono in tasca.

L'RSSI in genere rientra in un intervallo compreso tra -90 e -20, dove -20 è la potenza del segnale più forte.

Se apri il monitor seriale Arduino IDE mentre NearBot è collegato al computer, visualizzerà la potenza del segnale e i punti di trigger in tempo reale per avere un feedback utile.

Ecco il codice completo:

//PRIMA CHE INIZI:

//. Se non hai ancora scaricato l'IDE Arduino, scaricalo gratuitamente (donazione facoltativa) su: https://www.arduino.cc/en/Main/Software //2. apri l'IDE di Arduino (se non lo stai già leggendo nell'IDE di Arduino!)… //3. Vai ai file e fai clic sulla preferenza nell'IDE di Arduino… //4. copiare il collegamento sottostante in Gestione schede aggiuntive: //https://arduino.esp8266.com/stable/package_esp8266com_index.json //5. fare clic su OK per chiudere la scheda delle preferenze… //6. Vai su strumenti e bacheca, quindi seleziona gestore bacheca… //7. Passare a esp8266 dalla community esp8266 e installare il software per Arduino… //8. Potrebbe essere necessario scaricare e installare il driver CH340 se non riesci a far parlare il NodeMCU con il tuo IDE Arduino: https://www.arduino.cc/en/Main/Software // Una volta completato tutto il processo di cui sopra, siamo read per programmare il nostro microcontrollore NodeMCU esp8266 con l'IDE Arduino. Potresti voler capire quale versione di NodeMCU hai. Ecco una guida comparativa: https://www.arduino.cc/en/Main/Software // Realizzato con microcontrollore NodeMCU ESP8266, batteria o alimentatore USB e servo SG90 // È possibile utilizzare un secondo modulo esp8266 non modificato come beacon hotspot AP invece di utilizzare uno smartphone. //Circuito NearBot: //D0 pin al cavo del segnale Servo (filo di colore più chiaro) ///3V pin al cavo del servo 5v (cavo centrale) (collegato in parallelo al cavo USB o al pin VO sul NodeMCU se si dispone di V3. / /USB power to USB plug on the NodeMCU //GND pin to Servo Ground wire (filo di colore più scuro) // Le righe delle note iniziano con due barre in avanti e vengono ignorate dai computer. Le note sono solo per noi umani! #include #include //Potrebbe essere necessario per la stampa seriale. #include //Libreria servo #define D0 16 //Definisce i pin per facilitare l'assegnazione dei pin. #define D1 5 // I2C Bus SCL (clock) #define D2 4 // I2C Bus SDA (data) #define D3 0 #define D4 2 // Uguale a "LED_BUILTIN", ma logica invertita #define D5 14 // SPI Bus SCK (clock) #define D6 12 // SPI Bus MISO #define D7 13 // SPI Bus MOSI #define D8 15 // SPI Bus SS (CS) #define D9 3 // RX0 (console seriale) #define D10 1 // TX0 (console seriale) Servo myservo; //Crea un oggetto servo chiamato myservo //Phone o modulo ESP8266 aggiuntivo impostato sulla modalità AP hotspot: const ch ar* ssid = " "; //Inserire il nome dell'hotspot tra virgolette const char* password = " "; //Inserire la password dell'hotspot tra virgolette void setup(){ Serial.begin(115200); // imposta la velocità di trasmissione seriale in modo che il microcontrollore possa comunicare con l'interfaccia di stampa seriale nell'IDE di Arduino - Potrebbe essere necessario cambiarlo in 9600! mioservo.attach(D0); // collega il servo sul pin D0 aka GPIO16 all'oggetto servo - Vedi di più su: https://www.esp8266.com/viewtopic.php?f=32&t=8862#… myservo.write(10); // sposta il braccio del servo a una rotazione di 10 gradi Serial.println("Locked"); //emette al monitor seriale la parola "Locked" WiFi.mode(WIFI_STA); //Imposta il wifi in modalità Station WiFi.begin(ssid, password); //Si connette al beacon dell'hotspot } void loop() { //Il ciclo viene eseguito più e più volte rapidamente if (WiFi.status() != WL_CONNECTED) { //Se il wifi NON è connesso, fai quanto segue… Serial.println("Impossibile ottenere una connessione wifi"); mioservo.write(10); //Sposta il braccio del servo a 10 gradi Serial.println("Locked"); } else { //Se il WiFi è connesso, fai quanto segue… long rssi = WiFi. RSSI(); //Crea una variabile denominata rssi e la assegna alla funzione che restituisce la lettura dell'intensità del segnale dell'hotspot beacon Serial.print(rssi); //trasmette la lettura rssi al monitor seriale if (rssi > -50 && rssi < -5) { //Se la potenza del segnale è più forte di -50 e più debole di -5. quindi fai quanto segue… myservo.write(170); //Ruota il braccio del servo a 170 gradi Serial.println("Unlocked"); } else { //Se le condizioni di cui sopra non sono soddisfatte, procedi come segue… myservo.write(10); //Ruota indietro il braccio del servo di 10 gradi. Serial.println("Bloccato"); } } }

Passaggio 10: dovresti sapere…

Disclaimer:

L'attuale iterazione del codice NearBot funziona in modo affidabile per distanze inferiori a 2 metri o 6,5 piedi. Oltre a ciò, diventa meno preciso, ma funziona ancora.

Questo può essere risolto, ma al momento non so come farlo. Mi piacerebbe se qualcuno lavorasse con me in modo da poter aggiornare questo istruibile con un metodo più preciso per calcolare la distanza!

Questi collegamenti potrebbero essere utili: YouTuber CNLohr ha sviluppato un firmware di rilevamento della distanza e della posizione per ESP8266 con un successo limitato:

Espressif ha sviluppato una funzione di rilevamento della distanza Time of Flight che avrebbe funzionato con Arduino IDE per ESP8266, ma non l'ha mai rilasciata:

Il sistema di posizionamento SubPos utilizza i moduli ESP8266 e il calcolo della perdita di percorso, che è ciò che non so come implementare nell'IDE di Arduino:

Ho trovato un esempio in linguaggio Java, ma non so come replicare questo è Arduino IDE:

doppia distanza = Math.pow(10.0, (((double)(tx_pwr/10)) - rx_pwr - 10*Math.log10(4*Math. PI/(c/frequency)))/(20*mu));

Passaggio 11: questo è tutto

Se crei il tuo NearBot, pubblica il tuo "Ce l'ho fatta" nei commenti qui sotto!

Se hai altre idee su cosa utilizzare la piattaforma Versatile NearBot, per favore commenta le tue idee! Potrebbe essere una grande ispirazione per altri utenti di istruttori!

Se ti piace questo tutorial, considera di votare per questo istruibile nei concorsi!

Consigliato: