Forum | Documentation | Website | Blog

Skip to content
Snippets Groups Projects
Commit 9f50a794 authored by Deepak Khatri's avatar Deepak Khatri :dog:
Browse files

Merge branch 'main' into 'main'

Add BeagleConnect

See merge request docs/docs.beagleboard.io!14
parents 001361b6 2ffb5e7f
Branches
Tags
No related merge requests found
Showing with 2069 additions and 2 deletions
......@@ -27,7 +27,7 @@ BeagleBone AI-64 is manufactured and warranted by partners listed at https://bea
* Mark Yoder, professor at Rose-Hulman Institute of Technology
* Kathy Giori, product engineer at ZEDEDA
See bbb.io/about
See `bbb.io/about <bbb.io/about>`_
BeagleBone AI-64 has been designed by Seeed Studio (Seeed Development Limited) under guidance from BeagleBoard.org Foundation.
......
***************************
BeagleConnect™ Introduction
***************************
BeagleConnect™ is a revolutionary technology virtually eliminating low-level
software development for `IoT <https://en.wikipedia.org/wiki/Internet_of_things>`_
and `IIoT <https://en.wikipedia.org/wiki/Industrial_internet_of_things>`_
applications, such as building automation, factory automation, home automation,
and scientific data acquisition. While numerous IoT and IIoT solutions
available today provide massive software libraries for microcontrollers
supporting a limited body of `sensors <https://en.wikipedia.org/wiki/Sensor>`_,
`actuators <https://en.wikipedia.org/wiki/Actuator>`_ and `indicators <https://en.wikipedia.org/wiki/Indicator_(distance_amplifying_instrument)>`_
as well as libraries for communicating over various networks, BeagleConnect
simply eliminates the need for these libraries by shifting the burden into the
most massive and collaborative software project of all time, the `Linux kernel <https://en.wikipedia.org/wiki/Linux_kernel>`_.
.. image:: media/bcf-c5-boards.jpg
:width: 600
:align: center
:height: 400
:alt: BeagleConnect Freedom C5 Boards
These are the tools used to automate things in
`scientific data collection <https://en.wikipedia.org/wiki/Data_collection_system>`_,
`data science <https://en.wikipedia.org/wiki/Data_science>`_,
`mechatronics <https://en.wikipedia.org/wiki/Mechatronics>`_,
and `IoT <https://en.wikipedia.org/wiki/Internet_of_things>`_.
BeagleConnect™ technology solves:
* The need to write software to add a large set of diverse devices to your
system,
* The need to maintain the software with security updates,
* The need to rapidly prototype using off-the-shelf software and hardware
without wiring,
* The need to connect to devices using long-range, low-power wireless, and
* The need to produce high-volume custom hardware cost-optimized for your
requirements.
BeagleConnect™ Experience
#########################
BeagleConnect™ provides a scalable experience for interacting with the physical
world.
Note: The term BeagleConnect™ refers to a technology comprising of a family of
boards, a collection of Linux kernel drivers, microcontroller firmware, a
communication protocol, and system-level integration to automation software
tools. More specific terms will be applied in the architecture details. The
term is also used here to represent the experience introduced to users through
the initial BeagleConnect™ Freedom product consisting of a board and case which
ships programmed and ready to be used.
For scientists, we are integrating `Jupyter Notebook <https://jupyter.org/>`_
with the data streams from any of hundreds of sensor options, including
`vibration <https://www.mikroe.com/click/sensors/force>`_,
`gas detection <https://www.mikroe.com/click/sensors/gas>`_,
`biometrics <https://www.mikroe.com/click/sensors/biometrics>`_ and
`more <https://www.mikroe.com/click/sensors>`_. These data streams can be
stored in simple `data files <https://en.wikipedia.org/wiki/Comma-separated_values>`
or processed and visualized.
#TODO: provide images demonstrating Jupyter Notebook visualization
For embedded systems developers, data is easily extracted using the standard IIO
interface provided by the Linux kernel running on the gateway using any of
hundreds of programming languages and environments, without writing a line of
microcontroller firmware. The Linux environment provides opportunities for
high-level remote management using tools like Balena with applications deployed
in Docker containers.
#TODO: provide image illustrating remote management
The hardware and software are fully open source, providing for scalability and
a lack of vendor lock-in.
For DevOps…
For home automaters, integration into WebThings…
#TODO: think a bit more about this section with some feedback from Cathy.
BeagleConnect™ hardware
#######################
BeagleConnect™ Freedom
**********************
.. image:: media/image1.jpg
:width: 600
:align: center
:height: 400
:alt: BeagleConnect-Freedom-C5-HandPhoto
Important: BeagleConnect™ Freedom enables wirelessly adding new device nodes
and is targeted to cost initially around US$20 with a roadmap to variants as
low as US$1.
The initial BeagleConnect™ Freedom production release will:
* Support at least 100 mikroBUS-based Click boards from Mikroelectronika
* Work with Bluetooth Low Energy (BLE)-enabled Linux computers at 2.4GHz
* Work with long-range sub-1GHz IEEE 802.15.4 wireless connections at 500
meters with data rates of 1kbps, and
* Work with a low-cost BeagleBoard.org Linux single-board computer (SBC) as a
BeagleConnect™ gateway device and work with at least 10 other BeagleConnect™
node devices each supporting 2 add-on sensor, actuator or indicator devices.
Future releases will be collaborated with the community, evolve dynamically,
and contain additional functionality. The goal is to support over 500 add-on
devices within the first year after the initial release.
BeagleConnect™ Freedom beta kit
*******************************
A small number of beta kits have been assembled with BeagleConnect™ Freedom
rev C5 boards, which is the version that should be taken to production.
The kit includes:
* 1x `Seeed BeagleBone® Green Gateway <https://wiki.seeedstudio.com/BeagleBone-Green-Gateway/>`_ (board, USB cable)
* 3x BeagleConnect™ Freedom (board, attenna, USB cable)
* 1x `Mikroelectronika Click ID Board <https://www.mikroe.com/unique-id-click>`_
To get started with this kit, see [demo-1].
BeagleConnect™ Mobile Gateway
#############################
This is a work-in-progress that will be released as the first integrated
BeagleConnect™ gateway. It is possible to assemble a gateway with any Linux
computer, but this computer will ship setup and ready to go.
The gateway is built from:
* BeagleBoard.org PocketBeagle,
* BeagleConnect™ Freedom,
* a cellular modem,
* a USB WiFi dongle,
* antennas, and
* an enclosure.
Architecture
************
BeagleConnect™ Freedom
**********************
BeagleConnect™ Freedom is based on the `TI CC1352 <https://www.ti.com/product/CC1352R>`_
and is the first available BeagleConnect™ solution. It implements:
* BeagleConnect™ gateway device function for Sub-GHz 802.15.4 long-range
wireless
* BeagleConnect™ node device function for Bluetooth Low-Energe (BLE) and
Sub-GHz 802.15.4 long range wireless
* USB-based serial console and firmware updates
* 2x `mikroBUS sockets <https://www.mikroe.com/mikrobus>`_ with BeagleConnect™
protocol support
#TODO: provide image of BeagleConnect™ Freedom in a case with a hand for size perspective
What makes BeagleConnect™ new and different?
********************************************
Important: BeagleConnect™ solves IoT in a different and better way than any
previous solution.
The device interface software is already done
*********************************************
BeagleConnect™ uses the collaboratively developed Linux kernel to contain the
intelligence required to speak to these devices (sensors, actuators, and
indicators), rather than relying on writing code on a microcontroller specific
to these devices. Some existing solutions rely on large libraries of
microcontroller code, but the integration of communications, maintenance of the
library with a limited set of developer resources and other constraints to be
explained later make those other solutions less suitable for rapid prototyping
than BeagleConnect™.
Linux presents these devices abstractly in ways that are self-descriptive. Add
an accelerometer to the system and you are automatically fed a stream of force
values in standard units. Add a temperature sensor and you get it back in
standard units again. Same for sensing magnetism, proximity, color, light,
frequency, orientation, or multitudes of other inputs. Indicators, such as LEDs
and displays, are similarly abstracted with a few other kernel subsystems and
more advanced actuators with and without feedback control are in the process of
being developed and standardized. In places where proper Linux kernel drivers
exist, no new specialized code needs to be created for the devices.
Important: *Bottom line*: For hundreds of devices, users won't have to write a
single line of code to add them their systems. The automation code they do
write can be extremely simple, done with graphical tools or in any language
they want. Maintenance of the code is centralized in a small reusable set of
microcontroller firmware and the Linux kernel, which is highly peer reviewed
under a `highly-regarded governance model <https://wiki.p2pfoundation.net/Linux_-_Governance>`_.
On-going maintenance
********************
Because there isn't code specific to any given network-of-devices configuration
, we can all leverage the same software code base. This means that when someone
fixes an issue in either BeagleConnect™ firmware or the Linux kernel, you
benefit from the fixes. The source for BeagleConnect™ firmware is also
submitted to the `Zephyr Project <https://www.zephyrproject.org/>`_ upstream,
further increasing the user base. Additionally, we will maintain stable
branches of the software and provide mechanisms for updating firmware on
BeagleConnect™ hardware. With a single, relatively small firmware load, the
potential for bugs is kept low. With large user base, the potential for
discovering and resolving bugs is high.
Rapid prototyping without wiring
********************************
BeagleConnect™ utilizes the `mikroBUS standard <https://elinux.org/Mikrobus>`_.
The mikroBUS standard interface is flexible enough for almost any typical
sensor or indicator with hundreds of devices available.
Note: Currently, we have support in the Linux kernel for a bit over 100 Click
mikroBUS add-on boards from Mikroelektronika and are working with
Mikroelektronika on a updated version of the specification for these boards to
self-identify. Further, eventually the vast majority of over 800 currently
available Click mikroBUS add-on boards will be supported as well as the
hundreds of compliant boards developed every year.
Long-range, low-power wireless
******************************
BeagleConnect™ Freedom wireless hardware is built around a
`TI CC1352 <http://www.ti.com/product/CC1352R>`_ multiprotocol and multi-band
Sub-1 GHz and 2.4-GHz wireless microcontroller (MCU). CC1352R includes a 48-MHz
Arm® Cortex®-M4F processor, 352KB Flash, 256KB ROM, 8KB Cache SRAM, 80KB of
ultra-low leakage SRAM, and `Over-the-Air <https://en.wikipedia.org/wiki/Over-the-air_programming>`_
upgrades (OTA).
Full customization possible
***************************
BeagleConnect™ utilizes `open source hardware <https://www.oshwa.org/definition/>`_
and `open source software <https://en.wikipedia.org/wiki/Open-source_software>`_,
making it possible to optimize hardware and software implementations and
sourcing to meet end-product requirements. BeagleConnect™ is meant to enable
rapid-prototyping and not to necessarily satisfy any particular end-product’s
requirements, but with full considerations for go-to-market needs.
Each BeagleBoard.org BeagleConnect™ solution will be:
* Readily available for over 10 years,
* Built with fully open source software with submissions to mainline Linux and
Zephyr repositories to aide in support and porting,
* Built with fully open source and non-restrictive hardware design including
schematic, bill-of-materials, layout, and manufacturing files (with only the
BeagleBoard.org logo removed due to licensing restrictions of our brand),
* Built with parts where at least a compatible part is available from worldwide
distributors in any quantity,
* Built with design and manufacturing partners able to help scale derivative
designs,
* Based on a security model using public/private keypairs that can be replaced
to secure your own network, and
* Fully FCC/CE certified.
.. _beagleconnect-Change-History:
**************
Change History
**************
.. _beagleconnect-Usage:
********************
BeagleConnect™ Usage
********************
This section describes the usage model we are developing. To use the current
code in development, please refer to the [development] section.
BeagleConnect™ wireless user experience
#######################################
Enable a Linux host with BeagleConnect™
***************************************
.. image:: media/ProvStep1.jpg
:width: 600
:align: center
:height: 400
:alt: ProvStep1
Log into a host system running Linux that is BeagleConnect™ enabled. Enable a
Linux host with BeagleConnect™ by plugging a **BeagleConnect™ gateway device**
into it’s USB port. You’ll also want to have a **BeagleConnect™ node device**
with a sensor, actuator or indicator device connected.
Note: BeagleConnect™ Freedom can act as either a BeagleConnect™ gateway device
or a BeagleConnect™ node device.
Important: The Linux host will need to run the BeagleConnect™ management
software, most of which is incorporated into the Linux kernel. Support will be
provided for BeagleBoard and BeagleBone boards, x86 hosts, and Raspberry Pi.
TODO: Clean up images
Connect host and device
***********************
.. image:: media/ProvStep2.jpg
:width: 600
:align: center
:height: 400
:alt: ProvStep2
Initiate a connection between the host and devices by pressing the discovery
button(s).
Device data shows up as files
*****************************
.. image:: media/ProvStep3.jpg
:width: 600
:align: center
:height: 400
:alt: ProvStep3
New streams of self-describing data show up on the host system using native
device drivers.
High-level applications, like Node-RED, can directly read/write these
high-level data streams (including data-type information) to Internet-based
`MQTT <https://mqtt.org/>`_ brokers, live dashboards, or other logical
operations without requiring any sensor-specific coding. Business logic can be
applied using simple if-this-then-that style operations or be made as complex
as desired using virtually any programming language or environment.
Components
##########
BeagleConnect™ enabled host Linux computer, possibly single-board computer
(SBC), with BeagleConnect™ management software and BeagleConnect™ gateway
function. BeagleConnect™ gateway function can be provided by a BeagleConnect™
compatible interface or by connecting a BeagleConnect™ gateway device over USB.
Note: If the Linux host has BLE, the BeagleConnect™ is optional for short
distances
BeagleConnect™ Freedom Board, case, and wireless MCU with Zephyr based firmware
for acting as either a BeagleConnect™ gateway device or BeagleConnect™ node
device.
* In BeagleConnect™ gateway device mode: Provides long-range, low-power
wireless communications, Connects with the host via USB and an associated
Linux kernel driver, and is powered by the USB connector.
* In BeagleConnect™ node device mode: Powered by a battery or USB connector
Provides 2 mikroBUS connectors for connecting any of hundreds of `Click Board <https://bbb.io/click>`_
mikroBUS add-on devices Provides new Linux host controllers for SPI, I2C,
UART, PWM, ADC, and GPIO with interrupts via Greybus
**BeagleConnect™ gateway device**
Provides a BeagleConnect™ compatible interface to a host. This could be a
built-in interface device or one connected over USB. BeagleConnect™ Freedom can
provide this function.
**BeagleConnect™ node device**
Utilizes a BeagleConnect™ compatible interface and TODO
**BeagleConnect™ compatible interface**
Immediate plans are to support Bluetooth Low Energy (BLE), 2.4GHz IEEE 802.15.4
, and Sub-GHz IEEE 802.15.4 wireless interfaces. A built-in BLE interface is
suitable for this at short range, whereas IEEE 802.15.4 is typically
significantly better at long ranges. Other wired interfaces, such as CAN and
RS-485, are being considered for future BeagleConnect™ gateway device and
BeagleConnect™ node device designs.
**Greybus**
TODO
#TODO: Find a place for the following notes:
* The device interfaces get exposed to the host via Greybus BRIDGED_PHY
protocol
* The I2C bus is probed for a an identifier EEPROM and appropriate device
drivers are loaded on the host
* Unsupported Click Boards connected are exposed via userspace drivers on the
host for development
What’s different
################
So, in summary, what is so different with this approach?
* No microcontroller code development is required by users
* Userspace drivers make rapid prototyping really easy
* Kernel drivers makes the support code collaborative parts of the Linux kernel
, rather than cut-and-paste
.. _beagleconnect-connectivity:
*******************************
BeagleConnect™ Freedom & Zephyr
*******************************
Develop for BeagleConnect™ Freedom with Zephyr
##############################################
Developing directly in Zephyr will not be ultimately required for end-users
who won't touch the firmware running on BeagleConnect™ Freedom and will instead
use the BeagleConnect™ Greybus functionality, but is important for early
adopters as well as people looking to extend the functionality of the open
source design. If you are one of those people, this is a good place to get
started.
Equipment to begin development
******************************
There are many options, but let's get started with one recommended set for the beta users.
Required
--------
* beta-kit
* Seeed Studio BeagleBone® Green Gateway
* 3x BeagleConnect™ Freedom board, antenna, U.FL to SMA cable, SMA antenna and USB Type-A to Type-C cable
* 1x MikroE ID Click
* microSD card (6GB or larger)
* microSD card programmer
Recommended
-----------
* `12V power brick <https://smile.amazon.com/TMEZON-Power-Adapter-Supply-2-1mm/dp/B00Q2E5IXW>`_
* `USB to TTL 3.3V UART adapter <https://smile.amazon.com/Converter-Terminated-Galileo-BeagleBone-Minnowboard/dp/B06ZYPLFNB>`_
* Ethernet cable and Internet connection
* 2x USB power adapters
* `BME280-based Weather Click <https://www.mikroe.com/weather-click>`_
* `iAQ-Core-based Air Quality 2 Click <https://www.mikroe.com/air-quality-2-click>`_
Optional
--------
* x86_64 computer running Ubuntu 20.04.3 LTS
Install the latest software image for BeagleBone Green Gateway
**************************************************************
Download and install the Debian Linux operating system image for the Seeed
BeagleBone® Green Gateway host.
#. Download the special mikroBUS/Greybus BeagleBoard.org Debian image from
`here <https://rcn-ee.net/rootfs/debian-mikrobus-armhf/>`_. Pick the most
recent directory and select the file beginning with **bone-** and ending with
**.img.xz**. Today that file is
**bone-debian-11.2-iot-mikrobus-armhf-2022-03-04-4gb.img.xz**.
#. Load this image to a microSD card using a tool like Etcher.
#. Insert the microSD card into the Green Gateway.
#. Power BeagleBone Green Gateway via the 12V barrel jack.
#TODO: describe how to know it is working
Log into BeagleBone Green Gateway
*********************************
These instructions assume an x86_64 computer runing Ubuntu 20.04.3 LTS, but any
computer can be used to connect to your BeagleBone Green Gateway.
#. Log onto the Seeed BeagleBone® Green Gateway using :code:`ssh`.
* We need IP address, Username, and Password to connect to the device.
* The default IP for the BeagleBone hardware is :code:`192.168.7.2`
* The default Username is :code:`debian` & Password is :code:`temppwd`
* To connect you can simply type :code:`$ ssh debian@192.168.7.2` and when
asked for password just type :code:`temppwd`
* Congratulations, You are now connected to the device!
#. Connect to the `WiFi <https://forum.beagleboard.org/t/debian-11-x-bullseye-monthly-snapshots/31280>`_
* Execute :code:`sudo nano /etc/wpa_supplicant/wpa_supplicant-wlan0.conf`
and provide the password :code:`temppwd` to edit the configuration file
for the WiFi connection.
* Now edit the file (shown below) under the :code:`network={...}`
section you can set you :code:`ssid` (WiFi name) and :code:`psk` (Wifi
Password).
.. code-block::
ctrl_interface=DIR=/run/wpa_supplicant GROUP=netdev
update_config=1
#country=IN
network={
ssid="WiFi Name"
psk="WiFi Password"
}
* Now save the file with :code:`CTRL+O` and exit with :code:`CTRL+X`.
* Check if the connection is established by executing :code:`$ ping 8.8.8.8`
you should see something like shown below.
.. code-block:: bash
debian@BeagleBone:~$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=118 time=10.5 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=118 time=5.72 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=118 time=6.13 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=118 time=6.11 ms
...
* If everything goes well, you are ready to update your system and install
new applications for beagleconnect.
Note: If you are facing some issue during boot then you can try debugging the
boot session with a USB to serial interface cable such as those made by FTDI
plugged into J10 with the black wire of the FTDI cable toward the Ethernet
connector. Application like tio/minicom/putty can be used to make the connection
establishment procedure easy.
TODO: Simplify and elaborate on this section, add boot session debugging walkthrough
Install Zephyr development tools on BeagleBone Green Gateway
************************************************************
#. Update the system.
.. code-block:: bash
sudo apt update
#. Install all BeagleConnect™ management software.
.. code-block:: bash
sudo apt install -y \
beagleconnect beagleconnect-msp430 \
git vim \
build-essential \
cmake ninja-build gperf \
ccache dfu-util device-tree-compiler \
make gcc libsdl2-dev \
libxml2-dev libxslt-dev libssl-dev libjpeg62-turbo-dev \
gcc-arm-none-eabi libnewlib-arm-none-eabi \
libtool-bin pkg-config autoconf automake libusb-1.0-0-dev \
python3-dev python3-pip python3-setuptools python3-tk python3-wheel
.. code-block:: bash
echo "export PATH=$PATH:$HOME/.local/bin" >> $HOME/.bashrc
.. code-block:: bash
source $HOME/.bashrc
#. Reboot
.. code-block:: bash
sudo reboot
#. Install BeagleConnect™ flashing software
.. code-block:: bash
pip3 install -U west
#. Reboot
.. code-block:: bash
sudo reboot
#. Download and setup Zephyr for BeagleConnect™
.. code-block:: bash
cd
west init -m https://github.com/jadonk/zephyr --mr bcf-sdk-3.1.0-rebase bcf-zephyr
cd $HOME/bcf-zephyr
west update
west zephyr-export
pip3 install -r zephyr/scripts/requirements-base.txt
echo "export CROSS_COMPILE=/usr/bin/arm-none-eabi-" >> $HOME/.bashrc
echo "export ZEPHYR_BASE=$HOME/bcf-zephyr/zephyr" >> $HOME/.bashrc
echo "export PATH=$HOME/bcf-zephyr/zephyr/scripts:$PATH" >> $HOME/.bashrc
echo "export BOARD=beagleconnect_freedom" >> $HOME/.bashrc
source $HOME/.bashrc
Build applications for BeagleConnect Freedom on BeagleBone Green Gateway
************************************************************************
Now you can build various Zephyr applications
#. Change directory to BeagleConnect Freedom zephyr repository.
.. code-block:: bash
cd $HOME/bcf-zephyr
#. Build blinky example
.. code-block:: bash
west build -d build/blinky zephyr/samples/basic/blinky
#. TODO
.. code-block:: bash
west build -d build/sensortest zephyr/samples/boards/beagle_bcf/sensortest -- -DOVERLAY_CONFIG=overlay-subghz.conf
#. TODO
.. code-block:: bash
west build -d build/wpanusb modules/lib/wpanusb_bc -- -DOVERLAY_CONFIG=overlay-subghz.conf
#. TODO
.. code-block:: bash
west build -d build/bcfserial modules/lib/wpanusb_bc -- -DOVERLAY_CONFIG=overlay-bcfserial.conf -DDTC_OVERLAY_FILE=bcfserial.overlay
#. TODO
.. code-block:: bash
west build -d build/greybus modules/lib/greybus/samples/subsys/greybus/net -- -DOVERLAY_CONFIG=overlay-802154-subg.conf
Flash applications to BeagleConnect Freedom from BeagleBone Green Gateway
*************************************************************************
And then you can flash the BeagleConnect Freedom boards over USB
#. Make sure you are in Zephyr directory
.. code-block:: bash
cd $HOME/bcf-zephyr
#. Flash Blinky
.. code-block:: bash
cc2538-bsl.py build/blinky
Debug applications over the serial terminal
*******************************************
#TODO
This diff is collapsed.
.. _beagleconnect-home:
*************
BeagleConnect
*************
There are many stories behind BeagleConnect™, mine is just one of them. It
begins with my mom teaching me about computers. She told me I could anything I
wanted with ours, as long as I didn’t open the case. This was the
late-70s/early-80s, so all she needed to do was put her `floppy disk <https://en.wikipedia.org/wiki/Floppy_disk>`_
away and there wasn’t risk of me damaging the family photo album or her
ability to do her work the next day. I listened and learned from her the basics
of programming, but it wasn’t long before I wanted to take the computer apart.
Initially exploring `Getting Started in Electronics <http://www.forrestmims.org/>`_
satisfied my itch for quite a while. Eventually, I got a Commodore 64 and began
connecting voice synthesizer ICs to it. My interest in computers and
electronics flourished into an electrical engineering degree and a long career
in the semiconductor industry.
Over this time, I’ve become more and more alarmed with the progress of
technology. Now, to be clear, I love technology. I love innovation and
invention. It is just that some things have evolved in a sort of
tunnel-vision, without bringing everyone along.
But, what about keyboard users? As graphical user interfaces and mice took over
computers, they rapidly became almost unusable by my mom. She typed well, but
the dexterity to move a mouse aluded her. To satisfy the need to interact with
locations on the screen, she adopted using a joystick and her productivity came
to a crawl. How is it that such assumptions could be made impacting all
computer users without any thoughtful provisions for what already worked?
.. image:: media/image1.jpg
:width: 598
:align: center
:height: 400
:alt: BeagleConnect
.. toctree::
:maxdepth: 1
ch01.rst
ch02.rst
ch03.rst
ch04.rst
ch05.rst
ch06.rst
ch07.rst
ch08.rst
ch09.rst
ch10.rst
ch11.rst
beagleconnect/media/ProvStep1.jpg

117 KiB

beagleconnect/media/ProvStep2.jpg

130 KiB

beagleconnect/media/ProvStep3.jpg

126 KiB

beagleconnect/media/SoftwareProp.jpg

102 KiB

beagleconnect/media/bcf-c5-boards.jpg

360 KiB

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 2.43.0 (0)
-->
<!-- Title: S Pages: 1 -->
<svg width="570pt" height="767pt"
viewBox="0.00 0.00 570.00 767.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 763)">
<title>S</title>
<polygon fill="white" stroke="transparent" points="-4,4 -4,-763 566,-763 566,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_0</title>
<polygon fill="none" stroke="black" points="8,-304 8,-751 280,-751 280,-304 8,-304"/>
<text text-anchor="middle" x="144" y="-735.8" font-family="Times,serif" font-size="14.00">Linux PC</text>
</g>
<g id="clust2" class="cluster">
<title>cluster_1</title>
<polygon fill="lightgrey" stroke="lightgrey" points="16,-645 16,-720 272,-720 272,-645 16,-645"/>
<text text-anchor="middle" x="144" y="-704.8" font-family="Times,serif" font-size="14.00">Linux userspace</text>
</g>
<g id="clust3" class="cluster">
<title>cluster_2</title>
<polygon fill="lightgrey" stroke="lightgrey" points="41,-312 41,-637 272,-637 272,-312 41,-312"/>
<text text-anchor="middle" x="156.5" y="-621.8" font-family="Times,serif" font-size="14.00">Linux kernel</text>
</g>
<g id="clust4" class="cluster">
<title>cluster_3</title>
<polygon fill="none" stroke="black" points="288,-213 288,-418 466,-418 466,-213 288,-213"/>
<text text-anchor="middle" x="377" y="-402.8" font-family="Times,serif" font-size="14.00">BCF gateway</text>
</g>
<g id="clust5" class="cluster">
<title>cluster_4</title>
<polygon fill="lightgrey" stroke="lightgrey" points="324,-221 324,-296 430,-296 430,-221 324,-221"/>
<text text-anchor="middle" x="377" y="-280.8" font-family="Times,serif" font-size="14.00">CC1352</text>
</g>
<g id="clust6" class="cluster">
<title>cluster_5</title>
<polygon fill="lightgrey" stroke="lightgrey" points="296,-312 296,-387 458,-387 458,-312 296,-312"/>
<text text-anchor="middle" x="377" y="-371.8" font-family="Times,serif" font-size="14.00">MSP430</text>
</g>
<g id="clust7" class="cluster">
<title>cluster_6</title>
<polygon fill="none" stroke="black" points="227,-8 227,-205 554,-205 554,-8 227,-8"/>
<text text-anchor="middle" x="390.5" y="-189.8" font-family="Times,serif" font-size="14.00">BCF node</text>
</g>
<g id="clust8" class="cluster">
<title>cluster_7</title>
<polygon fill="lightgrey" stroke="lightgrey" points="290,-99 290,-174 464,-174 464,-99 290,-99"/>
<text text-anchor="middle" x="377" y="-158.8" font-family="Times,serif" font-size="14.00">CC1352</text>
</g>
<g id="clust9" class="cluster">
<title>cluster_8</title>
<polygon fill="lightgrey" stroke="lightgrey" points="235,-16 235,-91 546,-91 546,-16 235,-16"/>
<text text-anchor="middle" x="390.5" y="-75.8" font-family="Times,serif" font-size="14.00">mikroBUS add&#45;on board</text>
</g>
<!-- A -->
<g id="node1" class="node">
<title>A</title>
<g id="a_node1"><a xlink:title="Primary developer entry point">
<polygon fill="green" stroke="green" points="160,-689 24,-689 24,-653 160,-653 160,-689"/>
<text text-anchor="middle" x="92" y="-667.3" font-family="Times,serif" font-size="14.00">User Application</text>
</a>
</g>
</g>
<!-- I -->
<g id="node3" class="node">
<title>I</title>
<g id="a_node3"><a xlink:title="Hundreds of drivers for sensors and acutators">
<polygon fill="green" stroke="green" points="145,-606 49,-606 49,-570 145,-570 145,-606"/>
<text text-anchor="middle" x="97" y="-584.3" font-family="Times,serif" font-size="14.00">IIO Drivers</text>
</a>
</g>
</g>
<!-- A&#45;&gt;I -->
<g id="edge1" class="edge">
<title>A&#45;&gt;I</title>
<path fill="none" stroke="black" d="M93.06,-652.82C93.72,-642.19 94.57,-628.31 95.32,-616.2"/>
<polygon fill="black" stroke="black" points="98.82,-616.35 95.94,-606.15 91.83,-615.92 98.82,-616.35"/>
</g>
<!-- g -->
<g id="node2" class="node">
<title>g</title>
<g id="a_node2"><a xlink:title="Bridge Greybus to networked devices">
<polygon fill="green" stroke="green" points="264,-689 178,-689 178,-653 264,-653 264,-689"/>
<text text-anchor="middle" x="221" y="-667.3" font-family="Times,serif" font-size="14.00">gbridge**</text>
</a>
</g>
</g>
<!-- 6 -->
<g id="node9" class="node">
<title>6</title>
<g id="a_node9"><a xlink:title="IPv6 for low&#45;power wireless networks">
<polygon fill="green" stroke="green" points="251,-606 183,-606 183,-570 251,-570 251,-606"/>
<text text-anchor="middle" x="217" y="-584.3" font-family="Times,serif" font-size="14.00">lowpan</text>
</a>
</g>
</g>
<!-- g&#45;&gt;6 -->
<g id="edge6" class="edge">
<title>g&#45;&gt;6</title>
<path fill="none" stroke="black" d="M220.15,-652.82C219.63,-642.19 218.94,-628.31 218.34,-616.2"/>
<polygon fill="black" stroke="black" points="221.84,-615.97 217.85,-606.15 214.84,-616.31 221.84,-615.97"/>
</g>
<!-- m -->
<g id="node6" class="node">
<title>m</title>
<g id="a_node6"><a xlink:title="Board&#45;level abstraction to identify sensor connections">
<polygon fill="green" stroke="green" points="145.5,-534 48.5,-534 48.5,-498 145.5,-498 145.5,-534"/>
<text text-anchor="middle" x="97" y="-512.3" font-family="Times,serif" font-size="14.00">mikrobus**</text>
</a>
</g>
</g>
<!-- I&#45;&gt;m -->
<g id="edge2" class="edge">
<title>I&#45;&gt;m</title>
<path fill="none" stroke="black" d="M97,-569.7C97,-561.98 97,-552.71 97,-544.11"/>
<polygon fill="black" stroke="black" points="100.5,-544.1 97,-534.1 93.5,-544.1 100.5,-544.1"/>
</g>
<!-- r -->
<g id="node4" class="node">
<title>r</title>
<g id="a_node4"><a xlink:title="Dynamic RPC&#45;like bus interface for I2C, SPI, UART, etc.">
<polygon fill="green" stroke="green" points="135,-462 61,-462 61,-426 135,-426 135,-462"/>
<text text-anchor="middle" x="98" y="-440.3" font-family="Times,serif" font-size="14.00">greybus</text>
</a>
</g>
</g>
<!-- n -->
<g id="node5" class="node">
<title>n</title>
<g id="a_node5"><a xlink:title="Extend Greybus over netlink to userspace">
<polygon fill="green" stroke="green" points="151,-356 49,-356 49,-320 151,-320 151,-356"/>
<text text-anchor="middle" x="100" y="-334.3" font-family="Times,serif" font-size="14.00">gb&#45;netlink**</text>
</a>
</g>
</g>
<!-- r&#45;&gt;n -->
<g id="edge4" class="edge">
<title>r&#45;&gt;n</title>
<path fill="none" stroke="black" d="M98.33,-425.83C98.64,-409.64 99.11,-385.13 99.48,-366.27"/>
<polygon fill="black" stroke="black" points="102.98,-366.26 99.67,-356.2 95.98,-366.13 102.98,-366.26"/>
</g>
<!-- n&#45;&gt;g -->
<g id="edge5" class="edge">
<title>n&#45;&gt;g</title>
<path fill="none" stroke="black" d="M87.74,-356.26C53.38,-406.87 -36.47,-556.42 40,-637 49.89,-647.42 155.1,-641.38 169,-645 173.03,-646.05 177.13,-647.42 181.17,-648.98"/>
<polygon fill="black" stroke="black" points="179.83,-652.21 190.4,-652.89 182.56,-645.77 179.83,-652.21"/>
</g>
<!-- m&#45;&gt;r -->
<g id="edge3" class="edge">
<title>m&#45;&gt;r</title>
<path fill="none" stroke="black" d="M97.25,-497.7C97.36,-489.98 97.49,-480.71 97.61,-472.11"/>
<polygon fill="black" stroke="black" points="101.11,-472.15 97.76,-462.1 94.11,-472.05 101.11,-472.15"/>
</g>
<!-- w -->
<g id="node7" class="node">
<title>w</title>
<g id="a_node7"><a xlink:title="USB&#45;interface to IEEE802.15.4 radio">
<polygon fill="green" stroke="green" points="262,-462 168,-462 168,-426 262,-426 262,-462"/>
<text text-anchor="middle" x="215" y="-440.3" font-family="Times,serif" font-size="14.00">wpanusb**</text>
</a>
</g>
</g>
<!-- b -->
<g id="node11" class="node">
<title>b</title>
<g id="a_node11"><a xlink:title="USB interace to access CC1352 UART that encapulates WPANUSB in HDLC">
<polygon fill="green" stroke="green" points="450,-356 304,-356 304,-320 450,-320 450,-356"/>
<text text-anchor="middle" x="377" y="-334.3" font-family="Times,serif" font-size="14.00">usb_uart_bridge**</text>
</a>
</g>
</g>
<!-- w&#45;&gt;b -->
<g id="edge9" class="edge">
<title>w&#45;&gt;b</title>
<path fill="none" stroke="black" d="M260.64,-425.92C265.92,-423.47 271.15,-420.82 276,-418 303.24,-402.17 331.22,-379.71 350.81,-362.78"/>
<polygon fill="black" stroke="black" points="353.18,-365.35 358.4,-356.12 348.57,-360.08 353.18,-365.35"/>
</g>
<!-- i -->
<g id="node8" class="node">
<title>i</title>
<g id="a_node8"><a xlink:title="Standards&#45;based radio interface">
<polygon fill="green" stroke="green" points="264,-534 164,-534 164,-498 264,-498 264,-534"/>
<text text-anchor="middle" x="214" y="-512.3" font-family="Times,serif" font-size="14.00">ieee802154</text>
</a>
</g>
</g>
<!-- i&#45;&gt;w -->
<g id="edge8" class="edge">
<title>i&#45;&gt;w</title>
<path fill="none" stroke="black" d="M214.25,-497.7C214.36,-489.98 214.49,-480.71 214.61,-472.11"/>
<polygon fill="black" stroke="black" points="218.11,-472.15 214.76,-462.1 211.11,-472.05 218.11,-472.15"/>
</g>
<!-- 6&#45;&gt;i -->
<g id="edge7" class="edge">
<title>6&#45;&gt;i</title>
<path fill="none" stroke="black" d="M216.26,-569.7C215.93,-561.98 215.53,-552.71 215.16,-544.11"/>
<polygon fill="black" stroke="black" points="218.66,-543.95 214.73,-534.1 211.66,-544.25 218.66,-543.95"/>
</g>
<!-- z -->
<g id="node10" class="node">
<title>z</title>
<g id="a_node10"><a xlink:title="Zephyr&#45;based IEEE802.15.4 radio accepting HDLC over UART transactions">
<polygon fill="green" stroke="green" points="422,-265 332,-265 332,-229 422,-229 422,-265"/>
<text text-anchor="middle" x="377" y="-243.3" font-family="Times,serif" font-size="14.00">gateway**</text>
</a>
</g>
</g>
<!-- k -->
<g id="node12" class="node">
<title>k</title>
<g id="a_node12"><a xlink:title="Zephyr&#45;based applies Greybus transactions from IPv6/IEEE802154 to physical I2C, SPI, UART, etc.">
<polygon fill="green" stroke="green" points="456.5,-143 297.5,-143 297.5,-107 456.5,-107 456.5,-143"/>
<text text-anchor="middle" x="377" y="-121.3" font-family="Times,serif" font-size="14.00">greybus&#45;mikrobus**</text>
</a>
</g>
</g>
<!-- z&#45;&gt;k -->
<g id="edge11" class="edge">
<title>z&#45;&gt;k</title>
<path fill="none" stroke="black" d="M377,-228.81C377,-209.11 377,-176.58 377,-153.39"/>
<polygon fill="black" stroke="black" points="380.5,-153.16 377,-143.16 373.5,-153.16 380.5,-153.16"/>
</g>
<!-- b&#45;&gt;z -->
<g id="edge10" class="edge">
<title>b&#45;&gt;z</title>
<path fill="none" stroke="black" d="M377,-319.84C377,-307.28 377,-289.98 377,-275.5"/>
<polygon fill="black" stroke="black" points="380.5,-275.11 377,-265.11 373.5,-275.11 380.5,-275.11"/>
</g>
<!-- e -->
<g id="node13" class="node">
<title>e</title>
<g id="a_node13"><a xlink:title="Manifest for mikroBUS driver">
<polygon fill="green" stroke="green" points="538.5,-60 325.5,-60 325.5,-24 538.5,-24 538.5,-60"/>
<text text-anchor="middle" x="432" y="-38.3" font-family="Times,serif" font-size="14.00">manifest 1&#45;wire EEPROM**</text>
</a>
</g>
</g>
<!-- k&#45;&gt;e -->
<g id="edge13" class="edge">
<title>k&#45;&gt;e</title>
<path fill="none" stroke="black" d="M388.66,-106.82C396.17,-95.76 406.08,-81.18 414.52,-68.75"/>
<polygon fill="black" stroke="black" points="417.63,-70.39 420.35,-60.15 411.84,-66.46 417.63,-70.39"/>
</g>
<!-- s -->
<g id="node14" class="node">
<title>s</title>
<g id="a_node14"><a xlink:title="Over 1,000 different sensor, actuator and indicator options">
<polygon fill="green" stroke="green" points="307,-60 243,-60 243,-24 307,-24 307,-60"/>
<text text-anchor="middle" x="275" y="-38.3" font-family="Times,serif" font-size="14.00">sensor</text>
</a>
</g>
</g>
<!-- k&#45;&gt;s -->
<g id="edge12" class="edge">
<title>k&#45;&gt;s</title>
<path fill="none" stroke="black" d="M341.11,-106.93C332.83,-102.28 324.32,-96.89 317,-91 308.89,-84.48 301.07,-76.27 294.43,-68.5"/>
<polygon fill="black" stroke="black" points="296.77,-65.84 287.72,-60.34 291.36,-70.28 296.77,-65.84"/>
</g>
</g>
</svg>
beagleconnect/media/image1.jpg

336 KiB

......@@ -14,4 +14,5 @@ BeagleBoard Docs
beaglebone-black/index.rst
beaglebone-ai-64/index.rst
pocketbeagle/index.rst
beaglebone-blue/index.rst
\ No newline at end of file
beaglebone-blue/index.rst
beagleconnect/index.rst
\ No newline at end of file
......@@ -27,6 +27,7 @@ Sections
beaglebone-ai-64/index.rst
pocketbeagle/index.rst
beaglebone-blue/index.rst
beagleconnect/index.rst
.. toctree::
:maxdepth: 1
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment