Sommario:

Rendere più intelligente uno stupido robot tagliaerba: 4 passaggi
Rendere più intelligente uno stupido robot tagliaerba: 4 passaggi

Video: Rendere più intelligente uno stupido robot tagliaerba: 4 passaggi

Video: Rendere più intelligente uno stupido robot tagliaerba: 4 passaggi
Video: NICOLE REAGISCE AL NOSTRO BACIO! 2024, Dicembre
Anonim
Rendere più intelligente uno stupido robot tagliaerba
Rendere più intelligente uno stupido robot tagliaerba

Quindi ho un adorabile, ma stupido robot tagliaerba (l'immagine è tratta da www.harald-nyborg.dk).

Questo robot dovrebbe tagliare il mio prato, ma il mio prato è troppo grande e complesso per entrare davvero negli angoli.

Non mostrati sui miei disegni ci sono una moltitudine di alberi e un'altalena e così via. Il risultato è che il robot impiega MOLTO tempo, correndo su sezioni aperte già falciate, e troppo poco tempo a falciare le parti dure.

Così ho deciso di aggiungere un po' di intelligenza esterna.

23-04-2020 EDIT: il sensore non funzionava bene, quindi ho cambiato un paio di cose

Forniture

2 interruttori a 2 vie da esterno

O

1 vecchio router USB

1 scheda relè USB

1 digispark

1 hub USB

1 scatola elettronica a tenuta stagna

23-04-2020 MODIFICA:

OR1 vecchio router USB

1 scheda relè USB

1 usb2serial tll cosa

1 hub USB

1 scatola elettronica a tenuta stagna

1 sensore a ultrasuoni Dfrobot URM 37 v3.2 (probabilmente potresti usare qualsiasi sensore =)

kmod-usb-serial-cp210x

Passaggio 1: Passaggio 1: Taglio multi-area Manuel

Passaggio 1: taglio multi-area Manuel
Passaggio 1: taglio multi-area Manuel
Passaggio 1: taglio multi-area Manuel
Passaggio 1: taglio multi-area Manuel

L'immagine mostra come sono passato da un'area di taglio a 2 aree.

Il mio robot si avvierà automaticamente ogni 2. giorno, quindi finché mi sono ricordato di cambiarlo da un'area all'altra, ha funzionato bene.

Ho usato 2 interruttori manuali, come quelli che useresti in un corridoio o in una scala.

Ha funzionato, tranne che quelli che ho usato erano di qualità troppo scadente, e quindi ho trovato degli insetti che si infilavano dentro di loro, incasinandoli

Passaggio 2: Passaggio 2: la soluzione automatica

Passaggio 2: la soluzione automatica
Passaggio 2: la soluzione automatica
Passaggio 2: la soluzione automatica
Passaggio 2: la soluzione automatica
Passaggio 2: la soluzione automatica
Passaggio 2: la soluzione automatica
Passaggio 2: la soluzione automatica
Passaggio 2: la soluzione automatica

Così ho deciso di fare qualcosa di automatico.

Ho un router Netgear R6100 usato, ho preso questo perché ha wifi, usb e memoria sufficiente per fare esperimenti sugli esperimenti, invece di stipare OpenWrt e amici su di esso.

Ho un hub usb 2.0 ebay e una scheda relè 12v.

Poi ho avuto un digispark da un progetto precedente. 23-04-2020 EDIT: invece ho usato una cosa usb2seriel

ho cablato i relè invece degli interruttori. ho usato i relè 3 e 4

Quindi ho installato OpenWrt e ho aggiunto Crelay, picocom e coreutils-stty.

23-04-2020 EDIT: aggiunto anche xxk, kmod-usb-serial-cp210x

Inserito 12V nel router e nella scheda relè.

23-04-2020 EDIT: ho usato un Urm 37 v3.2 invece del resto di questa pagina

Poi ho imparato qualcosa di "divertente". la scheda relè tenterà di accendere l'hub usb, impedendo così al digispark di riavviarsi correttamente. Quindi ho tagliato il cavo di alimentazione nel cavo USB dalla scheda relè e dall'hub USB.

Quindi ho collegato il digispark e la scheda relè USB all'hub USB 2.0 e l'hub al router.

Beh, per essere onesti, ho programmato il digispark prima di aggiungerlo al router

Nel digispark, ho aggiunto un pulsante, che ho collegato tra P1 e Gnd.

Questo pulsante l'ho posizionato, così il robot lo attiverà, una volta che sarà nel suo garage in carica.

ho dovuto aggiungere una molla all'attivazione, per ottenere un buon ingaggio solido.

Passaggio 3: Passaggio 3: Software

Il file contiene un programma ide arduino per digispark.

È posizionato in root/LawnSelector.

Questo file ha bisogno di un paio di librerie digispark, come digiCDC e le schede digispark aggiunte all'ide arduino.

Poi ci sono i file /root/GrassCtr/*.

Questi sono i file che effettivamente fanno il lavoro.

Kreds1 cambia i relè in area1

Kreds2 cambia i relè in area2

KredsStatus chiede al relè USB, quale area è attiva

23-04-2020 EDIT: usa UltraSoundSeriel invece di leggere digispark.

ReadDigiSpark, legge le notizie ogni martedì… Aspetta. Legge lo stato di input del digispark

GrassCtl pensa.

Ecco cosa fa.

Se il robot è IN per più di 10 ore, decide che il robot è dentro per la notte, e questo attiva un flipflop, che lo fa partire in ogni area ogni due volte. Il motivo è che il mio robot inizia tagliando l'intero bordo e, in questo modo, taglia i bordi a giorni alterni.

Quindi, una volta che il robot sta falciando, il sensore dirà che il robot è fuori.

Ogni volta che il robot torna per la ricarica della batteria (definita come essere dentro per più di 20 minuti) l'area verrà cambiata nell'altra area.

notare che. Il software è un disordine terribile, ma funziona, quindi avanti e verso l'alto

Passaggio 4: Passaggio 4: Attivazione del software

Per eseguire il software, dobbiamo fare qualcosa.

L'ho aggiunto a un cronJob

*/5 * * * * /root/GrassCtrl/GrassCtl

al file

/etc/crontabs/root

Quindi, per attivare i cronjob l'ho fatto

/etc/init.d/cron enable

Per quanto posso dire, il robot ora cambierà tra l'inizio dell'area di taglio 1 o 2 e cambierà ciò che è stato tagliato ogni volta che è stato in ricarica le batterie.

E sì, ora ottiene tutto

Consigliato: