add assessment of arduino deck attachment
[challenge-bot] / curriculum / challenge-bot.scm
1 ;; tldr; AGPLv3+
2 ;; copyright info at bottom
3
4 (document
5 :title [challenge-bot]
6 (chapter
7 :title [mechanical]
8 (p [let's build your robot!])
9 (section
10 :title [arduino to deck]
11 (p [let's attach the arduino to the deck.])
12 (subsection
13 :title [required materials]
14 (p [you will need the things in this picture.
15 ,(figure :legend "arduino to deck / required materials"
16 (image :file "arduino-to-deck/0-required-materials.png"))
17 ,(itemize
18 (item [medical kit with bandages])
19 (item [safety goggles])
20 (item [drill bit \(we will determine size in a moment\)])
21 (item [drill])
22 (item [alan wrench])
23 (item [wood block])
24 (item [arduino])
25 (item [#6-32x3/8\", four of them])
26 (item [robot deck, the white thing with a grid of holes1]))]))
27 (subsection
28 :title [first hole]
29 (subsubsection
30 :title [choosing drill bit]
31 (p [the arduino comes with holes in it already, so we will make
32 some choices around those holes.
33 choosing the right drill bit depends on what job you are
34 doing.
35 right now, we are making holes for screws to hold the
36 arduino to the deck.
37 there are two constraints between the hole and screw.
38 each hole needs to be big enough for the screw body to fit
39 through it.
40 the holes also need to be smaller than the screw's thread.
41 since there are holes on the arduino already, the screw was
42 chosen to match it.
43 the screw was chosen so that the hole on the arduino was
44 bigger than the screw body and smaller than its thread.
45 we will choose the biggest drill bit that fits through the
46 hole on the arduino, then use that to drill holes in the
47 deck.])
48 (p [here's a cross section of a screw in the deck]
49 (figure :legend "screw cross section"
50 (image :file
51 "arduino-to-deck/screw-cross-section.png")))
52 (p [check
53 ,(itemize
54 (item
55 [what would happen if the drill bit were larger than the
56 screw thread?])
57 (item
58 [what would happen if the drill bit were smaller than the
59 screw body?]))]))
60 (subsubsection
61 :title [inserting drill bit]
62 (p (figure :legend "arduino to deck / insert bit"
63 (image :file "arduino-to-deck/1-insert-bit.png"))
64 [insert the drill bit into the teeth of the drill.
65 insert it far enough that the teeth will clamp on the
66 smooth part of the bit when they are tightened.])
67 (p (figure
68 :legend "arduino to deck / twist tighten drill teeth"
69 (image :file "arduino-to-deck/2-twist-tighten-drill-teeth.png"))
70 [while holding the drill bit, twist end of the drill to tighten
71 the teeth.
72 make sure that the teeth end up gripping the flat part of
73 the drill bit.])
74 (p [check
75 ,(itemize
76 (item
77 [where should the teeth clamp down on the drill bit?])
78 (item
79 [what would happen if the teeth tightened on the recessed
80 part of the drill bit?]))]))
81 (subsubsection
82 :title [holding drill]
83 (p [hold the drill with one hand on the handle and trigger.
84 put the other hand on the orange nozzle, before the
85 black spinning part.]))
86 (subsubsection
87 :title [arduino placement]
88 (p [the arduino should be placed as shown in this picture.]
89 (figure :legend "arduino to deck / place arduino"
90 (image :file "arduino-to-deck/3-place-arduino.png")))
91 (p [here's a closeup]
92 (figure :legend "arduino to deck / place arduino closeup"
93 (image :file
94 "arduino-to-deck/4-place-arduino-closeup.png"))
95 [the picture above shows where to place the arduino on the deck.
96 the arduino should line up with the holes on the deck.
97 this alignment line is highlighted in pink.
98 on the arduino, there's a hole on the top left, between the
99 orange reset button and black headers.
100 the green circle shows where the hole is.
101 the blue box encloses the arduino hole and two deck holes.
102 place the arduino hole mid-way between the two
103 deck holes.])
104 (p [check
105 ,(itemize
106 (item
107 [should the arduino be upside-down?])
108 (item
109 [what should the upper side of the arduino align with?])
110 (item
111 [why not place the arduino up along the left side of the
112 robot?]))]))
113 (subsubsection
114 :title [drilling practice]
115 (p [strength check]
116 (itemize
117 (item [put on safety goggles])
118 (item [unplug drill])
119 (item [hold drill in one hand])
120 (item [point drill at the ground])
121 (item [point drill at the wall])))
122 (p [steps for drilling into wood block]
123 (itemize
124 (item [plug in the drill])
125 (item [place the drill bit in position])
126 (item [bring the drill up to full speed, and keep it at full
127 speed while lowering and raising the drill])
128 (item [push down until the drill bit has passed through an inch
129 of the wood block])
130 (item [keep the drill at full speed])
131 (item [stop before the drill smashes into the wood block])
132 (item [keep the drill at full speed by holding the trigger])
133 (item [bring the drill straight back up])
134 (item [hold the trigger down to keep the drill at full speed])
135 (item [once the drill is back out of the hole, let go of the
136 trigger])))
137 (p [check
138 ,(itemize
139 (item
140 [should the drill be at full speed while the drill bit is
141 going down into the wood and coming back up?])
142 (item
143 [how do you keep the drill at full speed?])
144 (item
145 [what would happen if the drill bit were not at full
146 speed?])
147 (item
148 [what would happen if the drill were twisted sideways while
149 the drill bit were in the wood?]))]))
150 (subsubsection
151 :title [drilling the first screw hole]
152 (itemize
153 (item [place the drill bit in position])
154 (item [bring the drill up to full speed, and keep it full speed])
155 (item [push down until the drill bit has passed through the
156 deck])
157 (item [keep the drill at full speed])
158 (item [stop before the drill smashes into the arduino])
159 (item [keep the drill at full speed by holding the trigger])
160 (item [bring the drill straight back up])
161 (item [hold the trigger down to keep the drill at full speed])
162 (item [once the drill is back out of the hole, let go of the
163 trigger]))
164 (p [check
165 ,(itemize
166 (item
167 [should the drill be at full speed while the drill bit is
168 going down into the wood and coming back up?])
169 (item
170 [what would happen if the drill bit were not at full
171 speed?])
172 (item
173 [how do you keep the drill at full speed?]))])))
174 (subsection
175 :title [first screw]
176 (subsubsection
177 :title [fastening arduino to deck using #6-32x3/8\" screw]
178 (p [the "#6" part of "#6-32x3/8\"" is how big around the bolt is.
179 it is related to wire gauge.
180 bigger numbers mean larger screws.
181 smaller numbers means smaller screws.]
182 (figure :legend "arduino to deck / #6-32 screw"
183 (image :file
184 "arduino-to-deck/6-32-screw.png")))
185 (p [check
186 ,(itemize
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?]))])
191 (p [the "32" part of "#6-32x3/8\"" is a measurement of how close
192 the threads are to each other.
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.])
199 (p [check
200 ,(itemize
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
207 the screw?]))]))
208 (subsubsection
209 :title [fasten the arduino board to the deck]
210 (p [first we'll put the screw into the deck just enough so the deck
211 holds it in place.
212 then we will hold the arduino up to the screw and finish
213 tightening the screw down.
214 with the screw partially in, we do not have hold it as
215 rigidly while we are also holding the arduino and
216 the deck.])
217 (p [push the #6-32 screw into the deck from the underside.
218 the underside is the brown side.
219 at the same time, spin the 6-32 screw so it rotates
220 clockwise while looking down on its head.
221 twist until the tip of the screw is about to stick out on
222 the top side of the deck.])
223 (p [hold the arduino board flat to the deck and line up the arduino
224 hole so the screw can come up through it.
225 continue tightening the screw into the deck, spinning the same
226 direction as before.
227 tighten until the screw head touches the deck.
228 do not continue tightening after that.])
229 (p [the arduino should still be flat against the deck still, just
230 as it was before tightening the screw.])
231 (p [check
232 ,(itemize
233 (item [why do we insert the first screw partially before
234 holding up the arduino?])
235 (item [which side of the deck is the top side?]))]))
236 (subsubsection
237 :title [assessment of the first screw]
238 (itemize
239 (item [,(bold [warning]), if you rotate the arduino board too
240 much,you will unscrew it from the deck and you'll have to
241 screw it back in.
242 rotating a few degrees should be ok.])
243 (item [does the arduino stay with the deck when the deck moves?])
244 (item [can the arduino board still rotate a few degrees?]))))
245 (subsection
246 :title [second hole and screw]
247 (subsubsection
248 :title [arduino board move relative to deck]
249 (p [without any screws, the arduino board can move independently of
250 the deck.
251 it can translate and rotate freely.
252 with the first screw, the arduino can rotate around one
253 point on the deck and can no longer translate much.])
254 (p [the second screw limits rotation a lot.
255 it also makes translation even more difficult.
256 it might even be too small to be detectable by directly
257 looking at it.])
258 (p [to choose where the second hole and screw should go, we should
259 keep in mind that the goal is to attach the deck to the
260 arduino.
261 this means minimizing rotation and translation.
262 the picture below shows that the second hole should be as
263 far as possible from the first hole, since that minimizes
264 rotation.]
265 (figure :legend "arduino to deck / keep holes far apart"
266 (image :file "arduino-to-deck/keep-holes-far-apart.png"))))
267 (subsubsection
268 :title [drilling and attaching second screw]
269 (p [to drill the second hole, follow the same steps as drilling the
270 first hole.
271 hold the arduino down as before, and drill through the hole
272 furthest away from the first hole.
273 then insert and tighten the screw as before.])))
274 (subsection
275 :title [third and fourth hole and screw]
276 (p [even though the arduino is pretty well attached with just 2
277 screws, we will add a third and fourth.
278 this gives practice drilling and tightening screws.
279 it also keeps the arduino fixed even more rigidly.]))
280 (subsection
281 :title [assessment of arduino deck attachment]
282 (itemize
283 (item [you should now be able to grab the deck and shake it.
284 the arduino should stay firmly in place while you do.])
285 (item [the arduino should be close to but not touching an edge.])
286 (item [there should be no warping on the arduino.
287 this could happen if the screws are too tight.]))))
288 (section
289 :title [breadboard])
290 (section
291 :title [battery packs]
292 (subsection
293 :title [leads])
294 (subsection
295 :title [deck attachment]))
296 (section
297 :title [motors]
298 (subsection
299 :title [leads])
300 (subsection
301 :title [mount])
302 (subsection
303 :title [deck attachment]))
304 (section
305 :title [wheels]
306 (subsection
307 :title [tread])
308 (subsection
309 :title [motor]))
310 (section
311 :title [caster]
312 (subsection
313 :title [deck placement]))
314 (section
315 :title [sonars]
316 (subsection
317 :title [deck placement])))
318 (chapter
319 :title [wiring and software]
320 (section
321 :title [serial]
322 (subsection
323 :title [software on computer]
324 (subsubsection
325 :title [arduino])
326 (subsubsection
327 :title [fritzing]))
328 (subsection
329 :title [attach arduino and computer via cable])
330 (subsection
331 :title [debugging common connection problems])
332 (subsection
333 :title [arduino reset button]))
334 (section
335 :title [left sonar]
336 (subsection
337 :title [breadboard connectivity])
338 (subsection
339 :title [cable])
340 (subsection
341 :title [arduino headers])
342 (subsection
343 :title [sound cm per microsecond at sea level]))
344 (section
345 :title [both sonars]
346 (subsection
347 :title [breadboard power rail]
348 (p [power rail can provide power to more than one device.])))
349 (section
350 :title [left motor]
351 (subsection
352 :title [arduino digital output])
353 (subsection
354 :title [quad half h bridge, aka motor controller])
355 (subsection
356 :title [motor battery]))
357 (section
358 :title [both motors]
359 (subsection
360 :title [analogWrite]))
361 (section
362 :title [untethered]
363 (subsection
364 :title [arduino battery])
365 (subsection
366 :title [off and on functions]))
367 (section
368 :title [follow]
369 (subsection
370 :title [same wiring as untethered])
371 (subsection
372 :title [set motor])
373 (subsection
374 :title [go])
375 (subsection
376 :title [determining speed]))
377 (section
378 :title [stay on table]
379 (subsection
380 :title [stop])
381 (subsection
382 :title [backup])
383 (subsection
384 :title [turn around]))))
385
386 ;; Copyright 2016 daniel watson
387
388 ;; This file is part of challenge-bot.
389
390 ;; challenge-bot is free software: you can redistribute it and/or modify
391 ;; it under the terms of the GNU Affero General Public License as
392 ;; published by the Free Software Foundation, either version 3 of the
393 ;; License, or (at your option) any later version.
394
395 ;; challenge-bot is distributed in the hope that it will be useful,
396 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
397 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
398 ;; GNU Affero General Public License for more details.
399
400 ;; You should have received a copy of the GNU Affero General Public
401 ;; License along with challenge-bot. If not, see
402 ;; <http://www.gnu.org/licenses/>.