<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hardware on Lloyd Rochester's Geek Blog</title><link>https://lloydroc.github.io/categories/hardware/</link><description>Recent content in Hardware on Lloyd Rochester's Geek Blog</description><generator>Hugo</generator><language>en</language><copyright>Copyright © 2025, Lloyd Rochester.</copyright><lastBuildDate>Sun, 12 May 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://lloydroc.github.io/categories/hardware/index.xml" rel="self" type="application/rss+xml"/><item><title>Hello World on SSD1306 using Arduino</title><link>https://lloydroc.github.io/post/hardware/ssd1306-arduino-hello-world/</link><pubDate>Sun, 12 May 2024 00:00:00 +0000</pubDate><guid>https://lloydroc.github.io/post/hardware/ssd1306-arduino-hello-world/</guid><description>&lt;h1 id="hahahugoshortcode70s0hbhb">Hello World on SSD1306 using Arduino&lt;/h1>
&lt;p>After looking through numerous libraries and examples to control the SSD1306 with Arduino, I&amp;rsquo;ve found nothing simple. There are some really powerful libraries with lots of support. In this post I&amp;rsquo;ll post the simplest possible &amp;ldquo;Hello World&amp;rdquo; example on an SSD1306 using an Arduino Due. Note, if you need to draw shapes, lines, movement you&amp;rsquo;ll have to extend this example.&lt;/p>
&lt;p>&lt;img src="https://lloydroc.github.io/assets/jpg/ssd1306_arduino_hello_world.jpg" alt="Hello World SSD1306 Arduino">&lt;/p></description></item><item><title>UART Theory and Programming on the Raspberry Pi</title><link>https://lloydroc.github.io/post/hardware/uart-raspberry-pi/</link><pubDate>Tue, 16 Aug 2022 00:00:00 +0000</pubDate><guid>https://lloydroc.github.io/post/hardware/uart-raspberry-pi/</guid><description>&lt;h1 id="hahahugoshortcode72s0hbhb">UART Theory and Programming on the Raspberry Pi&lt;/h1>
&lt;p>This post outlines how to control the UART in a Raspberry Pi using the C programming language. We will also explore parity checks and handling. Parity checking was the main driver for this post, however, if you&amp;rsquo;re looking for C code to control a UART that is also asynchronous please keep reading. This post contains a small command line tool that can asynchronously read and write to standard input and output through two connected UARTs. The command line tool has a number of options to set the speed, tty, parity and number of stop bits.&lt;/p></description></item><item><title>Realtime Lidar Measurements with NodeJS</title><link>https://lloydroc.github.io/post/hardware/realtime-lidar-nodejs/</link><pubDate>Sat, 19 Mar 2022 00:00:00 +0000</pubDate><guid>https://lloydroc.github.io/post/hardware/realtime-lidar-nodejs/</guid><description>&lt;p>In this blog post we will plot near realtime Lidar Measurements on a browser. We will use a Raspberry Pi connected to the TF Mini+ Lidar from Benewake. At the end post of this you&amp;rsquo;ll be able to see a Realtime Graph of Lidar measurements. Each measurement is in centimeters and has an associated strength reading.&lt;/p>
&lt;h1 id="end-result">End Result&lt;/h1>
&lt;p>Here is what the graph looks like on a browser. There is both a distance and strength measurement on a plot. On the y-axis for distance we have a measurement in centimeters. The signal strength is the second graph. The strength is a 16-bit value.&lt;/p></description></item><item><title>Skull with Blinking Red Eyes for Halloween</title><link>https://lloydroc.github.io/post/hardware/skull_red_eyes_blinking_halloween/</link><pubDate>Mon, 25 Oct 2021 00:00:00 +0000</pubDate><guid>https://lloydroc.github.io/post/hardware/skull_red_eyes_blinking_halloween/</guid><description>&lt;p>For Halloween I attempted to do a little electronics with my young daughters to make a scary Halloween Skull with Blinking Red Eyes.&lt;/p>
&lt;p>&lt;img src="https://lloydroc.github.io/assets/jpg/skull_red_eyes_grass.jpg" alt="Skull with Blinking Red Eyes for Halloween">&lt;/p>
&lt;h1 id="circuit-functions">Circuit Functions&lt;/h1>
&lt;p>The circuit is easy to build and consists of 4 parts.&lt;/p>
&lt;ol>
&lt;li>Photo Diode that triggers the circuit to be activated only at night&lt;/li>
&lt;li>LM555 Timer to blink the Red LEDs for the Skull&amp;rsquo;s eyes&lt;/li>
&lt;li>Transistors to Drive the diodes&lt;/li>
&lt;li>A +9V Battery for Power&lt;/li>
&lt;/ol>
&lt;h1 id="circuit">Circuit&lt;/h1>
&lt;p>Here is the circuit we created. From left to right you can see the Photo Diode, the LM555 in astable mode, and the NPN Transistor powering the two red LEDs.&lt;/p></description></item><item><title>Ebyte e32 Lora Module - Client Socket Examples</title><link>https://lloydroc.github.io/post/hardware/ebyte-e32-lora-socket-client-examples/</link><pubDate>Fri, 23 Jul 2021 00:00:00 +0000</pubDate><guid>https://lloydroc.github.io/post/hardware/ebyte-e32-lora-socket-client-examples/</guid><description>&lt;h1 id="hahahugoshortcode56s0hbhb">Ebyte e32 Lora Module - Client Socket Examples&lt;/h1>
&lt;p>This post currently has a example client in Python that sends information through Unix Domain Sockets when the &lt;code>e32&lt;/code> is running as a service. Adding clients in other programming languages is a hopeful future addition. See &lt;a href="https://lloydroc.github.io/post/hardware/ebyte-e32-lora/">Getting Started&lt;/a>.&lt;/p>
&lt;h1 id="prerequisites">Prerequisites&lt;/h1>
&lt;p>Ensure either you have the &lt;code>e32&lt;/code> programming running with sockets enabled. Or, preferred, &lt;a href="https://lloydroc.github.io/post/hardware/ebyte-e32-lora-systemd-service/">running as a service&lt;/a>.&lt;/p>
&lt;p>More background on can be found in &lt;a href="https://lloydroc.github.io/post/hardware/ebyte-e32-lora-sockets/">e32 sockets&lt;/a>.&lt;/p></description></item><item><title>Ebyte e32 Lora Module - Wiring and Configuring the Raspberry Pi</title><link>https://lloydroc.github.io/post/hardware/ebyte-e32-lora-configuration-wiring/</link><pubDate>Sun, 18 Jul 2021 00:00:00 +0000</pubDate><guid>https://lloydroc.github.io/post/hardware/ebyte-e32-lora-configuration-wiring/</guid><description>&lt;p>This post explains how to wire up the UART and the mode pins. We need 5 connections between the Raspberry Pi and EByte E32, as well as a power and a ground. See this &lt;a href="https://lloydroc.github.io/post/hardware/ebyte-e32-lora-getting-started">software installation&lt;/a> after the wiring is complete.&lt;/p>
&lt;h1 id="wiring">Wiring&lt;/h1>
&lt;p>Here is the wiring between the E32 and the Raspberry Pi. Please make sure the UART TX of the RPI is wired to the RX of the E32 and vice-versa.&lt;/p></description></item><item><title>Ebyte E32 Lora Module - systemd service</title><link>https://lloydroc.github.io/post/hardware/ebyte-e32-lora-systemd-service/</link><pubDate>Fri, 18 Jun 2021 00:00:00 +0000</pubDate><guid>https://lloydroc.github.io/post/hardware/ebyte-e32-lora-systemd-service/</guid><description>&lt;h1 id="hahahugoshortcode58s0hbhb">Ebyte E32 Lora Module - systemd service&lt;/h1>
&lt;p>The &lt;code>e32&lt;/code> program is intended to be run as a service in the backround with &lt;a href="https://lloydroc.github.io/post/hardware/ebyte-e32-lora-sockets">communication through sockets&lt;/a>. This way you can write software in any langauge and just have to deal with the easy job of reading and writing to a socket. Once the &lt;code>e32&lt;/code> service is started and running it can be accessed at any time by a client. In this post we&amp;rsquo;ll document the actual systemd service. We have some &lt;a href="https://lloydroc.github.io/post/hardware/ebyte-e32-lora-socket-client-examples">client examples&lt;/a> demonstrating clients interfacing with the socket.&lt;/p></description></item><item><title>Ebyte E32 Lora Module - Transfer Files</title><link>https://lloydroc.github.io/post/hardware/ebyte-e32-lora-transfer-files/</link><pubDate>Fri, 18 Jun 2021 00:00:00 +0000</pubDate><guid>https://lloydroc.github.io/post/hardware/ebyte-e32-lora-transfer-files/</guid><description>&lt;h1 id="hahahugoshortcode59s0hbhb">Ebyte E32 Lora Module - Transfer Files&lt;/h1>
&lt;p>This post explains how to transfer files over Lora using the &lt;code>e32&lt;/code> program. See &lt;a href="https://lloydroc.github.io/post/hardware/ebyte-e32-lora-getting-started/">getting started&lt;/a> for the background.&lt;/p>
&lt;h1 id="prerequisites">Prerequisites&lt;/h1>
&lt;p>We must first assume the &lt;code>e32&lt;/code> is not &lt;a href="https://lloydroc.github.io/post/hardware/ebyte-e32-lora-getting-started/">running as a service&lt;/a>. If not sure run a &lt;code>sudo systemctl stop e32&lt;/code> to stop it.&lt;/p>
&lt;h1 id="transferring-files-between-two-raspberry-pi-boards">Transferring Files Between two Raspberry Pi Boards&lt;/h1>
&lt;p>We obviously need at least two Ebyte e32 lora modules for this.&lt;/p>
&lt;h2 id="receiving">Receiving&lt;/h2>
&lt;p>From one Raspberry Pi with the &lt;code>e32&lt;/code> installed. We need to be receiving before we transmit the file.&lt;/p></description></item><item><title>Ebyte e32 - Sockets</title><link>https://lloydroc.github.io/post/hardware/ebyte-e32-lora-sockets/</link><pubDate>Tue, 08 Jun 2021 00:00:00 +0000</pubDate><guid>https://lloydroc.github.io/post/hardware/ebyte-e32-lora-sockets/</guid><description>&lt;h1 id="hahahugoshortcode57s0hbhb">Ebyte e32 - Sockets&lt;/h1>
&lt;p>The &lt;a href="https://lloydroc.github.io/post/hardware/ebyte-e32-lora/">e32 program&lt;/a> can run as a &lt;a href="https://lloydroc.github.io/post/c/unix-daemon-example">daemon&lt;/a> and listen on &lt;a href="https://lloydroc.github.io/post/c/unix-domain-socket-datagram/">Unix Domain Sockets&lt;/a> for data to transmit and receive. This post documents the functionality of the sockets the &lt;code>e32&lt;/code> software is listening on.&lt;/p>
&lt;h1 id="intention-of-the-sockets">Intention of the Sockets&lt;/h1>
&lt;p>The software for the &lt;code>e32&lt;/code> is written in the C Programming Language. I&amp;rsquo;m a huge fan of C, but it isn&amp;rsquo;t for everyone, nor, is it for every application. The sockets are created so we can interface any program to the e32. Instead of having to write C code to do what you want, you can just use the &lt;code>e32&lt;/code> as a &lt;em>driver&lt;/em> and write a &lt;a href="https://lloydroc.github.io/post/hardware/ebyte-e32-lora-socket-client-examples/">client in any language&lt;/a>. When this client writes and reads from the socket it&amp;rsquo;s transmitting and receiving wireless data. Since the sockets are Unix Domain Sockets they are reliable.&lt;/p></description></item><item><title>Using libgpiod to detect input events</title><link>https://lloydroc.github.io/post/hardware/libgpiod-event-rpi/</link><pubDate>Mon, 17 May 2021 00:00:00 +0000</pubDate><guid>https://lloydroc.github.io/post/hardware/libgpiod-event-rpi/</guid><description>&lt;h1 id="hahahugoshortcode61s0hbhb">Using libgpiod to detect input events&lt;/h1>
&lt;p>One of the most fundamental requirements for GPIO is the ability to execute user defined code when an &lt;em>external event&lt;/em> has happened. This is typically done when a GPIO pin, configured as an input, changes from high-to-low, or low-to-high. In this case we detect on the falling edge or rising edge of this pin change. For example a sensor we communicate through GPIO has data ready. In the micro-controller world this is called as an interrupt where the CPU will change it program counter and handle the interrupt. The interrupt makes sense when we have no Operating System. In the case of Linux and the Raspberry Pi it&amp;rsquo;s not an interrupt but considered an &lt;em>event&lt;/em> as we likely have in interrupt deep inside the kernel code, however, we&amp;rsquo;re several levels of abstraction past this. Unix has the &amp;ldquo;Universal File Model&amp;rdquo; so this input pin is mapped to a file. With Unix we have many multiple ways to know if &amp;ldquo;events&amp;rdquo; have happened to this file. Examples of events are that the file is ready for reading, writing, or other events have happened.&lt;/p></description></item><item><title>GPIO Input with libgpiod</title><link>https://lloydroc.github.io/post/hardware/libgpiod-input-rpi/</link><pubDate>Mon, 10 May 2021 00:00:00 +0000</pubDate><guid>https://lloydroc.github.io/post/hardware/libgpiod-input-rpi/</guid><description>&lt;h1 id="hahahugoshortcode63s0hbhb">GPIO Input with libgpiod&lt;/h1>
&lt;p>We can use the &lt;code>libgpiod&lt;/code> library to configure a GPIO line as input and read it&amp;rsquo;s value. We&amp;rsquo;ll create a switch circuit so we can test the value is a logic high or low. More info on &lt;code>libgpiod&lt;/code> can be found in my &lt;a href="https://lloydroc.github.io/post/hardware/libgpiod-intro-rpi/">libgpiod intro&lt;/a> for installation and usage.&lt;/p>
&lt;p>Here is a previous post to &lt;a href="https://lloydroc.github.io/post/hardware/libgpiod-blink-led-rpi/">blink an LED&lt;/a> using libgpiod.&lt;/p>
&lt;h1 id="input-circuit">Input Circuit&lt;/h1>
&lt;p>Into our Raspberry Pi we&amp;rsquo;ll use GPIO 4 and configure this pin as an input. We&amp;rsquo;re going to add some resistors to control the current into this circuit. When the switch is in one direction you can see current will essentially not flow.&lt;/p></description></item><item><title>Blinking an LED with libgpiod</title><link>https://lloydroc.github.io/post/hardware/libgpiod-blink-led-rpi/</link><pubDate>Mon, 03 May 2021 00:00:00 +0000</pubDate><guid>https://lloydroc.github.io/post/hardware/libgpiod-blink-led-rpi/</guid><description>&lt;h1 id="hahahugoshortcode60s0hbhb">Blinking an LED with libgpiod&lt;/h1>
&lt;p>In the previous post we &lt;a href="https://lloydroc.github.io/post/hardware/libgpiod-intro-rpi/">introduced&lt;/a> &lt;code>libgpiod&lt;/code>. In this post we&amp;rsquo;ll use the command line tools to blink an LED. Finally, we&amp;rsquo;ll write some C code to blink the LED using the &lt;code>libgpiod&lt;/code> library.&lt;/p>
&lt;h1 id="table-of-contents">Table of Contents&lt;/h1>
&lt;nav id="TableOfContents">
 &lt;ul>
 &lt;li>&lt;a href="#led-driver-circuit">LED Driver Circuit&lt;/a>&lt;/li>
 &lt;/ul>

 &lt;ul>
 &lt;li>&lt;a href="#building-and-running">Building and Running&lt;/a>&lt;/li>
 &lt;/ul>
&lt;/nav>
&lt;h2 id="led-driver-circuit">LED Driver Circuit&lt;/h2>
&lt;p>Skip this section if you already have a good circuit to drive an LED. A simple NPN Transistor is a cheap and robust LED drive that only requires two resistors.&lt;/p></description></item><item><title>The new GPIO Interface on the Raspberry PI: libgpiod</title><link>https://lloydroc.github.io/post/hardware/libgpiod-intro-rpi/</link><pubDate>Sun, 02 May 2021 00:00:00 +0000</pubDate><guid>https://lloydroc.github.io/post/hardware/libgpiod-intro-rpi/</guid><description>&lt;h1 id="hahahugoshortcode64s0hbhb">The new GPIO Interface on the Raspberry PI: libgpiod&lt;/h1>
&lt;p>Allegedly, The &lt;a href="https://www.kernel.org/doc/html/latest/admin-guide/gpio/sysfs.html">GPIO Sysfs Interface&lt;/a> is deprecated. The deprecated Sysfs would interact with GPIO using the &lt;code>/sys/class/gpio&lt;/code> pseudo-filesytem. The Application Binary Interface - ABI - provides a character device based device driver and tools. The ABI is the new way to interact with GPIO on the Raspberry Pi. I really don&amp;rsquo;t like the name ABI, as it&amp;rsquo;s WAY too generic of a name. Rather, I believe the proper name for this project is &lt;code>libgpiod&lt;/code>.&lt;/p></description></item><item><title>Raspberry Pi SPI Explained</title><link>https://lloydroc.github.io/post/hardware/raspberry-pi-spi/</link><pubDate>Wed, 21 Apr 2021 00:00:00 +0000</pubDate><guid>https://lloydroc.github.io/post/hardware/raspberry-pi-spi/</guid><description>&lt;h1 id="hahahugoshortcode67s0hbhb">Raspberry Pi SPI Explained&lt;/h1>
&lt;p>This post attempts to provide some finer details when using SPI on Raspberry Pi as it pertains to using the Chip Select pins and multiple SPI Interfaces. Note, I will not use &lt;code>MOSI&lt;/code> and &lt;code>MISO&lt;/code> to ditch the old master/slave nomenclature and use &lt;code>SPO&lt;/code> and &lt;code>SPI&lt;/code> instead.&lt;/p>
&lt;p>Here is a quick diagram which will be explained in the following sections.&lt;/p>
&lt;p>&lt;img src="https://lloydroc.github.io/assets/svg/rpi-spi.svg" alt="Raspberry Pi SPI">&lt;/p>
&lt;h1 id="the-basics-of-spi-on-the-raspberry-pi">The Basics of SPI on the Raspberry Pi&lt;/h1>
&lt;p>If you use &lt;code>raspi-config&lt;/code> you can enable SPI.&lt;/p></description></item><item><title>Audio Clip Capture by Threshold</title><link>https://lloydroc.github.io/post/hardware/audio-clip/</link><pubDate>Sat, 10 Apr 2021 00:00:00 +0000</pubDate><guid>https://lloydroc.github.io/post/hardware/audio-clip/</guid><description>&lt;h1 id="hahahugoshortcode55s0hbhb">Audio Clip Capture by Threshold&lt;/h1>
&lt;p>Updated December 28th 2022&lt;/p>
&lt;p>&lt;img src="https://lloydroc.github.io/assets/png/audio-threshold-recording.png" alt="Raspberry Pi E32 Lora Receive">&lt;/p>
&lt;p>Here is a command line tool to capture audio clips based on two thresholds. Keep the tool running and it will write a number of audio files with audio that is loud enough for long enough. How loud and how long are the thresholds that are inputs to the program. For example we may want to record audio clips that only exceed 3 seconds. The loudness level is meant to keep us from recording noise.&lt;/p></description></item><item><title>TF Mini Plus Unix Agent for the Raspberry Pi</title><link>https://lloydroc.github.io/post/hardware/tf-mini-lidar-unix-agent/</link><pubDate>Mon, 12 Oct 2020 00:00:00 +0000</pubDate><guid>https://lloydroc.github.io/post/hardware/tf-mini-lidar-unix-agent/</guid><description>&lt;h1 id="hahahugoshortcode71s0hbhb">TF Mini Plus Unix Agent for the Raspberry Pi&lt;/h1>
&lt;p>In this post we will create a Unix agent for the TF Mini+ LiDAR Range Finder. We&amp;rsquo;ll run the agent on a Raspberry Pi B+ as a daemon. This agent will send out UDP datagrams with each LiDAR Reading. Also, we can use the &lt;code>tfmini&lt;/code> program as a command line tool to read from the LiDAR and change the configuration. Overall, I&amp;rsquo;ve noticed the TF Mini+ is quite accurate and snappy.&lt;/p></description></item><item><title>Ebyte e32 LoRa Module - Getting Started</title><link>https://lloydroc.github.io/post/hardware/ebyte-e32-lora-getting-started/</link><pubDate>Tue, 15 Sep 2020 00:00:00 +0000</pubDate><guid>https://lloydroc.github.io/post/hardware/ebyte-e32-lora-getting-started/</guid><description>&lt;h1 id="hahahugoshortcode54s0hbhb">Ebyte e32 LoRa Module - Getting Started&lt;/h1>
&lt;p>This page documents software for the Ebyte e32 Lora module that runs on the Raspberry Pi which can be found in this &lt;a href="https://github.com/lloydroc/ebyte-sx1276">github repo&lt;/a>. See below for &lt;a href="#software-installation">software installation&lt;/a>.&lt;/p>
&lt;p>&lt;img src="https://lloydroc.github.io/assets/jpg/ebyte-e32-lora-module.jpg" alt="Ebyte e32 LoRa Module">&lt;/p>
&lt;h2 id="resources">Resources&lt;/h2>
&lt;p>Wire up the Ebyte e32 Lora Module to the Raspberry Pi first. Then check out the other resources listed below:&lt;/p>
&lt;ul>
&lt;li>&lt;a href="https://lloydroc.github.io/post/hardware/ebyte-e32-lora-configuration-wiring/">Wiring and Pi Configuration&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://lloydroc.github.io/post/hardware/ebyte-e32-lora-systemd-service/">Running as a Service&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://lloydroc.github.io/post/hardware/ebyte-e32-lora-sockets/">Using Sockets&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://lloydroc.github.io/post/hardware/ebyte-e32-lora-socket-client-examples/">Client Example using Sockets&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://lloydroc.github.io/post/hardware/ebyte-e32-lora-transfer-files/">Transfer Files&lt;/a>&lt;/li>
&lt;/ul>
&lt;h1 id="software-installation">Software Installation&lt;/h1>
&lt;p>Before you install the &lt;code>e32&lt;/code> program be sure to have completed the &lt;a href="https://lloydroc.github.io/post/hardware/ebyte-e32-lora-configuration-wiring/">Wiring and Pi Configuration&lt;/a>. These instructions are to be run on your Raspberry Pi. Download &lt;a href="https://lloydroc.github.io/code/e32-1.10.2.tar.gz">e32&lt;/a>. See instructions below.&lt;/p></description></item><item><title>LSM9DS1 Command Line Tool for Raspberry Pi</title><link>https://lloydroc.github.io/post/hardware/lsm9ds1-rpi/</link><pubDate>Wed, 03 Jun 2020 00:00:00 +0000</pubDate><guid>https://lloydroc.github.io/post/hardware/lsm9ds1-rpi/</guid><description>&lt;h1 id="hahahugoshortcode66s0hbhb">LSM9DS1 Command Line Tool for Raspberry Pi&lt;/h1>
&lt;p>I recently created a &lt;a href="https://github.com/lloydroc/rpi_lsm9ds1">LSM9DS1 Command Line Tool&lt;/a> for the Raspberry Pi. This tool was used to capture Accelerometer and Gyroscope data. I did an experiment to see what the readings look like, how the sensor behaves and the noise levels. This experiment is far from perfect but gives good insight and understanding.&lt;/p>
&lt;h1 id="sensor-setup">Sensor Setup&lt;/h1>
&lt;p>The LSM9DS1 was taped to the tread of a \( 16&amp;quot; \)stroller tire. The location was directly on top of the tread so the wheel had to be spun up in the air. The wheel was parallel to the ground as the stroller was on it&amp;rsquo;s side. The axis of the Accelerometer had Z facing outward, X facing along the rotation of the wheel, and Y facing perpendicular to the rotation of the wheel.&lt;/p></description></item><item><title>SSD1306 Display Module to Raspberry Pi Wiring</title><link>https://lloydroc.github.io/post/c/rpi-ssd1306-wiring/</link><pubDate>Wed, 22 Apr 2020 00:00:00 +0000</pubDate><guid>https://lloydroc.github.io/post/c/rpi-ssd1306-wiring/</guid><description>&lt;p>I recently bought a DIY Display Module using the SSD1306 Driver from Alibaba AliExpress. In this post we discuss the physical wiring from the display module to the Raspberry Pi and the SPI Mode to interface with it. The goal is to control it in a C program.&lt;/p>
&lt;h2 id="hardware-required">Hardware Required&lt;/h2>
&lt;ul>
&lt;li>SSD1306 Module 7-pin 1.3&amp;quot; with with 128x32 OLED Display&lt;/li>
&lt;li>Raspberry Pi B+&lt;/li>
&lt;li>Connecting Wires&lt;/li>
&lt;/ul>
&lt;p>The module I got was a GME12864-83 1.3&amp;quot; SPI OLED SH1106 for $3.52 USD from the S+S+S+.&lt;/p></description></item><item><title>UART Between Raspberry Pi and Arduino</title><link>https://lloydroc.github.io/post/hardware/uart-rpi-and-arduino/</link><pubDate>Wed, 18 Mar 2020 14:02:54 +0000</pubDate><guid>https://lloydroc.github.io/post/hardware/uart-rpi-and-arduino/</guid><description>&lt;p>Using a 2-wire serial connection we can communicate from a Raspberry Pi (RPi) to an Arduino. For the Raspberry Pi we&amp;rsquo;ll use the built in UART accessed through a &lt;code>tty&lt;/code>, and the Arduino we&amp;rsquo;ll use the &lt;a href="https://www.arduino.cc/reference/en/language/functions/communication/serial/">Serial&lt;/a> Communication Library.&lt;/p>
&lt;h1 id="what-this-example-does">What this Example Does?&lt;/h1>
&lt;p>This example will use a RPi and Arduino to send a fixed message from the RPi to the Arduino. The Arduino will then echo what it receives back the RPi. The hardware used was a RPi B+ and the Arduino Due. The code is all in C/C++.&lt;/p></description></item></channel></rss>