Sommario:

Prevenzione delle collisioni - Powered by Pi: 6 passaggi
Prevenzione delle collisioni - Powered by Pi: 6 passaggi

Video: Prevenzione delle collisioni - Powered by Pi: 6 passaggi

Video: Prevenzione delle collisioni - Powered by Pi: 6 passaggi
Video: Rule 8: Action to Avoid Collision | COLREGS In Depth 2024, Dicembre
Anonim
Prevenzione delle collisioni - Powered by Pi
Prevenzione delle collisioni - Powered by Pi

Questo Instructable ti fornirà una guida passo passo alla costruzione del sistema di prevenzione delle collisioni. Per iniziare è necessario ottenere il seguente elenco di materiali:

Raspberry PI 3 (con accordi di alimentazione ed Ethernet), 1 scheda di estensione GPIO e cavo a nastro (GPIO), 1 breadboard grande con diagramma, 2 breadboard piccole con diagramma, 14 cavi jumper, 3 resistori da 220 Ohm, 1 LED RGB, 3 interruttori a pulsante, 1HB-SR04 Sensore a ultrasuoni

Passaggio 1: estensione GPIO

Estensione GPIO
Estensione GPIO
Estensione GPIO
Estensione GPIO

Collega la scheda di estensione GPIO alla breadboard grande. Il GPIO dovrebbe essere rivolto in verticale proprio come la breadboard. Assegna il lato sinistro del GPIO alle porte della breadboard D1-D20 utilizzando il diagramma fornito. Il lato destro quindi si collegherebbe a H1-H20. Collega il cavo a nastro sia al Raspberry Pi 3 che alla scheda di estensione GPIO. Questo intero componente verrà ora denominato scheda GPIO (GPIO)

Passaggio 2: sensore a ultrasuoni

Sensore ultrasonico
Sensore ultrasonico
Sensore ultrasonico
Sensore ultrasonico

Utilizzando un'altra breadboard più piccola, collegare il sensore a ultrasuoni HR-SR04 alle porte della breadboard più piccole A2-5 utilizzando lo schema fornito. Collegare un cavo jumper alla breadboard più piccola (BB) E2, inserire l'altra estremità nella porta J1 della scheda di estensione GPIO. Allo stesso modo, collegare altri tre ponticelli nel modo seguente. (BB E3, GPIO B17) (BB E4, GPIO B18)(BB E5, GPIO B20)

Passaggio 3: LED e resistori

LED e resistori
LED e resistori
LED e resistori
LED e resistori
LED e resistori
LED e resistori

Sulla stessa piccola breadboard utilizzata nelle istruzioni precedenti, collegare tre resistori da 220 ohm nel modo seguente. (E10, H10)(E12, H12)(E14, H14) Quindi collegare un ponticello dalla stessa breadboard E13 alla barra di alimentazione di terra sulla scheda GPIO. Collegare i quattro poli del LED alle porte della breadboard più piccole (B13)(D14)(D12)(D10). Quindi collegare tre ponticelli dalla breadboard più piccola alla scheda GPIO nel modo assegnato. (BB J10, GPIO J9) (BB J12, GPIO J8) (BB J14, GPIO J6). Questa breadboard è ora completa.

Passaggio 4: terra

Terreno
Terreno

Utilizzare un altro ponticello per collegare la scheda GPIO J7 alla barra di alimentazione di terra.

Passaggio 5: pulsanti

pulsanti
pulsanti

Utilizzando la seconda breadboard, posizionare la parte superiore di un interruttore a pulsante sulla porta E1 e D1, posizionarne un altro su E5 e D5 e un terzo su E9 e D9. Collegare tre ponticelli dalla barra di alimentazione positiva sulla scheda GPIO alle seguenti porte della breadboard (D3) (D7) (D11). Utilizzando altri tre cavi jumper, collegare la breadboard alla scheda di estensione GPIO nel seguente modo: (BB D1, GPIO J16) (BB D5, GPIO J18) (BB D9, GPIO J20). Infine, utilizzando l'ultimo cavo jumper, collegare GPIO A1 alla barra di alimentazione positiva. La configurazione fisica è ora completa.

Passaggio 6: codice

Codice
Codice
Codice
Codice

Collegare il cavo Ethernet e il cavo di alimentazione al Pi e nelle rispettive posizioni. Apri MATLAB ed esegui il seguente script per inizializzare il microcontrollore:

rpi = raspi('169.254.0.2', 'pi', 'lampone');

Quindi copia e incolla quanto segue in un nuovo script, chiamato Ping, per eseguire il sistema di prevenzione delle collisioni:

funzione dist = ping() trig = 19; eco = 13; prova = 21; configurePin(rpi, trig, 'DigitalOutput'); configurePin(rpi, echo, 'DigitalInput'); configurePin(rpi, test, 'DigitalInput');

disp("Misurazione della distanza in corso");

while true writeDigitalPin(rpi, trig, 0); disp("Lasciare assestare il sensore"); pausa(2);

writeDigitalPin(rpi, trig, 1); pausa(0,002); writeDigitalPin(rpi, trig, 0);

while readDigitalPin(rpi, echo) == 0 tic end

while readDigitalPin(rpi, echo) == 1 T = toc; fine

durata_impulso = T; distanza = durata_impulso * 17150;

aperto = "Distanza="; chiudi = "cm"; stringa = [aperto, distanza, vicino]; disp(stringa); dist = distanza; fine fine

In un nuovo script, esegui il seguente codice denominato status:

configurePin(rpi, 21, 'DigitalInput');configurePin(rpi, 16, 'DigitalInput'); configurePin(rpi, 12, 'DigitalInput');

stato = 2; d = 10; %Stato: 0-Rosso/Stop 1-Blu/Lento 2-Verde/Vai in esecuzione = vero; durante l'esecuzione %d = ping(); if readDigitalPin(rpi, 21) == 1 stato = 0; elseif readDigitalPin(rpi, 16) == 1 stato = 1; elseif readDigitalPin(rpi, 12) == 1 stato = 2; altrimenti se d

Consigliato: