Een BeagleBone board (zoals de BeagleBone Black, BeagleBone AI-64 of de nieuwere BeaglePlay) draait gewoon Debian Linux. Programmeren doe je dus zoals op elke Linux-computer: je schrijft code in Python, C of C++ en voert die uit in een terminal op het board. Sluit het board met een USB-kabel aan op je computer; het verschijnt dan als netwerkapparaat op 192.168.7.2 (op een Mac vaak 192.168.6.2), en je logt in met SSH. Oudere handleidingen noemen de Cloud9 IDE in de browser, maar die wordt niet meer onderhouden en zit niet meer op de huidige images. De gangbare manier is nu VS Code: met de extensie Remote-SSH op je eigen computer, of met de VS Code-server (bb-code-server) die op een deel van de images in de browser draait, op poort 3000. Let bij het aansluiten van hardware op de GPIO-pinnen op dat die op 3,3 volt werken.

Terwijl je verder leest, bekijk ook even deze gerelateerde artikelen, die we speciaal voor je hebben geselecteerd. Deze stukken gaan dieper in op het thema en kunnen je nieuwe inzichten geven.

Wat zijn de stappen om een BeagleBone board te programmeren?

Zo ga je aan de slag:

  1. Zet een actuele image op een microSD-kaart. Download de Debian-image voor jouw board van de site van BeagleBoard.org en schrijf hem met balenaEtcher of de BeagleBoard Imager op de kaart. Het board start van de kaart; je kunt de image later ook naar het interne eMMC-geheugen kopiëren.
  2. Verbind het board via USB met je computer. Drivers zijn op Windows 10 en 11, macOS en Linux meestal niet meer nodig. Je kunt het board ook met een netwerkkabel aan je router hangen.
  3. Log in met SSH: ssh [email protected]. Het standaardwachtwoord van de Debian-images is temppwd; verander het meteen met passwd.
  4. Werk het systeem bij met sudo apt update en sudo apt upgrade (via een netwerkkabel of wifi, want het board heeft internet nodig).
  5. Open een editor: VS Code met Remote-SSH op je computer, de VS Code-server in de browser, of gewoon nano in de terminal.
  6. Schrijf en draai je code en sluit hardware aan op de GPIO-pinnen. Controleer eerst de pinout van je model.

Welke programmeertalen worden ondersteund door het BeagleBone board?

Omdat het board Debian draait, kun je vrijwel elke taal gebruiken die er voor Linux op ARM is. De meest gebruikte:

  • Python 3: ideaal voor snelle prototypes en scripts, met bibliotheken voor GPIO, I²C en SPI.
  • C/C++: voor de beste prestaties en voor werk dicht op de hardware. gcc en g++ staan op de images.
  • Shell scripting: handig voor het automatiseren van taken en systeembeheer.
  • JavaScript met Node.js: voor webgebaseerde projecten. De oude BeagleBone-bibliotheek BoneScript wordt niet meer onderhouden.
  • Rust, Go of Java: te installeren via apt of de officiële installatieprogramma's. Op een BeagleBone Black met één processorkern en 512 MB geheugen zijn Java-programma's wel traag.

Hoe kan ik Python gebruiken op een BeagleBone board?

Python 3 staat al op de Debian-images. Zo maak je je eerste script:

  1. Log in met SSH of open de terminal in VS Code.
  2. Maak een bestand aan, bijvoorbeeld met nano hallo.py, of via VS Code.
  3. Schrijf je code en sla het bestand op.
  4. Voer het script uit met python3 hallo.py.
  5. Controleer de uitvoer en pas je code aan indien nodig.

Voor GPIO gebruik je tegenwoordig de bibliotheek libgpiod, met de Python-module gpiod (sudo apt install python3-libgpiod). Veel oudere voorbeelden gebruiken Adafruit_BBIO; die bibliotheek wordt niet meer onderhouden en werkt op nieuwe images niet altijd meer.

Hoe kan ik C/C++ gebruiken op een BeagleBone board?

De compilers staan meestal al op het board (anders: sudo apt install build-essential). Zo compileer je een programma:

  1. Log in met SSH of open de terminal in VS Code.
  2. Maak een nieuw bestand aan met de extensie .c of .cpp.
  3. Schrijf je code en sla het bestand op.
  4. Compileer met gcc -o programma jecode.c voor C of g++ -o programma jecode.cpp voor C++.
  5. Voer het programma uit met ./programma.

Voor GPIO in C gebruik je ook libgpiod (sudo apt install libgpiod-dev, en compileren met -lgpiod). Bij grotere projecten kun je op je eigen computer cross-compileren voor ARM; dat is veel sneller dan compileren op het board zelf.

Hoe programmeer ik de PRU (Programmable Real-time Unit) op een BeagleBone board?

De BeagleBone Black (en andere boards met een TI-processor met PRU) heeft twee PRU's: kleine 200 MHz-processors die naast Linux draaien en pinnen met een vaste timing kunnen aansturen. Zo programmeer je ze:

  1. Installeer de PRU-compiler van Texas Instruments (clpru) en het PRU Software Support Package. Op de BeagleBoard-images zijn ze vaak al aanwezig of te installeren via apt.
  2. Schrijf je PRU-programma in C of assembly en compileer het met clpru tot een firmwarebestand.
  3. Kopieer dat bestand naar /lib/firmware met de naam die de kernel verwacht (bijvoorbeeld am335x-pru0-fw voor de eerste PRU op een BeagleBone Black).
  4. Start de PRU via de RemoteProc-driver: echo start | sudo tee /sys/class/remoteproc/remoteprocX/state, waarbij X het nummer van de PRU is. Stoppen gaat met echo stop.
  5. Wissel gegevens uit met Linux via gedeeld geheugen of RPMsg.

Zet de pinnen die de PRU gebruikt eerst in de PRU-modus (met config-pin of een device tree overlay), anders gebeurt er niets op de pinnen.

Wat is de rol van de Cloud9 IDE bij het programmeren van een BeagleBone board?

Tegenwoordig geen. Jarenlang stond de Cloud9 IDE op de BeagleBone-images: een editor met terminal in de browser op http://192.168.7.2:3000. Cloud9 wordt niet meer onderhouden, en BeagleBoard.org heeft het op de Debian 11- en 12-images vervangen door bb-code-server, een versie van VS Code die in de browser draait, op dezelfde poort 3000. Op de nieuwste images staat ook die niet meer standaard; je installeert hem dan met sudo apt install bb-code-server als je hem wilt.

De meeste ontwikkelaars gebruiken liever VS Code op hun eigen computer met de extensie Remote-SSH. Je bewerkt dan de bestanden op het board alsof ze lokaal staan, met een terminal naar het board in hetzelfde venster, terwijl het zware werk van de editor op je eigen computer gebeurt. Dat is ook prettiger op een BeagleBone Black, die weinig geheugen heeft.

Hoe gebruik ik GPIO-pinnen op een BeagleBone board?

Zo stuur je een GPIO-pin aan:

  1. Zoek de pinout van je model op. Op de BeagleBone Black zitten de pinnen op de headers P8 en P9; niet elke pin is vrij, want een deel wordt gebruikt voor het eMMC-geheugen en HDMI.
  2. Zet de pin in de GPIO-modus. Op de BeagleBone Black doe je dat met config-pin, bijvoorbeeld config-pin P9_12 gpio.
  3. Bekijk welke GPIO-lijnen er zijn met gpioinfo (uit het pakket gpiod).
  4. Zet een uitgang aan of uit met gpioset, of lees een ingang met gpioget. In Python en C gebruik je dezelfde libgpiod-bibliotheek.
  5. De oude methode via /sys/class/gpio werkt op veel images nog, maar is in Linux verouderd.

Let op de spanning: de GPIO-pinnen werken op 3,3 volt en kunnen niet tegen 5 volt. Sluit nooit een 5V-signaal rechtstreeks aan, gebruik een niveauomzetter. Een pin levert maar een paar milliampère, dus zet altijd een weerstand in serie met een led en stuur zwaardere dingen (motoren, relais) aan via een transistor of driverboard. De analoge ingangen van de BeagleBone Black kunnen maximaal 1,8 volt hebben. Sluit hardware aan terwijl het board uit staat.

Heb je gevonden wat je zocht? Er is altijd meer te verkennen! Neem een kijkje bij onze aanvullende stukken voor verdere verrijking.