Garage à trottinettes sans vis

Garage à trottinettes sans vis

Le garage des trottinettes

Le garage permet de placer 3 trottinettes, et se monte sans aucune vis, cela permet si besoin est, de réutiliser rapidement les détecteurs fin de course pour un autre kit (la barrière, le portail, …). 

Fichier STL du garage à trottinettes

Vidéo d'impression 3D sur la Creality K1

Montage des composants du garage

J’ai permis l’utilisation de détecteurs fin de course « Grove – micro-switch 1.0 » , mais aussi de simples détecteurs fin de course avec une résistance de 1Ko (qui sont vendus 12€ les 100!). En voici les étapes de réalisation, cliquez sur chaque image et regardez le texte explicatif associé. Si vous avez la moindre question, contactez-moi !

Attention, si vous voulez utiliser des capteurs Technologie Services GROV201, il vous faudra « tordre » la languette métallique pour que le contact puisse se faire. N’utiliser avec ce capteur que les versions 5.x ou 6.x des trottinettes, sinon, elles ne pourront pas s’enclencher dans le parking.

Ceci est lié au fait que la roulette à l’extrémité de la languette métallique se retrouve positionnée en bas , contrairement aux autres capteurs dont la roulette se trouve en haut.

Tordre la languette du capteur fin de course grov201 de technologie-services

Trottinette

À partir de la version 4 , les roues tournent ! Auparavant, les roues étaient fixes, la trottinette n’étant destinée qu’à s’intégrer au garage pour effectuer les activités liées au garage à trottinette. J’ai laissé un petit méplat sur la roue pour supprimer le besoin de supports à l’impression 3D, et cela permet de faire tenir la trottinette debout !

Pour permettre l’impression sur des plateaux de taille réduite (100 x 100 mm), j’ai fait une version 6.3 qui permet l’impression en 2 parties. Il suffit ensuite de clipser les 2 parties ensemble.

Fichier STL de la Trottinette avec roues mobiles (version 5.1)

Fichier STL de la Trottinette avec roues mobiles en 2 parties (version 6.3) pour impression sur des plateaux 3D réduits (100 x 100).

Exemple de programme pour tester les capteurs

				
					
"""
Auteur: Pascal Bruyez
Interface: esp32
Nom du projet: Garage à trottinettes 1 (ESP32)
Description: Allumer une LED pour chaque trottinette parquée (avec utilisation d une carte ESP32)
Toolbox: vittascience
Mode: blocks
Blocks: <xml xmlns="https://developers.google.com/blockly/xml"><block type="on_start" id="G[=T#8yqB70`NFgYq}GP" deletable="false" x="-113" y="-63"><statement name="DO"><block type="controls_repeat" id="$TWj_wb[JB3xOmv:wL@o"><value name="TIMES"><shadow type="math_number" id="O([~e=@d%lx4cJs){]RY"><field name="NUM">3</field></shadow></value><statement name="DO"><block type="display_setGroveSocketLed" id="x$~BrmW@^iNS-x8d+-RX"><field name="PIN">p27</field><value name="STATE"><shadow type="io_digital_signal" id=",hY/0IPG!m~6chEk`euJ"><field name="BOOL">HIGH</field></shadow></value><next><block type="display_setGroveSocketLed" id=";X[%)]cD]71mitd0*tl:"><field name="PIN">p14</field><value name="STATE"><shadow type="io_digital_signal" id="3@f^c?5vG*%%{}DXcbbO"><field name="BOOL">HIGH</field></shadow></value><next><block type="display_setGroveSocketLed" id="7sBwr[EQ1y-!,,F7?i;|"><field name="PIN">p12</field><value name="STATE"><shadow type="io_digital_signal" id="^JLT];Q$OR^aw=[MJ}7Z"><field name="BOOL">HIGH</field></shadow></value><next><block type="io_pause" id="=s~s-a/NK:EK|}7b?wm6"><field name="UNIT">SEC</field><value name="TIME"><shadow type="math_number" id="n)S/nG/eI}JPhEs^sdSa"><field name="NUM">0.2</field></shadow></value><next><block type="display_setGroveSocketLed" id="1S-hD03,@aj?fJR7^_p5"><field name="PIN">p27</field><value name="STATE"><shadow type="io_digital_signal" id="jxv0W,sUQ^N3DAaig8,?"><field name="BOOL">LOW</field></shadow></value><next><block type="display_setGroveSocketLed" id=",%Mc%PMm!!$:gW%[Y}^O"><field name="PIN">p14</field><value name="STATE"><shadow type="io_digital_signal" id="oW7k3?d6D1mhBHFmqfxT"><field name="BOOL">LOW</field></shadow></value><next><block type="display_setGroveSocketLed" id="*fM$suAd@1=PE80;-5%^"><field name="PIN">p12</field><value name="STATE"><shadow type="io_digital_signal" id="jwxLD+[r{-:IQ+SyI=Ia"><field name="BOOL">LOW</field></shadow></value><next><block type="io_pause" id="9TGY$T!#E=~a,(vZ|D3G"><field name="UNIT">SEC</field><value name="TIME"><shadow type="math_number" id="t@mp=(kS87-dHXa[xco7"><field name="NUM">0.2</field></shadow></value></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></statement></block><block type="forever" id="o[WN]+eeF.OUxGch67@8" x="437" y="-62"><statement name="DO"><block type="controls_if" id="`wX?RZgGz9z9.ZUx)X8+"><mutation else="1"></mutation><value name="IF0"><block type="io_getGroveButton" id="R`G9i:4vRgB)1dq8[rR["><field name="PIN">p26</field></block></value><statement name="DO0"><block type="display_setGroveSocketLed" id="[*rF8#^L{t=F-w78x_17"><field name="PIN">p27</field><value name="STATE"><shadow type="io_digital_signal" id="HEY{%1Q]9]T#!NjY.Gy7"><field name="BOOL">HIGH</field></shadow></value></block></statement><statement name="ELSE"><block type="display_setGroveSocketLed" id="@RKA,Rt$jcZ/U[tXpr}h"><field name="PIN">p27</field><value name="STATE"><shadow type="io_digital_signal" id="%K|r84%#6!UA-{S/[)bg"><field name="BOOL">LOW</field></shadow></value></block></statement><next><block type="controls_if" id="DL?V,N8G5ezC*(jmD)41"><mutation else="1"></mutation><value name="IF0"><block type="io_getGroveButton" id="%0s^fgYZXgJru0M_co?~"><field name="PIN">p25</field></block></value><statement name="DO0"><block type="display_setGroveSocketLed" id="69BH,%Tb6wIjx5Wm9mYy"><field name="PIN">p14</field><value name="STATE"><shadow type="io_digital_signal" id="DTSJ($xMl.B$yB:`(@Gc"><field name="BOOL">HIGH</field></shadow></value></block></statement><statement name="ELSE"><block type="display_setGroveSocketLed" id="^cZ_s[$Kvb%i7JfQyHks"><field name="PIN">p14</field><value name="STATE"><shadow type="io_digital_signal" id="YRz)am{Twx5Z%3m$+~#P"><field name="BOOL">LOW</field></shadow></value></block></statement><next><block type="controls_if" id="Jf|l%kC^$*z0W6UPKlXH"><mutation else="1"></mutation><value name="IF0"><block type="io_getGroveButton" id="ii$`1j(rO|;imXEPQ}L{"><field name="PIN">p17</field></block></value><statement name="DO0"><block type="display_setGroveSocketLed" id="3.QLPRiG3-njgw4]THlv"><field name="PIN">p12</field><value name="STATE"><shadow type="io_digital_signal" id=":~1iBfB_~FvEB]EcYdHX"><field name="BOOL">HIGH</field></shadow></value></block></statement><statement name="ELSE"><block type="display_setGroveSocketLed" id="ZgAHEh:*@w]H:WGivYUd"><field name="PIN">p12</field><value name="STATE"><shadow type="io_digital_signal" id=".F^qO4_%ZbKZxs^HcfzT"><field name="BOOL">LOW</field></shadow></value></block></statement><next><block type="io_pause" id="%.gFn*-72gUstX^*%9g0"><field name="UNIT">SEC</field><value name="TIME"><shadow type="math_number" id="uVIA%fJ[fFlV4!|E=SUY"><field name="NUM">0.2</field></shadow></value></block></next></block></next></block></next></block></statement></block></xml>
Projet généré par Vittascience.
Ce fichier contient le code textuel ainsi que le code blocs. Il peut être importé de nouveau
sur l'interface http://vittascience.com/esp32

"""

from machine import *
import utime

# LED Module on p27
p27 = Pin(27, Pin.OUT)
# LED Module on p14
p14 = Pin(14, Pin.OUT)
# LED Module on p12
p12 = Pin(12, Pin.OUT)
# Simple Button on p26
p26 = Pin(26, Pin.IN)
# Simple Button on p25
p25 = Pin(25, Pin.IN)
# Simple Button on p17
p17 = Pin(17, Pin.IN)

for count in range(3):
  try:
    p27.on()
  except:
    p27.duty(1023)
  try:
    p14.on()
  except:
    p14.duty(1023)
  try:
    p12.on()
  except:
    p12.duty(1023)
  utime.sleep(0.2)
  try:
    p27.off()
  except:
    p27.duty(0)
  try:
    p14.off()
  except:
    p14.duty(0)
  try:
    p12.off()
  except:
    p12.duty(0)
  utime.sleep(0.2)

while True:
  if p26.value():
    try:
      p27.on()
    except:
      p27.duty(1023)
  else:
    try:
      p27.off()
    except:
      p27.duty(0)
  if p25.value():
    try:
      p14.on()
    except:
      p14.duty(1023)
  else:
    try:
      p14.off()
    except:
      p14.duty(0)
  if p17.value():
    try:
      p12.on()
    except:
      p12.duty(1023)
  else:
    try:
      p12.off()
    except:
      p12.duty(0)
  utime.sleep(0.2)

				
			
Test du garage à trottinettes sur la platine avec Shield Grove

Historique des différentes versions !

Historique des trottinettes de la plus ancienne à la plus récente

Transport des garages à trottinettes

Nous pouvons être appelés à changer de collège, ou simplement par manque de place, ou pour mieux ranger les accessoires sur une étagère, les garages se placent facilement dans un carton de 21 par 35 cm, 15 garages dans la carton !

De quoi fournir un garage à trottinette par binôme pour une classe de 30 élèves !

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *