risorse | robodojo con mbot
L'11 e 18 novembre 2018 CoderDojoFVG assieme ai volontari dell'associazione Famigliattiva di Palmanova ha organizzato il primo RoboDojo regionale (qui la pagina ufficiale dell'evento). In questa pagina ho raccolto il materiale tecnico che ho preparato per l'occasione.
La tabella sottostante raccoglie i progetti realizzati a supporto della conduzione del RoboDojo, tutti verificati con mBlock v. 3.4.11 su Windows 7 e mBlock 4.0.4 su Ubuntu 16.04. Sono riferiti per nome nelle note delle slide.
Nome | Descrizione | v. 3.4.11 | v. 4.0.4 |
---|---|---|---|
01-led_red.sb2 | accende i LED di rosso | download | download |
02-led_red-temporized.sb2 | accende i LED di rosso per pochi secondi | download | download |
03-led_flashing.sb2 | fa lampeggiare i LED | download | download |
04-led_red-alternate-flashing.sb2 | fa lampeggiare i LED in modo alternato | download | download |
05-led_semaphore.sb2 | simula un semaforo temporizzato | download | download |
06-led_random-colors.sb2 | cambia colore ai LED ogni secondo | download | download |
07-led_police-lights.sb2 | emula il lampeggiante della polizia | download | download |
08-buzzer_single-note.sb2 | suona una nota | download | download |
09-buzzer_diatonic-scale.sb2 | suona la scala maggiore di do | download | download |
10-buzzer_police-siren.sb2 | riproduce la sirena della polizia | download | download |
11-buzzer_happy-birthday.sb2 | suona la melodia di “tanti auguri” | download | download |
12-button_police-siren.sb2 | suona la sirena quando si preme il pulsante | download | download |
13-button_led-control.sb2 | accende i LED quando si preme il pulsante | download | download |
14-button_random-colors.sb2 | cambia colore ai LED quando si preme il pulsante | download | download |
15-button_led-control_optimized.sb2 | come #13, ottimizzato | download | download |
16-motor_forward-risky.sb2 | muove mBot in avanti (attenzione!) | download | download |
17-motor_forward-safe.sb2 | muove mBot in avanti in modo sicuro | download | download |
18-motor_trajectory-s.sb2 | muove mBot lungo una traiettoria a “S” | download | download |
19-motor_trajectory-m.sb2 | muove mBot lungo una traiettoria a “M” | download | download |
20-motor_1m-diameter-circle.sb2 | muove mBot su una circonferenza di 1m di diametro | download | download |
21-motor_random-walk.sb2 | fa compiere a mBot una passeggiata casuale | download | download |
22-ultrasonic-sensor_theremin.sb2 | riproduce un theremin | download | download |
23-ultrasonic-sensor_led-radar.sb2 | usa il colore dei LED per indicare la distanza | download | download |
24-ultrasonic-sensor_parking-sensor.sb2 | emula un sensore di parcheggio | download | download |
25-wall-avoidance_naive.sb2 | arresta mBot davanti agli ostacoli | download | download |
26-wall-avoidance_simplified.sb2 | scansa-ostacoli con sterzata | download | download |
27-wall-avoidance_complete.sb2 | scansa-ostacoli con sterzata e retro-sterzata | download | download |
28-wall-avoidance_alternative.sb2 | scansa-ostacoli con rotazione sul posto | download | download |
29-line-follower_naive.sb2 | inseguitore di linea | download | download |
30-line-follower.sb2 | inseguitore di linea con memoria | download | download |
31-line-follower_safety-distance_stop.sb2 | inseguitore con frenata di emergenza | download | download |
32-line-follower_safety-distance_adaptive-steps.sb2 | inseguitore con cruise control adattativo incrementale | download | download |
33-line-follower_safety-distance_adaptive-linear.sb2 | inseguitore con cruise control adattativo lineare | download | download |
Questa che segue è la scaletta che avevo preparato come canovaccio a supporto delle slide (qui l'originale in formato testuale). Per ragioni di tempo non mi è stato possibile seguirla passo per passo; in grigio sono riportati i punti che ho tralasciato.
Apparato meccanico ed elettronico programmabile, impiegato nell’industria, in sostituzione dell’uomo, per eseguire automaticamente e autonomamente lavorazioni e operazioni ripetitive, o complesse, pesanti e pericolose.
La ridotta potenza di calcolo di mCore non consente di suonare la sirena e al contempo far lampeggiare i LED. La scheda non regge il confronto con un sistema “analogo” noto, per esempio iPhone 7:
mCore (ATMega328) | iPhone 7 (A10) | fattore |
---|---|---|
8 bit | 64 bit | ×8 |
1 core | 2 core(1) | ×2 |
16MHz | 2.34GHz | ×150 |
32KB flash | 32GB | ×1000000 |
2KB RAM | 2GB | ×1000000 |
(1) A10 ha 4 core ma vengono usati solo due alla volta; ha pure una GPU hexa-core.
Individuare il pulsante di bordo, posto sulla parte anteriore della scheda.
Occorre fare attenzione quando si lavora con i motori. Senza i necessari accorgimenti può accadere che il robot si muova non appena il programma è stato trasferito su mCore. Se non si è pronti, si rischia di venir presi di sorpresa. Urti e cadute possono danneggiare mBot, usare le dovute cautele. Conviene anche prevedere un modo per arrestare i motori, per non essere costretti a spegnere mBot per fermarlo. La riprogrammazione in queste condizioni può rivelarsi particolarmente scomoda.
Online data suggests that, the fire engine siren’s low frequency sound is between 650Hz and 750Hz, and its high frequency sound is between 1450Hz and 1550Hz. The siren sound is generated by repeating the following pattern: the low frequency sound amplifies to a high frequency sound in 1.5 seconds, and then drops back to the lower frequency in 3.5 seconds. Therefore, the fire engine siren sounds can be programmatically simulated as follows:
set the low frequency to be 700Hz, and then set the high frequency sound to be 1500HZ, repeatedly playing the buzzer in a range from 700Hz to 1500Hz and then back to 700Hz. The ratio of amplification time to the drop time is 1.5:3.5, which is 3:7, so the ratio of frequency amplification to the drop needs to be 7:3. Then, by tuning the sound time and amplification v.s. drop’s amplitude, the fire engine siren is simulated.
Is your mBot afraid of the dark? No? Well it - should be. There's monsters out there. Use the on-board light sensor to make your mBot speed up to get out of dark places quickly.
Can you write a program that follows an object? So if the object is too close, the robot goes backwards, if the object is far away, it goes forward, and if the object is not near or far, the robot stops.
Can you change your program from question 2, to make the robot move at different speeds?
Pagina modificata il 21/11/2018