.. _beagleconnect-freedom-using-greybus: Using BeagleConnect Greybus ########################### .. note:: This is still in development. BeagleConnect wireless user experience *************************************** Enable a Linux host with BeagleConnect ======================================= .. image:: images/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 its 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:: images/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:: images/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 `_ 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™ **gateway** 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 `_ 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:: 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