Resources
Brian's CMPT433 Guides
See guides section
Suggested C style guide.
Reference Textbooks (none required)
- Linux / Embedded Linux
- Exploring BeagleBone 2nd Ed, by Derek Molloy, 2019.
[ SFU Lib] [ Book's website ]
This is a fantastic book for working with a BeagleBone! - Embedded Linux Primer: a practical real-world approach 2nd Ed, by C. Hallinan, 2011.
- Advanced Linux Programming, by Mitchell, Oldham and Samuel, 2001.
[ Free online ]
- Exploring BeagleBone 2nd Ed, by Derek Molloy, 2019.
Embedded Systems Links - Interesting Articles
- Wikipedia articles on: Embedded Systems, Microprocessors..
- I2C tutorial.
- Tutorials on embedded systems and many related C/C++ topics.
Hardware
- BeagleBone, AM335x, Zen cape data sheets & reference manuals (local copies).
- LED intro.
Software Setup and Tools
- VirtualBox: Free virtual machine, installed in Linux Lab, runs under most OS's.
- VM Ware Player: Free virtual machine; use for Linux development under Windows. (Dr. Brian's YouTube video on VMWare and on configuring VM Ware).
- Ubuntu Linux: Download 64bit ISO to run in VMWare [also in /usr/shared/CMPT/CMPT433 dir in Linux lab].
- Makefile Guide: Covers the basics of makefiles.
- Free Makefiles book. Good chapter on debugging makefiles.
- TeraTerm: Windows terminal program; works over serial port.
- Eclipse: IDE used in course; get the C/C++ version, or add the C/C++ addons to another installation.
- Subversive is an Eclipse plugin for SVN. TortoiseSVN is a good Windows SVN client.
- Minicom Guide: Commands and info on using Minicom as a serial port terminal.
- BBB video tutorials by Derek Molloy covering many aspects of C/C++ programming on the BeagleBone (white and black).
- Node.js in Action book via SFU Library online for guide to Node.js.
- Bitwise operations guide.
- Bare Metal C++: Practical guide to Bare Metal C++.
Linux Programming
- Dr. Brian's youtube videos on Linux Programming.
- Linux shell tutorial from Software Carpentry. Great for shell beginners, and covering loops.
- Advanced Linux Programming: Free book covering threads, sockets, pipes, ....
- Threads: POSIX thread library.
- Memory leak detection in Embedded Systems: A short article reviewing mtrace, memwatch and dmalloc.
- Linux Device Drivers: Free online book for writing Linux device drivers.
- Kernel patches: LinuxChix description of kernel patches (and politics!).
- Guide to Eclipse with the Kernel: Tells you how to load symbols into Eclipse. NOTE: May need to define the constant __KERNEL = 1 in your own project.
- Audio:
- ALSA hompepage: Documentation for advanced Linux sound architecture.
- Audio in Embedded Linux Systems: Great presentation for an overview of Linux sound for embedded.
- Introduction to Linux Audio.
- PCM audio guide, PCM sample program, and latency test program.
- Linux kernel driver guide: Start at part 1 (bottom of list).
- Tutorials/examples for BBB, such as SPI, I2C, PRU, ....
- Kernel development resources
- Kernel coding articles
- Linux Device Driver 3rd Ed book on driver development.
BeagleBone Black Links
- elinux.org: BBB general list of great resources.
- GPIO interrupt guide.
Student CMPT433 How-TO Guides
Spring 2024 Student Guides for BeagleBone Green (BBG)
- How-To 16x2 Character LCD Through GPIO, with support files.
- How-To AWS Rekognition Detect Human In Image Over TCP.
- How-To AdaFruit-16x32 LED Display Guide.
- How-To AdaFruit 16x32 LED Matrix with PRU Guide, with support files.
- How-To AdaFruit Mini GPS PA1010D UART.
- How-To BeagleBone WiFi Guide.
- How-To Cross-compiling External C/C++ Libraries using vcpkg.
- How-To Cross-compile PRU code from host machine (instead of compiling natively on the target).
- How-To Discord notifications with webcam image through NodeJS, with support files.
- How-To Distance Sensor VL53L0X, with support files.
- How-To Firebase to Google Cloud via NodeJS on BBG, with support files.
- How-To Gyroscope BNO085 UART-RVC.
- How-To Hall Effect Sensor.
- How-To ICM20948 Guide 9DOF.
- How-To ILI9340 display on BBG.
- How-To MG995R Servo Motor Guide.
- How-To MIDI Keyboard Guide.
- How-To Mini 2 Axis Joystick.
- How-To PIR and Laser Diode Photoresistor.
- How-To PN532 NFC Reader.
- How-To PortAudio For BBG.
- How-To RFID RC522 Quick Start Guide, with support files.
- How-To RHT03 Sensor Using PRU, with support files.
- How-To Servo Motor to BBG - Movement Along Two Axes.
- How-To Servo PWM Guide RS002B MicroServo.
- How-To UART Bluetooth to Android App.
- How-To Using SPI to Drive an MFRC522 RFIDReader, with support files.
- How-To Video Streaming From BBG to Host With OpenCV.
- How-To Webcam To Send Video Stream Through UDP.
- How-To Wifi USB Realtek RTL8188CUS.
Spring 2023 Student Guides for BeagleBone Green (BBG)
- How-To 3 Pin PIR Motion Sensor, with support files.
- How-To 4x20 LCD Display -- 2004A-V20-With I2C IO Expander
- How-To A2D-Water Sensor
- How-To Adafruit 16x32 LED Matrix - For Debian Bullseye (11.x), with support files.
- How-To Adafruit 2.2 Inch 18-Bit Color TFT LCD Breakout Board via BBG -- ILI9340
- How-To Adafruit 4 Digit Alphanumeric Display
- How-To Adafruit NeoTrellis 4x4 Buttons With LED Matrix, with support files.
- How-To Adafruit Stemma Soil Sensor With Arduino and UART
- How-To Connect To Phone Hotspot On USB WiFi
- How-To Cross Compiling PJSIP for BeagleboneGreen
- How-To Detect Motion With Webcam On BBG, with support files.
- How-To GPS-AdaFruit -- PA1616S Via UART, with support files.
- How-To Grove GPS -- SIM28 -- UART Guide For BBG
- How-To Grove Relay With Pump
- How-To Guitar Hero Controller Wii On BeagleBone
- How-To Live Stream Video To NodeJS On GoogleCloud
- How-To NodeJS Save Requests To Disk Instead Of UDP, with support files.
- How-To Play Mp3 File With C -- MPEG123
- How-To RFID Reading Via PN532
- How-To Reading QR Code From Node JS Server
- How-To Running ML Audio Inference BBG -- MAX9814 with good sampling under Linux
- How-To Stream Udp Video And Audio On BBG
- How-To Usb Controller and 16x32 LED Panel
Very useful for cross-compiling against libraries! Gives steps to installarmhf
library onto host for cross-compiling without having to rebuild the full library.
Fall 2022 Student Guides (for BBG; from ENSC 351)
- How-To 14-Seg Display, with support files.
- How-To 4D uino LCD via I2C.
- How-To 4x20 LCD Custom Characters, with support files.
- How-To ADXL345-Accelerometer.
- How-To Android App To Arduino Bluetooth Connection, with support files.
- How-To Automated Script To Stream Webcam From BBG To Web.
- How-To Bluetooth, with support files.
- How-To Cross Compile SQLite For Beaglebone Green.
- How-To FSR Sensor.
- How-To Grove Ear ClipHeartRateSensorOnBBG.
- How-To Grove PIR Motion Sensor.
- How-To I2C Soil Sensor via Python.
- How-To IMU with BBG.
- How-To Magic Mirror Software On BBB.
- How-To NFC Reader, with support files.
- How-To PRU for Adafruit 8x8 Matrix, with support files.
- How-To RHT03 Sensor using PRU, with support files.
- How-To Sending Email And SMS Reminders Using.
- How-To Servo Pan Tilt Guide. (2024 note: Updated PWM values to be: 20,000,000ns period; about 500,000 to 2,500,000 for duty cycle)
- How-To Speech Recognition On BBG.
- How-To SPI on BBG, with support files.
- How-To Stable Moisture Level Measuring via A2D.
- How-To Ultrasonic Sensor HCSR04, with support files.
- How-To Using C++ In C Program.
- How-To Video Over UDP - Python and OpenCV, with support files.
Spring 2022 Student How-To Guides (for BeagleBone Green)
- How-To 12-Digital Keypad.
- How-To 16x2 Character LCD through GPIO, with support files.
- How-To Adafruit 1912 - Alphanumeric Display, with support files.
- How-To Connect Android app to Python Bluetooth Server.
- How-To Controlling DC Motors with L293D Motor Driver.
- How-To Cross-compiling GTK Application for BBB.
- How-To Detecting motion with USB Webcam and OpenCV, with support files.
- How-To Displaying webpage on secondary BBG.
- How-To Grove OLED Screen.
- How-To linux/joystick.h library.
- How-To MAX9814 Setup for playable audio, with support files.
- How-To NeoTrellis 4x4, with support files.
- How-To NFS Scanner, with support files.
- How-To RCWl-1601 Ultrasonic Distance Sensor, with support files.
- How-To Servo PWM -- SG90_9g Micro Servo. (2024 note: Updated PWM values to be: 20,000,000ns period; about 500,000 to 2,500,000 for duty cycle)
- How-To Sharp GP2Y0A21YK0F Distance Sensor.
- How-To Streaming Webcam From BeagleBone To NodeJS Server, with support files. Recommended streaming guide: team achieved smooth video transmission.
- How-To Streaming Webcam Video to a Browser, with support files.
- How-To TMP36 Temperature Sensor.
Fall 2019 Student How-To Guides (for BeagleBone Green)
- How-To 8x8 LED Matrix.
- How-To Adafruit 16x32 LED Matrix, with support files.
- How-To Adafruit NeoTrellis 4x4 LED & Button matrix, with support files.
- How-To BBG UART Guide (partial).
- How-To Custom 3D LED-Cube hardware.
- How-To Electret Microphone Amplifier.
- How-To L293D Driver Tutorial.
- How-To MQTT Protocol (lightweight publish-subscribe network protocol).
- How-To Multicast Between BBGs.
- How-To Open Weather API.
- How-To Port Audio on BBG, with support files.
- How-To Pru with Adafruit 88 Neo Matrix.
- How-To Relay and power supply to control door lock.
- How-To Seeed Studio Ultrathin 16x32 RGB LED Matrix, with support files.
- How-To Serial Connection between BBG, RPi, Arduino.
- How-To Stream OpenCV Images.
- How-To VL530X Distance Sensor.
- How-To Wifi Setup Guide, with support files.
- How-To Setup Rust for BBG.
Summer 2018 Student How-To Guides (for BeagleBone Green)
- How-to Adafruit 16x32 LED Matrix Guide (Group A).
- How-to Adafruit 16x32 LED Matrix Guide (Group B).
Sample driver. - How-to LED Matrix Connections.
- How-to Setting up TFT display on BBG, with driver code.
- How-to Adaruit PIR Motion Sensor.
- How-to Reflashing the BBG via USB.
- How-to Connect magnetic switch to GPIO on BBG.
- How-to Cross-compile Flite librarry.
- How-to Custome Beaglebone Header Guide.
- How-to Electret Mic to detect clapping on BBG.
- How-to GPIO interfacing and Device Tre Overlays on upgraded BBG image.
- How-to Grove analog moisture sensor on BBG.
- How-to Grove PIR motion sensor and live streaming.
- How-to MAX4466 Guidance.
- How-to MJPG-Streamer on BBG.
- How-to Parallax 2 axis joystick on BBG.
- How-to TB6612FNG DC Motor Controlers with BBG.
- How-to UDP Multicast to Multiple Devices.
(One student reported this guide did not work for them, but recommended this tutorial as working; careful about use of sizeof() as shown in this guide; you cannot reliably sizeof() an array to get number of bytes in it) - How-to Connect USB Keyboard to a BBG.
- How-to Using C++ code in a C Project.
- How-to Wifi on BBG.
- How-to WiFi: Edimax USB adapter on BBG.
- How-to Wiring a Tri-colour LED and magnetic contact switch.
- How-to Wiring a fan to a relay with GPIO.
- How-to YM2413 FM Synthesizer Driver Interface.
Fall 2017 Student How-To Guides (for BeagleBone Green)
- How-to 12-digit keypad.
- How-to caputring and streaming webcam video.
- How-to encoded radio communication.
- How-to Firebase via CURL and JSON-C.
- How-to full web-stack framework.
- How-to Grove finger heart-rate sensor.
- How-to IR sensor.
- How-to LCD 2x16 screen via I2C.
- How-to setup WiFi on BBG.
- How-to solenoid from relay.
- How-to SQL Lite from C.
- How-to TMP36 sensor guide (temperature reading).
- How-to Transfer data from embedded node server to remote node server, with sample code.
- How-to WiFi USB Adaptor.
- How-to WiFi.
Fall 2016 Student How-To Guides (for BeagleBone Black)
- How-to read DS18B20 thermometer.
- How-to control a grove 4-digit display, plus data sheet.
- How-to control the Grove OLED via I2C.
- How-to read an OBD port via serial port, plus data sheet.
- How-to use the PRU to drive GPIO (PRU = Programmable Realtime Unit).
- How-to use PWM to control an exteranl device, plus data sheet.
- How-to read an RHT03 temperature/humitidy sensor.
- How-to control the thermal printer.
- How-to get JPEG images from a webcam to the web.
- How-to use OpenCV with a webcam.
Fall 2015 Student How-To Guides (for BeagleBone Black)
- How-to use the AdaFruit 16x32 LED matrix with the BBB, plus sample code.
- How-to setup Bluetooth on the BBB in C.
- How-to compile Boost for BBB.
- How-to cross compile FMOD.
- How-to use a Guitar Hero controller under Linux.
- How-to set HDMI resolutions under BBB.
- How-to read infrared sensor (Sanyo 2Y0A21).
- How-to use a light sensor and port-forwarding.
- How-to setup a local area network directly between two BBB.
- How-to use the NXT brick via BlueTooth (group suggested previous year's guide was problematic).
- How-to reliably read a photoresistor.
- How-to record video from a webcam in Linux.
- How-to access a USB headset, plus sample code.
Fall 2014 Student How-To Guides (for BeagleBone Black)
- How-to use Bluetooth with Blue Z.
- How-to connect a keypad via GPIO.
- How-to control DC motors via GPIO.
- How-to cross compile using chroot.
- How-to control the Lego NXT brick.
- How-to use OpenCV on the BBB.
- How-to control an RC car.
- How-to drive servo motors, plus sample code.
- How-to connect a small text LCD, plus sample code.
- How-to drive a tri-colour LED via PWM.
- How-to connect a web camera.
- How-to use a webcamera and servo motors. (2024 note: Updated PWM values to be: 20,000,000ns period; about 500,000 to 2,500,000 for duty cycle)
- How-to use the PRUSS (PRUs) (real-time sub-processors).
Fall 2011 Student How-To Guides (for EM2440-III)
- How-to configure audio & install a webcam.
- How-to configure bluetooth & CSS in Qt (does not succeed).
- How-to install FTDI board under Linux.
- How-to cross-compile Libjingle for Google talk (does not succeed).
- How-to cross-compile numerous libraries.
- How-to control Madplay via hardware buttons.
- How-to cross-compile MySQL.
- How-to cross-compile TCL, Lame, and Linphone Additional scripts.
- How-to use XML parsing in Qt.
- How-to Install QT.