============== Raspberry PI ============== .. contents:: Indice degli argomenti .. |date| date:: I2c ======== Follow instrucctions from: https://learn.adafruit.com/adafruits-raspberry-pi-lesson-4-gpio-setup/configuring-i2c , wich is mearly a thing about putting: /etc/modules:: i2c-bcm2708 i2c-dev /boot/config.txt:: dtparam=i2c1=on dtparam=i2c_arm=on Test --------- Test I2C:: i2cdetect -y 0 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- Serial =========== * Test: https://github.com/lurch/rpi-serial-console In order to have RPi serial -> FTDI USB we need TX/Rx and ground. Always check FTDI V setting: RPI is not 5v tolerant. Disable serial console ------------------------- RPi default is to bring up serial to the serial console. /etc/inittab:: #Spawn a getty on Raspberry Pi serial line T0:23:respawn:/sbin/getty -L ttyAMA0 115200 vt100 /boot/cmdline.txt :: ... console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 In order to use the UART for something different than console login these have to be commented and removed, then reboot (or manage inetd). Serial test ~~~~~~~~~~~~~~~ In order to test that the line is available launch a serial connection between two hosts:: conny: screen /dev/ttyUSB0 115200 rpi: screen /dev/ttyAMA0 115200 Arduino - RPi serial test ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ We are going to have first a terminal connection on RPi:: screen /dev/ttyAMA0 9600 Then a sketch running on Arduino (Uno in this case):: byte number = 0; void setup() { byte number = 0; void setup() { Serial.begin(9600); } void loop() { if (Serial.available()) { number = Serial.read(); Serial.print("character recieved: "); Serial.println(number, DEC); Serial.flush(); } } Wiring should be like: http://blog.oscarliang.net/ctt/uploads/2013/05/wiring.png with a Logic level converter. Consider that: * Rpi can send a Tx -> Arduino with no harm with no leven conversion * Arduino need at least a voltage divisior to step down to 3v from 5v. * I2C can be done with no conversion if the RPi is muster and there's no slave pulling up to 5v the line. Seriously: you gotta check that. Whatever, now let's make a script on RPI to check the serial connection, first install python serial `` apt-get install python3-serial`` :: #! /usr/bin/python3 import serial ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=1) ser.isOpen() sample = "hello" ser.write(bytes(sample.encode('ascii'))) try: while 1: response = ser.readline() print(response) except KeyboardInterrupt: ser.close()