• Skip to main content
  • Skip to header right navigation
  • Skip to site footer
  • YouTube
  • MakerWorld
  • Instagram
  • Threads
  • Bluesky
  • Mastodon
  • Facebook
makerhacks-logo

Maker Hacks

Ideas, news & tutorials for makers and hackers – Arduino/Raspberry Pi, 3D printing, robotics, laser cutting, and more

  • Home
  • About
  • 3D Printing
  • Laser Cutting
  • CNC
  • Programming
  • Free Arduino Course
  • Free Robotics Course
  • Recommendations

Running Raspberry Pi AND Arduino for the Best of Both Worlds

You are here: Home / Software and Programming / Running Raspberry Pi AND Arduino for the Best of Both Worlds
Author: Chris Garrett

Raspberry Pi and Arduino

I have been writing a lot more about Raspberry Pi than Arduino lately, but don’t get the impression I am leaving the Arduino world behind. Both devices have their benefits, and in fact, I believe they work really well together.

Let’s take a look at the easiest way to do that!

One of the Grove add-ons I bought recently was a very nice LCD display. Unfortunately, this display doesn’t have a Raspberry Pi library yet.

Now, of course, I can look at the Arduino library and figure it out, it is just i2c, but this is a nice opportunity to demonstrate how you can offload hardware to Arduino and leave the Pi to do the brainy stuff.

First, we connect the Pi and the Arduino via USB. Ensure Serial is enabled in your Raspi-Config too.

Arduino Side

Arduino Side

On the Arduino we can do some very simple LCD code (Gist here):

#include
#include

I2C_LCD LCD;
extern GUI_Bitmap_t bmlogo; //Declare bitmap data package.
uint8_t I2C_LCD_ADDRESS = 0x51; //Device address configuration, the default value is 0x51.

String instring;

void setup(void)
{
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
Wire.begin(); //I2C controller initialization.
LCD.CleanAll(WHITE); //Clean the screen with black or white.

// bitmap dispaly mode.
LCD.WorkingModeConf(ON, ON, WM_BitmapMode);

// display logo
LCD.DrawScreenAreaAt(&bmlogo, 0, 8);

// character mode
LCD.WorkingModeConf(ON, ON, WM_CharMode);

// 8*16 font size, auto new line, black on white background
LCD.FontModeConf(Font_6x8, FM_ANL_AAA, BLACK_BAC);
}

void loop(void)
{

LCD.CharGotoXY(0,0);
LCD.print("Hello World:");

while(Serial.available()) {

instring = Serial.readString();// read the incoming data as string

Serial.println(instring);

//Set the start coordinate.
LCD.CharGotoXY(0,32);
LCD.print(instring);

}
}

That should be mostly straightforward to read, but look out for the parts where the Arduino is waiting for input over serial, and sends whatever it is given to the LCD.

Raspberry Pi Side

Over on the Pi, we first add the serial module with

pip install serial

and make a note of the serial port from your Arduino screen as that is what we will send data too (ensuring the Arduino IDE is closed).

arduino

If you get any permissions errors then check your groups as you might need to add your user to the dialout group with sudo usermod -a -G dialout pi (where pi is my username).

As a last resort, try

sudo chmod 777 /dev/ttyACM0
sudo chown pi:pi /dev/ttyACM0

The Python code is really simple (Gist here):

import serial
import time
from datetime import datetime

print("Starting ...")

tardis = serial.Serial('/dev/ttyACM0', baudrate=9600) 

while(1):
    tardis.write(str(datetime.now()).encode())
    time.sleep(10)
Category: Software and ProgrammingTag: arduino, Hacks, making, python, raspberry pi

About Chris Garrett

Marketing nerd by day, maker, retro gaming, tabletop war/roleplaying nerd by night. Co-author of the Problogger Book with Darren Rowse. Husband, Dad, 🇨🇦 Canadian.

Check out Retro Game Coders for retro gaming/computing.

☕️ Support Chris on Ko-Fi to get exclusive content and rewards!

Previous Post:pi entertainment centreLinux Automation Tips: Create a Boot/Start Menu with Python
Next Post:DJI/Ryze Tello Mini-Drone Review

Sidebar

  • Facebook
  • Instagram
  • YouTube

Featured Posts

  • CyberBrick Review + Getting Started
  • xTool M2 Review
  • xTool F2 Ultra Review
  • xTool F2 Review
  • xTool S1 Review
  • Anycubic Kobra S1 Combo Review
  • Makera Z1 Pro Review
  • CNC Buyer's Guide
  • eufyMake E1 UV Printer Review
  • eufyMake Purifier P1
  • Z80 on a Breadboard
  • OpenSCAD MakerWorld Customizer

30 Days to Arduino

Arduino Tutorials
  • 3D Printing
  • CNC
  • Electronics and Hardware
  • Laser Cutting
  • News and Reviews
  • Software and Programming

arduino budget cad cnc diode laser glowforge Hacks Ideas laser cutter linux Makes making python raspberry pi Reviews technology tips xtool xTool Lasers

  • YouTube
  • MakerWorld
  • Instagram
  • Threads
  • Bluesky
  • Mastodon
  • Facebook

.

Maker Hacks Blog Copyright © 2026 · All Rights Reserved · Privacy Policy