have numbers next to questions in checks
[challenge-bot] / guide / challenge-bot.scm
CommitLineData
37d286e7 1;; tldr; AGPLv3+
2;; copyright info at bottom
3
4(document
5 :title [challenge-bot]
6 (chapter
3c0c7ca4 7 :title [mechanical]
1625f486 8 (p [let's build your robot!])
3c0c7ca4 9 (section
58c778a1 10 :title [arduino to deck]
4a423b08 11 (p [let's attach the arduino to the deck.])
cf59d996 12 (subsection
13 :title [required materials]
b52bbb4b 14 (p [you will need the things in this picture.])
15 (figure
16 :legend "arduino to deck / required materials"
17 (image :file
18 "0-arduino-to-deck/0-required-materials.png"))
19 (itemize
20 (item [medical kit with bandages])
21 (item [safety goggles])
22 (item [drill bit \(we will determine size in a moment\)])
23 (item [drill])
24 (item [alan wrench])
25 (item [wood block])
26 (item [arduino])
27 (item [#6-32x3/8\", four of them])
28 (item [robot deck, the white thing with a grid of holes])))
24b6d750 29 (subsection
59fef212 30 :title [first hole]
ff0f6a78 31 (subsubsection
52596bd0 32 :title [choosing drill bit]
23045a14 33 (p [the arduino comes with holes in it already, so we will make
34 some choices around those holes.
35 choosing the right drill bit depends on what job you are
36 doing.
37 right now, we are making holes for screws to hold the
38 arduino to the deck.
39 there are two constraints between the hole and screw.
40 each hole needs to be big enough for the screw body to fit
41 through it.
42 the holes also need to be smaller than the screw's thread.
43 since there are holes on the arduino already, the screw was
44 chosen to match it.
45 the screw was chosen so that the hole on the arduino was
46 bigger than the screw body and smaller than its thread.
47 we will choose the biggest drill bit that fits through the
48 hole on the arduino, then use that to drill holes in the
49 deck.])
b52bbb4b 50 (p [here's a cross section of a screw in the deck])
51 (figure :legend "screw cross section"
52 (image :file
53 "0-arduino-to-deck/screw-cross-section.png"))
54 (p [check])
2acfcb3e 55 (enumerate
b52bbb4b 56 (item
57 [what would happen if the drill bit were larger than the
58 screw thread?])
59 (item
60 [what would happen if the drill bit were smaller than the
61 screw body?])))
ff0f6a78 62 (subsubsection
ca8e4428 63 :title [inserting drill bit]
b52bbb4b 64 (figure :legend "arduino to deck / insert bit"
65 (image :file "0-arduino-to-deck/1-insert-bit.png"))
66 (p [insert the drill bit into the teeth of the drill.
ca8e4428 67 insert it far enough that the teeth will clamp on the
3875c1ef 68 smooth part of the bit when they are tightened.])
b52bbb4b 69 (figure
70 :legend "arduino to deck / twist tighten drill teeth"
71 (image
72 :file "0-arduino-to-deck/2-twist-tighten-drill-teeth.png"))
73 (p [while holding the drill bit, twist end of the drill to tighten
3875c1ef 74 the teeth.
75 make sure that the teeth end up gripping the flat part of
1887fb16 76 the drill bit.])
b52bbb4b 77 (p [check])
2acfcb3e 78 (enumerate
b52bbb4b 79 (item
80 [where should the teeth clamp down on the drill bit?])
81 (item
82 [what would happen if the teeth tightened on the recessed
83 part of the drill bit?])))
ff0f6a78 84 (subsubsection
7bf575b8 85 :title [holding drill]
86 (p [hold the drill with one hand on the handle and trigger.
87 put the other hand on the orange nozzle, before the
88 black spinning part.]))
c04a9631 89 (subsubsection
90 :title [arduino placement]
b52bbb4b 91 (p [the arduino should be placed as shown in this picture.])
92 (figure :legend "arduino to deck / place arduino"
93 (image :file "0-arduino-to-deck/3-place-arduino.png"))
94 (p [here's a closeup])
95 (figure :legend "arduino to deck / place arduino closeup"
96 (image :file
97 "0-arduino-to-deck/4-place-arduino-closeup.png"))
98 (p [the picture above shows where to place the arduino on the deck.
0b5cd84e 99 the arduino should line up with the holes on the deck.
100 this alignment line is highlighted in pink.
101 on the arduino, there's a hole on the top left, between the
102 orange reset button and black headers.
103 the green circle shows where the hole is.
104 the blue box encloses the arduino hole and two deck holes.
105 place the arduino hole mid-way between the two
543ad3c2 106 deck holes.])
b52bbb4b 107 (p [check])
2acfcb3e 108 (enumerate
b52bbb4b 109 (item
110 [should the arduino be upside-down?])
111 (item
112 [what should the upper side of the arduino align with?])
113 (item
114 [why not place the arduino up along the left side of the
115 robot?])))
ff0f6a78 116 (subsubsection
41ba7302 117 :title [drilling practice]
b52bbb4b 118 (p [strength check])
119 (itemize
120 (item [put on safety goggles])
121 (item [unplug drill])
122 (item [hold drill in one hand])
123 (item [point drill at the ground])
124 (item [point drill at the wall]))
125 (p [steps for drilling into wood block])
126 (itemize
127 (item [plug in the drill])
128 (item [place the drill bit in position])
129 (item [bring the drill up to full speed, and keep it at full
130 speed while lowering and raising the drill])
131 (item [push down until the drill bit has passed through an inch
132 of the wood block])
133 (item [keep the drill at full speed])
134 (item [stop before the drill smashes into the wood block])
135 (item [keep the drill at full speed by holding the trigger])
136 (item [bring the drill straight back up])
137 (item [hold the trigger down to keep the drill at full speed])
138 (item [once the drill is back out of the hole, let go of the
139 trigger]))
140 (p [check])
2acfcb3e 141 (enumerate
b52bbb4b 142 (item
143 [should the drill be at full speed while the drill bit is
144 going down into the wood and coming back up?])
145 (item
146 [how do you keep the drill at full speed?])
147 (item
148 [what would happen if the drill bit were not at full
149 speed?])
150 (item
151 [what would happen if the drill were twisted sideways while
152 the drill bit were in the wood?])))
41ba7302 153 (subsubsection
7a744a6b 154 :title [drilling the first screw hole]
41ba7302 155 (itemize
156 (item [place the drill bit in position])
157 (item [bring the drill up to full speed, and keep it full speed])
158 (item [push down until the drill bit has passed through the
159 deck])
160 (item [keep the drill at full speed])
161 (item [stop before the drill smashes into the arduino])
162 (item [keep the drill at full speed by holding the trigger])
163 (item [bring the drill straight back up])
164 (item [hold the trigger down to keep the drill at full speed])
165 (item [once the drill is back out of the hole, let go of the
166 trigger]))
b52bbb4b 167 (p [check])
2acfcb3e 168 (enumerate
b52bbb4b 169 (item
170 [should the drill be at full speed while the drill bit is
171 going down into the wood and coming back up?])
172 (item
173 [what would happen if the drill bit were not at full speed?])
174 (item [how do you keep the drill at full speed?]))))
59fef212 175 (subsection
176 :title [first screw]
ff0f6a78 177 (subsubsection
9f651996 178 :title [fastening arduino to deck using #6-32x3/8\" screw]
179 (p [the "#6" part of "#6-32x3/8\"" is how big around the bolt is.
180 it is related to wire gauge.
4e2c2b29 181 bigger numbers mean larger screws.
b52bbb4b 182 smaller numbers means smaller screws.])
183 (figure :legend "arduino to deck / #6-32 screw"
184 (image :file "0-arduino-to-deck/6-32-screw.png"))
185 (p [check])
2acfcb3e 186 (enumerate
b52bbb4b 187 (item
188 [in the motor assembly, there are #4-40x1.25\" screws.
189 are those fatter, thinner, or the same thickness as the
190 #6-32x3/8\" screws?]))
5747a610 191 (p [the "32" part of "#6-32x3/8\"" is a measurement of how close
192 the threads are to each other.
9f651996 193 this is related to the angle of the thread, which is also
194 called pitch.
195 it is a count of how many times the thread wraps around one
196 inch of the screw body.])
197 (p [the head is the flat part where some tool, like the alan
198 wrench, can exert force to spin the screw.])
b52bbb4b 199 (p [check])
2acfcb3e 200 (enumerate
b52bbb4b 201 (item [how many times will the thread wrap around one inch of
202 the screw body?])
203 (item [what about 2 inches?
204 how many times will the thread wrap around two
205 inches of the screw body?])
206 (item [where can a tool exert turning force on the screw?])))
ff0f6a78 207 (subsubsection
208 :title [fasten the arduino board to the deck]
8eba0b8b 209 (p [first we'll put the screw into the deck just enough so the deck
210 holds it in place.
211 then we will hold the arduino up to the screw and finish
212 tightening the screw down.
213 with the screw partially in, we do not have hold it as
214 rigidly while we are also holding the arduino and
215 the deck.])
c4ea89ee 216 (p [push the #6-32 screw into the deck from the underside.
217 the underside is the brown side.
218 at the same time, spin the 6-32 screw so it rotates
219 clockwise while looking down on its head.
220 twist until the tip of the screw is about to stick out on
221 the top side of the deck.])
ff0f6a78 222 (p [hold the arduino board flat to the deck and line up the arduino
9f651996 223 hole so the screw can come up through it.
fdf53d2d 224 continue tightening the screw into the deck, spinning the
225 same direction as before.
9f651996 226 tighten until the screw head touches the deck.
227 do not continue tightening after that.])
ff0f6a78 228 (p [the arduino should still be flat against the deck still, just
f9e58978 229 as it was before tightening the screw.])
b52bbb4b 230 (p [check])
2acfcb3e 231 (enumerate
b52bbb4b 232 (item [why do we insert the first screw partially before
233 holding up the arduino?])
234 (item [which side of the deck is the top side?])))
ff0f6a78 235 (subsubsection
f17976bf 236 :title [assessment of the first screw]
237 (itemize
7bca727f 238 (item [,(bold [warning]), if you rotate the arduino board too
239 much,you will unscrew it from the deck and you'll have to
240 screw it back in.
241 rotating a few degrees should be ok.])
f17976bf 242 (item [does the arduino stay with the deck when the deck moves?])
7bca727f 243 (item [can the arduino board still rotate a few degrees?]))))
f17976bf 244 (subsection
245 :title [second hole and screw]
ff0f6a78 246 (subsubsection
247 :title [arduino board move relative to deck]
248 (p [without any screws, the arduino board can move independently of
f17976bf 249 the deck.
c305da78 250 it can translate and rotate freely.
f17976bf 251 with the first screw, the arduino can rotate around one
763861dd 252 point on the deck and can no longer translate much.])
253 (p [the second screw limits rotation a lot.
254 it also makes translation even more difficult.
255 it might even be too small to be detectable by directly
256 looking at it.])
257 (p [to choose where the second hole and screw should go, we should
258 keep in mind that the goal is to attach the deck to the
259 arduino.
260 this means minimizing rotation and translation.
261 the picture below shows that the second hole should be as
262 far as possible from the first hole, since that minimizes
b52bbb4b 263 rotation.])
264 (figure
265 :legend "arduino to deck / keep holes far apart"
266 (image
267 :file "0-arduino-to-deck/keep-holes-far-apart.png")))
e3a31106 268 (subsubsection
96401b17 269 :title [drilling and attaching second screw]
e3a31106 270 (p [to drill the second hole, follow the same steps as drilling the
271 first hole.
272 hold the arduino down as before, and drill through the hole
6ef8240f 273 furthest away from the first hole.
274 then insert and tighten the screw as before.])))
24b6d750 275 (subsection
a5939c50 276 :title [third and fourth hole and screw]
277 (p [even though the arduino is pretty well attached with just 2
278 screws, we will add a third and fourth.
279 this gives practice drilling and tightening screws.
aa71ea44 280 it also keeps the arduino fixed even more rigidly.]))
281 (subsection
282 :title [assessment of arduino deck attachment]
283 (itemize
284 (item [you should now be able to grab the deck and shake it.
285 the arduino should stay firmly in place while you do.])
286 (item [the arduino should be close to but not touching an edge.])
287 (item [there should be no warping on the arduino.
288 this could happen if the screws are too tight.]))))
57e11138 289 (section
17b1f3ea 290 :title [breadboard]
291 (p [next, let's attach other parts to the deck.
292 we'll start with the breadboard.
293 there are many ways to do this, but one handy approach is
294 glue dots.
295 glue dots can be placed easily, are good at attaching flat
296 surfaces that directly touch and do not get much stress.])
b52bbb4b 297 (figure :legend "breadboard to deck / required materials"
298 (image
299 :file "1-breadboard-to-deck/0-required-materials.png"))
300 (p [for this section, we will need the deck with arduino attached,
301 breadboard, and glue dots.])
302 (figure :legend "breadboard to deck / video"
303 (video
bb5ca604 304 :file "1-breadboard-to-deck/0-breadboard-to-deck.ogv"))
305 (enumerate
306 (item [take your breadboard out of its bag.])
307 (item [peel the backing.])
308 (item [put the shiny medal plate on the back.])
309 (item [break 4 glue dots away from the rest. put the rest back
310 into the bag.])
311 (item [break off a glue dot from the group of 4, and peel away the
312 backing, exposing a sticky side.])
313 (item [put the glue dot on one corner of the shiny side of the
314 breadboard.
315 make sure to push it down firmly.])
316 (item [repeat for the other corners.])
317 (item [put the breadboard on the center of the deck.
318 position it so the black chip is on the right, and the
319 blue line is up against the arduino.])
92d613dd 320 (item [press firmly in each of the corners.]))
321 (p [check])
2acfcb3e 322 (enumerate
92d613dd 323 (item [should the black chip be on the right or the left?])
324 (item [how many glue dots should be on the breadboard?])))
3c0c7ca4 325 (section
390d8f01 326 :title [battery packs]
327 (subsection
2a5771b0 328 :title [leads]
0315bca5 329 (subsubsection
330 :title [strip]
331 (p ["leads" are the wires coming out of the battery pack.
332 prepare the leads of the batteries by stripping them and
333 placing heat shrink on them.
334 your battery packs are not attached to your deck yet,
335 but that will be the next step.])
336 (figure :legend "batteries / prepare leads / stripping"
337 (video
338 :file "2-batteries/0-prepare-leads/0-strip.ogv"))
339 (enumerate
340 (item (bold [do not pick up batteries by their leads!]))
341 (item [strip the leads a tiny bit at a time.
342 keep stripping until a total of an inch is stripped.
343 the leads are made of tons of tiny wires that will
344 tear apart if too much insulation is stripped at
345 once.
346 wire made of a bunch of tiny wires
347 is "stranded wire".])
348 (item [strip both leads of both batteries.])
349 (item [then place heat shrink on every lead.
350 make sure the heat shrink is either clear or matches
351 the color of the lead.]))
352 (p [check])
2acfcb3e 353 (enumerate
0315bca5 354 (item [should you pick up a battery by its leads?])
355 (item [should you strip the leads a large amount at a time?])
356 (item [what's the name of wires made of a bunch of tiny
357 wires?])))
358 (subsubsection
359 :title [wrap]
360 (p [do the next 2 sections with just one lead at a time.
361 wrap, then solder one battery lead before moving on to the
362 next.
363 wrap the stranded wire around a solid core wire, as shown
364 in this video.])
365 (figure :legend "batteries / prepare leads / wrap"
366 (video
367 :file "2-batteries/0-prepare-leads/1-wrap.ogv"))
368 (p [the solid core wire is the stiff short wire.
369 it is much easier to poke into the breadboard.])
370 (p [check])
2acfcb3e 371 (enumerate
6a014bd1 372 (item [why are we using a solid core wire?])))
373 (subsubsection
374 :title [solder]
375 (p [do this next section and the previous with just one lead at a
376 time.
377 solder the stranded wire and solid core wire, as shown
378 in this video.])
379 (figure :legend "batteries / prepare leads / solder"
380 (video
381 :file "2-batteries/0-prepare-leads/2-solder.ogv"))
382 (p [soldering is the process of joining 2 metal things with
383 solder.])
384 (enumerate
385 (item [use the helping hands to grab the wires and hold them in
386 place.])
387 (item [clean off the tip of the soldering iron if it has been
388 sitting still for a while.
389 this cleans off corroded metal.])
390 (item [apply some solder directly to the tip of the soldering
391 iron.
392 this creates a pool of solder on the tip.
393 we will use this to transfer heat to the wires.])
394 (item [put the soldering iron up to the wires.
395 we want the wires to be hot enough to melt the
396 solder.
397 at the same time, poke the solder into the wire.
398 the solder will start melting and quickly spread to
399 hot parts of the wire.
400 there will be smoke.])
401 (item [move the solder away, then move the iron away.]))
402 (p [check])
2acfcb3e 403 (enumerate
6a014bd1 404 (item [should the wires melt the solder?])
405 (item [why should we clean off the tip of the soldering iron?])
406 (item [why do we put more solder back on the tip of the iron?]))))
390d8f01 407 (subsection
7b690119 408 :title [deck attachment]
409 (subsubsection
410 :title [motor battery pack attachment]
411 (p [attach the motor battery pack to the robot deck.])
412 (figure
413 :legend "batteries / placement / motor pack"
414 (video
415 :file "2-batteries/1-placement/0-motor-battery-pack.ogv"))
416 (p [we will use glue dots to attach the motor battery pack to the
417 deck.
418 the pack could be placed anywhere, but we will place it
419 in the lower left side of the robot.
420 this battery pack has 4 AA batteries in it.
421 each battery has 1.5 volts difference between the positive
422 and negative side.
423 the batteries are connected in series.
424 the total voltage difference for the whole battery pack is
425 the sum of the individual voltages, which is 6 volts.])
426 (enumerate
427 (item [make sure you are placing dots on the side of the battery
428 pack without the on/off switch.])
429 (item [peel off a glue dot for each of the corners of the
430 battery pack.])
431 (item [when placing the battery pack, make sure the screw hole
432 aligns with a hole on the deck.]))
433 (p [check])
434 (enumerate
435 (item [why place the glue dots on the side of the battery pack
15ba87a4 436 without the on/off switch?])))
437 (subsubsection
438 :title [arduino battery pack attachment]
439 (p [attach the arduino battery pack to the robot deck.])
440 (figure
441 :legend "batteries / placement / arduino pack"
442 (video
443 :file "2-batteries/1-placement/1-arduino-battery-pack.ogv"))
444 (p [next, we will attach the arduino battery pack to the deck.
445 again, the pack could be placed anywhere, but we will
446 place it in the lower right side of the robot.])
447 (enumerate
448 (item [make sure you are placing dots on the side of the battery
449 pack without the on/off switch, just as before.])
450 (item [peel off a glue dot for each end of the pack.])
451 (item [when placing the battery pack, make sure the screw hole
452 aligns with a hole on the deck.]))
453 (p [check])
454 (enumerate
455 (item [why align the screw with a hole on the deck?])))))
3c0c7ca4 456 (section
5aa69c47 457 :title [motors]
458 (subsection
6205157f 459 :title [leads]
460 (p [attach leads to the motors to supply the motor with power.])
461 (figure
462 :legend "motors / leads"
463 (video
464 :file "3-motor-assemblies/0-leads.ogv"))
465 (enumerate
466 (item [strip both the green and yellow wire on both ends.
467 strip one side only 1/8 inch.
468 strip the other side about 1/4 inch.])
469 (item [use the end of the wire stripper to bend a hook in the wire.
470 make this hook on the side of the wire with a smaller
471 exposed section.])
472 (item [do not bend the wire so that the exposed wire runs alongside
473 the sheath.])
474 (item [put the hooks through the tabs on the motor.
475 make sure to place the green and yellow wire on the
476 correct side of the motor.
477 match the side of the motor that already has wires
478 attached.
479 wrap the rest of the wire around the motor in order to
480 keep the wire from falling off.])
481 (item [once the wire is in place, wrap solder around the motor tab
482 and wire.
483 heat up the solder, motor tab and wire with the
484 soldering iron.])
485 (item [test the solder joint with the 9v battery.
486 touch the battery leads to the motor leads.
487 make sure the 9v battery is on.
488 if the motor moves, the solder joint is good!])
489 (item [get section of electrical tape, roughly 100mm
490 (about 4 inches).
491 slide the middle of the tape under the wires.
492 this tape will keep the solder joints away from the
493 metal band around the motor.])
494 (item [the zip tie will hold the wires to the motor.
495 wrap the zip tie on the round part of the motor where
496 it meets the square portion of the motor.
497 this will provide mechanical support for the solder
498 joints.
499 once the zip tie is wrapped, use wire strippers to cut
500 off the excess zip tie.])
501 (item [cover the solder joint with hot glue.
502 this will further keep the solder joints from corroding
503 in the air's moisture.
504 it will also keep the joint safe from anything poking
505 in.]))
506 (p [check])
507 (enumerate
508 (item [should the electrical tape go between the wires and the
509 metal band?])
510 (item [are the motor tabs strong?])
511 (item [what are we doing to reinforce the motor tabs mechanically?])
512 (item [does hot glue make an electrical connection?])))
5aa69c47 513 (subsection
514 :title [deck attachment]))
3c0c7ca4 515 (section
1b593ec7 516 :title [wheels]
517 (subsection
518 :title [tread])
519 (subsection
520 :title [motor]))
3c0c7ca4 521 (section
2ccf4ca9 522 :title [caster]
523 (subsection
524 :title [deck placement]))
3c0c7ca4 525 (section
6550a556 526 :title [sonars]
527 (subsection
528 :title [deck placement])))
3c0c7ca4 529 (chapter
9fb37473 530 :title [wiring and software]
531 (section
f0876d62 532 :title [serial]
533 (subsection
1be43d04 534 :title [software on computer]
c3e8314c 535 (subsubsection
1be43d04 536 :title [arduino])
c3e8314c 537 (subsubsection
1be43d04 538 :title [fritzing]))
f0876d62 539 (subsection
540 :title [attach arduino and computer via cable])
541 (subsection
542 :title [debugging common connection problems])
543 (subsection
544 :title [arduino reset button]))
9fb37473 545 (section
bb801164 546 :title [left sonar]
547 (subsection
548 :title [breadboard connectivity])
549 (subsection
550 :title [cable])
551 (subsection
cb7d1c68 552 :title [arduino headers])
553 (subsection
554 :title [sound cm per microsecond at sea level]))
9fb37473 555 (section
9183d52b 556 :title [both sonars]
557 (subsection
558 :title [breadboard power rail]
559 (p [power rail can provide power to more than one device.])))
9fb37473 560 (section
805d6362 561 :title [left motor]
562 (subsection
563 :title [arduino digital output])
564 (subsection
565 :title [quad half h bridge, aka motor controller])
566 (subsection
567 :title [motor battery]))
9fb37473 568 (section
79d761bc 569 :title [both motors]
570 (subsection
571 :title [analogWrite]))
9fb37473 572 (section
aedd9003 573 :title [untethered]
574 (subsection
575 :title [arduino battery])
576 (subsection
577 :title [off and on functions]))
9fb37473 578 (section
28a2365e 579 :title [follow]
580 (subsection
581 :title [same wiring as untethered])
582 (subsection
583 :title [set motor])
584 (subsection
585 :title [go])
586 (subsection
587 :title [determining speed]))
9fb37473 588 (section
d460f45c 589 :title [stay on table]
590 (subsection
591 :title [stop])
592 (subsection
593 :title [backup])
594 (subsection
595 :title [turn around]))))
37d286e7 596
597;; Copyright 2016 daniel watson
598
599;; This file is part of challenge-bot.
600
601;; challenge-bot is free software: you can redistribute it and/or modify
602;; it under the terms of the GNU Affero General Public License as
603;; published by the Free Software Foundation, either version 3 of the
604;; License, or (at your option) any later version.
605
606;; challenge-bot is distributed in the hope that it will be useful,
607;; but WITHOUT ANY WARRANTY; without even the implied warranty of
608;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
609;; GNU Affero General Public License for more details.
610
611;; You should have received a copy of the GNU Affero General Public
612;; License along with challenge-bot. If not, see
613;; <http://www.gnu.org/licenses/>.