• Stars
    star
    311
  • Rank 134,521 (Top 3 %)
  • Language
    C++
  • Created almost 9 years ago
  • Updated almost 4 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Arduino Framework for RaspberryPI

RasPiArduino Build Status

Join the chat at https://gitter.im/me-no-dev/RasPiArduino

Includes raspberry_pi_revision from Andrew Duncan

Arduino Framework for RaspberryPI

Features

  • The familiar Arduino API
  • pinMode/digitalRead/digitalWrite/analogWrite
  • Full SPI, Wire and Serial compatibility
  • Access to STDIN/STDOUT through the Console class
  • Access to system tty through the TTY library
  • Process, FileIO, Client, Server and UDP implementations through the Bridge library

Instructions for Arduino IDE

  • Open the installation folder of Arduino IDE
  • Create a folder named "RaspberryPi" inside "hardware" and clone the repository to a folder named "piduino"
mkdir hardware/RaspberryPi
cd hardware/RaspberryPi
git clone https://github.com/me-no-dev/RasPiArduino piduino
  • Download , extract and copy the toolchain to piduino/tools/arm-linux-gnueabihf
  • Restart Arduino IDE and select the RaspberryPI from the list of boards
  • Compile a sketch
  • Select the RaspberryPi from the list of Ports (will show the IP address)
  • Upload your sketch and see it go

Instructions for the PI

  • Install Raspbian Jessie on your RaspberryPI
  • Gain root permissions
sudo su
  • Enable password login for root
passwd
  • enter the new root password twice
  • Edit /etc/ssh/sshd_config and make sure that the following lines exist and are not commented
PermitRootLogin yes
PasswordAuthentication yes
  • Disable Serial Console on boot by removing console=/dev/ttyAMA0 from /boot/cmdline.txt (or through raspi-config)

  • Disable Serial tty

systemctl disable serial-getty@ttyAMA0
  • Disable loading sound kernel module
sed -i "s/dtparam=audio=on/#dtparam=audio=on/" /boot/config.txt
  • Change the hostname for your Pi (optional) (also through raspi-config)
hostnamectl set-hostname piduino
  • Setup WiFi (optional)
cat > /etc/wpa_supplicant/wpa_supplicant.conf <<EOL
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
    ssid="your-ssid"
    psk="your-pass"
}
EOL
  • Setup avahi service to allow updating the sketch from ArduinoIDE
cat > /etc/avahi/services/arduino.service <<EOL
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
  <name replace-wildcards="yes">%h</name>
  <service>
    <type>_arduino._tcp</type>
    <port>22</port>
    <txt-record>board=bplus</txt-record>
  </service>
</service-group>
EOL

service avahi-daemon restart
  • Install telnet and git
apt-get update
apt-get install telnet git
  • Copy all files from tools/arpi_bins to /usr/local/bin
git clone https://github.com/me-no-dev/RasPiArduino.git piduino
chmod +x piduino/tools/arpi_bins/*
cp piduino/tools/arpi_bins/* /usr/local/bin
rm -rf piduino
  • Create symbolic link for run-avrdude
ln -s /usr/local/bin/run-avrdude /usr/bin/run-avrdude
  • Synchronize time and start sketch on boot (optional)
apt-get install ntpdate
cat > /etc/rc.local <<EOL
#!/bin/sh -e

_IP=\$(hostname -I) || true
if [ "\$_IP" ]; then
  printf "My IP address is %s\n" "\$_IP"
fi

# Sync Time
ntpdate-debian -u > /dev/null
# Start Sketch
/usr/local/bin/run-sketch > /dev/null

exit 0
EOL
  • Prevent some RealTek USB WiFi from sleep (optional) (EU)
echo "options 8192cu rtw_power_mgnt=0 rtw_enusbss=1 rtw_ips_mode=1" > /etc/modprobe.d/8192cu.conf
echo "options r8188eu rtw_power_mgnt=0 rtw_enusbss=1 rtw_ips_mode=1" > /etc/modprobe.d/r8188eu.conf
  • Disable screen blank (optional)
sed -i "s/BLANK_TIME=30/BLANK_TIME=0/" /etc/kbd/config
sed -i "s/POWERDOWN_TIME=30/POWERDOWN_TIME=0/" /etc/kbd/config
  • Do not load I2C UART or SPI kernel drivers

  • reboot

If everything went well

Selecting the board from the list of ports

Select Pi Port

Password prompt before upload

Enter Pi Pass

Monitoring the sketch

Sketch Monitor

Links to external tutorials