Repository navigation
Expand file tree
/
Copy pathindexcontent.html
More file actions
421 lines (411 loc) · 33.3 KB
/
Copy pathindexcontent.html
File metadata and controls
421 lines (411 loc) · 33.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
<ARTICLE ID="Article_1">
<HEADER ID="Header_Article_1">
<H2>Building IoT Projects</H2>
</HEADER>
<SECTION ID="Section_1">
<H3>9am-12noon May 15th, 2017 Computer Engineering Technology (CENG) Prototyping Workshop in J232</H3>
<p>Preparation in advance:
<ol>
<li>Please get started by ensuring that you have reviewed the <a href="https://radiojove.gsfc.nasa.gov/telescope/soldering.htm">six 15 second soldering videos</a> and can comment on them. (If you are into materials, look up tin pest and tin whiskers.)</li>
<li>Work through as much of this set of instructions as possible. Additional content yet to be incorporated into these instructions is available in the <a href="https://github.com/six0four/MicroRover">repository</a>.
(Feel free to drop by my desk or through the prototype lab in J233 for additional guidance both before and after the workshop.)</li>
<li>For additional soldering guidance such as surface mount and desoldering:
<ol>
<li>Watch some <a href="https://www.youtube.com/watch?v=BLfXXRfRIzY&list=PLQ32vZrF5U2lFOJTtZDytBWBYVLNp4RYz)">YouTube Videos</a>.</li>
<li>Be sure to wear safety glasses and consult an expert regarding safety, you can even start at your <a href="https://wiki.hackerspaces.org/List_of_Hackerspaces">local hackerspace</a>.</li>
</ol>
</li>
</ol>
</p>
<p>Getting started Monday morning:
<ol>
<li>Please remember your eyewear (safety glasses if you don't regularly wear glasses) and select a seat in J232 near one of the soldering facilitators (Kelly, Vlad, Jeremy, Brandeen, Carl, Muhammad, or Vincent who are familiar with IPC J-STD-001 Requirements for Soldered Electrical and Electronic Assemblies).</li>
<li>Turn on the computer under the desk on the left side.</li>
<li>Note the red power switch to the back right side of the workstation that controls the power to the monitor, overhead light, and test equipment.</li>
<li>Also note the under desk grounding strap jack for wrist straps - Electronics (ELIC) students must buy the $4.99 wrist straps while both CENG and ELIC students are to have the $4.99 safety glasses.</li>
<li>When soldering move the extraction arm flow control towards the straight through symbol as it is in the photo below.</li>
<li>The sponge in the soldering station can be moistened at the sink in J233.</li>
</ol>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/1.1j232station.jpg">
</p>
<p>Welcome! Our students are <a href="http://www.tcu.gov.on.ca/pepg/audiences/colleges/progstan/techno/compeng3.pdf">to reliably demonstrate the ability to</a>:
<ol>
<li>diagnose, solve, troubleshoot, and document technical problems involving computing devices using appropriate methodologies.</li>
<li>integrate multiple software and hardware components using appropriate network architecture.</li>
<li>participate in analyzing, planning, designing, and developing the architecture of computing devices and systems.</li>
<li>plan, install, configure, modify, test, and maintain a variety of computer systems to meet functional requirements.</li>
<li>apply principles of digital and analog circuits to the implementation of embedded computing devices.</li>
<li>analyze, build, test, implement, and maintain applications.</li>
<li>evaluate and document security issues associated with a variety of computing devices and propose alternatives to increase product reliability.</li>
<li>articulate, defend, and conform to workplace expectations found in technology environments.</li>
<li>contribute to the successful completion of the project applying the project management principles in use.</li>
</ol>
</p>
<p>The CENG capstone project consists of:
<ol>
<li>CENG 317 Hardware Production Technology (building a microprocessor based sensor/effector node),</li>
<li>CENG 319 Software Project (building a mobile application); and,</li>
<li>CENG 355 Computer Systems Project (integration of the work in the previous two courses):</li>
</ol>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/1.2pinetworkarchitecture.jpg">
</p>
<p>
A common introduction to microcontrollers is through the <a href="http://www.education.rec.ri.cmu.edu/previews/robot_c_products/teaching_rc_lego_v2_preview/home/ROBOTC_Curriculum_Outline.pdf">Lego NXT ROBOTC Curriculum</a>. We will aim to make headway in a simplified project by building an independent microcontroller based sensor/effector node that could be integrated in the following way:
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/1.3trinketnetworkarchitecture.jpg">
This will give us some idea of what runs connected devices all over including vehicle systems and infotainment, PLCs, our phones, Lego Mindstorms, Arduino, Raspberry Pi as well as learn about the prototyping tools available at Humber.
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/1.4completedrover.jpg">
Based on the <a href="https://www.sparkfun.com/products/9378">ATTiny85</a> It will drive in a straight line until it encounters an object following which it will reverse and turn before continuing straight again. The workshop milestones are:
<ol>
<li>Kit and workstation familiarization.</li>
<li>Blinking Light Emitting Diode (LED).</li>
<li>Soldering Printed Circuit Board (PCB) together, and verifying it with test equipment.</li>
<li>Assembly of rover complete with blinking LED powered by the lithium ion cell.</li>
<li>Coding/uploading the appropriate program to run the rover.</li>
</ol>
</p>
<p>
<ol>
<li>Thanks to our generous students (via lost and found) you have the beginnings of a parts kit - if not, contact me.
<ol>
<li>I will link to a number of draft videos in this workshop guide, in this case it is <a href="https://vimeo.com/100466061">a video that guides the students to purchase a parts kit at the bookstore</a>.</li>
<li>The first step with the parts kit is to <a href="https://vimeo.com/100450524">put your name on it and check that you have all of the parts</a>.</li>
<li>Our next step with the parts kit is to <a href="https://vimeo.com/104403275">confirm that our leads are functional</a>.</li>
<li>What we notice is that the equipment in J232 is different from <a href="https://vimeo.com/104617858">those shown in the videos</a>.</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/1.4leadsopenshorted.jpg">
<li>Additional electronics <a href="https://www.youtube.com/watch?v=lV39ffb82iE">background</a> from
<a href="https://www.youtube.com/watch?v=2jAHT80Yw4A">Carl Oliver</a> and
<a href="https://www.youtube.com/watch?v=jaj5wuvrPvo&list=PLu1e4V7jPKeOv7V2nSRhisSu_LDnD4tSu">Peter Wheeler</a>.</li>
</ol>
</li>
<li>In your student donated parts kit find:
<ol>
<li>One resistor identification card,</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/1.5resistoridcard.jpg">
<li>One 100 Ω resistor,</li>
<li>One 10 kΩ resistor (to use to test the leads and test equipment as per the aforementioned videos),</li>
<li>One 100 kΩ resistor; and,</li>
<li>A 5 cm length of solid core hookup wire.</li>
<li>If any parts are missing, they can be borrowed from the parts crib and if the resistors have not been sorted, Kelly can provide laser cut and etched resistor organization cards:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/1.6resistorlaser.jpg">
</ol>
</li>
<li>Many of you also have a partial starter kit of parts for the workshop on May 15th to get started during the week prior to the workshop.
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/1.7earlyadopterkit.jpg">
(e.g. Brandeen, Jeremy, Carl, Muhammad, Leon, Mihyar, Hassan, Ben, Aleks, Hussain, Raji, Satoshi, Nasim.)</li>
<li>The starter kit contains (please let me know if you are missing any parts):
<ol>
<li>One laser etched and router milled/drilled Printed Circuit Board (PCB) made at Humber (a quick resistance measurement should confirm power and ground traces are not connected),</li>
<li>One laser cut chassis (1.75 minutes of cutting for the 3 pieces) made at Humber,</li>
<li>Two 3D printed <a href="https://github.com/six0four/MicroRover/blob/master/mechanical/MicroRoverOringWheelRev05.stl">micro servo wheels made at Humber,</a></li>
<li>One 3.7 V 350 mAh Lithium Ion Polymer 552035 Cell,</li>
<li>One Trinket LiPoly Backpack Charger, including its header,</li>
<li>Two BS1806-022 O-rings</li>
<li>Two Micro Continuous Rotation Servos, one of which is packaged with:</li>
<li>Six 36-1502-2-ND turret posts,</li>
<li>One 3V Adafruit Trinket, including its headers, packaged with:</li>
<li>>30 cm of SN 100C 0.032” diameter lead free no clean rosin based glow core flux core of 2.5%.</li>
<li>One 1080-1163-ND Side view IR phototransistor,</li>
<li>One 160-1930-ND Side View IR emitter,</li>
<li>One S9341-ND Shorting Jumper,</li>
<li>One USB cable - A/MicroB - 3ft,</li>
<li>Four H700-ND #2-56x1/4" machine screws,</li>
<li>Two 2 pin pieces, one 3 pin piece, and two 5 pin pieces of S7014-ND female header - breakaway,</li>
<li>One 2 pin pieces, and three 3 pin pieces of S1011EC-40-ND male header - breakaway.</li>
</ol>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/1.8earlyadoptercontents.jpg">
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/1.9.jpg">
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/1.10earlyadoptercontents2.jpg">
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/1.11usbcablemachinescrews.jpg">
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/1.12lasercutting.jpg">
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/1.13laserchassis.jpg">
</li>
<li>Infrared (IR) LEDs can be viewed in the dark through most digital cameras:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/1.14irledoff.jpg">
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/1.15irledon.jpg">
</ol>
</p>
</SECTION>
<SECTION ID="Section_2">
<H3>Blinking LED</H3>
<p>
<ol>
<li>Use your USB A to USB MicroB cable to upload blink to your trinket to confirm that it works:
<ol>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/2.usbtrinket.jpg">
<li>Log into a computer in J232. (If you are using your own computer, download the installer from <a href="https://www.arduino.cc/en/Main/Software">arduino.cc</a>)</li>
<li>Install the <a href="https://learn.adafruit.com/introducing-trinket?view=all#windows-setup">Adafruit Windows Drivers</a>.</li>
<li>Follow these <a href="https://learn.adafruit.com/introducing-trinket?view=all#setting-up-with-arduino-ide">instructions</a> including the <a href="https://learn.adafruit.com/adafruit-arduino-ide-setup?view=all">integrated development environment setup</a> until your development board blinks.</li>
<li>Although you may be able to right away choose File->Examples->01.Basics->Blink, having the drivers and libraries installed will help get that code onto your device.</li>
<li>My recommendation is to always verify (the checkmark button) your code prior to uploading (the right arrow button) since you only have a 5 second window to upload (after either plugging in the USB cable or pressing the reset button) and if you have yet to verify, that step is included in the upload.</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/2.arduinoide.jpg">
</ol>
</li>
</ol>
</p>
</SECTION>
<SECTION ID="Section_3">
<H3>Soldering PCB</H3>
<p>
<ol>
<li>Please put on your glasses for safety as we will be soldering and using side cutters (despite this please make sure not to send to parts flying from your workspace). To solder these parts:
<ol>
<li>Take a length of solid core hookup wire (from your student supplied parts kit) and strip a longer section of insulation than usual.</li>
<li>Use pliers to create a 90 degree bend.</li>
<li>Insert the short end of the bend into one of the two spots (vias) shown that are used to transfer the signal from one side of the board to the other.</li>
<li>You may make two (as shown) or use the same one twice by soldering cutting and then reinserting in the other location:
</ol>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.1vias.jpg">
Solder these onto the provided PCB (laid out and made by Kelly and Vlad - <a href="https://github.com/six0four/MicroRover/tree/master/electronics">Eagle files and Bill of Materials</a>) from both sides then solder the resistors onto the provided PCB from both sides:
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.2resistorsandvias.jpg">
Trim the via and resistor leads, then solder the 3 pin and 5 pin sockets:
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.3socketsadded.jpg">
Next solder the headers (this photo is of a slightly different PCB but the idea is the same):
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.4headersadded.jpg">
Next solder the terminal posts/turrets (the holes may need a little bit of touch up/enlargement).
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.5turretplacement.jpg">
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.5turretsoldering.jpg">
Next solder the 2 pin sockets to the opposite side of the PCB as photographed by Brandeen:
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.6backsidesockets.jpg">
The IR LED (clear) will eventually be trimmed to go in the socket connected to the 100 Ω resistor while the IR sensor (dark coloured) will eventually be trimmed to go into the socket connected to the 100 kΩ resistor.
</li>
<li>Solder the provided headers onto the trinket.</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.6trinketandheaders.jpg">
<li>Solder the provided headers onto the trinket backpack.</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.7trinketandbackpack.jpg">
</ol>
</p>
<p>
<ol>
<li>Use your USB A to USB MicroB cable to upload blink to your trinket to confirm that it has remained undamaged through the soldering and mechanical assembly processes:
<ol>
<li>Start the Arduino IDE.</li>
<li>Choose File->Examples->01.Basics->Blink</li>
<li>Choose verify and then press the reset button on your trinket and then quickly click upload such that it completes in your 5 second window.</li>
<li>You will notice that your code from before will still be loaded so changing say the first delay in the Blink code from 1000 to 500 in the code will help you verify that you can still upload code.</li>
<li>In the below picture which is a bit fuzzy, you could notice that I did not populate the Rst pin since we have a button for that and do not use it otherwise. Also, I did not populate #3 or #4 which are used for USB communication. If you did populate (solder headers in to) these it is also fine.</li>
</ol>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.8trinketsoldered.jpg">
</li>
<li>Let us check out our printed circuit board assembly (following IPC-A-610 Acceptability of Electronics Assemblies if you are familiar with it) and test it using the bench top equipment:
<ol>
<li>To start off, you may use the multi-meter to measure the resistance between any pair of turret/terminal posts and there should be no continuity (same as no connection) since nothing is connected to the headers or sockets yet.</li>
<li>PLEASE NOTICE THAT YOUR BOARD MAY HAVE TURRETS/TERMINALS IN DIFFERENT LOCATIONS - GO BY THE LABELS!</li>
<li>When selecting your resistors you may have already measured them and you can confirm that now:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.9check100ohm.jpg">
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.10check100kohm.jpg">
<li>Next connect the backpack to the PCB:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.11connectbackpack.jpg">
<li>Connect the jumper across both pins to enable the battery backpack. The jumper has a couple of different purposes:
<ol>
<li>The most useful purpose is to use it to disconnect power from the mirco servos such that your are able to have a finished micro rover on your desk and program it without it driving away. This is also a handy way of having it when you are not using it such as when it is charging but for storage you should remove the lithium cell.</li>
<li>The second purpose is that when it disconnects the power from the lithium ion cell it also alows you to directly power the rover from the VBAT turret/terminal.</li>
</ol>
</li>
<li>Test the voltage on the 3.7 V 350 mAh Lithium Ion Polymer 552035 Cell by measuring the voltage between GND and VBAT.
(Notice from the datasheet that the <a href="https://cdn-shop.adafruit.com/product-files/2750/LP552035_350MAH_3.7V_20150906.pdf">
Discharge Cut-off is 3.0V, the Charging Cut-off is 4.2V, and the Storage Voltage is 3.7-3.85V</a>.):</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.12gndvbatcheckcellvoltage.jpg">
<li>We can now set up the power supply with a current limit and, on these power supplies, also current protection.</li>
<li>Start by turning on the power supply:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.16turnon.jpg">
<li>We do not have our desired capabilities if we use the straight 5V output, thus enable Output 1, and set it to 5V.
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.17setsupplyvoltage.jpg">
<li>Press "Display Limit" and change it to 0.08 Amps:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.18setcurrentlimit.jpg">
<li>When we first enable the output, or connect the device there will be a slight surge so if we set the Over Current protection to trip at 0.13 A:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.19setovercurrent0.13.jpg">
<li>It will trip when we connect our project:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.20ErIP.jpg">
<li>Thus we will set our over current protection at 0.5 A:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.21setovercurrent0.5.jpg">
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.21overcurrentdone.jpg">
<li>We can now connect the negative (black) lead to GND and the positive (red) lead to VUSB:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.22gndvbat5v0.4a.jpg">
<li>If you notice that the current draw is 0.04A at 5V then the IR LED is in the socket and powered but the lithium cell is not charging.</li>
<li>Connect the jumper across both pins to enable the battery backpack.</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/pic-batterywithjumper.jpg">
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/pic-checkingbatvoltage.jpg">
<li>Now it should supply 0.08 A at 5 V to the charging backpack (which itself would limit the charging current to 0.10 A - which is an acceptable charging current up until 4.2 V is reached in our case):</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.23gnd5v0.8a.jpg">
<li>If you did not set the current limit properly, the charging packpack will save you and you will notice that it limits the charging current to 0.01 A:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.23constantv0.1abackpacklimited.jpg">
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.25gndvusb5v.jpg">
<li>If you did set up the current limits to allow attended direct lithium cell charging properly, connect the negative (black) lead to GND and the positive (red) lead to VBAT:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.24gndvbat4v0.8a.jpg">
<li>You may increase the current slightly to 0.14 A:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.25gndvbat0.14a.jpg">
<li>Turn off power supply Output 1 and remove the leads as well as the lithium ion cell charger backpack PCB.</li>
<li>Turn on the function generator and the oscilloscope (press "Default Setup", then use 0.5 Volts/division and 10 ms/division).</li>
<li>Connect BNC (Bayonet Neill–Concelman) to alligator clip cables from both the output on the function generator and from the oscilloscope to the PCB - negative to GND (black leads) and positive to TEST (red leads):</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.31oscfuncpcb.jpg">
<li>Set the output of the function generator to 20 Hz:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.32func20hz.jpg">
<li>Set the output of the function generator to 1.5 Volts peak-to-peak (these function generators expect a 50 Ω load and thus using an almost infinite load we will actually get double the voltage.)</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.34func1.5vpp.jpg">
<li>Set the output of the function generator to have a 0.75 V offset:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.35func.75offset.jpg">
<li>Set the output of the function generator to have a peak of 1.5 ms:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.36func1.5ms.jpg">
<li>Measure to confirm the peak-to-peak voltage, frequency, and positive pulse width:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.37measurepulse.jpg">
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.39measure1.5ms.jpg">
<li>At this point we can add the power supply that we set up earlier but change it to 3.7 V and increase the current limit from 0.5A to 0.6A:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.39funcoscgndvbat.02a.jpg">
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.38oscfuncpcbpowernojump.jpg">
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.39funcoscgndvbatb.jpg">
<li>Also add a micro servo to the middle 3 pin set of headers next to the jumper between the right and left sets.</li>
<li>To turn the micro servo clockwise, set the function generator to have a peak of 1.0 ms:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.40func1.0ms.jpg">
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.41measure1.0ms.jpg">
<li>You will noticed that with the micro servo turning it now draws an extra 10 mA.</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.41funcoscgndvusb.03a.jpg">
<li>To turn the micro servo counter-clockwise, set the function generator to have a peak of 2.0 ms:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.42func2.0ms.jpg">
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/3.43measure2.0ms.jpg">
</ol>
</li>
</ol>
</p>
</SECTION>
<SECTION ID="Section_4">
<H3>Assembly and Blinking LED Again</H3>
<p>
<ol>
<li>Start by removing the film from your acrylic pieces designed by Vlad after seeing my prototype and laser cut by Kelly who photographed the assembly steps:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/4.1.jpg">
<li>This is what you will need for the assembly.
The film has been left on to avoid issues with photographing clear objects.
The screwdriver shown makes it unnecessary to tap the acrylic for the machine screws but, if you would like to use it, we do have a tap such that a screwdriver that is not designed to allow for pressure with the palm of your hand can be used.</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/4.2.jpg">
<li>Attach a continuous rotation micro servo to the acrylic piece with machine screws as shown:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/4.4.jpg">
<li>Repeat for the second continuous rotation micro servo:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/4.6.jpg">
<li>Connect the three pieces of acrylic together:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/4.7.jpg">
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/4.8.jpg">
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/4.9.jpg">
<li>Tuck the extra length of wire as shown:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/4.10.jpg">
<li>Place the lithium ion cell as shown:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/4.11.jpg">
<li>Thread the servo and cell leads through the PCB (to which the trinket and backpack are added along with the jumper which is ONLY ON ONE OF THE TWO PINS) as shown:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/4.12.jpg">
<li>Connect the leads as shown making sure the orientation of the servo leads is correct (yellow for signal, faded red for power, faded black for ground).</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/4.13.jpg">
<li>Tuck the cell lead in as shown:</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/4.14.jpg">
</ol>
</p>
<p>
<ol>
<li>Use your USB A to USB MicroB cable to upload blink to your trinket to confirm that it has remained undamaged through the soldering and mechanical assembly processes:
<ol>
<li>Start the Arduino IDE.</li>
<li>Choose File->Examples->01.Basics->Blink</li>
<li>Choose verify and then press the reset button on your trinket and then quickly click upload such that it completes in your 5 second window.</li>
<li>You will notice that your code from before will still be loaded so changing say the second delay in the Blink code from 1000 to 500 in the code will help you verify that you can still upload code.</li>
<li>Connect the jumper across both pins to enable the battery backpack.</li>
<li>Upload again to see that now you have to use the reset button since unplugging the USB cable no longer removes power.</li>
</ol>
</li>
</ol>
</p>
</SECTION>
<SECTION ID="Section_5">
<H3>Coding/Uploading appropriate code</H3>
<p>
<ol>Kelly found that the example code in the software servo library works reasonably for the Micro Rover, thus:
<li>Once again load the Arduino IDE and choose Sketch->Include Library->Manage Libraries...</li>
<li>In the "Filter your search ..." field type softservo</li>
<li>Click on "More info" once.</li>
<li>Click on "Install".</li>
<li>Alternatively you may follow the library installation instructions discussed <a href="https://learn.adafruit.com/trinket-gemma-servo-control?view=all#code">here</a> or download and install it as a <a href="https://github.com/adafruit/Adafruit_SoftServo/archive/master.zip">.zip</a>.</li>
<li>Once it is installed, choose File->Examples->Adafruit SoftServo->Trinket Knob</li>
<img src="https://raw.githubusercontent.com/six0four/MicroRover/master/images/5.trinketknob.jpg">
<li>Choose verify and then press the reset button on your trinket and then quickly click upload such that it completes in your 5 second window.</li>
<li>To understand and tweak the code, discuss with your colleagues.</li>
<li>The repository has the <a href="https://github.com/six0four/MicroRover/blob/master/firmware/MicroRoverRev04.ino">code running on the prototype</a>.</li>
<li>For some programming insight, Brandeen has <a href="https://www.youtube.com/user/qmy5728/videos">youtube videos</a> including <a href="https://www.youtube.com/watch?v=ZRyeWW2j3N8">one describing a while loop</a> similar to our loop where we could consider driving forward looking for an object "Say Hello" and reversing and turning away from it "Say Goodbye".</li>
</ol>
</p>
<h3>I look forward to you sharing your improved code!</h3>
<p>
<ul>
<li>Congratulations on completing this workshop!</li>
</ul>
</p>
</SECTION>
<SECTION ID="Section_06">
<H3>Micro Rover Project Repository</H3>
<p>
<ol>
<li>Please visit the <a href="https://github.com/six0four/MicroRover">Micro Rover Repository</a> for additional files that were used during the development of this workshop.</li>
<li>Additional technologies that you can learn on this platform are listed here: <a href="https://github.com/six0four/MicroRover#4-future-development">future development</a></li>
<li>I do plan to eventually post electronic diagrams of the bread-boarded prototype following:
<a href="https://wiki.creativecommons.org/wiki/Best_practices_for_attribution#This_is_an_ideal_attribution">
https://wiki.creativecommons.org/wiki/Best_practices_for_attribution#This_is_an_ideal_attribution</a> and using
"Breadboard view graphics" http://fritzing.org/faq/ by Fritzing are licensed under CC BY SA 3.0
http://creativecommons.org/licenses/by-sa/3.0/</li>
</ol>
</p>
</SECTION>
<SECTION ID="Section_101">
<H3>Winter 2017 CENG Projects</H3>
<p>
<ol>
<li>Tuesday's Projects:
<ol>
<li><a href="https://bigbosstony.github.io/">1AmbientComputing</a></li>
<li><a href="https://eugenehasjeans.github.io/">1Breathalyzer</a></li>
<li><a href="https://saadq12.github.io/">1Industry4.0</a></li>
<li><a href="https://irwintr.github.io/">1Monitoring</a></li>
<li><a href="https://masoud647.github.io/">1PartsCrib</a>, <a href="http://munro.humber.ca/~n01040349/">site</a></li>
<li><a href="https://github.com/hennok129/RoboticArm">1RoboticArm</a></li>
<li><a href="http://github.com/Libs1/SoftwareControlledDrone.github.io/">1SoftwareControlledDrone</a></li>
<li><a href="https://willcodyanderson.github.io/">1SpeechBuddy</a></li>
<li><a href="https://semjerome.github.io/">1Telematics</a>, <a href="http://autaccreport.com/wordpresstest">site</a></li>
</ol>
</li>
<li>Friday's Projects:
<ol>
<li><a href="https://khemar1.github.io">2AutoVehicle</a>, <a href="http://munro.humber.ca/~n00994056/">site</a></li>
<li><a href="https://StudentEng2016.github.io">2FarmBot</a></li>
<li><a href="https://mndk0076.github.io/">2LabFlow</a>, <a href="http://munro.humber.ca/~jhtg0006/bin/">site</a></li>
<li><a href="https://github.com/DanChugani">2Octoprint</a></li>
<li><a href="https://pwestman.github.io">2SmartHive</a></li>
<li><a href="https://steve-spiteri.github.io/">2Solar</a></li>
<li><a href="https://n01074838.github.io">2Wireless</a></li>
</ol>
</li>
</ol>
</p>
</SECTION>
<SECTION ID="Section_31">
<H3>Past CENG Projects</H3>
<p>
<ul>
<li><a href="http://munro.humber.ca/~mdrk0011/projects/">http://munro.humber.ca/~mdrk0011/projects/</a></li>
<li><a href="https://github.com/JDHumphries/Delta-Laser-App">Delta-Laser-App</a></li>
<li><a href="https://github.com/d-mariano/DeltaControl">DeltaControl</a></li>
<li><a href="https://github.com/d-mariano/DeltaLaser">DeltaLaser</a></li>
<li><a href="https://github.com/HunterIT/APMRabbit">APMRabbit</a></li>
<li><a href="https://github.com/sanvirbains/Computer-Systems-Project--CENG604">sanvirbains</a></li>
<li><a href="https://github.com/Himangi27">Himangi27</a></li>
<li><a href="https://github.com/pmjonesg/FaceTracker">FaceTracker</a></li>
<li><a href="https://github.com/dsmithhayes/Groovuino">Groovuino</a></li>
<li><a href="https://github.com/kirolous/Octofarm">Octofarm</a></li>
<li><a href="https://github.com/Beesham/NoWires">NoWires</a></li>
<li><a href="https://github.com/joshua03v/NoWires">NoWires</a></li>
<li><a href="https://github.com/Archangel7/Micro-Mouse">Micro-Mouse</a></li>
<li><a href="https://github.com/Ryz5/Micro-Mouse">Micro-Mouse</a></li>
<li><a href="https://github.com/gfabian777/Nano-Mouse">Nano-Mouse</a></li>
<li><a href="https://github.com/Rick-Clapham/Drone-Flight-Controller">Drone-Flight-Controller</a></li>
<li><a href="https://github.com/dkonieczek/micro-drone-flight-control">micro-drone-flight-control</a></li>
<li><a href="https://github.com/rmahenthiran/Micro-Drone-Flight-Control">Micro-Drone-Flight-Control</a></li>
<li><a href="https://github.com/nspendik22/Hubsan-Flight-Control">Hubsan-Flight-Control</a></li>
<li><a href="https://github.com/Seenanfb/Solar-Panel-Interactive-Box">Solar-Panel-Interactive-Box</a></li>
</ul>
</p>
</SECTION>
</ARTICLE>