├── 02sensors ├── Adafruit Xbee Adapter v1.1.fzpz ├── Adafruit Xbee Adapter v1.1.txt ├── BB-W1-00A0.dts ├── GPS.fzz ├── GPS.js ├── GPS_bb.png ├── analogIn.fzz ├── analogIn.js ├── analogIn_bb.png ├── audio.asoundrc ├── audio.js ├── audioDongle.jpg ├── audioDongle.txt ├── bone_eqep2b.dts ├── cape-headers-analog.png ├── cape-headers-i2c.png ├── cape-headers-serial.png ├── cape-headers.png ├── cloud9-bash-tab.png ├── encoder.js ├── flexResistor.fzz ├── flexResistor_bb.png ├── hc-sr04-ultraSonic.fzz ├── hc-sr04-ultraSonic.js ├── hc-sr04-ultraSonic_bb.png ├── hc-sr04.jpg ├── i2c-scan.js ├── i2c-test.js ├── i2cTemp.fzz ├── i2cTemp.js ├── i2cTemp.js.old ├── i2cTemp_bb.png ├── onewire.fzz ├── onewire.js ├── onewire_bb.png ├── onewire_setup.sh ├── pot.fzz ├── pot_schem.png ├── pushbutton.fzz ├── pushbutton.js ├── pushbutton2.js ├── pushbuttonPullup.fzz ├── pushbuttonPullup.js ├── pushbuttonPullup_bb.png ├── pushbutton_bb.png ├── pushbutton_digitalRead.js ├── rotaryEncoder.fzz ├── rotaryEncoder.js ├── rotaryEncoder.js.orig ├── rotaryEncoder_bb.png ├── sensorTag.jpg ├── sensorTag.js ├── stop.js ├── testHC-SR04.js ├── testSerial-2014-04-11.zip ├── ultrasonicRange.fzz ├── ultrasonicRange.js └── ultrasonicRange_bb.png ├── 03displays ├── LEDstring.fzz ├── LEDstring_bb.png ├── P8P9.fzz ├── P8P9_bb.png ├── cape-headers-pwm.png ├── externLED.fzz ├── externLED.js ├── externLED_bb.png ├── fadeLED.js ├── i2cMatrix.fzz ├── i2cMatrixLevelTrans.fzz ├── i2cMatrixLevelTrans_bb.png ├── i2cMatrixOLD.fzz ├── i2cMatrix_bb.png ├── internLED.js ├── internLED.png ├── matrix16x24.fzz ├── matrix16x24_bb.png ├── matrixLEDi2c.js ├── neoPixel.fzz ├── neoPixel.sh ├── neoPixelMatrix.fzz ├── neoPixelMatrix_bb.png ├── neoPixel_bb.png ├── nokia5110.fzz ├── nokia5110.js ├── nokia5110Test.js ├── nokia5110_bb.png ├── powerSwitch.fzz ├── powerSwitch_bb.png ├── speak.js ├── ws2801.fzz └── ws2801_bb.png ├── 04motors ├── H-bridge.ms13 ├── H-bridge.png ├── bipolarStepperMotor.fzz ├── bipolarStepperMotor.js ├── bipolarStepperMotor_bb.png ├── dcMotor.fzz ├── dcMotor.js ├── dcMotor_bb.png ├── h-bridgeMotor.fzz ├── h-bridgeMotor.js ├── h-bridgeMotor5V.fzz ├── h-bridgeMotor5V_bb.png ├── h-bridgeMotorExternal.fzz ├── h-bridgeMotorExternal_bb.png ├── h-bridgeMotorOLD.fzz ├── h-bridgeMotor_bb.png ├── ring.js ├── servoBird.js ├── servoMotor.fzz ├── servoMotor.js ├── servoMotor5V.fzz ├── servoMotor5V_bb.png ├── servoMotor_bb.png ├── servoSense.js ├── stepExternalSupply.fzz ├── stepExternalSupply_bb.png ├── stop.js ├── unipolarStepperMotor.diff ├── unipolarStepperMotor.fzz ├── unipolarStepperMotor.js └── unipolarStepperMotor_bb.png ├── 05beyond ├── FTDIPins.png ├── FTDIcable.jpg ├── FTDIconnector.jpg ├── blinkLED.c ├── blinkLED.py ├── cape-headers-digital.png ├── gedit.png ├── hdmiConverter.jpg ├── ipMasquerade.sh ├── leafpad.png ├── nano.png ├── npm.png ├── setDNS.sh ├── vi.png ├── vnc1.png ├── vnc2.png ├── vnc3.png ├── wicd.png ├── wicdConfig.png ├── wicdConnected.png ├── wicdPassword.png ├── wicdPrefs.png └── wicdSecure.png ├── 06iot ├── GPIOWebPage.png ├── GPIOserver.js ├── apacheIndex.png ├── apacheNoFiles.png ├── apacheTest.png ├── bone-usr3-led.png ├── flotDemo.html ├── flotDemo.js ├── flotDemo.png ├── jQueryDemo.html ├── jQueryDemo.js ├── jQueryFiddle.png ├── jQueryInstall.sh ├── jsfiddleFrameworks.png ├── launchPad.fzz ├── launchPad.js ├── launchPad │ └── launchPad.ino ├── launchPad_bb.png ├── node-disc-out-setup.png ├── node-disc-out.png ├── node-red.png ├── node-twitter-auth.png ├── node-twitter-auth2.png ├── node-twitter-auth3.png ├── node-twitter-beagle.png ├── node-twitter-debug.png ├── node-twitter.png ├── nodeServer.png ├── nodeTest.png ├── nodemailer-install.sh ├── nodemailer-test.js ├── processingDemo.html ├── processingDemo.js ├── server.js ├── test.html ├── twilio-test.js ├── twitterInstall.sh ├── twitterKeys.js ├── twitterPushbutton.js ├── twitterSearch.js ├── twitterStream.js ├── twitterTimeLine.js ├── twitterUpload.js ├── weather.js ├── xbee.fzz ├── xbee.js └── xbee_bb.png ├── 07kernel ├── KernelConfig3.16.png ├── Makefile ├── Makefile.display ├── cape-headers-digitalGPIO7.png ├── hello.c ├── hello.patch └── helloWorld.c ├── 08realtime ├── pruSpeak.py ├── pushLED.c ├── pushLED.fzz ├── pushLED.js ├── pushLED_bb.png ├── pushLEDmmap.c ├── pushLEDmmap.fzz ├── pushLEDmmap.h ├── pushLEDmmap_bb.png ├── pushLEDpru.fzz ├── pushLEDpru_bb.png ├── thumb.patch └── xenomaiConfig.png ├── 09capes ├── BBB_GPS_Cape.fzz ├── BeagleBone_Black_Cape__7fab878f3c590bbf730a21__pcb__cc4cbffa099dd2076377e89426324f3b.svg ├── Boris128.jpg ├── EagleLicense.png ├── Fritzing_Inspector.png ├── Fritzing_layers.png ├── Google ChromeScreenSnapz160.png ├── Google ChromeScreenSnapz161.png ├── Google ChromeScreenSnapz162.png ├── Google ChromeScreenSnapz163.png ├── Google ChromeScreenSnapz164.png ├── Google ChromeScreenSnapz166.png ├── Google ChromeScreenSnapz167.png ├── Google ChromeScreenSnapz168.png ├── Google ChromeScreenSnapz169.png ├── Google ChromeScreenSnapz170.png ├── Google ChromeScreenSnapz171.png ├── Google ChromeScreenSnapz172.png ├── Google ChromeScreenSnapz173.png ├── Google ChromeScreenSnapz174.png ├── Google ChromeScreenSnapz175.png ├── LCD7Desktop.png ├── MiniDisplay-A1.jpg ├── beaglebone_cape_boardoutline.png ├── beaglebone_cape_boardoutline.svg ├── boneOutline.xml ├── circuithub_part_matching.png ├── circuithub_quote.png ├── convert-fritzing-to-eagle.sh ├── convert-fritzing-to-kicad.sh ├── eagle3.png ├── eagle7.png ├── fritzing1.png ├── fritzing2.png ├── fritzing3.png ├── fritzing4.png ├── miniDisplay_Cape_pcb.png ├── miniDisplay_Cape_schem.png ├── quickBot-cache-cache.lib ├── quickBot-eagle.sch ├── quickBot-eaglexml.sch ├── quickBot-schematic.json ├── quickBot-upverter.PNG ├── quickBot.fzz ├── quickBot.upv ├── quickBot5IR.fzz ├── quickBot_bb.png ├── quickBot_eaglexml.png ├── quickBot_fritzing_export.png ├── quickBot_gerbers.zip ├── quickBot_gerbers │ ├── quickBot_contour.gm1 │ ├── quickBot_copperBottom.gbl │ ├── quickBot_copperTop.gtl │ ├── quickBot_drill.txt │ ├── quickBot_etch_copper_bottom.pdf │ ├── quickBot_etch_copper_bottom_mirror.pdf │ ├── quickBot_etch_copper_top.pdf │ ├── quickBot_etch_copper_top_mirror.pdf │ ├── quickBot_etch_mask_bottom.pdf │ ├── quickBot_etch_mask_bottom_mirror.pdf │ ├── quickBot_etch_mask_top.pdf │ ├── quickBot_etch_mask_top_mirror.pdf │ ├── quickBot_etch_paste_mask_bottom.pdf │ ├── quickBot_etch_paste_mask_bottom_mirror.pdf │ ├── quickBot_etch_paste_mask_top.pdf │ ├── quickBot_etch_paste_mask_top_mirror.pdf │ ├── quickBot_etch_silk_bottom.pdf │ ├── quickBot_etch_silk_bottom_mirror.pdf │ ├── quickBot_etch_silk_top.pdf │ ├── quickBot_etch_silk_top_mirror.pdf │ ├── quickBot_maskBottom.gbs │ ├── quickBot_maskTop.gts │ ├── quickBot_pnp.txt │ ├── quickBot_silkBottom.gbo │ └── quickBot_silkTop.gto ├── quickBot_kicad.sch ├── quickBot_motor_kickback.JPG ├── quickBot_motor_test.js ├── quickBot_motor_test_cloud9.png ├── quickBot_motor_test_scope.JPG ├── quickBot_motors.jpg ├── quickBot_on_OSHPark.png ├── quickBot_oshpark_share.png ├── quickBot_pcb.JPG ├── quickBot_pcb.png ├── quickBot_play.fzz ├── quickBot_schem.png ├── quickBot_schemRaw.png ├── quickBot_schemZoom.png ├── roboCape.fzz ├── srm_cape_dimensions.png ├── stacking_headers.JPG └── urls.txt ├── README.md └── update.sh /02sensors/Adafruit Xbee Adapter v1.1.fzpz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/Adafruit Xbee Adapter v1.1.fzpz -------------------------------------------------------------------------------- /02sensors/Adafruit Xbee Adapter v1.1.txt: -------------------------------------------------------------------------------- 1 | http://arduino.isnot.tv/post/74785594543/fritzing-part-adafruit-xbee-adapter 2 | -------------------------------------------------------------------------------- /02sensors/BB-W1-00A0.dts: -------------------------------------------------------------------------------- 1 | /dts-v1/; 2 | /plugin/; 3 | 4 | / { 5 | compatible = "ti,beaglebone", "ti,beaglebone-black"; 6 | 7 | part-number = "BB-W1"; 8 | version = "00A0"; 9 | 10 | /* state the resources this cape uses */ 11 | exclusive-use = 12 | /* the pin header uses */ 13 | "P9.20", 14 | /* the hardware IP uses */ 15 | "gpio0_12"; 16 | 17 | fragment@0 { 18 | target = <&am33xx_pinmux>; 19 | __overlay__ { 20 | dallas_w1_pins: pinmux_dallas_w1_pins { 21 | pinctrl-single,pins = < 0x150 0x37 >; 22 | }; 23 | }; 24 | }; 25 | 26 | fragment@1 { 27 | target = <&ocp>; 28 | __overlay__ { 29 | onewire@0 { 30 | compatible = "w1-gpio"; 31 | pinctrl-names = "default"; 32 | pinctrl-0 = <&dallas_w1_pins>; 33 | status = "okay"; 34 | 35 | gpios = <&gpio1 2 0>; 36 | }; 37 | }; 38 | }; 39 | }; 40 | -------------------------------------------------------------------------------- /02sensors/GPS.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/GPS.fzz -------------------------------------------------------------------------------- /02sensors/GPS.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // Install with: npm install nmea 3 | 4 | // Need to add exports.serialParsers = m.module.parsers; 5 | // to the end of /usr/local/lib/node_modules/bonescript/serial.js 6 | 7 | var b = require('bonescript'); 8 | var nmea = require('nmea'); 9 | 10 | var port = '/dev/ttyO4'; 11 | var options = { 12 | baudrate: 9600, 13 | parser: b.serialParsers.readline("\n") 14 | }; 15 | 16 | b.serialOpen(port, options, onSerial); 17 | 18 | function onSerial(x) { 19 | if (x.err) { 20 | console.log('***ERROR*** ' + JSON.stringify(x)); 21 | } 22 | if (x.event == 'open') { 23 | console.log('***OPENED***'); 24 | } 25 | if (x.event == 'data') { 26 | console.log(String(x.data)); 27 | console.log(nmea.parse(x.data)); 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /02sensors/GPS_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/GPS_bb.png -------------------------------------------------------------------------------- /02sensors/analogIn.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/analogIn.fzz -------------------------------------------------------------------------------- /02sensors/analogIn.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | var b = require('bonescript'); 3 | 4 | b.analogRead('P9_36', printStatus); 5 | 6 | function printStatus(x) { 7 | console.log('x.value = ' + x.value.toFixed(3)); 8 | console.log('x.err = ' + x.err); 9 | } 10 | -------------------------------------------------------------------------------- /02sensors/analogIn_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/analogIn_bb.png -------------------------------------------------------------------------------- /02sensors/audio.asoundrc: -------------------------------------------------------------------------------- 1 | pcm.!default { 2 | type plug 3 | slave { 4 | pcm "hw:1,0" 5 | } 6 | } 7 | ctl.!default { 8 | type hw 9 | card 1 10 | } 11 | -------------------------------------------------------------------------------- /02sensors/audio.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/node 2 | // 'childprocess' help at: 3 | // http://nodejs.org/api/child_process.html\ 4 | // #child_process_child_process_spawn_command_args_options 5 | "use strict"; 6 | 7 | var b = require('bonescript'), 8 | spawn = require('child_process').spawn; 9 | 10 | var audioRate = 48000, 11 | bufferSize = 4800, 12 | format = "S16_LE"; // 16-bit signed, little endian 13 | 14 | var audioIn = spawn( 15 | "/usr/bin/arecord", 16 | [ 17 | "-c2", "-r"+audioRate, "-f"+format, "-traw", 18 | "--buffer-size="+bufferSize, "--period-size="+bufferSize, "-N" 19 | ] 20 | ); 21 | 22 | var audioOut = spawn( 23 | "/usr/bin/aplay", 24 | [ 25 | "-c2", "-r"+audioRate, "-f"+format, "-traw", 26 | "--buffer-size="+bufferSize, "--period-size="+bufferSize, "-N" 27 | ] 28 | ); 29 | 30 | audioIn.stdout.on('data', function(data) { 31 | audioOut.stdin.write(data); 32 | }); 33 | 34 | audioIn.on('close', function(code) { 35 | if(code !== 0) { 36 | console.log('arecord process exited with code: ' + code); 37 | audioOut.stdin.end(); 38 | } 39 | }) 40 | 41 | audioOut.on('close', function(code) { 42 | if(code !== 0) { 43 | console.log('aplay process exited with code: ' + code); 44 | } 45 | }) 46 | -------------------------------------------------------------------------------- /02sensors/audioDongle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/audioDongle.jpg -------------------------------------------------------------------------------- /02sensors/audioDongle.txt: -------------------------------------------------------------------------------- 1 | http://www.amazon.com/Syba-SD-CM-UAUD-Adapter-C-Media-Chipset/dp/B001MSS6CS 2 | -------------------------------------------------------------------------------- /02sensors/bone_eqep2b.dts: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2013 Nathaniel R. Lewis - http://nathanielrlewis.com/ 3 | * 4 | * This program is free software; you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License version 2 as 6 | * published by the Free Software Foundation. 7 | * 8 | * Enable eQEP2 on the Beaglebone White and Black 9 | * These pins don't conflict with the HDMI 10 | */ 11 | /dts-v1/; 12 | /plugin/; 13 | 14 | / { 15 | compatible = "ti,beaglebone", "ti,beaglebone-black"; 16 | 17 | /* identification */ 18 | part-number = "bone_eqep2"; 19 | version = "00A0"; 20 | 21 | fragment@0 { 22 | target = <&am33xx_pinmux>; 23 | __overlay__ { 24 | pinctrl_eqep2: pinctrl_eqep2_pins { 25 | pinctrl-single,pins = < 26 | 0x038 0x24 /* P8_16 = GPIO2_12 = EQEP2_index, MODE4 */ 27 | 0x03C 0x24 /* P8_15 = GPIO2_13 = EQEP2_strobe, MODE4 */ 28 | 0x030 0x34 /* P8_12 = GPIO2_10 = EQEP2A_in, MODE4 */ 29 | 0x034 0x34 /* P8_11 = GPIO2_11 = EQEP2B_in, MODE4 */ 30 | >; 31 | }; 32 | }; 33 | }; 34 | 35 | fragment@1 { 36 | target = <&epwmss2>; 37 | __overlay__ { 38 | status = "okay"; 39 | }; 40 | }; 41 | 42 | fragment@2 { 43 | target = <&eqep2>; 44 | __overlay__ { 45 | pinctrl-names = "default"; 46 | pinctrl-0 = <&pinctrl_eqep2>; 47 | count_mode = < 0 >; 48 | /* 0 - Quadrature mode, normal 90 phase offset cha & chb. 49 | 1 - Direction mode. cha input = clock, chb input = direction */ 50 | swap_inputs = < 0 >; /* Are chan A & chan B swapped? (0-no,1-yes) */ 51 | invert_qa = < 1 >; /* Should we invert the channel A input? */ 52 | invert_qb = < 1 >; /* Should we invert the channel B input? 53 | These are inverted because my encoder outputs drive transistors 54 | that pull down the pins */ 55 | invert_qi = < 0 >; /* Should we invert the index input? */ 56 | invert_qs = < 0 >; /* Should we invert the strobe input? */ 57 | 58 | status = "okay"; 59 | }; 60 | }; 61 | }; 62 | -------------------------------------------------------------------------------- /02sensors/cape-headers-analog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/cape-headers-analog.png -------------------------------------------------------------------------------- /02sensors/cape-headers-i2c.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/cape-headers-i2c.png -------------------------------------------------------------------------------- /02sensors/cape-headers-serial.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/cape-headers-serial.png -------------------------------------------------------------------------------- /02sensors/cape-headers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/cape-headers.png -------------------------------------------------------------------------------- /02sensors/cloud9-bash-tab.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/cloud9-bash-tab.png -------------------------------------------------------------------------------- /02sensors/encoder.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // Test this 3 | var b = require('bonescript'); 4 | var encoder = ''; 5 | 6 | function printStatus(x) { 7 | console.log('x.value = ' + x.value); 8 | console.log('x.err = ' + x.err); 9 | } 10 | 11 | function onEncoderReady(e) { 12 | if(e.event == 'return') { 13 | b.encoderRead(encoder, printStatus); 14 | } 15 | } 16 | 17 | b.encoderOpen(encoder, {}, onEncoderReady); 18 | -------------------------------------------------------------------------------- /02sensors/flexResistor.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/flexResistor.fzz -------------------------------------------------------------------------------- /02sensors/flexResistor_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/flexResistor_bb.png -------------------------------------------------------------------------------- /02sensors/hc-sr04-ultraSonic.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/hc-sr04-ultraSonic.fzz -------------------------------------------------------------------------------- /02sensors/hc-sr04-ultraSonic.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | // This is an example of reading HC-SR04 Ultrasonic Range Finder 4 | // This version measures from the fall of the Trigger pulse 5 | // to the end of the Echo pulse 6 | 7 | var b = require('bonescript'); 8 | 9 | var trigger = 'P9_16', // Pin to trigger the ultrasonic pulse 10 | echo = 'P9_41', // Pin to measure to pulse width related to the distance 11 | ms = 250; // Trigger period in ms 12 | 13 | var startTime, pulseTime; 14 | 15 | b.pinMode(echo, b.INPUT, 7, 'pulldown', 'fast', doAttach); 16 | function doAttach(x) { 17 | if(x.err) { 18 | console.log('x.err = ' + x.err); 19 | return; 20 | } 21 | // Call pingEnd when the pulse ends 22 | b.attachInterrupt(echo, true, b.FALLING, pingEnd); 23 | } 24 | 25 | b.pinMode(trigger, b.OUTPUT); 26 | 27 | b.digitalWrite(trigger, 1); // Unit triggers on a falling edge. 28 | // Set trigger to high so we call pull it low later 29 | 30 | // Pull the trigger low at a regular interval. 31 | setInterval(ping, ms); 32 | 33 | // Pull trigger low and start timing. 34 | function ping() { 35 | // console.log('ping'); 36 | b.digitalWrite(trigger, 0); 37 | startTime = process.hrtime(); 38 | } 39 | 40 | // Compute the total time and get ready to trigger again. 41 | function pingEnd(x) { 42 | if(x.attached) { 43 | console.log("Interrupt handler attached"); 44 | return; 45 | } 46 | if(startTime) { 47 | pulseTime = process.hrtime(startTime); 48 | b.digitalWrite(trigger, 1); 49 | console.log('pulseTime = ' + (pulseTime[1]/1000000-0.8).toFixed(3)); 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /02sensors/hc-sr04-ultraSonic_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/hc-sr04-ultraSonic_bb.png -------------------------------------------------------------------------------- /02sensors/hc-sr04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/hc-sr04.jpg -------------------------------------------------------------------------------- /02sensors/i2c-scan.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // Not working as for 28-Mar-2014 3 | var b = require('bonescript'); 4 | var port = '/dev/i2c-2' 5 | 6 | b.i2cOpen(port, null, {}, onI2C); 7 | 8 | function onI2C(x) { 9 | console.log('onI2C: ' + JSON.stringify(x)); 10 | if (x.event == 'return') { 11 | b.i2cScan(port, onScan); 12 | } 13 | } 14 | 15 | function onScan(x) { 16 | if (x.event == 'callback') { 17 | console.log('scan data: ' + JSON.stringify(x)); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /02sensors/i2c-test.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | # This uses the i2c method from npm what bonescript builds on 3 | var i2c = require('i2c'); 4 | var address = 0x49; 5 | var wire = new i2c(address, {device: '/dev/i2c-1', debug: false}); // point to your i2c address, debug provides REPL interface 6 | 7 | wire.scan(function(err, data) { 8 | // result contains an array of addresses 9 | console.log(data); 10 | }); 11 | 12 | // wire.writeByte(byte, function(err) {}); 13 | 14 | // wire.writeBytes(command, [byte0, byte1], function(err) {}); 15 | 16 | wire.readByte(function(err, res) { // result is single byte }) 17 | console.log(err); 18 | console.log(res); 19 | }); 20 | 21 | // wire.readBytes(command, length, function(err, res) { 22 | // // result contains a buffer of bytes 23 | // }); 24 | 25 | // wire.on('data', function(data) { 26 | // // result for continuous stream contains data buffer, address, length, timestamp 27 | // }); 28 | 29 | // wire.stream(command, length, delay); // continuous stream, delay in ms 30 | -------------------------------------------------------------------------------- /02sensors/i2cTemp.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/i2cTemp.fzz -------------------------------------------------------------------------------- /02sensors/i2cTemp.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | var b = require('bonescript'); 4 | var bus = '/dev/i2c-2' // <1> 5 | var TMP102 = 0x49; // <2> 6 | 7 | b.i2cOpen(bus, TMP102); // <3> 8 | b.i2cReadByte(bus, onReadByte); // <4> 9 | 10 | function onReadByte(x) { // <5> 11 | if (x.event == 'callback') { 12 | console.log('onReadByte: ' + JSON.stringify(x)); // <6> 13 | console.log(x.res*9/5+32 + 'F'); // <7> 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /02sensors/i2cTemp.js.old: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // Get this working. 3 | // Not working as for 28-Mar-2014 4 | // From 5 | // https://github.com/kelly/node-i2c 6 | // npm install -g i2c 7 | 8 | // To use the latest BoneScript: 9 | // cd /usr/local/lib/node_modules 10 | // rm -r bonescript 11 | // git clone git://github.com/jadonk/bonescript 12 | // cd bonescript 13 | // npm install 14 | 15 | var b = require('bonescript'); 16 | // var i2c = require('i2c'); 17 | var port = '/dev/i2c-2' 18 | var TMP102 = 0x49; 19 | 20 | // var wire = new i2c(TMP102, { 21 | // device: '/dev/i2c-1', 22 | // debug: true 23 | // }); // point to your i2c address, debug provides REPL interface 24 | 25 | b.i2cOpen(port, TMP102, {}, onI2C); 26 | 27 | function onI2C(x) { 28 | console.log(x); 29 | if (x.event == 'return') { 30 | b.i2cScan(port, onScan); 31 | } 32 | } 33 | 34 | function onScan(x) { 35 | console.log('scan: ' + JSON.stringify(x)); 36 | console.log('scan data: ' + x.data); 37 | b.i2cReadBytes(port, 0, 1, onReadByte); 38 | } 39 | 40 | function onReadByte(x) { 41 | console.log('onReadByte: ' + JSON.stringify(x)); 42 | console.log('res: ' + JSON.stringify(x.res)); 43 | } 44 | 45 | // wire.scan(function(err, data) { 46 | // console.log('scan:' + data); 47 | // console.log('err:' + err); 48 | // }); 49 | 50 | // wire.readByte(function(err, res) { 51 | // console.log('temp:' + data); 52 | // console.log('err:' + err); 53 | // }); 54 | -------------------------------------------------------------------------------- /02sensors/i2cTemp_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/i2cTemp_bb.png -------------------------------------------------------------------------------- /02sensors/onewire.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/onewire.fzz -------------------------------------------------------------------------------- /02sensors/onewire.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | var b = require('bonescript'); 3 | 4 | var w1="/sys/bus/w1/devices/28-00000114ef1b/w1_slave" 5 | 6 | setInterval(getTemp, 1000); // read temperatue every 1000ms 7 | 8 | function getTemp() { 9 | b.readTextFile(w1, printStatus); 10 | } 11 | 12 | function printStatus(x) { 13 | console.log('x.data = ' + x.data); 14 | console.log('x.err = ' + x.err); 15 | } 16 | -------------------------------------------------------------------------------- /02sensors/onewire_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/onewire_bb.png -------------------------------------------------------------------------------- /02sensors/onewire_setup.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # Compile it 3 | dtc -O dtb -o BB-W1-00A0.dtbo -b 0 -@ BB-W1-00A0.dts 4 | # Copy it 5 | cp BB-W1-00A0.dtbo /lib/firmware/ 6 | # Enable it: 7 | echo BB-W1 > /sys/devices/bone_capemgr.*/slots 8 | -------------------------------------------------------------------------------- /02sensors/pot.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/pot.fzz -------------------------------------------------------------------------------- /02sensors/pot_schem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/pot_schem.png -------------------------------------------------------------------------------- /02sensors/pushbutton.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/pushbutton.fzz -------------------------------------------------------------------------------- /02sensors/pushbutton.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | var b = require('bonescript'); 3 | var button = 'P9_42'; 4 | 5 | b.pinMode(button, b.INPUT, 7, 'pulldown', 'fast', doAttach); 6 | 7 | function doAttach(x) { 8 | if(x.err) { 9 | console.log('x.err = ' + x.err); 10 | return; 11 | } 12 | b.attachInterrupt(button, true, b.CHANGE, printStatus); 13 | } 14 | 15 | function printStatus(x) { 16 | if(x.attached) { 17 | console.log("Interrupt handler attached"); 18 | return; 19 | } 20 | console.log('x.value = ' + x.value); 21 | console.log('x.err = ' + x.err); 22 | } 23 | 24 | -------------------------------------------------------------------------------- /02sensors/pushbutton2.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | var b = require('bonescript'); 3 | var button = 'P9_42'; 4 | var state; // State of pushbutton 5 | 6 | b.pinMode(button, b.INPUT, 7, 'pulldown'); 7 | 8 | state = b.digitalRead(button); 9 | console.log('button state = ' + state); 10 | 11 | -------------------------------------------------------------------------------- /02sensors/pushbuttonPullup.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/pushbuttonPullup.fzz -------------------------------------------------------------------------------- /02sensors/pushbuttonPullup.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | var b = require('bonescript'); 3 | var buttonTop = 'P9_26'; 4 | 5 | b.pinMode(buttonTop, b.INPUT, 7, 'pullup', 'fast', doAttachTop); 6 | 7 | function doAttachTop(x) { 8 | if(x.err) { 9 | console.log('x.err = ' + x.err); 10 | return; 11 | } 12 | b.attachInterrupt(buttonTop, true, b.CHANGE, printStatus); 13 | } 14 | 15 | var buttonBot = 'P9_42'; 16 | b.pinMode(buttonBot, b.INPUT, 7, 'pulldown', 'fast', doAttachBot); 17 | 18 | function doAttachBot(x) { 19 | if(x.err) { 20 | console.log('x.err = ' + x.err); 21 | return; 22 | } 23 | b.attachInterrupt(buttonBot, true, b.CHANGE, printStatus); 24 | } 25 | 26 | function printStatus(x) { 27 | if(x.attached) { 28 | console.log("Interrupt handler attached"); 29 | return; 30 | } 31 | 32 | console.log('x.value = ' + x.value); 33 | console.log('x.err = ' + x.err); 34 | } 35 | -------------------------------------------------------------------------------- /02sensors/pushbuttonPullup_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/pushbuttonPullup_bb.png -------------------------------------------------------------------------------- /02sensors/pushbutton_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/pushbutton_bb.png -------------------------------------------------------------------------------- /02sensors/pushbutton_digitalRead.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | var b = require('bonescript'); 3 | var button = 'P9_42'; 4 | 5 | b.pinMode(button, b.INPUT, 7, 'pulldown'); 6 | b.digitalRead(button, printStatus); 7 | 8 | function printStatus(x) { 9 | console.log('x.value = ' + x.value); 10 | console.log('x.err = ' + x.err); 11 | } 12 | -------------------------------------------------------------------------------- /02sensors/rotaryEncoder.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/rotaryEncoder.fzz -------------------------------------------------------------------------------- /02sensors/rotaryEncoder.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // This uses the eQEP hardware to read a rotary encoder 3 | // echo bone_eqep2b > $SLOTS 4 | 5 | var b = require('bonescript'), 6 | fs = require('fs'); 7 | 8 | var eQEP0 = "/sys/devices/ocp.3/48300000.epwmss/48300180.eqep/", 9 | eQEP1 = "/sys/devices/ocp.3/48302000.epwmss/48302180.eqep/", 10 | eQEP2 = "/sys/devices/ocp.3/48304000.epwmss/48304180.eqep/", 11 | eQEP = eQEP2; 12 | 13 | var oldData, // pervious data read 14 | period = 100; // in ms 15 | 16 | // Set the eEQP period, convert to ns. 17 | fs.writeFile(eQEP+'period', period*1000000, function(err) { 18 | if (err) throw err; 19 | console.log('Period updated to ' + period*1000000); 20 | }) 21 | 22 | // Enable 23 | fs.writeFile(eQEP+'enabled', 1, function(err) { 24 | if (err) throw err; 25 | console.log('Enabled'); 26 | }) 27 | 28 | setInterval(readEncoder, period); // Check state every 250 ms 29 | 30 | function readEncoder(x) { 31 | fs.readFile(eQEP + 'position', {encoding: 'utf8'}, printValue); 32 | } 33 | 34 | function printValue(err, data) { 35 | if (err) throw err; 36 | if (oldData !== data) { 37 | console.log('position: '+data+' speed: '+(oldData-data)); 38 | oldData = data; 39 | } 40 | } -------------------------------------------------------------------------------- /02sensors/rotaryEncoder.js.orig: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // This reads a rotary encoder 3 | // The encoder has two outputs, A and B. Both are pulled normally high. 4 | // When turned clockwise, A is pulled low first, then B. 5 | // When turned counter clockwise, B is pulled low first. 6 | // Seems to make too many mistakes. 7 | 8 | var b = require('bonescript'); 9 | var pinA = 'P9_42', 10 | pinB = 'P9_41'; 11 | var sawA = false, 12 | sawB = false; 13 | 14 | b.pinMode(pinA, b.INPUT, 7, 'pullup'); 15 | b.pinMode(pinB, b.INPUT, 7, 'pullup'); 16 | 17 | b.attachInterrupt(pinA, true, b.RISING, interruptCallbackA1); 18 | b.attachInterrupt(pinB, true, b.RISING, interruptCallbackB1); 19 | console.log("Ready"); 20 | 21 | function interruptCallbackA1(x) { 22 | // console.log('A:', countA, x.value); 23 | if (parseInt(x.value, 10) === 0) { 24 | if (sawB) { 25 | sawB = false; 26 | console.log("Turned CCW"); 27 | } else { 28 | sawA = true; // A has been pulled low before B 29 | } 30 | } 31 | } 32 | 33 | function interruptCallbackB1(x) { 34 | // console.log('B:', countB, x.value); 35 | if (parseInt(x.value, 10) === 0) { 36 | if (sawA) { 37 | sawA = false; 38 | console.log("Turned CC"); 39 | } else { 40 | sawB = true; 41 | } 42 | } 43 | } -------------------------------------------------------------------------------- /02sensors/rotaryEncoder_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/rotaryEncoder_bb.png -------------------------------------------------------------------------------- /02sensors/sensorTag.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/sensorTag.jpg -------------------------------------------------------------------------------- /02sensors/sensorTag.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // From: https://github.com/sandeepmistry/node-sensortag 3 | 4 | // Reads temperature 5 | 6 | var util = require('util'); // <1> 7 | var async = require('async'); 8 | var SensorTag = require('sensortag'); 9 | var fs = require('fs'); 10 | 11 | console.log("Be sure sensorTag is on"); 12 | 13 | SensorTag.discover(function(sensorTag) { // <2> 14 | console.log('sensorTag = ' + sensorTag); 15 | sensorTag.on('disconnect', function() { // <3> 16 | console.log('disconnected!'); 17 | process.exit(0); 18 | }); 19 | 20 | async.series([ // <4> 21 | function(callback) { 22 | console.log('connect'); // <5> 23 | sensorTag.connect(callback); 24 | }, 25 | function(callback) { // <6> 26 | console.log('discoverServicesAndCharacteristics'); 27 | sensorTag.discoverServicesAndCharacteristics(callback); 28 | }, 29 | function(callback) { 30 | console.log('enableIrTemperature'); // <7> 31 | sensorTag.enableIrTemperature(callback); 32 | }, 33 | function(callback) { 34 | setTimeout(callback, 100); // <8> 35 | }, 36 | function(callback) { 37 | console.log('readIrTemperature'); // <9> 38 | sensorTag.readIrTemperature( 39 | function(objectTemperature, ambientTemperature) { 40 | console.log('\tobject temperature = %d °C', 41 | objectTemperature.toFixed(1)); 42 | console.log('\tambient temperature = %d °C', 43 | ambientTemperature.toFixed(1)); 44 | callback(); 45 | }); 46 | 47 | sensorTag.on('irTemperatureChange', // <10> 48 | function(objectTemperature, ambientTemperature) { 49 | console.log('\tobject temperature = %d °C', 50 | objectTemperature.toFixed(1)); 51 | console.log('\tambient temperature = %d °C\n', 52 | ambientTemperature.toFixed(1)); 53 | }); 54 | 55 | sensorTag.notifyIrTemperature(function() { 56 | console.log('notifyIrTemperature'); 57 | }); 58 | }, 59 | // function(callback) { 60 | // console.log('disableIrTemperature'); // <11> 61 | // sensorTag.disableIrTemperature(callback); 62 | // }, 63 | 64 | function(callback) { 65 | console.log('readSimpleRead'); // <12> 66 | sensorTag.on('simpleKeyChange', function(left, right) { 67 | console.log('left: ' + left + ' right: ' + right); 68 | if (left && right) { 69 | sensorTag.notifySimpleKey(callback); // <13> 70 | } 71 | }); 72 | 73 | sensorTag.notifySimpleKey(function() { // <14> 74 | }); 75 | }, 76 | function(callback) { 77 | console.log('disconnect'); 78 | sensorTag.disconnect(callback); // <15> 79 | } 80 | ] 81 | ); 82 | }); 83 | 84 | // The MIT License (MIT) 85 | 86 | // Copyright (c) 2013 Sandeep Mistry 87 | 88 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 89 | // this software and associated documentation files (the "Software"), to deal in 90 | // the Software without restriction, including without limitation the rights to 91 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 92 | // the Software, and to permit persons to whom the Software is furnished to do so, 93 | // subject to the following conditions: 94 | 95 | // The above copyright notice and this permission notice shall be included in all 96 | // copies or substantial portions of the Software. 97 | 98 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 99 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 100 | // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 101 | // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 102 | // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 103 | // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 104 | -------------------------------------------------------------------------------- /02sensors/stop.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // Used for turning everything off. 3 | var b = require('bonescript'); 4 | var gpio = ['P9_11', 'P9_13', 'P9_15', 'P9_16', 'P9_21']; 5 | var i; 6 | 7 | for(i=0; i max || speed < min) { 27 | // step *= -1; 28 | // } 29 | // b.analogWrite(motor, speed); 30 | // console.log('speed = ' + speed); 31 | // } 32 | 33 | process.on('SIGINT', function() { 34 | console.log('Got SIGINT, turning motor off'); 35 | clearInterval(timer); // Stop the timer 36 | b.analogWrite(motor, 0); // Turn motor off 37 | }); -------------------------------------------------------------------------------- /02sensors/testSerial-2014-04-11.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/testSerial-2014-04-11.zip -------------------------------------------------------------------------------- /02sensors/ultrasonicRange.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/ultrasonicRange.fzz -------------------------------------------------------------------------------- /02sensors/ultrasonicRange.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | var b = require('bonescript'); 3 | var ms = 250; // Time in milliseconds 4 | 5 | setInterval(readRange, ms); 6 | 7 | function readRange() { 8 | b.analogRead('P9_33', printStatus); 9 | } 10 | function printStatus(x) { 11 | console.log('x.value = ' + x.value); 12 | console.log('Distance= ' + x.value * 1.8/0.0064); 13 | } 14 | -------------------------------------------------------------------------------- /02sensors/ultrasonicRange_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/02sensors/ultrasonicRange_bb.png -------------------------------------------------------------------------------- /03displays/LEDstring.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/LEDstring.fzz -------------------------------------------------------------------------------- /03displays/LEDstring_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/LEDstring_bb.png -------------------------------------------------------------------------------- /03displays/P8P9.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/P8P9.fzz -------------------------------------------------------------------------------- /03displays/P8P9_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/P8P9_bb.png -------------------------------------------------------------------------------- /03displays/cape-headers-pwm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/cape-headers-pwm.png -------------------------------------------------------------------------------- /03displays/externLED.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/externLED.fzz -------------------------------------------------------------------------------- /03displays/externLED.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | var b = require('bonescript'); 3 | var LED = 'P9_14'; 4 | var state = b.HIGH; // Initial state 5 | b.pinMode(LED, b.OUTPUT); 6 | 7 | setInterval(flash, 250); // Change state every 250 ms 8 | 9 | function flash() { 10 | b.digitalWrite(LED, state); 11 | if(state === b.HIGH) { 12 | state = b.LOW; 13 | } else { 14 | state = b.HIGH; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /03displays/externLED_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/externLED_bb.png -------------------------------------------------------------------------------- /03displays/fadeLED.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | var b = require('bonescript'); 3 | var LED = 'P9_14'; // Pin to use 4 | var step = 0.02, // Step size 5 | min = 0.02, // dimmest value 6 | max = 1, // brightest value 7 | brightness = min; // Current brightness; 8 | 9 | b.pinMode(LED, b.ANALOG_OUTPUT, 6, 0, 0, doInterval); 10 | 11 | function doInterval(x) { 12 | if(x.err) { 13 | console.log('x.err = ' + x.err); 14 | return; 15 | } 16 | setInterval(fade, 20); // Step every 20 ms 17 | } 18 | 19 | function fade() { 20 | b.analogWrite(LED, brightness); 21 | brightness += step; 22 | if(brightness >= max || brightness <= min) { 23 | step = -1 * step; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /03displays/i2cMatrix.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/i2cMatrix.fzz -------------------------------------------------------------------------------- /03displays/i2cMatrixLevelTrans.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/i2cMatrixLevelTrans.fzz -------------------------------------------------------------------------------- /03displays/i2cMatrixLevelTrans_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/i2cMatrixLevelTrans_bb.png -------------------------------------------------------------------------------- /03displays/i2cMatrixOLD.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/i2cMatrixOLD.fzz -------------------------------------------------------------------------------- /03displays/i2cMatrix_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/i2cMatrix_bb.png -------------------------------------------------------------------------------- /03displays/internLED.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | var b = require('bonescript'); 3 | var LED = 'USR0'; 4 | var state = b.HIGH; // Initial state 5 | b.pinMode(LED, b.OUTPUT); 6 | 7 | setInterval(flash, 250); // Change state every 250 ms 8 | 9 | function flash() { 10 | b.digitalWrite(LED, state); 11 | if(state === b.HIGH) { 12 | state = b.LOW; 13 | } else { 14 | state = b.HIGH; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /03displays/internLED.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/internLED.png -------------------------------------------------------------------------------- /03displays/matrix16x24.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/matrix16x24.fzz -------------------------------------------------------------------------------- /03displays/matrix16x24_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/matrix16x24_bb.png -------------------------------------------------------------------------------- /03displays/matrixLEDi2c.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // npm install -g sleep 3 | 4 | var b = require('bonescript'); 5 | var sleep = require('sleep'); 6 | var port = '/dev/i2c-2' // <1> 7 | var matrix = 0x70; // <2> 8 | var time = 1000000; // Delay between images in us 9 | 10 | // The first btye is GREEN, the second is RED. <3> 11 | var smile = 12 | [0x00, 0x3c, 0x00, 0x42, 0x28, 0x89, 0x04, 0x85, 13 | 0x04, 0x85, 0x28, 0x89, 0x00, 0x42, 0x00, 0x3c]; 14 | var frown = 15 | [0x3c, 0x00, 0x42, 0x00, 0x85, 0x20, 0x89, 0x00, 16 | 0x89, 0x00, 0x85, 0x20, 0x42, 0x00, 0x3c, 0x00]; 17 | var neutral = 18 | [0x3c, 0x3c, 0x42, 0x42, 0xa9, 0xa9, 0x89, 0x89, 19 | 0x89, 0x89, 0xa9, 0xa9, 0x42, 0x42, 0x3c, 0x3c]; 20 | var blank = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]; 21 | 22 | b.i2cOpen(port, matrix); // <4> 23 | 24 | b.i2cWriteByte(port, 0x21); // Start oscillator (p10) <5> 25 | b.i2cWriteByte(port, 0x81); // Disp on, blink off (p11) 26 | b.i2cWriteByte(port, 0xe7); // Full brightness (page 15) 27 | 28 | b.i2cWriteBytes(port, 0x00, frown); // <6> 29 | sleep.usleep(time); 30 | 31 | b.i2cWriteBytes(port, 0x00, neutral); 32 | sleep.usleep(time); 33 | 34 | b.i2cWriteBytes(port, 0x00, smile); 35 | // Fade the display 36 | var fade; 37 | for(fade = 0xef; fade >= 0xe0; fade--) { // <7> 38 | b.i2cWriteByte(port, fade); 39 | sleep.usleep(time/10); 40 | } 41 | for(fade = 0xe1; fade <= 0xef; fade++) { 42 | b.i2cWriteByte(port, fade); 43 | sleep.usleep(time/10); 44 | } 45 | b.i2cWriteBytes(port, 0x04, [0xff]); -------------------------------------------------------------------------------- /03displays/neoPixel.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/neoPixel.fzz -------------------------------------------------------------------------------- /03displays/neoPixel.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | # Here's what you do to install the neoPixel driver 3 | # Disable the HDMI to gain access to the PRU pins 4 | sed -i '/cape_disable=capemgr.disable_partno=BB-BONELT-HDMI,BB-BONELT-HDMIN$/ \ 5 | s/^#//' /boot/uEnv.txt 6 | reboot 7 | # Clone and build the code 8 | cd 9 | git clone -b opc-server https://github.com/jadonk/LEDscape.git 10 | cd LEDscape 11 | make 12 | cd 13 | git clone https://github.com/jadonk/openpixelcontrol.git 14 | # Load and configure the kernel module, pins and LEDscape daemon 15 | config-pin overlay BB-OPC-EX 16 | modprobe uio_pruss 17 | ./LEDscape/run-ledscape & 18 | # Run an example Python script 19 | ./openpixelcontrol/python_clients/example.py 20 | -------------------------------------------------------------------------------- /03displays/neoPixelMatrix.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/neoPixelMatrix.fzz -------------------------------------------------------------------------------- /03displays/neoPixelMatrix_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/neoPixelMatrix_bb.png -------------------------------------------------------------------------------- /03displays/neoPixel_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/neoPixel_bb.png -------------------------------------------------------------------------------- /03displays/nokia5110.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/nokia5110.fzz -------------------------------------------------------------------------------- /03displays/nokia5110.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // 3 | // Copyright (C) 2012 - Cabin Programs, Ken Keller 4 | // 5 | 6 | var lcd = require('nokia5110'); 7 | var b = require('bonescript'); 8 | var timeout = 0; 9 | var inverseIndex; 10 | 11 | // 12 | // Must define the following outputs 13 | // 14 | lcd.PIN_SDIN = "P9_17"; 15 | lcd.PIN_SCLK = "P9_21"; 16 | lcd.PIN_SCE = "P9_11"; 17 | lcd.PIN_DC = "P9_15"; 18 | lcd.PIN_RESET= "P9_13"; -------------------------------------------------------------------------------- /03displays/nokia5110Test.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // 3 | // Copyright (C) 2012 - Cabin Programs, Ken Keller 4 | // 5 | 6 | var lcd = require('nokia5110'); 7 | var b = require('bonescript'); 8 | var timeout = 0; 9 | var inverseIndex; 10 | 11 | // 12 | // Must define the following outputs to use LCD_5110.js 13 | // 14 | lcd.PIN_SDIN = "P9_17"; 15 | lcd.PIN_SCLK = "P9_21"; 16 | lcd.PIN_SCE = "P9_11"; 17 | lcd.PIN_DC = "P9_15"; 18 | lcd.PIN_RESET= "P9_13"; 19 | 20 | lcd.setup(); 21 | setTimeout(loop, 0); 22 | // loop(); 23 | 24 | function loop() { 25 | // test bitmap write 26 | console.log("test bitmap write"); 27 | // lcd.clear(); 28 | lcd.gotoXY(0, 0); 29 | lcd.bitmap(beagle); 30 | 31 | inverseIndex = 0; 32 | setTimeout(loop0, 1000*timeout); 33 | } 34 | 35 | function loop0() { 36 | // test inverse video 37 | console.log("test inverse video"); 38 | if(inverseIndex % 2) { 39 | lcd.inverse(lcd.LCD_INVERSE); 40 | } else { 41 | lcd.inverse(lcd.LCD_NORMAL); 42 | } 43 | 44 | inverseIndex++; 45 | 46 | if(inverseIndex < 19) { 47 | setTimeout(loop0, 50*timeout); 48 | } else { 49 | setTimeout(loop1, 50*timeout); 50 | } 51 | } 52 | 53 | function loop1() { 54 | // test normal character write 55 | console.log("test normal character write"); 56 | // lcd.clear(); 57 | lcd.gotoXY(0, 0); 58 | for ( index = 0x41 ; index < 0x7b ; index++) 59 | lcd.character(String.fromCharCode(index)); 60 | 61 | setTimeout(loop2, 2000*timeout); 62 | } 63 | 64 | function loop2() { 65 | // test bitmap and string write 66 | console.log("test bitmap and string write"); 67 | // lcd.clear(); 68 | lcd.gotoXY(0, 0); 69 | lcd.bitmap(world_map); 70 | 71 | setTimeout(loop3, 1000*timeout); 72 | } 73 | 74 | function loop3() { 75 | var index; 76 | 77 | for (index=0; index<5; index++) 78 | { 79 | lcd.gotoXY(0, 3); 80 | lcd.string('HELLO WORLD!'); 81 | lcd.gotoXY(0, 3); 82 | lcd.string('hello world!'); 83 | } 84 | 85 | setTimeout(loop4, 0); 86 | } 87 | 88 | function loop4() { 89 | var index; 90 | 91 | // test solid block character 92 | console.log("test solid block character"); 93 | // lcd.clear(); 94 | lcd.gotoXY(0, 0); 95 | for ( index = 0 ; index < 72 ; index++) 96 | lcd.character(String.fromCharCode(0x7f)); 97 | 98 | // Scrolling text test 99 | console.log("Scrolling text test"); 100 | // lcd.clear(); 101 | var theTEXT = "Scroll text..."; 102 | var numScrolls = lcd.scrollLength(theTEXT) * 2; 103 | 104 | lcd.scrollInit(3); 105 | for (index=0; index=0; index-=2) 127 | lcd.progressBar(2,index); 128 | 129 | lcd.progressInit(2); 130 | for (index=100; index>=0; index-=6) 131 | lcd.progressBar(2,index); 132 | 133 | if(timeout) setTimeout(loop, 2000); 134 | } 135 | 136 | var beagle = [ 137 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 138 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x70, 0xF8, 0xFC, 139 | 0x9C, 0x0C, 0x07, 0x07, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x07, 0x06, 0x0C, 140 | 0x1C, 0x18, 0x30, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 141 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 142 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 143 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x70, 0x1E, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 144 | 0x00, 0x00, 0x00, 0x00, 0x03, 0x7F, 0xF8, 0xE0, 0x00, 0x00, 0xE0, 0xB0, 0x90, 0xF0, 0xE0, 0xE0, 145 | 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x6D, 0x6D, 0x77, 0xFF, 0xEE, 0xF8, 0xC0, 0x00, 146 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 147 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 148 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xE0, 0x38, 0x1E, 0x0F, 0x01, 0x00, 0x00, 0x00, 0x00, 149 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x3F, 0xFF, 0xF8, 0x81, 0x02, 150 | 0x02, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 151 | 0x00, 0x03, 0x03, 0x02, 0x02, 0x06, 0x06, 0x84, 0xCC, 0x9C, 0xF8, 0x70, 0x70, 0x60, 0xC0, 0xC0, 152 | 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 153 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0, 0xFE, 0xF7, 0x00, 0x00, 0x00, 0x00, 0x00, 154 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 155 | 0x00, 0x07, 0x1F, 0xFC, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 156 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1F, 0x7F, 0x78, 0xF8, 0xFC, 0xFC, 157 | 0xFE, 0xFE, 0x7E, 0x7F, 0x7F, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 158 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x3F, 0xFF, 0xC0, 159 | 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 160 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xFF, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 161 | 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xE0, 0xE0, 0x60, 162 | 0x20, 0x30, 0x30, 0xD0, 0x98, 0x08, 0x1C, 0x3E, 0x63, 0xC1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 163 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 164 | 0x00, 0xE0, 0x30, 0x31, 0x33, 0xF7, 0xEF, 0x0E, 0x0C, 0x1C, 0x38, 0xF8, 0xF8, 0x18, 0x18, 0x18, 165 | 0x18, 0x18, 0x18, 0x18, 0x1C, 0x1C, 0x0E, 0x0E, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00, 0x10, 0x10, 166 | 0x30, 0x30, 0x60, 0x60, 0x60, 0x60, 0x40, 0x45, 0x43, 0x43, 0x47, 0x47, 0x7F, 0x7F, 0xFF, 0xFF, 167 | 0x0F, 0x0F, 0x0F, 0x0E, 0x1D, 0x38, 0x30, 0x30, 0x21, 0x23, 0x24, 0x24, 0x38, 0x0F, 0x00, 0x00, 168 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 169 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xFA, 0xF0, 0xE0, 0x8F, 0x3F, 0x7E, 0xD8, 0x30, 0xF0, 0xFF, 170 | 0xFF, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 171 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0xC0, 0x00, 172 | 0x00, 0x02, 0x06, 0xFF, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 173 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 174 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x0F, 0x3F, 0xFC, 0xF0, 175 | 0xE0, 0x01, 0x03, 0x03, 0x01, 0x00, 0x00, 0x00, 0x1F, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 176 | 0xF0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xF0, 0x00, 0x00, 0x00, 0x00, 177 | 0x70, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 178 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 179 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 180 | 0x00, 0x00, 0x00, 0x01, 0x03, 0x87, 0xFE, 0x7C, 0x60, 0x00, 0x00, 0x00, 0xC0, 0xFF, 0x3F, 0x00, 181 | 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0x0F, 182 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x3F, 0xFE, 0x00, 0x00, 0x3C, 0x7F, 0xFF, 0xE0, 0xC0, 0x80, 183 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 184 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 185 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0x3F, 0xFF, 0xE1, 0xC0, 0xC0, 0x80, 0xE0, 0x78, 0x0E, 186 | 0x03, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xDF, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 187 | 0x70, 0xF1, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0D, 0x30, 0xE0, 0x80, 0x80, 188 | 0x80, 0x81, 0xFF, 0xFF, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 189 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 190 | 0x20, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0xC0, 0x20, 0x20, 0x00, 191 | 0xF7, 0x5E, 0x5E, 0x0C, 0xEC, 0x8C, 0x84, 0x0E, 0xBE, 0x9E, 0x9F, 0x0F, 0x87, 0x91, 0x80, 0x00, 192 | 0x90, 0x90 ]; 193 | 194 | var world_map = [ 195 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 196 | 0x00, 0x00, 0x80, 0x00, 0x60, 0xC0, 0xF0, 0xDC, 0x7C, 0X3C, 0x1C, 0xF0, 0xF8, 0xF0, 0xF0, 197 | 0xF8, 0xF8, 0xFE, 0xFE, 0xE6, 0xD4, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 198 | 0x40, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 199 | 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 200 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 201 | 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0xB0, 0x70, 202 | 0xC0, 0x60, 0x00, 0xB0, 0x90, 0x28, 0xE3, 0x41, 0xC0, 0x81, 0x01, 0x03, 0x0F, 0x3F, 0xFF, 203 | 0xFF, 0xFF, 0xFF, 0xBF, 0x0F, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 204 | 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x70, 0x08, 0x84, 0x40, 0x00, 0xE0, 0x80, 0xF0, 0xF8, 205 | 0xF8, 0xFC, 0xFC, 0xEC, 0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0xE0, 0xC0, 0xC0, 0x80, 0x00, 206 | 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 207 | 0x00, 0x00, 0x00, 0x00, 0x0B, 0x3F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, 0x3F, 0xFF, 0xFF, 0xFF, 208 | 0xFE, 0xFF, 0xFE, 0xFE, 0xE7, 0xC1, 0xC1, 0x00, 0xF8, 0xF7, 0xE5, 0xC0, 0x00, 0x03, 0x0F, 209 | 0x07, 0x01, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x80, 0x00, 0x98, 0xBC, 0xD7, 0xE9, 210 | 0xEF, 0xFF, 0xFD, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 211 | 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0x0F, 0x0F, 0x0F, 0x0F, 0x3F, 212 | 0x0F, 0x0F, 0x07, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00, 213 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 214 | 0x3F, 0x7F, 0xFF, 0x7F, 0x3F, 0x3E, 0x3D, 0x1B, 0x07, 0x03, 0x01, 0x00, 0x01, 0x00, 0x00, 215 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xEC, 0xED, 0xF3, 0xF3, 0xE5, 0xC3, 0xEF, 216 | 0xE7, 0xE9, 0x29, 0xFB, 0xFF, 0xB1, 0xBD, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 217 | 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x67, 0x07, 0x07, 0x13, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 218 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 219 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 220 | 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x02, 0x30, 0xFC, 0xFC, 0xFC, 0xF8, 0xF8, 0xE0, 0xE0, 221 | 0xE0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0xBF, 0xFF, 0xFF, 222 | 0xFF, 0xFF, 0xFF, 0x1E, 0x0F, 0x05, 0x01, 0x00, 0x00, 0x00, 0x00, 0x07, 0x01, 0x00, 0x00, 223 | 0x01, 0x11, 0x23, 0x10, 0x10, 0x00, 0x00, 0x00, 0x80, 0x20, 0xA0, 0x00, 0x00, 0x00, 0x00, 224 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 225 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 226 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0x7F, 0x3F, 0x0F, 0x0F, 0x03, 227 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x07, 0x0F, 228 | 0x0F, 0x07, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 229 | 0x00, 0x00, 0x00, 0x00, 0x06, 0x0E, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, 0x5E, 0x0C, 0x00, 0x00, 230 | 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ]; 231 | 232 | -------------------------------------------------------------------------------- /03displays/nokia5110_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/nokia5110_bb.png -------------------------------------------------------------------------------- /03displays/powerSwitch.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/powerSwitch.fzz -------------------------------------------------------------------------------- /03displays/powerSwitch_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/powerSwitch_bb.png -------------------------------------------------------------------------------- /03displays/speak.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | var exec = require('child_process').exec; 4 | 5 | function speakForSelf(phrase) { 6 | { 7 | exec('flite -t "' + phrase + '"', function (error, stdout, stderr) { 8 | console.log(stdout); 9 | if(error) { 10 | console.log('error: ' + error); 11 | } 12 | if(stderr) { 13 | console.log('stderr: ' + stderr); 14 | } 15 | }); 16 | } 17 | 18 | speakForSelf("Hello, My name is Borris. " + 19 | "I am a BeagleBone Black, " + 20 | "a true open hardware, " + 21 | "community-supported embedded computer for developers and hobbyists. " + 22 | "I am powered by a 1 Giga Hertz Sitara™ ARM® Cortex-A8 processor. " + 23 | "I boot Linux in under 10 seconds. " + 24 | "You can get started on development in " + 25 | "less than 5 minutes with just a single USB cable." + 26 | "Bark, bark!" 27 | ); -------------------------------------------------------------------------------- /03displays/ws2801.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/ws2801.fzz -------------------------------------------------------------------------------- /03displays/ws2801_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/03displays/ws2801_bb.png -------------------------------------------------------------------------------- /04motors/H-bridge.ms13: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/04motors/H-bridge.ms13 -------------------------------------------------------------------------------- /04motors/H-bridge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/04motors/H-bridge.png -------------------------------------------------------------------------------- /04motors/bipolarStepperMotor.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/04motors/bipolarStepperMotor.fzz -------------------------------------------------------------------------------- /04motors/bipolarStepperMotor.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | var b = require('bonescript'); 3 | 4 | // Motor is attached here 5 | var controller = ["P9_11", "P9_13", "P9_15", "P9_17"]; 6 | var states = [[1,0,0,0], [0,1,0,0], [0,0,1,0], [0,0,0,1]]; 7 | var statesHiTorque = [[1,1,0,0], [0,1,1,0], [0,0,1,1], [1,0,0,1]]; 8 | var statesHalfStep = [[1,0,0,0], [1,1,0,0], [0,1,0,0], [0,1,1,0], 9 | [0,0,1,0], [0,0,1,1], [0,0,0,1], [1,0,0,1]]; 10 | 11 | var curState = 0; // Current state 12 | var ms = 100, // Time between steps, in ms 13 | max = 22, // Number of steps to turn before turning around 14 | min = 0; // Minimum step to turn back around on 15 | 16 | var CW = 1, // Clockwise 17 | CCW = -1, 18 | pos = 0, // current position and direction 19 | direction = CW; 20 | 21 | // Initialize motor control pins to be OUTPUTs 22 | var i; 23 | for(i=0; i= max || pos <= min) { 39 | direction *= -1; 40 | } 41 | rotate(direction); 42 | } 43 | 44 | // This is the general rotate 45 | function rotate(direction) { 46 | // console.log("rotate(%d)", direction); 47 | // Rotate the state acording to the direction of rotation 48 | curState += direction; 49 | if(curState >= states.length) { 50 | curState = 0; 51 | } else if(curState<0) { 52 | curState = states.length-1; 53 | } 54 | updateState(states[curState]); 55 | } 56 | 57 | // Write the current input state to the controller 58 | function updateState(state) { 59 | console.log("state: " + state); 60 | for (i=0; i max || pos < min) { 18 | dir = -1 * dir; 19 | } 20 | b.analogWrite(motor, pos, freq); 21 | console.log('pos = ' + pos); 22 | } 23 | -------------------------------------------------------------------------------- /04motors/servoMotor.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/04motors/servoMotor.fzz -------------------------------------------------------------------------------- /04motors/servoMotor.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | // Drive a simple servo motor back and forth 4 | 5 | var b = require('bonescript'); 6 | 7 | var motor = 'P9_21', // Pin to control servo 8 | freq = 50, // Servo frequency (20 ms) 9 | min = 0.8, // Smallest angle (in ms) 10 | max = 2.5, // Largest angle (in ms) 11 | ms = 250, // How often to change position, in ms 12 | pos = 1.5, // Current position, about middle 13 | step = 0.1; // Step size to next position 14 | 15 | console.log('Hit ^C to stop'); 16 | b.pinMode(motor, b.ANALOG_OUTPUT, 6, 0, 0, doInterval); 17 | 18 | function doInterval(x) { 19 | if(x.err) { 20 | console.log('x.err = ' + x.err); 21 | return; 22 | } 23 | timer = setInterval(sweep, ms); 24 | } 25 | 26 | move(pos); // Start in the middle 27 | 28 | // Sweep from min to max position and back again 29 | function sweep() { 30 | pos += step; // Take a step 31 | if(pos > max || pos < min) { 32 | step *= -1; 33 | } 34 | move(pos); 35 | } 36 | 37 | function move(pos) { 38 | var dutyCycle = pos/1000*freq; 39 | b.analogWrite(motor, dutyCycle, freq); 40 | console.log('pos = ' + pos + ' duty cycle = ' + dutyCycle); 41 | } 42 | 43 | process.on('SIGINT', function() { 44 | console.log('Got SIGINT, turning motor off'); 45 | clearInterval(timer); // Stop the timer 46 | b.analogWrite(motor, 0, freq); // Turn motor off 47 | }); -------------------------------------------------------------------------------- /04motors/servoMotor5V.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/04motors/servoMotor5V.fzz -------------------------------------------------------------------------------- /04motors/servoMotor5V_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/04motors/servoMotor5V_bb.png -------------------------------------------------------------------------------- /04motors/servoMotor_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/04motors/servoMotor_bb.png -------------------------------------------------------------------------------- /04motors/servoSense.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | // Bird will bow when there is a change in the sersor distance. 4 | 5 | var b = require('bonescript'); 6 | var motor = 'P9_14'; // Pin to use 7 | var freq = 50; // Servo frequency (20 ms) 8 | var up = 0.6, // Smallest angle (in ms) 9 | down = 2.0, // Largest angle (in ms) 10 | dutyCycle, 11 | ms = 250, // How often to change position, in ms 12 | oldPos = 0; 13 | 14 | b.pinMode(motor, b.ANALOG_OUTPUT, 6, 0, 0, doInterval); 15 | 16 | function doInterval(x) { 17 | if(x.err) { 18 | console.log('x.err = ' + x.err); 19 | return; 20 | } 21 | setInterval(readRange, ms); 22 | } 23 | 24 | move(2.0); 25 | 26 | function readRange() { 27 | b.analogRead('P9_37', printStatus); 28 | } 29 | function printStatus(x) { 30 | var pos = x.value; 31 | console.log('pos = ' + pos); 32 | if (pos-oldPos>0.5) { 33 | move(up); 34 | } 35 | if (oldPos-pos>0.5) { 36 | move(down); 37 | } 38 | oldPos = pos; 39 | } 40 | 41 | function move(pos) { 42 | 43 | dutyCycle = pos/1000*freq 44 | b.analogWrite(motor, dutyCycle, freq); 45 | console.log('pos = ' + pos + ' duty cycle = ' + dutyCycle); 46 | } 47 | -------------------------------------------------------------------------------- /04motors/stepExternalSupply.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/04motors/stepExternalSupply.fzz -------------------------------------------------------------------------------- /04motors/stepExternalSupply_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/04motors/stepExternalSupply_bb.png -------------------------------------------------------------------------------- /04motors/stop.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // Used for turning everything off. 3 | var b = require('bonescript'); 4 | var gpio = ['P9_11', 'P9_13', 'P9_14', 'P9_15', 'P9_16']; 5 | var i; 6 | 7 | for(i=0; i= max || pos <= min) { 35 | direction *= -1; 36 | } 37 | rotate(direction); 38 | } 39 | 40 | // This is the general rotate 41 | function rotate(direction) { 42 | // console.log("rotate(%d)", direction); 43 | // Rotate the state acording to the direction of rotation 44 | curState += direction; 45 | if(curState >= states.length) { 46 | curState = 0; 47 | } else if(curState<0) { 48 | curState = states.length-1; 49 | } 50 | updateState(states[curState]); 51 | } 52 | 53 | // Write the current input state to the controller 54 | function updateState(state) { 55 | console.log("state: " + state); 56 | for (i=0; i 2 | #include 3 | #include 4 | #include 5 | 6 | #include "libsoc_gpio.h" 7 | #include "libsoc_debug.h" 8 | 9 | // Blinks an LED attached to P9_14 (gpio1_18, 32+18=50) 10 | #define GPIO_OUTPUT 50 11 | 12 | int main(void) { 13 | gpio *gpio_output; // Create gpio pointer 14 | libsoc_set_debug(1); // Enable debug output 15 | // Request gpio 16 | gpio_output = libsoc_gpio_request(GPIO_OUTPUT, LS_SHARED); 17 | // Set direction to OUTPUT 18 | libsoc_gpio_set_direction(gpio_output, OUTPUT); 19 | 20 | libsoc_set_debug(0); // Turn off debug printing for fast toggle 21 | 22 | int i; 23 | for (i=0; i<1000000; i++) { // Toggle the GPIO 100 times 24 | libsoc_gpio_set_level(gpio_output, HIGH); 25 | // usleep(100000); // sleep 100,000 uS 26 | libsoc_gpio_set_level(gpio_output, LOW); 27 | // usleep(100000); 28 | } 29 | 30 | if (gpio_output) { 31 | libsoc_gpio_free(gpio_output); // Free gpio request memory 32 | } 33 | 34 | return EXIT_SUCCESS; 35 | } 36 | -------------------------------------------------------------------------------- /05beyond/blinkLED.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | import Adafruit_BBIO.GPIO as GPIO 3 | import time 4 | 5 | pin = "P9_14" 6 | 7 | GPIO.setup(pin, GPIO.OUT) 8 | 9 | while True: 10 | GPIO.output(pin, GPIO.HIGH) 11 | time.sleep(0.5) 12 | GPIO.output(pin, GPIO.LOW) 13 | time.sleep(0.5) 14 | -------------------------------------------------------------------------------- /05beyond/cape-headers-digital.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/05beyond/cape-headers-digital.png -------------------------------------------------------------------------------- /05beyond/gedit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/05beyond/gedit.png -------------------------------------------------------------------------------- /05beyond/hdmiConverter.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/05beyond/hdmiConverter.jpg -------------------------------------------------------------------------------- /05beyond/ipMasquerade.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # These are the commands to run on the host to set up IP 3 | # masquerading so the Bone can access the Internet through 4 | # the USB connection. 5 | # This configures the host, run ./setDNS.sh to configure the Bone. 6 | # Inspired by http://thoughtshubham.blogspot.com/2010/03/ 7 | # internet-over-usb-otg-on-beagleboard.html 8 | 9 | if [ $# -eq 0 ] ; then 10 | echo "Usage: $0 interface (such as eth0 or wlan0)" 11 | exit 1 12 | fi 13 | 14 | interface=$1 15 | hostAddr=192.168.7.1 16 | beagleAddr=192.168.7.2 17 | ip_forward=/proc/sys/net/ipv4/ip_forward 18 | 19 | # Set up IP masquerading on the host so the bone can reach the outside world 20 | sudo iptables -t nat -A POSTROUTING -s $beagleAddr -o $interface -j MASQUERADE 21 | # set IP forwarding 22 | sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward" 23 | -------------------------------------------------------------------------------- /05beyond/leafpad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/05beyond/leafpad.png -------------------------------------------------------------------------------- /05beyond/nano.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/05beyond/nano.png -------------------------------------------------------------------------------- /05beyond/npm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/05beyond/npm.png -------------------------------------------------------------------------------- /05beyond/setDNS.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # These are the commands to run on the host so the Bone 3 | # can access the Internet through the USB connection. 4 | # Run ./ipMasquerade.sh the first time. It will set up the host. 5 | # Run this script if the host is already set up. 6 | 7 | hostAddr=192.168.7.1 8 | beagleAddr=192.168.7.2 9 | 10 | # Save the /etc/resolv.conf on the Bone in case we mess things up. 11 | ssh root@$beagleAddr "mv -n /etc/resolv.conf /etc/resolv.conf.orig" 12 | # Create our own resolv.conf 13 | cat - << EOF > /tmp/resolv.conf 14 | # This is installed by host.setDNS.sh on the host 15 | 16 | EOF 17 | 18 | # Look up the nameserver of the host and add it to our resolv.conf 19 | nmcli dev list | grep IP4.DNS | sed 's/IP4.DNS\[.\]:/nameserver/' >> /tmp/resolv.conf 20 | scp /tmp/resolv.conf root@$beagleAddr:/etc 21 | 22 | # Tell the beagle to use the host as the gateway. 23 | ssh root@$beagleAddr "/sbin/route add default gw $hostAddr" || true 24 | -------------------------------------------------------------------------------- /05beyond/vi.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/05beyond/vi.png -------------------------------------------------------------------------------- /05beyond/vnc1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/05beyond/vnc1.png -------------------------------------------------------------------------------- /05beyond/vnc2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/05beyond/vnc2.png -------------------------------------------------------------------------------- /05beyond/vnc3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/05beyond/vnc3.png -------------------------------------------------------------------------------- /05beyond/wicd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/05beyond/wicd.png -------------------------------------------------------------------------------- /05beyond/wicdConfig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/05beyond/wicdConfig.png -------------------------------------------------------------------------------- /05beyond/wicdConnected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/05beyond/wicdConnected.png -------------------------------------------------------------------------------- /05beyond/wicdPassword.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/05beyond/wicdPassword.png -------------------------------------------------------------------------------- /05beyond/wicdPrefs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/05beyond/wicdPrefs.png -------------------------------------------------------------------------------- /05beyond/wicdSecure.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/05beyond/wicdSecure.png -------------------------------------------------------------------------------- /06iot/GPIOWebPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/GPIOWebPage.png -------------------------------------------------------------------------------- /06iot/GPIOserver.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // Initial idea from Getting Started With node.js and socket.io 3 | // http://codehenge.net/blog/2011/12/getting-started-with-node-js-and-socket-io- 4 | // v0-7-part-2/ 5 | // This is a simple server for the various web frontends 6 | // Display status of P9_42 7 | "use strict"; 8 | 9 | var port = 9090, // Port on which to listen 10 | http = require('http'), 11 | url = require('url'), 12 | fs = require('fs'), 13 | b = require('bonescript'), 14 | gpio = 'P9_42'; // gpio port to read 15 | 16 | // <1> 17 | var htmlStart = "\ 18 | \ 19 | \ 20 | \ 21 | \ 22 |

" + gpio + "

\ 23 | data = "; 24 | 25 | // <2> 26 | var htmlEnd = "\ 27 | \ 28 | "; 29 | 30 | var server = http.createServer(servePage); 31 | 32 | b.pinMode(gpio, b.INPUT, 7, 'pulldown'); 33 | 34 | server.listen(port); 35 | console.log("Listening on " + port); 36 | 37 | function servePage(req, res) { 38 | var path = url.parse(req.url).pathname; 39 | console.log("path: " + path); 40 | if (path === '/gpio') { // <3> 41 | var data = b.digitalRead(gpio); // <4> 42 | res.write(htmlStart + data + htmlEnd, 'utf8'); // <5> 43 | res.end(); 44 | } else { 45 | fs.readFile(__dirname + path, function (err, data) { 46 | if (err) { 47 | return send404(res); 48 | } 49 | res.write(data, 'utf8'); 50 | res.end(); 51 | }); 52 | } 53 | } 54 | 55 | function send404(res) { 56 | res.writeHead(404); 57 | res.write('404 - page not found'); 58 | res.end(); 59 | } 60 | -------------------------------------------------------------------------------- /06iot/apacheIndex.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/apacheIndex.png -------------------------------------------------------------------------------- /06iot/apacheNoFiles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/apacheNoFiles.png -------------------------------------------------------------------------------- /06iot/apacheTest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/apacheTest.png -------------------------------------------------------------------------------- /06iot/bone-usr3-led.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/bone-usr3-led.png -------------------------------------------------------------------------------- /06iot/flotDemo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | BoneScript Flot Demo 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |

BoneScript Flot Demo

12 |
13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /06iot/flotDemo.js: -------------------------------------------------------------------------------- 1 | setTargetAddress('192.168.7.2', { // <1> 2 | initialized: run 3 | }); 4 | 5 | function run() { 6 | var b = require('bonescript'); // <2> 7 | var POT = 'P9_36'; // <3> 8 | 9 | var container = $("#myplot"); // <4> 10 | var totalPoints = container.outerWidth() / 2 || 250; // <5> 11 | var data = []; 12 | var plotOptions = { // <6> 13 | series: { 14 | shadowSize: 0 15 | }, 16 | yaxis: { 17 | min: 0, 18 | max: 1 19 | }, 20 | xaxis: { 21 | min: 0, 22 | max: totalPoints, 23 | show: false 24 | } 25 | }; 26 | var plot = $.plot(container, getData(), plotOptions); // <7> 27 | 28 | drawGraph(); // <8> 29 | 30 | function drawGraph() { // <9> 31 | plot.setData(getData()); 32 | plot.draw(); 33 | b.analogRead(POT, onAnalogRead); 34 | } 35 | 36 | // Handle data back from potentiometer 37 | function onAnalogRead(x) { 38 | if (!x.err && typeof x.value == 'number') { 39 | pushData(x.value); // <10> 40 | } 41 | setTimeout(drawGraph, 20); // <11> 42 | } 43 | 44 | function pushData(y) { 45 | if (data.length && (data.length + 1) > totalPoints) { 46 | data = data.slice(1); 47 | } 48 | if (data.length < totalPoints) { 49 | data.push(y); 50 | } 51 | } 52 | 53 | function getData() { 54 | var res = []; 55 | for (var i = 0; i < data.length; ++i) { 56 | res.push([i, data[i]]); 57 | } 58 | var series = [{ 59 | data: res, 60 | lines: { 61 | fill: true 62 | } 63 | }]; 64 | return series; 65 | } 66 | } -------------------------------------------------------------------------------- /06iot/flotDemo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/flotDemo.png -------------------------------------------------------------------------------- /06iot/jQueryDemo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | BoneScript jQuery Demo 4 | 5 | 6 | 7 | 8 | 9 | 10 |

BoneScript jQuery Demo

11 | 12 |

sliderStatus = - 13 |

14 |

buttonStatus = - 15 |

16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /06iot/jQueryDemo.js: -------------------------------------------------------------------------------- 1 | setTargetAddress('192.168.7.2', { // <1> 2 | initialized: run 3 | }); 4 | 5 | function run() { 6 | var b = require('bonescript'); // <2> 7 | var SLIDER = 'P9_36'; // <3> 8 | var BUTTON = 'P8_19'; 9 | b.pinMode(BUTTON, b.INPUT); 10 | 11 | getSliderStatus(); // <4> 12 | 13 | function getSliderStatus() { 14 | b.analogRead(SLIDER, onSliderRead); // <5> 15 | } 16 | 17 | function onSliderRead(x) { 18 | if (!x.err) { // <6> 19 | $('#sliderStatus').html(x.value.toFixed(3)); 20 | } 21 | getButtonStatus() // <7> 22 | } 23 | 24 | function getButtonStatus() { 25 | b.digitalRead(BUTTON, onButtonRead); // <8> 26 | } 27 | 28 | function onButtonRead(x) { 29 | if (!x.err) { // <9> 30 | $('#buttonStatus').html(x.value); 31 | } 32 | setTimeout(getSliderStatus, 20); // <10> 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /06iot/jQueryFiddle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/jQueryFiddle.png -------------------------------------------------------------------------------- /06iot/jQueryInstall.sh: -------------------------------------------------------------------------------- 1 | # This gives easy acces to the bonscript and jquery libraries 2 | ln -s /var/lib/cloud9/static/ . 3 | -------------------------------------------------------------------------------- /06iot/jsfiddleFrameworks.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/jsfiddleFrameworks.png -------------------------------------------------------------------------------- /06iot/launchPad.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/launchPad.fzz -------------------------------------------------------------------------------- /06iot/launchPad.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // Need to add exports.serialParsers = m.module.parsers; 3 | // to /usr/local/lib/node_modules/bonescript/serial.js 4 | var b = require('bonescript'); 5 | 6 | var port = '/dev/ttyO1'; // <1> 7 | var options = { 8 | baudrate: 9600, // <2> 9 | parser: b.serialParsers.readline("\n") // <3> 10 | }; 11 | 12 | b.serialOpen(port, options, onSerial); // <4> 13 | 14 | function onSerial(x) { // <5> 15 | console.log(x.event); 16 | if (x.err) { 17 | console.log('***ERROR*** ' + JSON.stringify(x)); 18 | } 19 | if (x.event == 'open') { 20 | console.log('***OPENED***'); 21 | setInterval(sendCommand, 1000); // <6> 22 | } 23 | if (x.event == 'data') { 24 | console.log(String(x.data)); 25 | } 26 | } 27 | 28 | var command = ['r', 'g']; // <7> 29 | var commIdx = 1; 30 | 31 | function sendCommand() { 32 | // console.log('Command: ' + command[commIdx]); 33 | b.serialWrite(port, command[commIdx++]); // <8> 34 | if(commIdx >= command.length) { // <9> 35 | commIdx = 0; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /06iot/launchPad/launchPad.ino: -------------------------------------------------------------------------------- 1 | /* 2 | Tests connection to a BeagleBone 3 | Mark A. Yoder 4 | Waits for input on Serial Port 5 | g - Green toggle 6 | r - Red toggle 7 | */ 8 | char inChar = 0; // incoming serial byte 9 | int red = 0; 10 | int green = 0; 11 | 12 | void setup() 13 | { 14 | // initialize the digital pin as an output. 15 | pinMode(RED_LED, OUTPUT); // <1> 16 | pinMode(GREEN_LED, OUTPUT); 17 | // start serial port at 9600 bps: 18 | Serial.begin(9600); // <2> 19 | Serial.print("Command (r, g): "); // <3> 20 | 21 | digitalWrite(GREEN_LED, green); // <4> 22 | digitalWrite( RED_LED, red); 23 | } 24 | 25 | void loop() 26 | { 27 | if(Serial.available() > 0 ) { // <5> 28 | inChar = Serial.read(); 29 | switch(inChar) { // <6> 30 | case 'g': 31 | green = ~green; 32 | digitalWrite(GREEN_LED, green); 33 | Serial.println("Green"); 34 | break; 35 | case 'r': 36 | red = ~red; 37 | digitalWrite(RED_LED, red); 38 | Serial.println("Red"); 39 | break; 40 | } 41 | Serial.print("Command (r, g): "); 42 | } 43 | } 44 | 45 | -------------------------------------------------------------------------------- /06iot/launchPad_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/launchPad_bb.png -------------------------------------------------------------------------------- /06iot/node-disc-out-setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/node-disc-out-setup.png -------------------------------------------------------------------------------- /06iot/node-disc-out.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/node-disc-out.png -------------------------------------------------------------------------------- /06iot/node-red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/node-red.png -------------------------------------------------------------------------------- /06iot/node-twitter-auth.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/node-twitter-auth.png -------------------------------------------------------------------------------- /06iot/node-twitter-auth2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/node-twitter-auth2.png -------------------------------------------------------------------------------- /06iot/node-twitter-auth3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/node-twitter-auth3.png -------------------------------------------------------------------------------- /06iot/node-twitter-beagle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/node-twitter-beagle.png -------------------------------------------------------------------------------- /06iot/node-twitter-debug.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/node-twitter-debug.png -------------------------------------------------------------------------------- /06iot/node-twitter.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/node-twitter.png -------------------------------------------------------------------------------- /06iot/nodeServer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/nodeServer.png -------------------------------------------------------------------------------- /06iot/nodeTest.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/nodeTest.png -------------------------------------------------------------------------------- /06iot/nodemailer-install.sh: -------------------------------------------------------------------------------- 1 | npm install -g nodemailer 2 | -------------------------------------------------------------------------------- /06iot/nodemailer-test.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // From: https://github.com/andris9/Nodemailer 3 | 4 | var nodemailer = require('nodemailer'); 5 | 6 | // create reusable transporter object using SMTP transport 7 | var transporter = nodemailer.createTransport({ 8 | service: 'gmail', 9 | auth: { 10 | user: 'yourUser@gmail.com', 11 | pass: 'yourPass' 12 | } 13 | }); 14 | 15 | // NB! No need to re-create the transporter object. You can use 16 | // the same transporter object for all e-mails 17 | 18 | // set up e-mail data with unicode symbols 19 | var mailOptions = { 20 | from: 'Your User ', // sender address 21 | to: 'anotherUser@gmail.edu', // list of receivers 22 | subject: 'Test of nodemail', // Subject line 23 | text: 'Hello world from modemailer', // plaintext body 24 | html: 'Hello world

Way to go!

' // html body 25 | }; 26 | 27 | // send mail with defined transport object 28 | transporter.sendMail(mailOptions, function(error, info){ 29 | if(error){ 30 | console.log(error); 31 | }else{ 32 | console.log('Message sent: ' + info.response); 33 | } 34 | }); 35 | 36 | // Nodemailer is licensed under MIT license 37 | // (https://github.com/andris9/Nodemailer/blob/master/LICENSE). 38 | // Basically you can do whatever you want to with it 39 | -------------------------------------------------------------------------------- /06iot/processingDemo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | BoneScript Processing.JS Demo 4 | 5 | 6 | 7 | 8 | 9 | 10 |

BoneScript Processing.JS Demo

11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /06iot/processingDemo.js: -------------------------------------------------------------------------------- 1 | var canvas = document.getElementById("mysketch"); 2 | var p = new Processing(canvas, sketchProc); 3 | 4 | function sketchProc(pjs) { 5 | // Sketch global variables 6 | var radius = 50.0; 7 | var X, Y; 8 | var nX, nY; 9 | var delay = 16; 10 | var brightness = 0; 11 | var buttonStatus = 0; 12 | var sliderStatus = 0; 13 | var lastSliderValue = 0; 14 | var BUTTON = 'P8_19'; 15 | var POT = 'P9_36'; 16 | 17 | // Get the BoneScript library and begin updating the canvas 18 | setTargetAddress('beaglebone.local', { 19 | initialized: run 20 | }); 21 | setTargetAddress('192.168.7.2', { 22 | initialized: run 23 | }); 24 | 25 | function run() { 26 | var b = require('bonescript'); 27 | b.pinMode(BUTTON, b.INPUT); 28 | 29 | // Setup the Processing Canvas 30 | pjs.setup = function () { 31 | pjs.size(256, 256); 32 | pjs.strokeWeight(10); 33 | pjs.frameRate(15); 34 | X = pjs.width / 2; 35 | Y = pjs.height / 2; 36 | nX = X; 37 | nY = Y; 38 | } 39 | 40 | // Main draw loop 41 | pjs.draw = function () { 42 | // Calculate some fading values based on the frame count 43 | radius = 50.0 + (15 - sliderStatus) * pjs.sin(pjs.frameCount / 4); 44 | brightness = (radius - 40.0) / 20.0; 45 | 46 | // Track circle to new destination 47 | X += (nX - X) / delay; 48 | Y += (nY - Y) / delay; 49 | 50 | // Fill canvas grey 51 | pjs.background(100); 52 | 53 | // Set fill-color to blue or red, based on button status 54 | if (buttonStatus) pjs.fill(200, 30, 20) 55 | else pjs.fill(0, 121, 184); 56 | 57 | // Set stroke-color white 58 | pjs.stroke(255); 59 | 60 | // Draw circle 61 | pjs.ellipse(X, Y, radius, radius); 62 | 63 | // Fetch slider location for next time 64 | b.analogRead(POT, onAnalogRead); 65 | 66 | // Fetch button status 67 | b.digitalRead(BUTTON, onDigitalRead); 68 | } 69 | 70 | // Get things started 71 | pjs.setup(); 72 | 73 | // Handle data back from potentiometer 74 | function onAnalogRead(x) { 75 | if (!x.err && (x.value >= 0) && (x.value <= 1)) { 76 | if (Math.abs(x.value - lastSliderValue) > 0.05) { 77 | lastSliderValue = x.value; 78 | nY = x.value * 255; 79 | sliderStatus = parseInt(x.value * 10, 10); 80 | } 81 | } 82 | } 83 | 84 | // Handle data back from button 85 | function onDigitalRead(x) { 86 | buttonStatus = (x.value == b.LOW) ? 1 : 0; 87 | } 88 | } 89 | } -------------------------------------------------------------------------------- /06iot/server.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // Initial idea from Getting Started With node.js and socket.io 3 | // by Constantine Aaron Cois, Ph.D. (www.codehenge.net) 4 | // http://codehenge.net/blog/2011/12/getting-started-with-node-js-and-socket-io- 5 | // v0-7-part-2/ 6 | // This is a simple server for the various web frontends 7 | "use strict"; 8 | 9 | var port = 9090, // Port on which to listen 10 | http = require('http'), 11 | url = require('url'), 12 | fs = require('fs'), 13 | b = require('bonescript'); 14 | 15 | var server = http.createServer(servePage); // <1> 16 | 17 | server.listen(port); // <2> 18 | console.log("Listening on " + port); 19 | 20 | function servePage(req, res) { 21 | var path = url.parse(req.url).pathname; // <3> 22 | console.log("path: " + path); 23 | 24 | fs.readFile(__dirname + path, function (err, data) {// <4> 25 | if (err) { // <5> 26 | return send404(res); 27 | } 28 | res.write(data, 'utf8'); // <6> 29 | res.end(); 30 | }); 31 | } 32 | 33 | function send404(res) { 34 | res.writeHead(404); 35 | res.write('404 - page not found'); 36 | res.end(); 37 | } 38 | -------------------------------------------------------------------------------- /06iot/test.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |

My First Heading

6 | 7 |

My first paragraph.

8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /06iot/twilio-test.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // From: http://twilio.github.io/twilio-node/ 3 | // Twilio Credentials 4 | var accountSid = ''; 5 | var authToken = ''; 6 | 7 | //require the Twilio module and create a REST client 8 | var client = require('twilio')(accountSid, authToken); 9 | 10 | client.messages.create({ 11 | to: "812555121", 12 | from: "+2605551212", 13 | body: "This is a test", 14 | }, function(err, message) { 15 | console.log(message.sid); 16 | }); 17 | 18 | // https://github.com/twilio/twilio-node/blob/master/LICENSE 19 | // The MIT License (MIT) 20 | // Copyright (c) 2010 Stephen Walters 21 | // Copyright (c) 2012 Twilio Inc. 22 | 23 | // Permission is hereby granted, free of charge, to any person obtaining a copy of 24 | // this software and associated documentation files (the "Software"), to deal in 25 | // the Software without restriction, including without limitation the rights to 26 | // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 27 | // of the Software, and to permit persons to whom the Software is furnished to do 28 | // so, subject to the following conditions: 29 | 30 | // The above copyright notice and this permission notice shall be included in 31 | // all copies or substantial portions of the Software. 32 | 33 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 34 | // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 35 | // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 36 | // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 37 | // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 38 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 39 | // DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /06iot/twitterInstall.sh: -------------------------------------------------------------------------------- 1 | npm install -g node-twitter 2 | # Go to https://apps.twitter.com/ 3 | # "Create New App" 4 | # Copy API and TOKEN to twitterKeys.js -------------------------------------------------------------------------------- /06iot/twitterKeys.js: -------------------------------------------------------------------------------- 1 | // My Twitter keys 2 | // From https://apps.twitter.com/app/5771872/keys 3 | exports.API_KEY = 'klb5ZwXFj33b62Y9w1tDlRvzX'; 4 | exports.API_SECRET = 'sVfj69b6L0O3XTFwRI58cYV0HROPyhG2UrUJcrlF9yulsglrXI'; 5 | exports.TOKEN = '48435578-FJfE3ohMRA5xyuAO9RScy1ZBzjBK6OPS6n3Hs3mhb'; 6 | exports.TOKEN_SECRET = 'Rvd8gyo8IONsaQuJlW01eiagcFEJEL7wVvSeUCOK9FwR4'; 7 | -------------------------------------------------------------------------------- /06iot/twitterPushbutton.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // From: https://www.npmjs.org/package/node-twitter 3 | // Tweets with attached image media (JPG, PNG or GIF) can be posted 4 | // using the upload API endpoint. 5 | var Twitter = require('node-twitter'); 6 | var b = require('bonescript'); 7 | var key = require('./twitterKeys'); 8 | var gpio = "P9_42"; 9 | var count = 0; 10 | 11 | b.pinMode(gpio, b.INPUT); 12 | b.attachInterrupt(gpio, sendTweet, b.FALLING); 13 | 14 | var twitterRestClient = new Twitter.RestClient( 15 | key.API_KEY, key.API_SECRET, 16 | key.TOKEN, key.TOKEN_SECRET 17 | ); 18 | 19 | function sendTweet() { 20 | console.log("Sending..."); 21 | count++; 22 | 23 | twitterRestClient.statusesUpdate( 24 | {'status': 'Posting tweet ' + count + ' via my BeagleBone Black', }, 25 | function(error, result) { 26 | if (error) { 27 | console.log('Error: ' + 28 | (error.code ? error.code + ' ' + error.message : error.message)); 29 | } 30 | 31 | if (result) { 32 | console.log(result); 33 | } 34 | } 35 | ); 36 | } 37 | 38 | // node-twitter is made available under terms of the BSD 3-Clause License. 39 | // http://www.opensource.org/licenses/BSD-3-Clause -------------------------------------------------------------------------------- /06iot/twitterSearch.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // From: https://www.npmjs.org/package/node-twitter 3 | // The Twitter Search API can be accessed using Twitter.SearchClient. The following 4 | // code example shows how to search for tweets containing the keyword "node.js".var Twitter = require('node-twitter'); 5 | var key = require('./twitterKeys'); 6 | 7 | var twitterSearchClient = new Twitter.SearchClient( 8 | key.API_KEY, key.API_SECRET, 9 | key.TOKEN, key.TOKEN_SECRET 10 | ); 11 | 12 | twitterSearchClient.search({'q': 'rosehulman'}, function(error, result) { 13 | if (error) { 14 | console.log('Error: ' + (error.code ? error.code + ' ' + error.message : error.message)); 15 | } 16 | 17 | if (result) { 18 | console.log(result); 19 | } 20 | }); -------------------------------------------------------------------------------- /06iot/twitterStream.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // From: https://www.npmjs.org/package/node-twitter 3 | // The Twitter Streaming API can be accessed using Twitter.StreamClient. 4 | // The following code example shows how to catch all tweets containing keywords. 5 | var Twitter = require('node-twitter'); 6 | var b = require('bonescript'); 7 | var key = require('./twitterKeys'); 8 | var gpio = "P9_14"; 9 | var count = 0; 10 | var timeOn = 5000; // Turn LED off after this amount of time (in ms) 11 | 12 | b.pinMode(gpio, b.OUTPUT); 13 | 14 | b.digitalWrite(gpio, 1); // Toggle LED 15 | setTimeout(ledOff, timeOn); 16 | 17 | var twitterStreamClient = new Twitter.StreamClient( 18 | key.API_KEY, key.API_SECRET, 19 | key.TOKEN, key.TOKEN_SECRET 20 | ); 21 | 22 | twitterStreamClient.on('close', function() { 23 | console.log('Connection closed.'); 24 | }); 25 | twitterStreamClient.on('end', function() { 26 | console.log('End of Line.'); 27 | }); 28 | twitterStreamClient.on('error', function(error) { 29 | console.log('Error: ' + (error.code ? error.code + ' ' + error.message : error.message)); 30 | }); 31 | twitterStreamClient.on('tweet', function(tweet) { 32 | console.log(tweet); 33 | b.digitalWrite(gpio, 1); // Turn LED on 34 | console.log(count++ + " =====\ 35 | tweet\ 36 | ====="); 37 | setTimeout(ledOff, timeOn); 38 | }); 39 | 40 | twitterStreamClient.start(['beagleboard', 'beaglebone', 'cookbook', 'rosehulman']); 41 | 42 | function ledOff() { 43 | b.digitalWrite(gpio, 0); 44 | } -------------------------------------------------------------------------------- /06iot/twitterTimeLine.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // From: https://www.npmjs.org/package/node-twitter 3 | // The Twitter REST API can be accessed using Twitter.RestClient. The following 4 | // code example shows how to retrieve tweets from the authenticated user's timeline. 5 | var Twitter = require('node-twitter'); 6 | var key = require('./twitterKeys'); 7 | 8 | var twitterRestClient = new Twitter.RestClient( 9 | key.API_KEY, key.API_SECRET, 10 | key.TOKEN, key.TOKEN_SECRET 11 | ); 12 | 13 | twitterRestClient.statusesHomeTimeline({}, function(error, result) { 14 | if (error) { 15 | console.log('Error: ' + 16 | (error.code ? error.code + ' ' + error.message : error.message)); 17 | } 18 | 19 | if (result) { 20 | console.log(result); 21 | } 22 | }); 23 | 24 | // node-twitter is made available under terms of the BSD 3-Clause License. 25 | // http://www.opensource.org/licenses/BSD-3-Clause -------------------------------------------------------------------------------- /06iot/twitterUpload.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // From: https://www.npmjs.org/package/node-twitter 3 | // Tweets with attached image media (JPG, PNG or GIF) can be posted 4 | // using the upload API endpoint. 5 | var Twitter = require('node-twitter'); 6 | var b = require('bonescript'); 7 | var key = require('./twitterKeys'); 8 | 9 | var twitterRestClient = new Twitter.RestClient( 10 | key.API_KEY, key.API_SECRET, 11 | key.TOKEN, key.TOKEN_SECRET 12 | ); 13 | 14 | twitterRestClient.statusesUpdateWithMedia( 15 | { 16 | 'status': 'Posting a tweet w/ attached media.', 17 | 'media[]': '/root/cookbook-atlas/images/cover.png' 18 | }, 19 | function(error, result) { 20 | if (error) { 21 | console.log('Error: ' + 22 | (error.code ? error.code + ' ' + error.message : error.message)); 23 | } 24 | 25 | if (result) { 26 | console.log(result); 27 | } 28 | } 29 | ); 30 | 31 | // node-twitter is made available under terms of the BSD 3-Clause License. 32 | // http://www.opensource.org/licenses/BSD-3-Clause -------------------------------------------------------------------------------- /06iot/weather.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // Install with npm install weather-js 3 | var weather = require('weather-js'); 4 | 5 | // Options: 6 | // search: location name or zipcode 7 | // degreeType: F or C 8 | 9 | weather.find({search: 'Terre Haute, IN', degreeType: 'F'}, 10 | function(err, result) { 11 | if (err) { 12 | console.log(err); 13 | } 14 | console.log(JSON.stringify(result, null, 2)); // <1> 15 | console.log(JSON.stringify(result[0].current, null, 2)); // <2> 16 | console.log(JSON.stringify(result[0].forecast[0], null, 2)); // <3> 17 | }); 18 | -------------------------------------------------------------------------------- /06iot/xbee.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/xbee.fzz -------------------------------------------------------------------------------- /06iot/xbee.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | // This isn't working yet -------------------------------------------------------------------------------- /06iot/xbee_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/06iot/xbee_bb.png -------------------------------------------------------------------------------- /07kernel/KernelConfig3.16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/07kernel/KernelConfig3.16.png -------------------------------------------------------------------------------- /07kernel/Makefile: -------------------------------------------------------------------------------- 1 | obj-m := hello.o 2 | KDIR := /lib/modules/$(shell uname -r)/build 3 | 4 | all: 5 | make -C $(KDIR) M=$$PWD 6 | 7 | clean: 8 | rm hello.mod.c hello.o modules.order hello.mod.o Module.symvers 9 | -------------------------------------------------------------------------------- /07kernel/Makefile.display: -------------------------------------------------------------------------------- 1 | obj-m := hello.o 2 | KDIR := /lib/modules/$(shell uname -r)/build 3 | 4 | all: 5 | make -C $(KDIR) M=$$PWD 6 | 7 | clean: 8 | rm hello.mod.c hello.o modules.order hello.mod.o Module.symvers 9 | -------------------------------------------------------------------------------- /07kernel/cape-headers-digitalGPIO7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/07kernel/cape-headers-digitalGPIO7.png -------------------------------------------------------------------------------- /07kernel/hello.c: -------------------------------------------------------------------------------- 1 | #include /* Needed by all modules */ 2 | #include /* Needed for KERN_INFO */ 3 | #include /* Needed for the macros */ 4 | 5 | static int __init hello_start(void) 6 | { 7 | printk(KERN_INFO "Loading hello module...\n"); 8 | printk(KERN_INFO "Hello, World!\n"); 9 | return 0; 10 | } 11 | 12 | static void __exit hello_end(void) 13 | { 14 | printk(KERN_INFO "Goodbye Boris\n"); 15 | } 16 | 17 | module_init(hello_start); 18 | module_exit(hello_end); 19 | 20 | MODULE_AUTHOR("Boris Houndleroy"); 21 | MODULE_DESCRIPTION("Hello World Example"); 22 | MODULE_LICENSE("GPL"); 23 | -------------------------------------------------------------------------------- /07kernel/hello.patch: -------------------------------------------------------------------------------- 1 | From eaf4f7ea7d540bc8bb57283a8f68321ddb4401f4 Mon Sep 17 00:00:00 2001 2 | From: Jason Kridner 3 | Date: Tue, 12 Feb 2013 02:18:03 +0000 4 | Subject: [PATCH] hello: example kernel modules 5 | 6 | --- 7 | hello/Makefile | 7 +++++++ 8 | hello/hello.c | 18 ++++++++++++++++++ 9 | 2 files changed, 25 insertions(+), 0 deletions(-) 10 | create mode 100644 hello/Makefile 11 | create mode 100644 hello/hello.c 12 | 13 | diff --git a/hello/Makefile b/hello/Makefile 14 | new file mode 100644 15 | index 0000000..4b23da7 16 | --- /dev/null 17 | +++ b/hello/Makefile 18 | @@ -0,0 +1,7 @@ 19 | +obj-m := hello.o 20 | + 21 | +PWD := $(shell pwd) 22 | +KDIR := ${PWD}/.. 23 | + 24 | +default: 25 | + make -C $(KDIR) SUBDIRS=$(PWD) modules 26 | diff --git a/hello/hello.c b/hello/hello.c 27 | new file mode 100644 28 | index 0000000..157d490 29 | --- /dev/null 30 | +++ b/hello/hello.c 31 | @@ -0,0 +1,22 @@ 32 | +#include /* Needed by all modules */ 33 | +#include /* Needed for KERN_INFO */ 34 | +#include /* Needed for the macros */ 35 | + 36 | +static int __init hello_start(void) 37 | +{ 38 | + printk(KERN_INFO "Loading hello module...\n"); 39 | + printk(KERN_INFO "Hello, World!\n"); 40 | + return 0; 41 | +} 42 | + 43 | +static void __exit hello_end(void) 44 | +{ 45 | + printk(KERN_INFO "Goodbye Boris\n"); 46 | +} 47 | + 48 | +module_init(hello_start); 49 | +module_exit(hello_end); 50 | + 51 | +MODULE_AUTHOR("Boris Houndleroy"); 52 | +MODULE_DESCRIPTION("Hello World Example"); 53 | +MODULE_LICENSE("GPL"); 54 | -------------------------------------------------------------------------------- /07kernel/helloWorld.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main(int argc, char **argv) { 4 | printf("Hello, World! \n"); 5 | } 6 | -------------------------------------------------------------------------------- /08realtime/pruSpeak.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | from pru_speak import pru_speak 3 | 4 | # Copy the signal on pin P8_16 to P9_31 5 | code = '''\ 6 | SCRIPT 7 | SET var1, DIO[14] 8 | SET DIO[0], var1 9 | GOTO 0 10 | ENDSCRIPT 11 | RUN 12 | ''' 13 | 14 | halt = '''\ 15 | HALT 16 | ''' 17 | 18 | ret = pru_speak.execute_instruction(code) 19 | print ret 20 | -------------------------------------------------------------------------------- /08realtime/pushLED.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | #include "libsoc_gpio.h" 7 | #include "libsoc_debug.h" 8 | 9 | /** 10 | * 11 | * This gpio_test is intended to be run on BeagleBone 12 | * and reads pin P9_42 (gpio7) and write the value to P9_12 (gpio60). 13 | * 14 | * The GPIO_OUTPUT and INPUT defines can be changed to support any two pins. 15 | * 16 | */ 17 | 18 | #define GPIO_OUTPUT 60 19 | #define GPIO_INPUT 7 20 | 21 | // Create both gpio pointers 22 | gpio *gpio_output, *gpio_input; 23 | 24 | static int interrupt_count = 0; 25 | 26 | int callback_test(void* arg) { 27 | int* tmp_count = (int*) arg; 28 | int value; 29 | 30 | *tmp_count = *tmp_count + 1; 31 | value = libsoc_gpio_get_level (gpio_input); 32 | libsoc_gpio_set_level(gpio_output, value); 33 | // Comment out the following line to make the code respond faster 34 | printf("Got it (%d), button = %d\n", *tmp_count, value); 35 | 36 | return EXIT_SUCCESS; 37 | } 38 | 39 | int main(void) { 40 | // Enable debug output 41 | libsoc_set_debug(1); 42 | 43 | // Request gpios 44 | gpio_output = libsoc_gpio_request(GPIO_OUTPUT, LS_SHARED); 45 | gpio_input = libsoc_gpio_request(GPIO_INPUT, LS_SHARED); 46 | 47 | // Set direction to OUTPUT 48 | libsoc_gpio_set_direction(gpio_output, OUTPUT); 49 | 50 | // Set direction to INPUT 51 | libsoc_gpio_set_direction(gpio_input, INPUT); 52 | 53 | // Set edge to BOTH 54 | libsoc_gpio_set_edge(gpio_input, BOTH); 55 | 56 | // Set up callback 57 | libsoc_gpio_callback_interrupt(gpio_input, &callback_test, 58 | (void*) &interrupt_count); 59 | 60 | printf("Push the button...\n"); 61 | // Disaple debug output so the code will respond faster 62 | libsoc_set_debug(0); 63 | 64 | sleep(10); 65 | 66 | libsoc_set_debug(1); 67 | 68 | // Cancel the callback on interrupt 69 | libsoc_gpio_callback_interrupt_cancel(gpio_input); 70 | 71 | //If gpio_request was successful 72 | if (gpio_input) { // Free gpio request memory 73 | libsoc_gpio_free(gpio_input); 74 | } 75 | 76 | if (gpio_output) { // Free gpio request memory 77 | libsoc_gpio_free(gpio_output); 78 | } 79 | 80 | return EXIT_SUCCESS; 81 | } 82 | -------------------------------------------------------------------------------- /08realtime/pushLED.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/08realtime/pushLED.fzz -------------------------------------------------------------------------------- /08realtime/pushLED.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | var b = require('bonescript'); 3 | var button = 'P9_42'; 4 | var LED = 'P9_14'; 5 | 6 | b.pinMode(button, b.INPUT, 7, 'pulldown', 'fast', doAttach); 7 | function doAttach(x) { 8 | if(x.err) { 9 | console.log('x.err = ' + x.err); 10 | return; 11 | } 12 | b.attachInterrupt(button, true, b.CHANGE, flashLED); 13 | } 14 | 15 | b.pinMode(LED, b.OUTPUT); 16 | 17 | function flashLED(x) { 18 | if(x.attached) { 19 | console.log("Interrupt handler attached"); 20 | return; 21 | } 22 | console.log('x.value = ' + x.value); 23 | console.log('x.err = ' + x.err); 24 | b.digitalWrite(LED, x.value); 25 | } 26 | -------------------------------------------------------------------------------- /08realtime/pushLED_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/08realtime/pushLED_bb.png -------------------------------------------------------------------------------- /08realtime/pushLEDmmap.c: -------------------------------------------------------------------------------- 1 | // From: http://stackoverflow.com/questions/13124271/driving-beaglebone-gpio 2 | // -through-dev-mem 3 | // user contributions licensed under cc by-sa 3.0 with attribution required 4 | // http://creativecommons.org/licenses/by-sa/3.0/ 5 | // http://blog.stackoverflow.com/2009/06/attribution-required/ 6 | // Author: madscientist159 (http://stackoverflow.com/users/3000377/madscientist159) 7 | // 8 | // Read one gpio pin and write it out to another using mmap. 9 | // Be sure to set -O3 when compiling. 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include // Defines signal-handling functions (i.e. trap Ctrl-C) 15 | #include "pushLEDmmap.h" 16 | 17 | // Global variables 18 | volatile int keepgoing = 1; // Set to 0 when Ctrl-c is pressed 19 | 20 | // Callback called when SIGINT is sent to the process (Ctrl-C) 21 | void signal_handler(int sig) { 22 | printf( "\nCtrl-C pressed, cleaning up and exiting...\n" ); 23 | keepgoing = 0; 24 | } 25 | 26 | int main(int argc, char *argv[]) { 27 | volatile void *gpio_addr; 28 | volatile unsigned int *gpio_datain; 29 | volatile unsigned int *gpio_setdataout_addr; 30 | volatile unsigned int *gpio_cleardataout_addr; 31 | 32 | // Set the signal callback for Ctrl-C 33 | signal(SIGINT, signal_handler); 34 | 35 | int fd = open("/dev/mem", O_RDWR); 36 | 37 | printf("Mapping %X - %X (size: %X)\n", GPIO0_START_ADDR, GPIO0_END_ADDR, 38 | GPIO0_SIZE); 39 | 40 | gpio_addr = mmap(0, GPIO0_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 41 | GPIO0_START_ADDR); 42 | 43 | gpio_datain = gpio_addr + GPIO_DATAIN; 44 | gpio_setdataout_addr = gpio_addr + GPIO_SETDATAOUT; 45 | gpio_cleardataout_addr = gpio_addr + GPIO_CLEARDATAOUT; 46 | 47 | if(gpio_addr == MAP_FAILED) { 48 | printf("Unable to map GPIO\n"); 49 | exit(1); 50 | } 51 | printf("GPIO mapped to %p\n", gpio_addr); 52 | printf("GPIO SETDATAOUTADDR mapped to %p\n", gpio_setdataout_addr); 53 | printf("GPIO CLEARDATAOUT mapped to %p\n", gpio_cleardataout_addr); 54 | 55 | printf("Start copying GPIO_07 to GPIO_31\n"); 56 | while(keepgoing) { 57 | if(*gpio_datain & GPIO_07) { 58 | *gpio_setdataout_addr= GPIO_31; 59 | } else { 60 | *gpio_cleardataout_addr = GPIO_31; 61 | } 62 | //usleep(1); 63 | } 64 | 65 | munmap((void *)gpio_addr, GPIO0_SIZE); 66 | close(fd); 67 | return 0; 68 | } 69 | -------------------------------------------------------------------------------- /08realtime/pushLEDmmap.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/08realtime/pushLEDmmap.fzz -------------------------------------------------------------------------------- /08realtime/pushLEDmmap.h: -------------------------------------------------------------------------------- 1 | // From: http://stackoverflow.com/questions/13124271/driving-beaglebone-gpio 2 | // -through-dev-mem 3 | // user contributions licensed under cc by-sa 3.0 with attribution required 4 | // http://creativecommons.org/licenses/by-sa/3.0/ 5 | // http://blog.stackoverflow.com/2009/06/attribution-required/ 6 | // Author: madscientist159 (http://stackoverflow.com/users/3000377/madscientist159) 7 | 8 | #ifndef _BEAGLEBONE_GPIO_H_ 9 | #define _BEAGLEBONE_GPIO_H_ 10 | 11 | #define GPIO0_START_ADDR 0x44e07000 12 | #define GPIO0_END_ADDR 0x44e08000 13 | #define GPIO0_SIZE (GPIO0_END_ADDR - GPIO0_START_ADDR) 14 | 15 | #define GPIO1_START_ADDR 0x4804C000 16 | #define GPIO1_END_ADDR 0x4804D000 17 | #define GPIO1_SIZE (GPIO1_END_ADDR - GPIO1_START_ADDR) 18 | 19 | #define GPIO2_START_ADDR 0x41A4C000 20 | #define GPIO2_END_ADDR 0x41A4D000 21 | #define GPIO2_SIZE (GPIO2_END_ADDR - GPIO2_START_ADDR) 22 | 23 | #define GPIO3_START_ADDR 0x41A4E000 24 | #define GPIO3_END_ADDR 0x41A4F000 25 | #define GPIO3_SIZE (GPIO3_END_ADDR - GPIO3_START_ADDR) 26 | 27 | #define GPIO_DATAIN 0x138 28 | #define GPIO_SETDATAOUT 0x194 29 | #define GPIO_CLEARDATAOUT 0x190 30 | 31 | #define GPIO_03 (1<<3) 32 | #define GPIO_07 (1<<7) 33 | #define GPIO_31 (1<<31) 34 | #define GPIO_60 (1<<28) 35 | #endif -------------------------------------------------------------------------------- /08realtime/pushLEDmmap_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/08realtime/pushLEDmmap_bb.png -------------------------------------------------------------------------------- /08realtime/pushLEDpru.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/08realtime/pushLEDpru.fzz -------------------------------------------------------------------------------- /08realtime/pushLEDpru_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/08realtime/pushLEDpru_bb.png -------------------------------------------------------------------------------- /08realtime/thumb.patch: -------------------------------------------------------------------------------- 1 | diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S 2 | index e2bc263..6f4d9f0 100644 3 | --- a/arch/arm/kernel/entry-armv.S 4 | +++ b/arch/arm/kernel/entry-armv.S 5 | @@ -469,6 +469,7 @@ __irq_usr: 6 | kuser_cmpxchg_check 7 | irq_handler 8 | #ifdef CONFIG_IPIPE 9 | +THUMB( it ne ) 10 | bne __ipipe_ret_to_user_irqs_disabled 11 | #endif /* CONFIG_IPIPE */ 12 | get_thread_info tsk 13 | @@ -767,6 +768,7 @@ ENTRY(ret_from_exception) 14 | disable_irq 15 | bl __ipipe_check_root 16 | cmp r0, #1 17 | +THUMB( it ne ) 18 | bne __ipipe_ret_to_user_irqs_disabled @ Fast exit path over non-root domains 19 | #endif /* CONFIG_IPIPE */ 20 | get_thread_info tsk 21 | -------------------------------------------------------------------------------- /08realtime/xenomaiConfig.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/08realtime/xenomaiConfig.png -------------------------------------------------------------------------------- /09capes/BBB_GPS_Cape.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/BBB_GPS_Cape.fzz -------------------------------------------------------------------------------- /09capes/Boris128.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/Boris128.jpg -------------------------------------------------------------------------------- /09capes/EagleLicense.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/EagleLicense.png -------------------------------------------------------------------------------- /09capes/Fritzing_Inspector.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/Fritzing_Inspector.png -------------------------------------------------------------------------------- /09capes/Fritzing_layers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/Fritzing_layers.png -------------------------------------------------------------------------------- /09capes/Google ChromeScreenSnapz160.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/Google ChromeScreenSnapz160.png -------------------------------------------------------------------------------- /09capes/Google ChromeScreenSnapz161.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/Google ChromeScreenSnapz161.png -------------------------------------------------------------------------------- /09capes/Google ChromeScreenSnapz162.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/Google ChromeScreenSnapz162.png -------------------------------------------------------------------------------- /09capes/Google ChromeScreenSnapz163.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/Google ChromeScreenSnapz163.png -------------------------------------------------------------------------------- /09capes/Google ChromeScreenSnapz164.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/Google ChromeScreenSnapz164.png -------------------------------------------------------------------------------- /09capes/Google ChromeScreenSnapz166.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/Google ChromeScreenSnapz166.png -------------------------------------------------------------------------------- /09capes/Google ChromeScreenSnapz167.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/Google ChromeScreenSnapz167.png -------------------------------------------------------------------------------- /09capes/Google ChromeScreenSnapz168.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/Google ChromeScreenSnapz168.png -------------------------------------------------------------------------------- /09capes/Google ChromeScreenSnapz169.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/Google ChromeScreenSnapz169.png -------------------------------------------------------------------------------- /09capes/Google ChromeScreenSnapz170.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/Google ChromeScreenSnapz170.png -------------------------------------------------------------------------------- /09capes/Google ChromeScreenSnapz171.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/Google ChromeScreenSnapz171.png -------------------------------------------------------------------------------- /09capes/Google ChromeScreenSnapz172.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/Google ChromeScreenSnapz172.png -------------------------------------------------------------------------------- /09capes/Google ChromeScreenSnapz173.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/Google ChromeScreenSnapz173.png -------------------------------------------------------------------------------- /09capes/Google ChromeScreenSnapz174.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/Google ChromeScreenSnapz174.png -------------------------------------------------------------------------------- /09capes/Google ChromeScreenSnapz175.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/Google ChromeScreenSnapz175.png -------------------------------------------------------------------------------- /09capes/LCD7Desktop.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/LCD7Desktop.png -------------------------------------------------------------------------------- /09capes/MiniDisplay-A1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/MiniDisplay-A1.jpg -------------------------------------------------------------------------------- /09capes/beaglebone_cape_boardoutline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/beaglebone_cape_boardoutline.png -------------------------------------------------------------------------------- /09capes/beaglebone_cape_boardoutline.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /09capes/boneOutline.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 11 | 12 | -------------------------------------------------------------------------------- /09capes/circuithub_part_matching.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/circuithub_part_matching.png -------------------------------------------------------------------------------- /09capes/circuithub_quote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/circuithub_quote.png -------------------------------------------------------------------------------- /09capes/convert-fritzing-to-eagle.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | #http://forums.getpebble.com/discussion/7211/solved-freetype-library-not-found-using-macports-on-os-x-10-8 3 | #sudo ln -s ~/gentoo/usr/lib/libfreetype.dylib /usr/local/lib/libfreetype.dylib 4 | #sudo ln -s ~/gentoo/usr/include/freetype2/freetype /usr/local/include/freetype 5 | sudo apt-get install libfreetype6 6 | pip install freetype-py 7 | git clone git@github.com:upverter/schematic-file-converter.git 8 | cd schematic-file-converter/ 9 | python setup.py install 10 | #python -m upconvert.upconverter -h 11 | cd ~/quickbot 12 | python -m upconvert.upconverter -i quickBot.fzz -f fritzing -o quickBot-eagle.sch -t eagle --unsupported 13 | -------------------------------------------------------------------------------- /09capes/eagle3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/eagle3.png -------------------------------------------------------------------------------- /09capes/eagle7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/eagle7.png -------------------------------------------------------------------------------- /09capes/fritzing1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/fritzing1.png -------------------------------------------------------------------------------- /09capes/fritzing2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/fritzing2.png -------------------------------------------------------------------------------- /09capes/fritzing3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/fritzing3.png -------------------------------------------------------------------------------- /09capes/fritzing4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/fritzing4.png -------------------------------------------------------------------------------- /09capes/miniDisplay_Cape_pcb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/miniDisplay_Cape_pcb.png -------------------------------------------------------------------------------- /09capes/miniDisplay_Cape_schem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/miniDisplay_Cape_schem.png -------------------------------------------------------------------------------- /09capes/quickBot-cache-cache.lib: -------------------------------------------------------------------------------- 1 | EESchema-LIBRARY Version 2.3 Date: Sun 23 Nov 2014 12:25:45 PM EST 2 | #encoding utf-8 3 | # 4 | # ResistorModuleID 5 | # 6 | DEF ResistorModuleID R 0 30 Y Y 1 F N 7 | F0 "R" 0 0 60 H V L CNN 8 | F1 "ResistorModuleID" 0 60 60 H V L CNN 9 | DRAW 10 | ENDDRAW 11 | ENDDEF 12 | # 13 | # 3cbb886ccc8dee1a9eeb967331875e2e 14 | # 15 | DEF 3cbb886ccc8dee1a9eeb967331875e2e JACK 0 30 Y Y 1 F N 16 | F0 "JACK" 0 0 60 H V L CNN 17 | F1 "3cbb886ccc8dee1a9eeb967331875e2e" 0 60 60 H V L CNN 18 | DRAW 19 | S 0 1165 0 1165 0 1 0 N 20 | S -665 -330 -165 -995 0 1 0 N 21 | P 2 0 1 0 165 -500 330 -500 N 22 | P 2 0 1 0 330 -330 165 -330 N 23 | S 145 -310 190 -355 0 1 0 N 24 | S 145 -475 190 -520 0 1 0 N 25 | X ~ 0 165 -290 0 U 60 60 0 1 B 26 | X ~ 1 165 -455 0 U 60 60 0 1 B 27 | ENDDRAW 28 | ENDDEF 29 | # 30 | # BeagleBoneBlackCape_24b87b710774e71d846d0afceaba5afb_3 31 | # 32 | DEF BeagleBoneBlackCape_24b87b710774e71d846d0afceaba5afb_3 BeagleBone 0 30 Y Y 1 F N 33 | F0 "BeagleBone" 0 0 60 H V L CNN 34 | F1 "BeagleBoneBlackCape_24b87b710774e71d846d0afceaba5afb_3" 0 60 60 H V L CNN 35 | DRAW 36 | S 330 -165 1000 -9135 0 1 0 N 37 | P 2 0 1 0 330 -1495 165 -1495 N 38 | P 2 0 1 0 330 -1660 165 -1660 N 39 | P 2 0 1 0 330 -1825 165 -1825 N 40 | P 2 0 1 0 330 -1995 165 -1995 N 41 | P 2 0 1 0 330 -2160 165 -2160 N 42 | P 2 0 1 0 330 -2325 165 -2325 N 43 | P 2 0 1 0 330 -2490 165 -2490 N 44 | P 2 0 1 0 330 -2655 165 -2655 N 45 | P 2 0 1 0 330 -2825 165 -2825 N 46 | P 2 0 1 0 330 -2990 165 -2990 N 47 | S 145 -1475 190 -1520 0 1 0 N 48 | S 145 -1640 190 -1685 0 1 0 N 49 | S 145 -1805 190 -1850 0 1 0 N 50 | S 145 -1970 190 -2015 0 1 0 N 51 | S 145 -2135 190 -2180 0 1 0 N 52 | S 145 -2305 190 -2350 0 1 0 N 53 | S 145 -2470 190 -2515 0 1 0 N 54 | S 145 -2635 190 -2680 0 1 0 N 55 | S 145 -2800 190 -2845 0 1 0 N 56 | S 145 -2970 190 -3015 0 1 0 N 57 | P 2 0 1 0 330 -3155 165 -3155 N 58 | P 2 0 1 0 330 -3320 165 -3320 N 59 | P 2 0 1 0 330 -3490 165 -3490 N 60 | P 2 0 1 0 330 -3655 165 -3655 N 61 | P 2 0 1 0 330 -3820 165 -3820 N 62 | P 2 0 1 0 330 -3985 165 -3985 N 63 | P 2 0 1 0 330 -4150 165 -4150 N 64 | P 2 0 1 0 330 -4320 165 -4320 N 65 | P 2 0 1 0 330 -4485 165 -4485 N 66 | P 2 0 1 0 330 -4650 165 -4650 N 67 | S 145 -3135 190 -3180 0 1 0 N 68 | S 145 -3300 190 -3345 0 1 0 N 69 | S 145 -3465 190 -3510 0 1 0 N 70 | S 145 -3630 190 -3675 0 1 0 N 71 | S 145 -3800 190 -3845 0 1 0 N 72 | S 145 -3965 190 -4010 0 1 0 N 73 | S 145 -4130 190 -4175 0 1 0 N 74 | S 145 -4295 190 -4340 0 1 0 N 75 | S 145 -4460 190 -4505 0 1 0 N 76 | S 145 -4630 190 -4675 0 1 0 N 77 | P 2 0 1 0 330 -4815 165 -4815 N 78 | P 2 0 1 0 330 -4985 165 -4985 N 79 | P 2 0 1 0 330 -5150 165 -5150 N 80 | P 2 0 1 0 330 -5315 165 -5315 N 81 | P 2 0 1 0 330 -5480 165 -5480 N 82 | P 2 0 1 0 330 -5645 165 -5645 N 83 | P 2 0 1 0 330 -5815 165 -5815 N 84 | P 2 0 1 0 330 -5980 165 -5980 N 85 | P 2 0 1 0 330 -6145 165 -6145 N 86 | P 2 0 1 0 330 -6310 165 -6310 N 87 | S 145 -4795 190 -4840 0 1 0 N 88 | S 145 -4960 190 -5005 0 1 0 N 89 | S 145 -5125 190 -5170 0 1 0 N 90 | S 145 -5295 190 -5340 0 1 0 N 91 | S 145 -5460 190 -5505 0 1 0 N 92 | S 145 -5625 190 -5670 0 1 0 N 93 | S 145 -5790 190 -5835 0 1 0 N 94 | S 145 -5955 190 -6000 0 1 0 N 95 | S 145 -6125 190 -6170 0 1 0 N 96 | S 145 -6290 190 -6335 0 1 0 N 97 | P 2 0 1 0 330 -6480 165 -6480 N 98 | P 2 0 1 0 330 -6645 165 -6645 N 99 | P 2 0 1 0 330 -6810 165 -6810 N 100 | P 2 0 1 0 330 -6975 165 -6975 N 101 | P 2 0 1 0 330 -7140 165 -7140 N 102 | P 2 0 1 0 330 -7310 165 -7310 N 103 | P 2 0 1 0 330 -7475 165 -7475 N 104 | P 2 0 1 0 330 -7640 165 -7640 N 105 | P 2 0 1 0 330 -7805 165 -7805 N 106 | P 2 0 1 0 330 -7970 165 -7970 N 107 | S 145 -6455 190 -6500 0 1 0 N 108 | S 145 -6620 190 -6665 0 1 0 N 109 | S 145 -6790 190 -6835 0 1 0 N 110 | S 145 -6955 190 -7000 0 1 0 N 111 | S 145 -7120 190 -7165 0 1 0 N 112 | S 145 -7285 190 -7330 0 1 0 N 113 | S 145 -7450 190 -7495 0 1 0 N 114 | S 145 -7620 190 -7665 0 1 0 N 115 | S 145 -7785 190 -7830 0 1 0 N 116 | S 145 -7950 190 -7995 0 1 0 N 117 | P 2 0 1 0 330 -8140 165 -8140 N 118 | P 2 0 1 0 330 -8305 165 -8305 N 119 | P 2 0 1 0 330 -8470 165 -8470 N 120 | P 2 0 1 0 330 -8635 165 -8635 N 121 | P 2 0 1 0 330 -8805 165 -8805 N 122 | P 2 0 1 0 330 -8970 165 -8970 N 123 | S 145 -8115 190 -8160 0 1 0 N 124 | S 145 -8280 190 -8325 0 1 0 N 125 | S 145 -8450 190 -8495 0 1 0 N 126 | S 145 -8615 190 -8660 0 1 0 N 127 | S 145 -8780 190 -8825 0 1 0 N 128 | S 145 -8945 190 -8990 0 1 0 N 129 | P 2 0 1 0 995 -1495 1165 -1495 N 130 | P 2 0 1 0 995 -1660 1165 -1660 N 131 | P 2 0 1 0 995 -1825 1165 -1825 N 132 | P 2 0 1 0 995 -1995 1165 -1995 N 133 | P 2 0 1 0 995 -2160 1165 -2160 N 134 | P 2 0 1 0 995 -2325 1165 -2325 N 135 | P 2 0 1 0 995 -2490 1165 -2490 N 136 | P 2 0 1 0 995 -2655 1165 -2655 N 137 | P 2 0 1 0 995 -2825 1165 -2825 N 138 | P 2 0 1 0 995 -2990 1165 -2990 N 139 | S -1185 -1475 -1140 -1520 0 1 0 N 140 | S -1185 -1640 -1140 -1685 0 1 0 N 141 | S -1185 -1805 -1140 -1850 0 1 0 N 142 | S -1185 -1970 -1140 -2015 0 1 0 N 143 | S -1185 -2135 -1140 -2180 0 1 0 N 144 | S -1185 -2305 -1140 -2350 0 1 0 N 145 | S -1185 -2470 -1140 -2515 0 1 0 N 146 | S -1185 -2635 -1140 -2680 0 1 0 N 147 | S -1185 -2800 -1140 -2845 0 1 0 N 148 | S -1185 -2970 -1140 -3015 0 1 0 N 149 | P 2 0 1 0 995 -3155 1165 -3155 N 150 | P 2 0 1 0 995 -3320 1165 -3320 N 151 | P 2 0 1 0 995 -3490 1165 -3490 N 152 | P 2 0 1 0 995 -3655 1165 -3655 N 153 | P 2 0 1 0 995 -3820 1165 -3820 N 154 | P 2 0 1 0 995 -3985 1165 -3985 N 155 | P 2 0 1 0 995 -4150 1165 -4150 N 156 | P 2 0 1 0 995 -4320 1165 -4320 N 157 | P 2 0 1 0 995 -4485 1165 -4485 N 158 | P 2 0 1 0 995 -4650 1165 -4650 N 159 | S -1185 -3135 -1140 -3180 0 1 0 N 160 | S -1185 -3300 -1140 -3345 0 1 0 N 161 | S -1185 -3465 -1140 -3510 0 1 0 N 162 | S -1185 -3630 -1140 -3675 0 1 0 N 163 | S -1185 -3800 -1140 -3845 0 1 0 N 164 | S -1185 -3965 -1140 -4010 0 1 0 N 165 | S -1185 -4130 -1140 -4175 0 1 0 N 166 | S -1185 -4295 -1140 -4340 0 1 0 N 167 | S -1185 -4460 -1140 -4505 0 1 0 N 168 | S -1185 -4630 -1140 -4675 0 1 0 N 169 | P 2 0 1 0 995 -4815 1165 -4815 N 170 | P 2 0 1 0 995 -4985 1165 -4985 N 171 | P 2 0 1 0 995 -5150 1165 -5150 N 172 | P 2 0 1 0 995 -5315 1165 -5315 N 173 | P 2 0 1 0 995 -5480 1165 -5480 N 174 | P 2 0 1 0 995 -5645 1165 -5645 N 175 | P 2 0 1 0 995 -5815 1165 -5815 N 176 | P 2 0 1 0 995 -5980 1165 -5980 N 177 | P 2 0 1 0 995 -6145 1165 -6145 N 178 | P 2 0 1 0 995 -6310 1165 -6310 N 179 | S -1185 -4795 -1140 -4840 0 1 0 N 180 | S -1185 -4960 -1140 -5005 0 1 0 N 181 | S -1185 -5125 -1140 -5170 0 1 0 N 182 | S -1185 -5295 -1140 -5340 0 1 0 N 183 | S -1185 -5460 -1140 -5505 0 1 0 N 184 | S -1185 -5625 -1140 -5670 0 1 0 N 185 | S -1185 -5790 -1140 -5835 0 1 0 N 186 | S -1185 -5955 -1140 -6000 0 1 0 N 187 | S -1185 -6125 -1140 -6170 0 1 0 N 188 | S -1185 -6290 -1140 -6335 0 1 0 N 189 | P 2 0 1 0 995 -6480 1165 -6480 N 190 | P 2 0 1 0 995 -6645 1165 -6645 N 191 | P 2 0 1 0 995 -6810 1165 -6810 N 192 | P 2 0 1 0 995 -6975 1165 -6975 N 193 | P 2 0 1 0 995 -7140 1165 -7140 N 194 | P 2 0 1 0 995 -7310 1165 -7310 N 195 | P 2 0 1 0 995 -7475 1165 -7475 N 196 | P 2 0 1 0 995 -7640 1165 -7640 N 197 | P 2 0 1 0 995 -7805 1165 -7805 N 198 | P 2 0 1 0 995 -7970 1165 -7970 N 199 | S -1185 -6455 -1140 -6500 0 1 0 N 200 | S -1185 -6620 -1140 -6665 0 1 0 N 201 | S -1185 -6790 -1140 -6835 0 1 0 N 202 | S -1185 -6955 -1140 -7000 0 1 0 N 203 | S -1185 -7120 -1140 -7165 0 1 0 N 204 | S -1185 -7285 -1140 -7330 0 1 0 N 205 | S -1185 -7450 -1140 -7495 0 1 0 N 206 | S -1185 -7620 -1140 -7665 0 1 0 N 207 | S -1185 -7785 -1140 -7830 0 1 0 N 208 | S -1185 -7950 -1140 -7995 0 1 0 N 209 | P 2 0 1 0 995 -8140 1165 -8140 N 210 | P 2 0 1 0 995 -8305 1165 -8305 N 211 | P 2 0 1 0 995 -8470 1165 -8470 N 212 | P 2 0 1 0 995 -8635 1165 -8635 N 213 | P 2 0 1 0 995 -8805 1165 -8805 N 214 | P 2 0 1 0 995 -8970 1165 -8970 N 215 | S -1185 -8115 -1140 -8160 0 1 0 N 216 | S -1185 -8280 -1140 -8325 0 1 0 N 217 | S -1185 -8450 -1140 -8495 0 1 0 N 218 | S -1185 -8615 -1140 -8660 0 1 0 N 219 | S -1185 -8780 -1140 -8825 0 1 0 N 220 | S -1185 -8945 -1140 -8990 0 1 0 N 221 | P 2 0 1 0 330 -330 165 -330 N 222 | P 2 0 1 0 330 -500 165 -500 N 223 | P 2 0 1 0 330 -665 165 -665 N 224 | P 2 0 1 0 330 -830 165 -830 N 225 | P 2 0 1 0 330 -995 165 -995 N 226 | P 2 0 1 0 330 -1165 165 -1165 N 227 | S 145 -310 190 -355 0 1 0 N 228 | S 145 -475 190 -520 0 1 0 N 229 | S 145 -640 190 -685 0 1 0 N 230 | S 145 -810 190 -855 0 1 0 N 231 | S 145 -975 190 -1020 0 1 0 N 232 | S 145 -1140 190 -1185 0 1 0 N 233 | X ~ 0 165 -1455 0 U 60 60 0 1 B 234 | X ~ 1 165 -1620 0 U 60 60 0 1 B 235 | X ~ 2 165 -1785 0 U 60 60 0 1 B 236 | X ~ 3 165 -1950 0 U 60 60 0 1 B 237 | X ~ 4 165 -2115 0 U 60 60 0 1 B 238 | X ~ 5 165 -2285 0 U 60 60 0 1 B 239 | X ~ 6 165 -2450 0 U 60 60 0 1 B 240 | X ~ 7 165 -2615 0 U 60 60 0 1 B 241 | X ~ 8 165 -2780 0 U 60 60 0 1 B 242 | X ~ 9 165 -2950 0 U 60 60 0 1 B 243 | X ~ 10 165 -3115 0 U 60 60 0 1 B 244 | X ~ 11 165 -3280 0 U 60 60 0 1 B 245 | X ~ 12 165 -3445 0 U 60 60 0 1 B 246 | X ~ 13 165 -3610 0 U 60 60 0 1 B 247 | X ~ 14 165 -3780 0 U 60 60 0 1 B 248 | X ~ 15 165 -3945 0 U 60 60 0 1 B 249 | X ~ 16 165 -4110 0 U 60 60 0 1 B 250 | X ~ 17 165 -4275 0 U 60 60 0 1 B 251 | X ~ 18 165 -4440 0 U 60 60 0 1 B 252 | X ~ 19 165 -4610 0 U 60 60 0 1 B 253 | X ~ 20 165 -4775 0 U 60 60 0 1 B 254 | X ~ 21 165 -4940 0 U 60 60 0 1 B 255 | X ~ 22 165 -5105 0 U 60 60 0 1 B 256 | X ~ 23 165 -5275 0 U 60 60 0 1 B 257 | X ~ 24 165 -5440 0 U 60 60 0 1 B 258 | X ~ 25 165 -5605 0 U 60 60 0 1 B 259 | X ~ 26 165 -5770 0 U 60 60 0 1 B 260 | X ~ 27 165 -5935 0 U 60 60 0 1 B 261 | X ~ 28 165 -6105 0 U 60 60 0 1 B 262 | X ~ 29 165 -6270 0 U 60 60 0 1 B 263 | X ~ 30 165 -6435 0 U 60 60 0 1 B 264 | X ~ 31 165 -6600 0 U 60 60 0 1 B 265 | X ~ 32 165 -6770 0 U 60 60 0 1 B 266 | X ~ 33 165 -6935 0 U 60 60 0 1 B 267 | X ~ 34 165 -7100 0 U 60 60 0 1 B 268 | X ~ 35 165 -7265 0 U 60 60 0 1 B 269 | X ~ 36 165 -7430 0 U 60 60 0 1 B 270 | X ~ 37 165 -7600 0 U 60 60 0 1 B 271 | X ~ 38 165 -7765 0 U 60 60 0 1 B 272 | X ~ 39 165 -7930 0 U 60 60 0 1 B 273 | X ~ 40 165 -8095 0 U 60 60 0 1 B 274 | X ~ 41 165 -8260 0 U 60 60 0 1 B 275 | X ~ 42 165 -8430 0 U 60 60 0 1 B 276 | X ~ 43 165 -8595 0 U 60 60 0 1 B 277 | X ~ 44 165 -8760 0 U 60 60 0 1 B 278 | X ~ 45 165 -8925 0 U 60 60 0 1 B 279 | X ~ 46 -1165 -1455 0 U 60 60 0 1 B 280 | X ~ 47 -1165 -1620 0 U 60 60 0 1 B 281 | X ~ 48 -1165 -1785 0 U 60 60 0 1 B 282 | X ~ 49 -1165 -1950 0 U 60 60 0 1 B 283 | X ~ 50 -1165 -2115 0 U 60 60 0 1 B 284 | X ~ 51 -1165 -2285 0 U 60 60 0 1 B 285 | X ~ 52 -1165 -2450 0 U 60 60 0 1 B 286 | X ~ 53 -1165 -2615 0 U 60 60 0 1 B 287 | X ~ 54 -1165 -2780 0 U 60 60 0 1 B 288 | X ~ 55 -1165 -2950 0 U 60 60 0 1 B 289 | X ~ 56 -1165 -3115 0 U 60 60 0 1 B 290 | X ~ 57 -1165 -3280 0 U 60 60 0 1 B 291 | X ~ 58 -1165 -3445 0 U 60 60 0 1 B 292 | X ~ 59 -1165 -3610 0 U 60 60 0 1 B 293 | X ~ 60 -1165 -3780 0 U 60 60 0 1 B 294 | X ~ 61 -1165 -3945 0 U 60 60 0 1 B 295 | X ~ 62 -1165 -4110 0 U 60 60 0 1 B 296 | X ~ 63 -1165 -4275 0 U 60 60 0 1 B 297 | X ~ 64 -1165 -4440 0 U 60 60 0 1 B 298 | X ~ 65 -1165 -4610 0 U 60 60 0 1 B 299 | X ~ 66 -1165 -4775 0 U 60 60 0 1 B 300 | X ~ 67 -1165 -4940 0 U 60 60 0 1 B 301 | X ~ 68 -1165 -5105 0 U 60 60 0 1 B 302 | X ~ 69 -1165 -5275 0 U 60 60 0 1 B 303 | X ~ 70 -1165 -5440 0 U 60 60 0 1 B 304 | X ~ 71 -1165 -5605 0 U 60 60 0 1 B 305 | X ~ 72 -1165 -5770 0 U 60 60 0 1 B 306 | X ~ 73 -1165 -5935 0 U 60 60 0 1 B 307 | X ~ 74 -1165 -6105 0 U 60 60 0 1 B 308 | X ~ 75 -1165 -6270 0 U 60 60 0 1 B 309 | X ~ 76 -1165 -6435 0 U 60 60 0 1 B 310 | X ~ 77 -1165 -6600 0 U 60 60 0 1 B 311 | X ~ 78 -1165 -6770 0 U 60 60 0 1 B 312 | X ~ 79 -1165 -6935 0 U 60 60 0 1 B 313 | X ~ 80 -1165 -7100 0 U 60 60 0 1 B 314 | X ~ 81 -1165 -7265 0 U 60 60 0 1 B 315 | X ~ 82 -1165 -7430 0 U 60 60 0 1 B 316 | X ~ 83 -1165 -7600 0 U 60 60 0 1 B 317 | X ~ 84 -1165 -7765 0 U 60 60 0 1 B 318 | X ~ 85 -1165 -7930 0 U 60 60 0 1 B 319 | X ~ 86 -1165 -8095 0 U 60 60 0 1 B 320 | X ~ 87 -1165 -8260 0 U 60 60 0 1 B 321 | X ~ 88 -1165 -8430 0 U 60 60 0 1 B 322 | X ~ 89 -1165 -8595 0 U 60 60 0 1 B 323 | X ~ 90 -1165 -8760 0 U 60 60 0 1 B 324 | X ~ 91 -1165 -8925 0 U 60 60 0 1 B 325 | X ~ 92 165 -290 0 U 60 60 0 1 B 326 | X ~ 93 165 -455 0 U 60 60 0 1 B 327 | X ~ 94 165 -620 0 U 60 60 0 1 B 328 | X ~ 95 165 -790 0 U 60 60 0 1 B 329 | X ~ 96 165 -955 0 U 60 60 0 1 B 330 | X ~ 97 165 -1120 0 U 60 60 0 1 B 331 | ENDDRAW 332 | ENDDEF 333 | # 334 | # 1000FADF10011leg 335 | # 336 | DEF 1000FADF10011leg M 0 30 Y Y 1 F N 337 | F0 "M" 0 0 60 H V L CNN 338 | F1 "1000FADF10011leg" 0 60 60 H V L CNN 339 | DRAW 340 | ENDDRAW 341 | ENDDEF 342 | # 343 | # RevEd_L293D 344 | # 345 | DEF RevEd_L293D IC 0 30 Y Y 1 F N 346 | F0 "IC" 0 0 60 H V L CNN 347 | F1 "RevEd_L293D" 0 60 60 H V L CNN 348 | DRAW 349 | ENDDRAW 350 | ENDDEF 351 | # 352 | # SparkFun-Connectors-M03-SCREW_LOCK 353 | # 354 | DEF SparkFun-Connectors-M03-SCREW_LOCK JP 0 30 Y Y 1 F N 355 | F0 "JP" 0 0 60 H V L CNN 356 | F1 "SparkFun-Connectors-M03-SCREW_LOCK" 0 60 60 H V L CNN 357 | DRAW 358 | ENDDRAW 359 | ENDDEF 360 | # 361 | # beab33bd7feee277622ef76dd6e79e4d 362 | # 363 | DEF beab33bd7feee277622ef76dd6e79e4d J 0 30 Y Y 1 F N 364 | F0 "J" 0 0 60 H V L CNN 365 | F1 "beab33bd7feee277622ef76dd6e79e4d" 0 60 60 H V L CNN 366 | DRAW 367 | ENDDRAW 368 | ENDDEF 369 | # 370 | #End Library 371 | -------------------------------------------------------------------------------- /09capes/quickBot-eagle.sch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot-eagle.sch -------------------------------------------------------------------------------- /09capes/quickBot-upverter.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot-upverter.PNG -------------------------------------------------------------------------------- /09capes/quickBot.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot.fzz -------------------------------------------------------------------------------- /09capes/quickBot5IR.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot5IR.fzz -------------------------------------------------------------------------------- /09capes/quickBot_bb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_bb.png -------------------------------------------------------------------------------- /09capes/quickBot_eaglexml.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_eaglexml.png -------------------------------------------------------------------------------- /09capes/quickBot_fritzing_export.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_fritzing_export.png -------------------------------------------------------------------------------- /09capes/quickBot_gerbers.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_gerbers.zip -------------------------------------------------------------------------------- /09capes/quickBot_gerbers/quickBot_drill.txt: -------------------------------------------------------------------------------- 1 | ; NON-PLATED HOLES START AT T1 2 | ; THROUGH (PLATED) HOLES START AT T100 3 | M48 4 | INCH 5 | T100C0.047244 6 | T101C0.030000 7 | T102C0.038000 8 | T103C0.015748 9 | T104C0.030600 10 | T105C0.035000 11 | % 12 | T100 13 | X016657Y007268 14 | X013761Y004268 15 | X015209Y004268 16 | X016657Y004268 17 | X013761Y007268 18 | X015209Y007268 19 | T101 20 | X014761Y014268 21 | X013761Y014268 22 | T102 23 | X006761Y019268 24 | X006761Y020268 25 | X016761Y010268 26 | X013761Y019268 27 | X013761Y020268 28 | X015761Y010268 29 | X014761Y010268 30 | T103 31 | X005160Y025000 32 | X002520Y025960 33 | X018840Y021400 34 | X003720Y011800 35 | T104 36 | X001766Y021263 37 | X020761Y013268 38 | X000771Y024258 39 | X001766Y024258 40 | X019766Y012268 41 | X019766Y017263 42 | X000771Y013268 43 | X001766Y013268 44 | X020761Y007273 45 | X019766Y006273 46 | X002766Y013268 47 | X000771Y007273 48 | X020761Y022258 49 | X001766Y007273 50 | X019766Y023263 51 | X019766Y026253 52 | X000771Y022258 53 | X001766Y022258 54 | X019766Y010268 55 | X020761Y016263 56 | X000771Y016263 57 | X019766Y015268 58 | X019766Y018258 59 | X001766Y016263 60 | X020761Y005278 61 | X020761Y008268 62 | X019766Y004278 63 | X002766Y016263 64 | X019766Y009273 65 | X000771Y005278 66 | X000771Y008268 67 | X001766Y005278 68 | X001766Y008268 69 | X019766Y021263 70 | X020761Y025258 71 | X020761Y011273 72 | X020761Y014263 73 | X019766Y024258 74 | X000771Y025258 75 | X000771Y011273 76 | X000771Y014263 77 | X001766Y025258 78 | X019766Y013268 79 | X001766Y011273 80 | X001766Y014263 81 | X020761Y019268 82 | X002766Y014263 83 | X019766Y007273 84 | X020761Y020263 85 | X000771Y019268 86 | X001766Y019268 87 | X000771Y020263 88 | X019766Y022258 89 | X001766Y020263 90 | X020761Y012268 91 | X020761Y017263 92 | X019766Y016263 93 | X000771Y012268 94 | X001766Y012268 95 | X020761Y006273 96 | X000771Y017263 97 | X001766Y017263 98 | X002766Y012268 99 | X000771Y006273 100 | X019766Y005278 101 | X019766Y008268 102 | X001766Y006273 103 | X002766Y017263 104 | X020761Y023263 105 | X020761Y026253 106 | X020761Y010268 107 | X000771Y023263 108 | X000771Y026253 109 | X019766Y025258 110 | X001766Y023263 111 | X001766Y026253 112 | X019766Y011273 113 | X019766Y014263 114 | X000771Y010268 115 | X020761Y015268 116 | X020761Y018258 117 | X001766Y010268 118 | X020761Y004278 119 | X000771Y015268 120 | X000771Y018258 121 | X001766Y015268 122 | X001766Y018258 123 | X020761Y009273 124 | X019766Y019268 125 | X020761Y021263 126 | X000771Y004278 127 | X001766Y004278 128 | X002766Y015268 129 | X019766Y020263 130 | X000771Y009273 131 | X020761Y024258 132 | X001766Y009273 133 | X000771Y021263 134 | T105 135 | X011761Y020268 136 | X011761Y010268 137 | X007761Y010268 138 | X008761Y018268 139 | X011761Y018268 140 | X006761Y007268 141 | X008761Y022268 142 | X011761Y022268 143 | X006761Y004268 144 | X002761Y007268 145 | X002761Y004268 146 | X008761Y017268 147 | X011761Y017268 148 | X008761Y021268 149 | X011761Y021268 150 | X006761Y010268 151 | X011761Y007268 152 | X007761Y007268 153 | X011761Y004268 154 | X007761Y004268 155 | X002761Y010268 156 | X008761Y019268 157 | X011761Y019268 158 | X008761Y023268 159 | X008761Y016268 160 | X011761Y023268 161 | X011761Y016268 162 | X008761Y020268 163 | T00 164 | M30 165 | -------------------------------------------------------------------------------- /09capes/quickBot_gerbers/quickBot_etch_copper_bottom.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_gerbers/quickBot_etch_copper_bottom.pdf -------------------------------------------------------------------------------- /09capes/quickBot_gerbers/quickBot_etch_copper_bottom_mirror.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_gerbers/quickBot_etch_copper_bottom_mirror.pdf -------------------------------------------------------------------------------- /09capes/quickBot_gerbers/quickBot_etch_copper_top.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_gerbers/quickBot_etch_copper_top.pdf -------------------------------------------------------------------------------- /09capes/quickBot_gerbers/quickBot_etch_copper_top_mirror.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_gerbers/quickBot_etch_copper_top_mirror.pdf -------------------------------------------------------------------------------- /09capes/quickBot_gerbers/quickBot_etch_mask_bottom.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_gerbers/quickBot_etch_mask_bottom.pdf -------------------------------------------------------------------------------- /09capes/quickBot_gerbers/quickBot_etch_mask_bottom_mirror.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_gerbers/quickBot_etch_mask_bottom_mirror.pdf -------------------------------------------------------------------------------- /09capes/quickBot_gerbers/quickBot_etch_mask_top.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_gerbers/quickBot_etch_mask_top.pdf -------------------------------------------------------------------------------- /09capes/quickBot_gerbers/quickBot_etch_mask_top_mirror.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_gerbers/quickBot_etch_mask_top_mirror.pdf -------------------------------------------------------------------------------- /09capes/quickBot_gerbers/quickBot_etch_paste_mask_bottom.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_gerbers/quickBot_etch_paste_mask_bottom.pdf -------------------------------------------------------------------------------- /09capes/quickBot_gerbers/quickBot_etch_paste_mask_bottom_mirror.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_gerbers/quickBot_etch_paste_mask_bottom_mirror.pdf -------------------------------------------------------------------------------- /09capes/quickBot_gerbers/quickBot_etch_paste_mask_top.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_gerbers/quickBot_etch_paste_mask_top.pdf -------------------------------------------------------------------------------- /09capes/quickBot_gerbers/quickBot_etch_paste_mask_top_mirror.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_gerbers/quickBot_etch_paste_mask_top_mirror.pdf -------------------------------------------------------------------------------- /09capes/quickBot_gerbers/quickBot_etch_silk_bottom.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_gerbers/quickBot_etch_silk_bottom.pdf -------------------------------------------------------------------------------- /09capes/quickBot_gerbers/quickBot_etch_silk_bottom_mirror.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_gerbers/quickBot_etch_silk_bottom_mirror.pdf -------------------------------------------------------------------------------- /09capes/quickBot_gerbers/quickBot_etch_silk_top.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_gerbers/quickBot_etch_silk_top.pdf -------------------------------------------------------------------------------- /09capes/quickBot_gerbers/quickBot_etch_silk_top_mirror.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_gerbers/quickBot_etch_silk_top_mirror.pdf -------------------------------------------------------------------------------- /09capes/quickBot_gerbers/quickBot_maskTop.gts: -------------------------------------------------------------------------------- 1 | G04 MADE WITH FRITZING* 2 | G04 WWW.FRITZING.ORG* 3 | G04 DOUBLE SIDED* 4 | G04 HOLES PLATED* 5 | G04 CONTOUR ON CENTER OF CONTOUR VECTOR* 6 | %ASAXBY*% 7 | %FSLAX23Y23*% 8 | %MOIN*% 9 | %OFA0B0*% 10 | %SFA1.0B1.0*% 11 | %ADD10C,0.088000*% 12 | %ADD11C,0.085000*% 13 | %ADD12C,0.090000*% 14 | %ADD13C,0.049370*% 15 | %ADD14R,0.088000X0.088000*% 16 | %ADD15R,0.085000X0.085000*% 17 | %ADD16C,0.030000*% 18 | %ADD17R,0.001000X0.001000*% 19 | %LNMASK1*% 20 | G90* 21 | G70* 22 | G54D10* 23 | X676Y1927D03* 24 | X676Y2027D03* 25 | X1376Y2027D03* 26 | X1376Y1927D03* 27 | G54D11* 28 | X876Y2327D03* 29 | X1176Y2327D03* 30 | X876Y2227D03* 31 | X1176Y2227D03* 32 | X876Y2127D03* 33 | X1176Y2127D03* 34 | X876Y2027D03* 35 | X1176Y2027D03* 36 | X876Y1927D03* 37 | X1176Y1927D03* 38 | X876Y1827D03* 39 | X1176Y1827D03* 40 | X876Y1727D03* 41 | X1176Y1727D03* 42 | X876Y1627D03* 43 | X1176Y1627D03* 44 | G54D12* 45 | X1376Y427D03* 46 | X1521Y427D03* 47 | X1666Y427D03* 48 | X1376Y427D03* 49 | X1521Y427D03* 50 | X1666Y427D03* 51 | X1376Y727D03* 52 | X1521Y727D03* 53 | X1666Y727D03* 54 | X1376Y727D03* 55 | X1521Y727D03* 56 | X1666Y727D03* 57 | G54D10* 58 | X1476Y1027D03* 59 | X1576Y1027D03* 60 | X1676Y1027D03* 61 | G54D11* 62 | X276Y727D03* 63 | X676Y727D03* 64 | X276Y427D03* 65 | X676Y427D03* 66 | X276Y1027D03* 67 | X676Y1027D03* 68 | X776Y727D03* 69 | X1176Y727D03* 70 | X776Y427D03* 71 | X1176Y427D03* 72 | X776Y1027D03* 73 | X1176Y1027D03* 74 | G54D13* 75 | X1884Y2140D03* 76 | X252Y2596D03* 77 | X372Y1180D03* 78 | X516Y2500D03* 79 | G54D14* 80 | X1376Y2027D03* 81 | G54D15* 82 | X876Y2327D03* 83 | G54D16* 84 | G36* 85 | X647Y1898D02* 86 | X647Y1956D01* 87 | X705Y1956D01* 88 | X705Y1898D01* 89 | X647Y1898D01* 90 | G37* 91 | D02* 92 | G36* 93 | X1447Y1056D02* 94 | X1505Y1056D01* 95 | X1505Y998D01* 96 | X1447Y998D01* 97 | X1447Y1056D01* 98 | G37* 99 | D02* 100 | G54D17* 101 | X1372Y1467D02* 102 | X1380Y1467D01* 103 | X1472Y1467D02* 104 | X1480Y1467D01* 105 | X1367Y1466D02* 106 | X1384Y1466D01* 107 | X1467Y1466D02* 108 | X1484Y1466D01* 109 | X1364Y1465D02* 110 | X1387Y1465D01* 111 | X1464Y1465D02* 112 | X1487Y1465D01* 113 | X1362Y1464D02* 114 | X1390Y1464D01* 115 | X1462Y1464D02* 116 | X1490Y1464D01* 117 | X1360Y1463D02* 118 | X1392Y1463D01* 119 | X1460Y1463D02* 120 | X1492Y1463D01* 121 | X1358Y1462D02* 122 | X1393Y1462D01* 123 | X1458Y1462D02* 124 | X1493Y1462D01* 125 | X1356Y1461D02* 126 | X1395Y1461D01* 127 | X1456Y1461D02* 128 | X1495Y1461D01* 129 | X1355Y1460D02* 130 | X1397Y1460D01* 131 | X1455Y1460D02* 132 | X1497Y1460D01* 133 | X1353Y1459D02* 134 | X1398Y1459D01* 135 | X1453Y1459D02* 136 | X1498Y1459D01* 137 | X1352Y1458D02* 138 | X1399Y1458D01* 139 | X1452Y1458D02* 140 | X1499Y1458D01* 141 | X1351Y1457D02* 142 | X1400Y1457D01* 143 | X1451Y1457D02* 144 | X1500Y1457D01* 145 | X1350Y1456D02* 146 | X1401Y1456D01* 147 | X1450Y1456D02* 148 | X1501Y1456D01* 149 | X1349Y1455D02* 150 | X1402Y1455D01* 151 | X1449Y1455D02* 152 | X1502Y1455D01* 153 | X1348Y1454D02* 154 | X1403Y1454D01* 155 | X1448Y1454D02* 156 | X1503Y1454D01* 157 | X1347Y1453D02* 158 | X1404Y1453D01* 159 | X1447Y1453D02* 160 | X1504Y1453D01* 161 | X1346Y1452D02* 162 | X1405Y1452D01* 163 | X1446Y1452D02* 164 | X1505Y1452D01* 165 | X1345Y1451D02* 166 | X1406Y1451D01* 167 | X1445Y1451D02* 168 | X1506Y1451D01* 169 | X1344Y1450D02* 170 | X1407Y1450D01* 171 | X1444Y1450D02* 172 | X1507Y1450D01* 173 | X1344Y1449D02* 174 | X1408Y1449D01* 175 | X1444Y1449D02* 176 | X1508Y1449D01* 177 | X1343Y1448D02* 178 | X1408Y1448D01* 179 | X1443Y1448D02* 180 | X1508Y1448D01* 181 | X1342Y1447D02* 182 | X1409Y1447D01* 183 | X1442Y1447D02* 184 | X1509Y1447D01* 185 | X1342Y1446D02* 186 | X1410Y1446D01* 187 | X1442Y1446D02* 188 | X1510Y1446D01* 189 | X1341Y1445D02* 190 | X1410Y1445D01* 191 | X1441Y1445D02* 192 | X1510Y1445D01* 193 | X1341Y1444D02* 194 | X1411Y1444D01* 195 | X1441Y1444D02* 196 | X1511Y1444D01* 197 | X1340Y1443D02* 198 | X1411Y1443D01* 199 | X1440Y1443D02* 200 | X1511Y1443D01* 201 | X1340Y1442D02* 202 | X1412Y1442D01* 203 | X1440Y1442D02* 204 | X1512Y1442D01* 205 | X1339Y1441D02* 206 | X1412Y1441D01* 207 | X1439Y1441D02* 208 | X1512Y1441D01* 209 | X1339Y1440D02* 210 | X1413Y1440D01* 211 | X1439Y1440D02* 212 | X1513Y1440D01* 213 | X1338Y1439D02* 214 | X1413Y1439D01* 215 | X1438Y1439D02* 216 | X1513Y1439D01* 217 | X1338Y1438D02* 218 | X1413Y1438D01* 219 | X1438Y1438D02* 220 | X1513Y1438D01* 221 | X1338Y1437D02* 222 | X1414Y1437D01* 223 | X1438Y1437D02* 224 | X1514Y1437D01* 225 | X1337Y1436D02* 226 | X1414Y1436D01* 227 | X1437Y1436D02* 228 | X1514Y1436D01* 229 | X1337Y1435D02* 230 | X1414Y1435D01* 231 | X1437Y1435D02* 232 | X1514Y1435D01* 233 | X1337Y1434D02* 234 | X1414Y1434D01* 235 | X1437Y1434D02* 236 | X1514Y1434D01* 237 | X1337Y1433D02* 238 | X1415Y1433D01* 239 | X1437Y1433D02* 240 | X1515Y1433D01* 241 | X1337Y1432D02* 242 | X1415Y1432D01* 243 | X1437Y1432D02* 244 | X1515Y1432D01* 245 | X1336Y1431D02* 246 | X1415Y1431D01* 247 | X1436Y1431D02* 248 | X1515Y1431D01* 249 | X1336Y1430D02* 250 | X1415Y1430D01* 251 | X1436Y1430D02* 252 | X1515Y1430D01* 253 | X1336Y1429D02* 254 | X1415Y1429D01* 255 | X1436Y1429D02* 256 | X1515Y1429D01* 257 | X1336Y1428D02* 258 | X1415Y1428D01* 259 | X1436Y1428D02* 260 | X1515Y1428D01* 261 | X1336Y1427D02* 262 | X1415Y1427D01* 263 | X1436Y1427D02* 264 | X1515Y1427D01* 265 | X1336Y1426D02* 266 | X1415Y1426D01* 267 | X1436Y1426D02* 268 | X1515Y1426D01* 269 | X1336Y1425D02* 270 | X1415Y1425D01* 271 | X1436Y1425D02* 272 | X1515Y1425D01* 273 | X1336Y1424D02* 274 | X1415Y1424D01* 275 | X1436Y1424D02* 276 | X1515Y1424D01* 277 | X1336Y1423D02* 278 | X1415Y1423D01* 279 | X1436Y1423D02* 280 | X1515Y1423D01* 281 | X1337Y1422D02* 282 | X1415Y1422D01* 283 | X1437Y1422D02* 284 | X1515Y1422D01* 285 | X1337Y1421D02* 286 | X1414Y1421D01* 287 | X1437Y1421D02* 288 | X1514Y1421D01* 289 | X1337Y1420D02* 290 | X1414Y1420D01* 291 | X1437Y1420D02* 292 | X1514Y1420D01* 293 | X1337Y1419D02* 294 | X1414Y1419D01* 295 | X1437Y1419D02* 296 | X1514Y1419D01* 297 | X1338Y1418D02* 298 | X1414Y1418D01* 299 | X1438Y1418D02* 300 | X1514Y1418D01* 301 | X1338Y1417D02* 302 | X1413Y1417D01* 303 | X1438Y1417D02* 304 | X1513Y1417D01* 305 | X1338Y1416D02* 306 | X1413Y1416D01* 307 | X1438Y1416D02* 308 | X1513Y1416D01* 309 | X1339Y1415D02* 310 | X1413Y1415D01* 311 | X1439Y1415D02* 312 | X1513Y1415D01* 313 | X1339Y1414D02* 314 | X1412Y1414D01* 315 | X1439Y1414D02* 316 | X1512Y1414D01* 317 | X1339Y1413D02* 318 | X1412Y1413D01* 319 | X1439Y1413D02* 320 | X1512Y1413D01* 321 | X1340Y1412D02* 322 | X1411Y1412D01* 323 | X1440Y1412D02* 324 | X1511Y1412D01* 325 | X1340Y1411D02* 326 | X1411Y1411D01* 327 | X1440Y1411D02* 328 | X1511Y1411D01* 329 | X1341Y1410D02* 330 | X1410Y1410D01* 331 | X1441Y1410D02* 332 | X1510Y1410D01* 333 | X1342Y1409D02* 334 | X1410Y1409D01* 335 | X1442Y1409D02* 336 | X1510Y1409D01* 337 | X1342Y1408D02* 338 | X1409Y1408D01* 339 | X1442Y1408D02* 340 | X1509Y1408D01* 341 | X1343Y1407D02* 342 | X1408Y1407D01* 343 | X1443Y1407D02* 344 | X1508Y1407D01* 345 | X1343Y1406D02* 346 | X1408Y1406D01* 347 | X1443Y1406D02* 348 | X1508Y1406D01* 349 | X1344Y1405D02* 350 | X1407Y1405D01* 351 | X1444Y1405D02* 352 | X1507Y1405D01* 353 | X1345Y1404D02* 354 | X1406Y1404D01* 355 | X1445Y1404D02* 356 | X1506Y1404D01* 357 | X1346Y1403D02* 358 | X1406Y1403D01* 359 | X1446Y1403D02* 360 | X1506Y1403D01* 361 | X1347Y1402D02* 362 | X1405Y1402D01* 363 | X1447Y1402D02* 364 | X1505Y1402D01* 365 | X1348Y1401D02* 366 | X1404Y1401D01* 367 | X1448Y1401D02* 368 | X1504Y1401D01* 369 | X1349Y1400D02* 370 | X1403Y1400D01* 371 | X1449Y1400D02* 372 | X1503Y1400D01* 373 | X1350Y1399D02* 374 | X1402Y1399D01* 375 | X1450Y1399D02* 376 | X1502Y1399D01* 377 | X1351Y1398D02* 378 | X1401Y1398D01* 379 | X1451Y1398D02* 380 | X1501Y1398D01* 381 | X1352Y1397D02* 382 | X1400Y1397D01* 383 | X1452Y1397D02* 384 | X1500Y1397D01* 385 | X1353Y1396D02* 386 | X1398Y1396D01* 387 | X1453Y1396D02* 388 | X1498Y1396D01* 389 | X1354Y1395D02* 390 | X1397Y1395D01* 391 | X1454Y1395D02* 392 | X1497Y1395D01* 393 | X1356Y1394D02* 394 | X1395Y1394D01* 395 | X1456Y1394D02* 396 | X1495Y1394D01* 397 | X1357Y1393D02* 398 | X1394Y1393D01* 399 | X1457Y1393D02* 400 | X1494Y1393D01* 401 | X1359Y1392D02* 402 | X1392Y1392D01* 403 | X1459Y1392D02* 404 | X1492Y1392D01* 405 | X1361Y1391D02* 406 | X1390Y1391D01* 407 | X1461Y1391D02* 408 | X1490Y1391D01* 409 | X1363Y1390D02* 410 | X1388Y1390D01* 411 | X1463Y1390D02* 412 | X1488Y1390D01* 413 | X1366Y1389D02* 414 | X1385Y1389D01* 415 | X1466Y1389D02* 416 | X1485Y1389D01* 417 | X1370Y1388D02* 418 | X1381Y1388D01* 419 | X1470Y1388D02* 420 | X1481Y1388D01* 421 | X1331Y772D02* 422 | X1420Y772D01* 423 | X1331Y771D02* 424 | X1420Y771D01* 425 | X1331Y770D02* 426 | X1420Y770D01* 427 | X1331Y769D02* 428 | X1420Y769D01* 429 | X1331Y768D02* 430 | X1420Y768D01* 431 | X1331Y767D02* 432 | X1420Y767D01* 433 | X1331Y766D02* 434 | X1420Y766D01* 435 | X1331Y765D02* 436 | X1420Y765D01* 437 | X1331Y764D02* 438 | X1420Y764D01* 439 | X1331Y763D02* 440 | X1420Y763D01* 441 | X1331Y762D02* 442 | X1420Y762D01* 443 | X1331Y761D02* 444 | X1420Y761D01* 445 | X1331Y760D02* 446 | X1420Y760D01* 447 | X1331Y759D02* 448 | X1420Y759D01* 449 | X1331Y758D02* 450 | X1420Y758D01* 451 | X1331Y757D02* 452 | X1420Y757D01* 453 | X1331Y756D02* 454 | X1420Y756D01* 455 | X1331Y755D02* 456 | X1420Y755D01* 457 | X1331Y754D02* 458 | X1420Y754D01* 459 | X1331Y753D02* 460 | X1420Y753D01* 461 | X1331Y752D02* 462 | X1420Y752D01* 463 | X1331Y751D02* 464 | X1420Y751D01* 465 | X1331Y750D02* 466 | X1420Y750D01* 467 | X1331Y749D02* 468 | X1420Y749D01* 469 | X1331Y748D02* 470 | X1420Y748D01* 471 | X1331Y747D02* 472 | X1420Y747D01* 473 | X1331Y746D02* 474 | X1373Y746D01* 475 | X1378Y746D02* 476 | X1420Y746D01* 477 | X1331Y745D02* 478 | X1369Y745D01* 479 | X1382Y745D02* 480 | X1420Y745D01* 481 | X1331Y744D02* 482 | X1367Y744D01* 483 | X1384Y744D02* 484 | X1420Y744D01* 485 | X1331Y743D02* 486 | X1365Y743D01* 487 | X1386Y743D02* 488 | X1420Y743D01* 489 | X1331Y742D02* 490 | X1364Y742D01* 491 | X1388Y742D02* 492 | X1420Y742D01* 493 | X1331Y741D02* 494 | X1362Y741D01* 495 | X1389Y741D02* 496 | X1420Y741D01* 497 | X1331Y740D02* 498 | X1361Y740D01* 499 | X1390Y740D02* 500 | X1420Y740D01* 501 | X1331Y739D02* 502 | X1360Y739D01* 503 | X1391Y739D02* 504 | X1420Y739D01* 505 | X1331Y738D02* 506 | X1360Y738D01* 507 | X1392Y738D02* 508 | X1420Y738D01* 509 | X1331Y737D02* 510 | X1359Y737D01* 511 | X1392Y737D02* 512 | X1420Y737D01* 513 | X1331Y736D02* 514 | X1358Y736D01* 515 | X1393Y736D02* 516 | X1420Y736D01* 517 | X1331Y735D02* 518 | X1358Y735D01* 519 | X1393Y735D02* 520 | X1420Y735D01* 521 | X1331Y734D02* 522 | X1358Y734D01* 523 | X1394Y734D02* 524 | X1420Y734D01* 525 | X1331Y733D02* 526 | X1357Y733D01* 527 | X1394Y733D02* 528 | X1420Y733D01* 529 | X1331Y732D02* 530 | X1357Y732D01* 531 | X1394Y732D02* 532 | X1420Y732D01* 533 | X1331Y731D02* 534 | X1357Y731D01* 535 | X1394Y731D02* 536 | X1420Y731D01* 537 | X1331Y730D02* 538 | X1357Y730D01* 539 | X1395Y730D02* 540 | X1420Y730D01* 541 | X1331Y729D02* 542 | X1357Y729D01* 543 | X1395Y729D02* 544 | X1420Y729D01* 545 | X1331Y728D02* 546 | X1357Y728D01* 547 | X1395Y728D02* 548 | X1420Y728D01* 549 | X1331Y727D02* 550 | X1357Y727D01* 551 | X1395Y727D02* 552 | X1420Y727D01* 553 | X1331Y726D02* 554 | X1357Y726D01* 555 | X1395Y726D02* 556 | X1420Y726D01* 557 | X1331Y725D02* 558 | X1357Y725D01* 559 | X1395Y725D02* 560 | X1420Y725D01* 561 | X1331Y724D02* 562 | X1357Y724D01* 563 | X1394Y724D02* 564 | X1420Y724D01* 565 | X1331Y723D02* 566 | X1357Y723D01* 567 | X1394Y723D02* 568 | X1420Y723D01* 569 | X1331Y722D02* 570 | X1357Y722D01* 571 | X1394Y722D02* 572 | X1420Y722D01* 573 | X1331Y721D02* 574 | X1358Y721D01* 575 | X1394Y721D02* 576 | X1420Y721D01* 577 | X1331Y720D02* 578 | X1358Y720D01* 579 | X1393Y720D02* 580 | X1420Y720D01* 581 | X1331Y719D02* 582 | X1358Y719D01* 583 | X1393Y719D02* 584 | X1420Y719D01* 585 | X1331Y718D02* 586 | X1359Y718D01* 587 | X1392Y718D02* 588 | X1420Y718D01* 589 | X1331Y717D02* 590 | X1359Y717D01* 591 | X1392Y717D02* 592 | X1420Y717D01* 593 | X1331Y716D02* 594 | X1360Y716D01* 595 | X1391Y716D02* 596 | X1420Y716D01* 597 | X1331Y715D02* 598 | X1361Y715D01* 599 | X1390Y715D02* 600 | X1420Y715D01* 601 | X1331Y714D02* 602 | X1362Y714D01* 603 | X1389Y714D02* 604 | X1420Y714D01* 605 | X1331Y713D02* 606 | X1363Y713D01* 607 | X1388Y713D02* 608 | X1420Y713D01* 609 | X1331Y712D02* 610 | X1365Y712D01* 611 | X1387Y712D02* 612 | X1420Y712D01* 613 | X1331Y711D02* 614 | X1366Y711D01* 615 | X1385Y711D02* 616 | X1420Y711D01* 617 | X1331Y710D02* 618 | X1368Y710D01* 619 | X1383Y710D02* 620 | X1420Y710D01* 621 | X1331Y709D02* 622 | X1371Y709D01* 623 | X1380Y709D02* 624 | X1420Y709D01* 625 | X1331Y708D02* 626 | X1420Y708D01* 627 | X1331Y707D02* 628 | X1420Y707D01* 629 | X1331Y706D02* 630 | X1420Y706D01* 631 | X1331Y705D02* 632 | X1420Y705D01* 633 | X1331Y704D02* 634 | X1420Y704D01* 635 | X1331Y703D02* 636 | X1420Y703D01* 637 | X1331Y702D02* 638 | X1420Y702D01* 639 | X1331Y701D02* 640 | X1420Y701D01* 641 | X1331Y700D02* 642 | X1420Y700D01* 643 | X1331Y699D02* 644 | X1420Y699D01* 645 | X1331Y698D02* 646 | X1420Y698D01* 647 | X1331Y697D02* 648 | X1420Y697D01* 649 | X1331Y696D02* 650 | X1420Y696D01* 651 | X1331Y695D02* 652 | X1420Y695D01* 653 | X1331Y694D02* 654 | X1420Y694D01* 655 | X1331Y693D02* 656 | X1420Y693D01* 657 | X1331Y692D02* 658 | X1420Y692D01* 659 | X1331Y691D02* 660 | X1420Y691D01* 661 | X1331Y690D02* 662 | X1420Y690D01* 663 | X1331Y689D02* 664 | X1420Y689D01* 665 | X1331Y688D02* 666 | X1420Y688D01* 667 | X1331Y687D02* 668 | X1420Y687D01* 669 | X1331Y686D02* 670 | X1420Y686D01* 671 | X1331Y685D02* 672 | X1420Y685D01* 673 | X1331Y684D02* 674 | X1420Y684D01* 675 | X1331Y683D02* 676 | X1420Y683D01* 677 | X1331Y472D02* 678 | X1420Y472D01* 679 | X1331Y471D02* 680 | X1420Y471D01* 681 | X1331Y470D02* 682 | X1420Y470D01* 683 | X1331Y469D02* 684 | X1420Y469D01* 685 | X1331Y468D02* 686 | X1420Y468D01* 687 | X1331Y467D02* 688 | X1420Y467D01* 689 | X1331Y466D02* 690 | X1420Y466D01* 691 | X1331Y465D02* 692 | X1420Y465D01* 693 | X1331Y464D02* 694 | X1420Y464D01* 695 | X1331Y463D02* 696 | X1420Y463D01* 697 | X1331Y462D02* 698 | X1420Y462D01* 699 | X1331Y461D02* 700 | X1420Y461D01* 701 | X1331Y460D02* 702 | X1420Y460D01* 703 | X1331Y459D02* 704 | X1420Y459D01* 705 | X1331Y458D02* 706 | X1420Y458D01* 707 | X1331Y457D02* 708 | X1420Y457D01* 709 | X1331Y456D02* 710 | X1420Y456D01* 711 | X1331Y455D02* 712 | X1420Y455D01* 713 | X1331Y454D02* 714 | X1420Y454D01* 715 | X1331Y453D02* 716 | X1420Y453D01* 717 | X1331Y452D02* 718 | X1420Y452D01* 719 | X1331Y451D02* 720 | X1420Y451D01* 721 | X1331Y450D02* 722 | X1420Y450D01* 723 | X1331Y449D02* 724 | X1420Y449D01* 725 | X1331Y448D02* 726 | X1420Y448D01* 727 | X1331Y447D02* 728 | X1420Y447D01* 729 | X1331Y446D02* 730 | X1373Y446D01* 731 | X1378Y446D02* 732 | X1420Y446D01* 733 | X1331Y445D02* 734 | X1369Y445D01* 735 | X1382Y445D02* 736 | X1420Y445D01* 737 | X1331Y444D02* 738 | X1367Y444D01* 739 | X1384Y444D02* 740 | X1420Y444D01* 741 | X1331Y443D02* 742 | X1365Y443D01* 743 | X1386Y443D02* 744 | X1420Y443D01* 745 | X1331Y442D02* 746 | X1364Y442D01* 747 | X1388Y442D02* 748 | X1420Y442D01* 749 | X1331Y441D02* 750 | X1362Y441D01* 751 | X1389Y441D02* 752 | X1420Y441D01* 753 | X1331Y440D02* 754 | X1361Y440D01* 755 | X1390Y440D02* 756 | X1420Y440D01* 757 | X1331Y439D02* 758 | X1360Y439D01* 759 | X1391Y439D02* 760 | X1420Y439D01* 761 | X1331Y438D02* 762 | X1360Y438D01* 763 | X1392Y438D02* 764 | X1420Y438D01* 765 | X1331Y437D02* 766 | X1359Y437D01* 767 | X1392Y437D02* 768 | X1420Y437D01* 769 | X1331Y436D02* 770 | X1358Y436D01* 771 | X1393Y436D02* 772 | X1420Y436D01* 773 | X1331Y435D02* 774 | X1358Y435D01* 775 | X1393Y435D02* 776 | X1420Y435D01* 777 | X1331Y434D02* 778 | X1358Y434D01* 779 | X1394Y434D02* 780 | X1420Y434D01* 781 | X1331Y433D02* 782 | X1357Y433D01* 783 | X1394Y433D02* 784 | X1420Y433D01* 785 | X1331Y432D02* 786 | X1357Y432D01* 787 | X1394Y432D02* 788 | X1420Y432D01* 789 | X1331Y431D02* 790 | X1357Y431D01* 791 | X1394Y431D02* 792 | X1420Y431D01* 793 | X1331Y430D02* 794 | X1357Y430D01* 795 | X1395Y430D02* 796 | X1420Y430D01* 797 | X1331Y429D02* 798 | X1357Y429D01* 799 | X1395Y429D02* 800 | X1420Y429D01* 801 | X1331Y428D02* 802 | X1357Y428D01* 803 | X1395Y428D02* 804 | X1420Y428D01* 805 | X1331Y427D02* 806 | X1357Y427D01* 807 | X1395Y427D02* 808 | X1420Y427D01* 809 | X1331Y426D02* 810 | X1357Y426D01* 811 | X1395Y426D02* 812 | X1420Y426D01* 813 | X1331Y425D02* 814 | X1357Y425D01* 815 | X1395Y425D02* 816 | X1420Y425D01* 817 | X1331Y424D02* 818 | X1357Y424D01* 819 | X1394Y424D02* 820 | X1420Y424D01* 821 | X1331Y423D02* 822 | X1357Y423D01* 823 | X1394Y423D02* 824 | X1420Y423D01* 825 | X1331Y422D02* 826 | X1357Y422D01* 827 | X1394Y422D02* 828 | X1420Y422D01* 829 | X1331Y421D02* 830 | X1358Y421D01* 831 | X1394Y421D02* 832 | X1420Y421D01* 833 | X1331Y420D02* 834 | X1358Y420D01* 835 | X1393Y420D02* 836 | X1420Y420D01* 837 | X1331Y419D02* 838 | X1358Y419D01* 839 | X1393Y419D02* 840 | X1420Y419D01* 841 | X1331Y418D02* 842 | X1359Y418D01* 843 | X1392Y418D02* 844 | X1420Y418D01* 845 | X1331Y417D02* 846 | X1359Y417D01* 847 | X1392Y417D02* 848 | X1420Y417D01* 849 | X1331Y416D02* 850 | X1360Y416D01* 851 | X1391Y416D02* 852 | X1420Y416D01* 853 | X1331Y415D02* 854 | X1361Y415D01* 855 | X1390Y415D02* 856 | X1420Y415D01* 857 | X1331Y414D02* 858 | X1362Y414D01* 859 | X1389Y414D02* 860 | X1420Y414D01* 861 | X1331Y413D02* 862 | X1363Y413D01* 863 | X1388Y413D02* 864 | X1420Y413D01* 865 | X1331Y412D02* 866 | X1365Y412D01* 867 | X1387Y412D02* 868 | X1420Y412D01* 869 | X1331Y411D02* 870 | X1366Y411D01* 871 | X1385Y411D02* 872 | X1420Y411D01* 873 | X1331Y410D02* 874 | X1368Y410D01* 875 | X1383Y410D02* 876 | X1420Y410D01* 877 | X1331Y409D02* 878 | X1371Y409D01* 879 | X1380Y409D02* 880 | X1420Y409D01* 881 | X1331Y408D02* 882 | X1420Y408D01* 883 | X1331Y407D02* 884 | X1420Y407D01* 885 | X1331Y406D02* 886 | X1420Y406D01* 887 | X1331Y405D02* 888 | X1420Y405D01* 889 | X1331Y404D02* 890 | X1420Y404D01* 891 | X1331Y403D02* 892 | X1420Y403D01* 893 | X1331Y402D02* 894 | X1420Y402D01* 895 | X1331Y401D02* 896 | X1420Y401D01* 897 | X1331Y400D02* 898 | X1420Y400D01* 899 | X1331Y399D02* 900 | X1420Y399D01* 901 | X1331Y398D02* 902 | X1420Y398D01* 903 | X1331Y397D02* 904 | X1420Y397D01* 905 | X1331Y396D02* 906 | X1420Y396D01* 907 | X1331Y395D02* 908 | X1420Y395D01* 909 | X1331Y394D02* 910 | X1420Y394D01* 911 | X1331Y393D02* 912 | X1420Y393D01* 913 | X1331Y392D02* 914 | X1420Y392D01* 915 | X1331Y391D02* 916 | X1420Y391D01* 917 | X1331Y390D02* 918 | X1420Y390D01* 919 | X1331Y389D02* 920 | X1420Y389D01* 921 | X1331Y388D02* 922 | X1420Y388D01* 923 | X1331Y387D02* 924 | X1420Y387D01* 925 | X1331Y386D02* 926 | X1420Y386D01* 927 | X1331Y385D02* 928 | X1420Y385D01* 929 | X1331Y384D02* 930 | X1420Y384D01* 931 | X1331Y383D02* 932 | X1420Y383D01* 933 | D02* 934 | G04 End of Mask1* 935 | M02* -------------------------------------------------------------------------------- /09capes/quickBot_gerbers/quickBot_pnp.txt: -------------------------------------------------------------------------------- 1 | *Pick And Place List 2 | *Company= 3 | *Author= 4 | *eMail= 5 | * 6 | *Project=quickBot 7 | *Date=02:40:50 8 | *CreatedBy=Fritzing 0.9.0b.06.11.da4e 9 | * 10 | * 11 | *Coordinates in mm, always center of component 12 | *Origin 0/0=Lower left corner of PCB 13 | *Rotation in degree (0-360, math. pos.) 14 | * 15 | *No;Value;Package;X;Y;Rotation;Side;Name 16 | 1;20k;THT;24.7945;-18.4616;0;Bottom;R10 17 | 2;;THT;26.0645;-50.2116;0;Bottom;IC1 18 | 3;1;THT;12.0945;-26.0816;0;Bottom;R1 19 | 4;;;36.2245;-35.6066;0;Bottom;JACK2 20 | 5;;screwterminal-3.5mm-3_lock.007s;38.6322;-10.7415;0;Bottom;JP1 21 | 6;;;34.9545;-50.2116;0;Bottom;M1 22 | 7;;;40.0345;-26.0816;-90;Bottom;J4 23 | 8;20k;THT;24.7945;-26.0816;0;Bottom;R2 24 | 9;;;27.6553;-2.80091;0;Bottom;TXT5 25 | 10;;screwterminal-3.5mm-3_lock.007s;38.6322;-18.3615;0;Bottom;JP2 26 | 11;;;27.3599;-43.1885;90;Bottom;BeagleBone1 27 | 12;;;6.4008;-65.9384;0;Bottom;Via2 28 | 13;10k;THT;12.0945;-10.8416;0;Bottom;R5 29 | 14;;;9.4488;-29.972;0;Bottom;Via3 30 | 15;20k;THT;24.7945;-10.8416;0;Bottom;R9 31 | 16;10k;THT;12.0945;-18.4616;0;Bottom;R6 32 | 17;;;47.8536;-54.356;0;Bottom;Via1 33 | 18;;;17.1745;-50.2116;180;Bottom;M2 34 | 19;;;13.1064;-63.5;0;Bottom;Via4 35 | -------------------------------------------------------------------------------- /09capes/quickBot_gerbers/quickBot_silkBottom.gbo: -------------------------------------------------------------------------------- 1 | G04 MADE WITH FRITZING* 2 | G04 WWW.FRITZING.ORG* 3 | G04 DOUBLE SIDED* 4 | G04 HOLES PLATED* 5 | G04 CONTOUR ON CENTER OF CONTOUR VECTOR* 6 | %ASAXBY*% 7 | %FSLAX23Y23*% 8 | %MOIN*% 9 | %OFA0B0*% 10 | %SFA1.0B1.0*% 11 | %ADD10R,2.200000X3.455560X2.184000X3.439560*% 12 | %ADD11C,0.008000*% 13 | %LNSILK0*% 14 | G90* 15 | G70* 16 | G54D11* 17 | X4Y3452D02* 18 | X2196Y3452D01* 19 | X2196Y4D01* 20 | X4Y4D01* 21 | X4Y3452D01* 22 | D02* 23 | G04 End of Silk0* 24 | M02* -------------------------------------------------------------------------------- /09capes/quickBot_kicad.sch: -------------------------------------------------------------------------------- 1 | EESchema Schematic File Version 2 date Sun 23 Nov 2014 12:22:18 PM EST 2 | LIBS:quickBot-cache 3 | EELAYER 25 0 4 | EELAYER END 5 | $Descr A4 11700 8267 6 | encoding utf-8 7 | Sheet 1 1 8 | Title "" 9 | Date "23 nov 2014" 10 | Rev "" 11 | Comp "" 12 | Comment1 "" 13 | Comment2 "" 14 | Comment3 "" 15 | Comment4 "" 16 | $EndDescr 17 | $Comp 18 | L ResistorModuleID R5 19 | U 0 1 00000000 20 | P -1395 6145 21 | 1 -1395 6145 22 | 0 1 1 0 23 | $EndComp 24 | $Comp 25 | L SparkFun-Connectors-M03-SCREW_LOCK JP1 26 | U 0 1 00000000 27 | P -1305 6680 28 | 1 -1305 6680 29 | 1 0 0 -1 30 | $EndComp 31 | $Comp 32 | L BeagleBone Black Cape_24b87b710774e71d846d0afceaba5afb_3 BeagleBone1 33 | U 0 1 00000000 34 | P -2055 -890 35 | 1 -2055 -890 36 | 1 0 0 -1 37 | $EndComp 38 | $Comp 39 | L ResistorModuleID R6 40 | U 0 1 00000000 41 | P -1125 6145 42 | 1 -1125 6145 43 | 0 1 1 0 44 | $EndComp 45 | $Comp 46 | L ResistorModuleID R10 47 | U 0 1 00000000 48 | P -1125 6460 49 | 1 -1125 6460 50 | 0 1 1 0 51 | $EndComp 52 | $Comp 53 | L 3cbb886ccc8dee1a9eeb967331875e2e JACK2 54 | U 0 1 00000000 55 | P 1305 3200 56 | 1 1305 3200 57 | 1 0 0 -1 58 | $EndComp 59 | $Comp 60 | L SparkFun-Connectors-M03-SCREW_LOCK JP2 61 | U 0 1 00000000 62 | P -1035 6680 63 | 1 -1035 6680 64 | 1 0 0 -1 65 | $EndComp 66 | $Comp 67 | L RevEd_L293D IC1 68 | U 0 1 00000000 69 | P 1530 2115 70 | 1 1530 2115 71 | 1 0 0 -1 72 | $EndComp 73 | $Comp 74 | L 1000FADF10011leg M1 75 | U 0 1 00000000 76 | P 2705 2245 77 | 1 2705 2245 78 | 1 0 0 -1 79 | $EndComp 80 | $Comp 81 | L ResistorModuleID R2 82 | U 0 1 00000000 83 | P -360 5920 84 | 1 -360 5920 85 | 0 1 1 0 86 | $EndComp 87 | $Comp 88 | L ResistorModuleID R1 89 | U 0 1 00000000 90 | P -360 5650 91 | 1 -360 5650 92 | 0 1 1 0 93 | $EndComp 94 | $Comp 95 | L beab33bd7feee277622ef76dd6e79e4d J4 96 | U 0 1 00000000 97 | P -580 5890 98 | 1 -580 5890 99 | 1 0 0 -1 100 | $EndComp 101 | $Comp 102 | L ResistorModuleID R9 103 | U 0 1 00000000 104 | P -1395 6460 105 | 1 -1395 6460 106 | 0 1 1 0 107 | $EndComp 108 | $Comp 109 | L 1000FADF10011leg M2 110 | U 0 1 00000000 111 | P 1265 2250 112 | 1 1265 2250 113 | -1 0 0 1 114 | $EndComp 115 | Wire Wire Line 116 | -450 365 660 -25 117 | Wire Wire Line 118 | 1710 945 1800 990 119 | Wire Wire Line 120 | -450 6030 -425 6050 121 | Wire Wire Line 122 | -425 6050 -245 6050 123 | Wire Wire Line 124 | -270 6030 -245 6050 125 | Wire Wire Line 126 | -2070 810 1125 -270 127 | Wire Wire Line 128 | -2070 45 -1890 90 129 | Wire Wire Line 130 | -2070 45 1125 -270 131 | Wire Wire Line 132 | -1935 50 -1890 90 133 | Wire Wire Line 134 | 990 810 1125 -270 135 | Wire Wire Line 136 | -460 315 740 -35 137 | Wire Wire Line 138 | 1245 -5 1285 445 139 | Wire Wire Line 140 | -1080 -560 -630 -630 141 | Wire Wire Line 142 | -720 -945 -630 -630 143 | Wire Wire Line 144 | -720 -945 -315 -630 145 | Wire Wire Line 146 | -1035 -630 -325 -240 147 | Wire Wire Line 148 | -810 -630 -325 -240 149 | Wire Wire Line 150 | -810 -630 -315 -225 151 | Wire Wire Line 152 | 180 -630 540 -1170 153 | Wire Wire Line 154 | 180 -630 855 -1210 155 | Wire Wire Line 156 | 640 -60 645 -230 157 | Wire Wire Line 158 | 715 -220 720 -60 159 | Wire Wire Line 160 | -2115 -45 -1935 -45 161 | Wire Wire Line 162 | -2115 -1350 -1935 -45 163 | Wire Wire Line 164 | -1935 -45 1755 -1170 165 | Wire Wire Line 166 | 1755 -1165 1755 -1170 167 | Wire Wire Line 168 | 1755 -1165 1800 -270 169 | Wire Wire Line 170 | 2475 2430 2565 2430 171 | Wire Wire Line 172 | 2565 2970 2565 2430 173 | Wire Wire Line 174 | 765 1165 1120 -100 175 | Wire Wire Line 176 | 990 1170 990 -90 177 | Wire Wire Line 178 | 990 1170 1120 -100 179 | Wire Wire Line 180 | 1935 1350 2070 1350 181 | Wire Wire Line 182 | 150 3140 2520 3150 183 | Wire Wire Line 184 | 2475 2475 2520 3150 185 | Wire Wire Line 186 | 1485 1485 1605 1605 187 | Wire Wire Line 188 | 1605 1605 1710 1620 189 | Wire Wire Line 190 | 1710 1620 1755 1620 191 | Wire Wire Line 192 | -1075 -45 1120 -315 193 | Wire Wire Line 194 | -945 765 -945 -45 195 | Wire Wire Line 196 | -945 765 810 765 197 | Wire Wire Line 198 | -945 -45 1120 -315 199 | Wire Wire Line 200 | 810 765 810 -320 201 | Wire Wire Line 202 | 2475 2250 2745 2250 203 | Wire Wire Line 204 | -1075 -85 1620 5 205 | Wire Wire Line 206 | -900 720 1620 0 207 | Wire Wire Line 208 | -900 -90 1620 5 209 | Wire Wire Line 210 | -900 -90 1620 0 211 | Wire Wire Line 212 | 1620 0 1710 720 213 | Wire Wire Line 214 | 1620 0 1890 725 215 | Wire Wire Line 216 | 1710 0 1890 725 217 | Wire Wire Line 218 | 1710 0 1890 0 219 | Wire Wire Line 220 | 2475 2205 2615 2210 221 | Wire Wire Line 222 | 2610 2745 2615 2210 223 | Wire Wire Line 224 | -2070 -90 -1935 -90 225 | Wire Wire Line 226 | -2070 -1305 -1935 -90 227 | Wire Wire Line 228 | -1935 -90 1755 -45 229 | Wire Wire Line 230 | -1935 -90 1755 -1305 231 | Wire Wire Line 232 | 1935 945 1950 955 233 | Wire Wire Line 234 | 1950 955 2070 1170 235 | Wire Wire Line 236 | 2070 1170 2115 1350 237 | Wire Wire Line 238 | 2090 1620 2090 1485 239 | Wire Wire Line 240 | 2090 1485 2115 1350 241 | Wire Wire Line 242 | 1485 1395 1495 1380 243 | Wire Wire Line 244 | 1495 1380 1500 1380 245 | Wire Wire Line 246 | 1500 1380 1705 1370 247 | Wire Wire Line 248 | 1705 1370 1705 1365 249 | Wire Wire Line 250 | 1705 1365 1710 1350 251 | Wire Wire Line 252 | 1710 1350 1755 1350 253 | Wire Wire Line 254 | -1030 -580 -310 -90 255 | Wire Wire Line 256 | -855 -90 -855 -585 257 | Wire Wire Line 258 | -855 -585 -310 -90 259 | Wire Wire Line 260 | 1440 3465 1440 2475 261 | Wire Wire Line 262 | 1440 2475 1530 2475 263 | Wire Wire Line 264 | 1935 810 2295 900 265 | Wire Wire Line 266 | -2115 855 -2115 0 267 | Wire Wire Line 268 | -2115 855 900 855 269 | Wire Wire Line 270 | -2115 0 1120 -55 271 | Wire Wire Line 272 | -1935 5 1120 -55 273 | Wire Wire Line 274 | 900 855 1125 -45 275 | Wire Wire Line 276 | 1800 1080 2025 1170 277 | Wire Wire Line 278 | 1935 990 2025 945 279 | Wire Wire Line 280 | -450 -1125 945 -1125 281 | Wire Wire Line 282 | -445 -815 -305 -900 283 | Wire Wire Line 284 | -445 -815 945 -1125 285 | Wire Wire Line 286 | -1035 6390 -1035 6295 287 | Wire Wire Line 288 | -1035 6295 -1035 6255 289 | Wire Wire Line 290 | -1035 6255 -90 6075 291 | Wire Wire Line 292 | -90 6075 150 6065 293 | Wire Wire Line 294 | -1440 6750 -1440 6075 295 | Wire Wire Line 296 | -1440 6750 -1305 6750 297 | Wire Wire Line 298 | -1440 6075 -1305 6075 299 | Wire Wire Line 300 | -1305 6750 -1035 6750 301 | Wire Wire Line 302 | -1305 6075 -1035 6075 303 | Wire Wire Line 304 | -1035 6075 -720 6075 305 | Wire Wire Line 306 | -720 6165 -720 6075 307 | Wire Wire Line 308 | -720 6165 -535 6160 309 | Wire Wire Line 310 | -535 6160 -270 5580 311 | Wire Wire Line 312 | -270 5580 -270 2045 313 | Wire Wire Line 314 | -270 5580 -180 1260 315 | Wire Wire Line 316 | -270 2045 2545 2045 317 | Wire Wire Line 318 | -180 1260 150 1280 319 | Wire Wire Line 320 | 135 1215 150 1280 321 | Wire Wire Line 322 | 135 1215 1530 1215 323 | Wire Wire Line 324 | 1395 3600 1395 2295 325 | Wire Wire Line 326 | 1395 3600 1440 3600 327 | Wire Wire Line 328 | 1395 2295 1530 2295 329 | Wire Wire Line 330 | 1530 2295 1530 1215 331 | Wire Wire Line 332 | 2475 2340 2500 2315 333 | Wire Wire Line 334 | 2500 2315 2545 2315 335 | Wire Wire Line 336 | 2545 2315 2545 2045 337 | Wire Wire Line 338 | 1935 1485 2025 1485 339 | Wire Wire Line 340 | 1800 1035 1825 1010 341 | Wire Wire Line 342 | 1825 1010 1905 730 343 | Wire Wire Line 344 | 1905 730 1910 730 345 | Wire Wire Line 346 | 1910 730 1955 730 347 | Wire Wire Line 348 | 1950 730 1955 730 349 | Wire Wire Line 350 | 1950 730 2250 850 351 | Wire Wire Line 352 | 1205 90 2010 735 353 | Wire Wire Line 354 | -1305 6390 -1305 6345 355 | Wire Wire Line 356 | -1305 6390 -1305 6255 357 | Wire Wire Line 358 | -1305 6345 150 6330 359 | Wire Wire Line 360 | 1485 1440 1485 1420 361 | Wire Wire Line 362 | 1485 1420 1700 1465 363 | Wire Wire Line 364 | 1700 1465 1705 1465 365 | Wire Wire Line 366 | 1705 1465 1710 1485 367 | Wire Wire Line 368 | 1710 1485 1755 1485 369 | Wire Wire Line 370 | 2475 2385 2745 2430 371 | Wire Wire Line 372 | 1710 900 1790 870 373 | Wire Wire Line 374 | 1790 870 1800 855 375 | Wire Wire Line 376 | 1485 945 1830 1195 377 | Wire Wire Line 378 | 1830 1195 2090 1195 379 | Wire Wire Line 380 | 1935 1080 2100 1140 381 | Wire Wire Line 382 | 2090 1195 2100 1140 383 | Wire Wire Line 384 | 1800 810 1920 730 385 | Wire Wire Line 386 | 1920 730 2295 810 387 | Wire Wire Line 388 | 1485 675 1640 685 389 | Wire Wire Line 390 | 1640 685 2200 725 391 | Wire Wire Line 392 | 1935 765 2040 855 393 | Wire Wire Line 394 | 2040 855 2060 870 395 | Wire Wire Line 396 | 2040 855 2150 990 397 | Wire Wire Line 398 | 2060 870 2285 870 399 | Wire Wire Line 400 | 2145 990 2150 990 401 | Wire Wire Line 402 | 2145 990 2160 1350 403 | Wire Wire Line 404 | 2155 1620 2155 1485 405 | Wire Wire Line 406 | 2155 1485 2160 1350 407 | Wire Wire Line 408 | 2200 725 2285 795 409 | Wire Wire Line 410 | 2285 870 2285 795 411 | Wire Wire Line 412 | -45 2880 -45 2160 413 | Wire Wire Line 414 | -45 2160 1530 2160 415 | Wire Wire Line 416 | 630 180 1115 80 417 | Wire Wire Line 418 | 630 180 1120 180 419 | Wire Wire Line 420 | 640 -45 1115 80 421 | Wire Wire Line 422 | -270 5850 -270 5760 423 | Wire Wire Line 424 | 775 1120 1120 -225 425 | Wire Wire Line 426 | 945 1125 945 -225 427 | Wire Wire Line 428 | 945 1125 1120 -225 429 | Wire Wire Line 430 | -500 -810 900 -1080 431 | Wire Wire Line 432 | -500 -810 900 -1215 433 | Wire Wire Line 434 | -495 -1080 900 -1080 435 | Wire Wire Line 436 | 1935 1620 2025 1620 437 | Wire Wire Line 438 | 1305 2250 1530 2250 439 | Wire Wire Line 440 | 1935 855 2025 900 441 | Wire Wire Line 442 | 1305 2430 1530 2385 443 | Wire Wire Line 444 | 1485 630 1520 645 445 | Wire Wire Line 446 | 1520 645 1680 980 447 | Wire Wire Line 448 | 1530 1620 1530 1485 449 | Wire Wire Line 450 | 1530 1485 1530 1350 451 | Wire Wire Line 452 | 1530 1350 1575 1280 453 | Wire Wire Line 454 | 1575 1280 1790 955 455 | Wire Wire Line 456 | 1680 980 1765 980 457 | Wire Wire Line 458 | 1765 980 1770 980 459 | Wire Wire Line 460 | 1770 980 1790 960 461 | Wire Wire Line 462 | 1790 960 1790 955 463 | Wire Wire Line 464 | 1790 955 1800 945 465 | Wire Wire Line 466 | 1485 900 1800 765 467 | Wire Wire Line 468 | -1305 6705 -1305 6570 469 | Wire Wire Line 470 | -1305 6795 -1035 6795 471 | Wire Wire Line 472 | -1035 6840 -1035 6795 473 | Wire Wire Line 474 | -1035 6840 -630 6840 475 | Wire Wire Line 476 | -630 6840 -630 5895 477 | Wire Wire Line 478 | -630 5895 -535 5900 479 | Wire Wire Line 480 | -535 5900 -450 1530 481 | Wire Wire Line 482 | -450 1530 150 1545 483 | Wire Wire Line 484 | -1035 6705 -1035 6570 485 | Wire Wire Line 486 | 2255 850 2295 855 487 | Wire Wire Line 488 | 1935 1035 2295 945 489 | $EndSCHEMATC 490 | -------------------------------------------------------------------------------- /09capes/quickBot_motor_kickback.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_motor_kickback.JPG -------------------------------------------------------------------------------- /09capes/quickBot_motor_test.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | var b = require('bonescript'); 3 | var M1_SPEED = 'P9_16'; // <1> 4 | var M1_FORWARD = 'P8_15'; 5 | var M1_BACKWARD = 'P8_13'; 6 | var M2_SPEED = 'P9_14'; 7 | var M2_FORWARD = 'P8_9'; 8 | var M2_BACKWARD = 'P8_11'; 9 | var freq = 50; // <2> 10 | var fast = 0.95; 11 | var slow = 0.7; 12 | var state = 0; // <3> 13 | 14 | b.pinMode(M1_FORWARD, b.OUTPUT); // <4> 15 | b.pinMode(M1_BACKWARD, b.OUTPUT); 16 | b.pinMode(M2_FORWARD, b.OUTPUT); 17 | b.pinMode(M2_BACKWARD, b.OUTPUT); 18 | b.analogWrite(M1_SPEED, 0, freq); // <5> 19 | b.analogWrite(M2_SPEED, 0, freq); 20 | 21 | updateMotors(); // <6> 22 | 23 | function updateMotors() { // <6> 24 | //console.log("Setting state = " + state); // <7> 25 | updateLEDs(state); // <7> 26 | switch(state) { // <3> 27 | case 0: 28 | default: 29 | M1_set(0); // <8> 30 | M2_set(0); 31 | state = 1; // <3> 32 | break; 33 | case 1: 34 | M1_set(slow); 35 | M2_set(slow); 36 | state = 2; 37 | break; 38 | case 2: 39 | M1_set(slow); 40 | M2_set(-slow); 41 | state = 3; 42 | break; 43 | case 3: 44 | M1_set(-slow); 45 | M2_set(slow); 46 | state = 4; 47 | break; 48 | case 4: 49 | M1_set(fast); 50 | M2_set(fast); 51 | state = 0; 52 | break; 53 | } 54 | setTimeout(updateMotors, 2000); // <3> 55 | } 56 | 57 | function updateLEDs(state) { // <7> 58 | switch(state) { 59 | case 0: 60 | b.digitalWrite("USR0", b.LOW); 61 | b.digitalWrite("USR1", b.LOW); 62 | b.digitalWrite("USR2", b.LOW); 63 | b.digitalWrite("USR3", b.LOW); 64 | break; 65 | case 1: 66 | b.digitalWrite("USR0", b.HIGH); 67 | b.digitalWrite("USR1", b.LOW); 68 | b.digitalWrite("USR2", b.LOW); 69 | b.digitalWrite("USR3", b.LOW); 70 | break; 71 | case 2: 72 | b.digitalWrite("USR0", b.LOW); 73 | b.digitalWrite("USR1", b.HIGH); 74 | b.digitalWrite("USR2", b.LOW); 75 | b.digitalWrite("USR3", b.LOW); 76 | break; 77 | case 3: 78 | b.digitalWrite("USR0", b.LOW); 79 | b.digitalWrite("USR1", b.LOW); 80 | b.digitalWrite("USR2", b.HIGH); 81 | b.digitalWrite("USR3", b.LOW); 82 | break; 83 | case 4: 84 | b.digitalWrite("USR0", b.LOW); 85 | b.digitalWrite("USR1", b.LOW); 86 | b.digitalWrite("USR2", b.LOW); 87 | b.digitalWrite("USR3", b.HIGH); 88 | break; 89 | } 90 | } 91 | 92 | function M1_set(speed) { // <8> 93 | speed = (speed > 1) ? 1 : speed; // <9> 94 | speed = (speed < -1) ? -1 : speed; 95 | b.digitalWrite(M1_FORWARD, b.LOW); 96 | b.digitalWrite(M1_BACKWARD, b.LOW); 97 | if(speed > 0) { 98 | b.digitalWrite(M1_FORWARD, b.HIGH); 99 | } else if(speed < 0) { 100 | b.digitalWrite(M1_BACKWARD, b.HIGH); 101 | } 102 | b.analogWrite(M1_SPEED, Math.abs(speed), freq); // <10> 103 | } 104 | 105 | function M2_set(speed) { 106 | speed = (speed > 1) ? 1 : speed; 107 | speed = (speed < -1) ? -1 : speed; 108 | b.digitalWrite(M2_FORWARD, b.LOW); 109 | b.digitalWrite(M2_BACKWARD, b.LOW); 110 | if(speed > 0) { 111 | b.digitalWrite(M2_FORWARD, b.HIGH); 112 | } else if(speed < 0) { 113 | b.digitalWrite(M2_BACKWARD, b.HIGH); 114 | } 115 | b.analogWrite(M2_SPEED, Math.abs(speed), freq); 116 | } 117 | -------------------------------------------------------------------------------- /09capes/quickBot_motor_test_cloud9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_motor_test_cloud9.png -------------------------------------------------------------------------------- /09capes/quickBot_motor_test_scope.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_motor_test_scope.JPG -------------------------------------------------------------------------------- /09capes/quickBot_motors.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_motors.jpg -------------------------------------------------------------------------------- /09capes/quickBot_on_OSHPark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_on_OSHPark.png -------------------------------------------------------------------------------- /09capes/quickBot_oshpark_share.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_oshpark_share.png -------------------------------------------------------------------------------- /09capes/quickBot_pcb.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_pcb.JPG -------------------------------------------------------------------------------- /09capes/quickBot_pcb.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_pcb.png -------------------------------------------------------------------------------- /09capes/quickBot_play.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_play.fzz -------------------------------------------------------------------------------- /09capes/quickBot_schem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_schem.png -------------------------------------------------------------------------------- /09capes/quickBot_schemRaw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_schemRaw.png -------------------------------------------------------------------------------- /09capes/quickBot_schemZoom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/quickBot_schemZoom.png -------------------------------------------------------------------------------- /09capes/roboCape.fzz: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/roboCape.fzz -------------------------------------------------------------------------------- /09capes/srm_cape_dimensions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/srm_cape_dimensions.png -------------------------------------------------------------------------------- /09capes/stacking_headers.JPG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeagleBoneCookbook/firstEdition/3ad12bca9f7520da42c9992b6e32a13ce1e46908/09capes/stacking_headers.JPG -------------------------------------------------------------------------------- /09capes/urls.txt: -------------------------------------------------------------------------------- 1 | https://www.sparkfun.com/products/12866 2 | https://oshpark.com/shared_projects/Mz40o0aN 3 | http://fab.fritzing.org/how-to 4 | http://fritzing.org/pcb-custom-shape/ 5 | https://github.com/upverter/schematic-file-converter/issues/190 6 | 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # BeagleBone Cookbook - First Edition 2 | 3 | http://beagleboard.org/cookbook/ 4 | -------------------------------------------------------------------------------- /update.sh: -------------------------------------------------------------------------------- 1 | # Copies files from O'Reilly repo to published repo 2 | export or=../beaglebone-cookbook/images 3 | 4 | cp -r $or/sensors 02sensors 5 | cp -r $or/displays 03displays 6 | cp -r $or/motors 04motors 7 | cp -r $or/tips 05beyond 8 | cp -r $or/networking 06iot 9 | cp -r $or/kernel 07kernel 10 | cp -r $or/realtime 08realtime 11 | cp -r $or/capes 09capes --------------------------------------------------------------------------------