Raspberry Pi + Arduino Serial med LCD-skärm (4 / 6 steg)

Steg 4: Koden & hur det fungerar



Som ni kan se i bilderna och koden jag lagt till två mer kablar från arduino till LCD dessa i princip styra LCD-kontrasten i stället för med en potentiometer och skärmens ljusstyrka med PWM.

Arduino koden lyssnar efter alla strängar som kommer in genom den seriella porten, tar bort de två första tecknen som jag valde att vara ståndpunkten om att skriva strängen på LCD-skärmen och resten skulle vara strängen till utgång.

Strängformat: ##String (eftersom detta är en 16 x 2 LCD den första siffran kan variera från 0-15 X-position och den andra siffran från 0 till 1 Y-position)

Python-skript är skriven så att det alltid ger koordinaterna innan strängen skrev jag en funktion som tar två argument det första argumentet är strängen som visas 00 (första raden i lcd) och vid 01 (andra raden i lcd)

Kommandon för att få Raspberry Pi system info i python skript jag hittade dem online på Klicka här

Detta är python-funktion som skickar strängarna till arduino:

def serialClear():
ser.write("00clr")

def serialWrite (Line1, rad2):
serialClear(); tydlig LCD
Time.Sleep(betWait) //wait lite för stringRead timeout
ser.write("00"+Line1) //send första raden
Time.Sleep(betWait) //wait lite för stringRead timeout
ser.write("01"+line2) //send andra raden

Arduino koden (också bifogad fil)

#include < LiquidCrystal595.h > / / include biblioteket
LiquidCrystal595 lcd(7,8,9); datapin, latchpin, clockpin
int contrastPin = 6;
int brightnessPin = 10;
int kontrast = 135;
int ljusstyrka = 255;
Sträng input = "";
String stringRec = "";
Sträng pos = "";
int posX = 0;
int posY = 0;
void setup() {
pinMode(contrastPin,OUTPUT);
pinMode(brightnessPin,OUTPUT);
LCD.BEGIN(16,2); 16 tecken, 2 rader
LCD.Clear();
analogWrite (contrastPin, kontrast);
analogWrite (brightnessPin, ljusstyrka);
Serial.BEGIN(9600);
Serial.setTimeout(500);
}
void loop() {
IF(Serial.available() > 0) {
input = Serial.readString();
POS = input.substring(0,2);
posX = pos.substring(0,1).toInt();
posY = pos.substring(1,2).toInt();
stringRec = input.substring(2);
/*Serial.println ("sträng:");
Serial.println(stringRec);
Serial.println();
Serial.println ("Pos:");
Serial.Print(posX);
Serial.Print("");
Serial.Print(posY);
Serial.println(); * /
}
IF(stringRec.equals("CLR")) {
LCD.Clear();
stringRec = "";
}
lcd.setCursor(posX,posY);
LCD.Print(stringRec);
}


Den fullständiga Python koden (också bifogad fil)

importera os, urllib, json, seriell, tid
#start seriell conection med arduino
ser = följetong. Serial ('/ dev/ttyACM0', 9600)
betWait = 1 #wait innan du skickar andra strängen kan inte gå lägre än 1 på grund av arduino StringRead timeout
sleepTime = 3 #wait innan du skickar nästa omgång info
# Tillbaka CPU-temperaturen som en teckensträng
def getCPUtemperature():
Res = os.popen('vcgencmd measure_temp').readline()
Return(res.replace("Temp=","").replace("'C\n",""))
# Tillbaka RAM information (enhet = kb) i en lista
# Index 0: totala RAM
# Index 1: används RAM
# Index 2: gratis RAM
def getRAMinfo():
p = os.popen('free')
Jag = 0
medan 1:
jag = i + 1
linje = p.readline()
om jag == 2:
Return(Line.Split()[1:4])
# Avkastning % av CPU som en teckensträng som används av användare
def getCPUuse():
tillbaka (str (os.popen ("top - n1 | awk "/ Cpu\(s\): / {skriva ut $2} "") .readline () .strip (\
)))
# Returnera information om diskutrymme som en lista (enhet ingår)
# Index 0: totala diskutrymme
# Index 1: Använd bricka utrymme
# Index 2: återstående diskutrymme
# 3: indexvärde disk används
def getDiskSpace():
p = os.popen ("df -h /")
Jag = 0
medan 1:
jag = jag + 1
linje = p.readline()
om jag == 2:
Return(Line.Split()[1:5])

#Get externa IP
def getIP():
data = urllib.urlopen("http://echoip.com/").read()
returnera data

def serialClear():
ser.write("00clr")

def serialWrite (Line1, rad2):
serialClear();
Time.Sleep(betWait)
ser.write("00"+Line1)
Time.Sleep(betWait)
ser.write("01"+line2)
def getPID():
PID = os.getpid()
returnera pid

Time.Sleep(3) #wait för arduino att återställa
samtidigt sant:
# CPU informatiom
CPU_temp = getCPUtemperature()
CPU_usage = getCPUuse()
# RAM information
# Utgången är i kb, här jag konvertera den i Mb för läsbarhet
RAM_stats = getRAMinfo()
RAM_total = round(int(RAM_stats[0]) / 1000,1)
RAM_used = round(int(RAM_stats[1]) / 1000,1)
RAM_free = round(int(RAM_stats[2]) / 1000,1)
# Diskinformation
DISK_stats = getDiskSpace()
DISK_total = DISK_stats [0]
DISK_free = DISK_stats [1]
DISK_perc = DISK_stats [3]

#external IP
IP = getIP()

#Python script pid
PID = getPID()

#OUTPUT TILL ARDUINO
serialWrite ("Process-ID", str(PID))
Time.Sleep(sleepTime)
serialWrite ("temperatur:", CPU_temp + "C")
Time.Sleep(sleepTime)
serialWrite ("CPU-användning:", CPU_usage + "%")
Time.Sleep(sleepTime)
serialWrite ("Total RAM:", str(RAM_total) + "MB")
Time.Sleep(sleepTime)
serialWrite ("används RAM:", str(RAM_used) + "MB")
Time.Sleep(sleepTime)
serialWrite ("fri slå ned:", str(RAM_free) + "MB")
Time.Sleep(sleepTime)
serialWrite ("totala diskutrymme:", str(DISK_total)+"B")
Time.Sleep(sleepTime)
serialWrite ("fri bricka utrymme:", str(DISK_free) + "B")
Time.Sleep(sleepTime)
serialWrite ("Disk används:", str(DISK_perc))
Time.Sleep(sleepTime)
serialWrite ("Public IP:", str(IP))
Time.Sleep(sleepTime)

#DEBUG UTGÅNGAR
# print(CPU_temp)
# print(CPU_usage)
# print(RAM_total)
# print(RAM_used)
# print(RAM_free)
# print(DISK_total)
# print(DISK_free)
# print(DISK_perc)
# print(IP)
# print("\n")
# time.sleep(3)

Se Steg
Relaterade Ämnen

Arduino klocka (med LCD och Stepper Motor)

Detta instructable skapades enlighet projektet kravet på Makecourse vid University of South Florida (www.makecourse.com)Detta instructable kommer att ge information om:1. klockan bostäder / andra delar2. Beskrivning av kretsen3. kommenterade kod (för...

Inomhus träning stepper med Raspberry Pi & Arduino Iot

Hej alla.Syftet med detta projekt är att använda en inomhus träning stepper med Raspbery Pi och Arduino. Denna typ av stepper har oftast liten display och du måste titta ner under träningen att se dina steg. I denna tutorial använder vi Raspberry Pi...

Arduino Nano med DHT11, RTC DS1307 och LCD 16 x 2

Hej. Detta är min första Instructable, så jag hoppas det är OK.Detta är mitt Arduino Nano projekt med LCD med I2C board, RTC DS1307 och DHT11 sensor.För detta projekt jag använde Arduino Nano, RTC DS1307 klockan styrelsen, DHT11 givarkort, 16 x 2 LCD...

Arduino-torget med färg LCD

B-rutor är en modulär elektronik plattform som möjliggör för användare att skapa, anpassa och kontinuerligt uppdatera egna elektronik applikationer.I denna B-torg App kommer vi att täcka hur du sätter samman en enkel färg-LCD program som använder Ard...

Arduino HC-SR04 (med LCD)

HejI denna tutorial jag ska visa dig hur man 1. Ansluta HC-SR04 till en arduino och skriva ut avståndet till seriell övervaka, 2. Anslut en LCD-skärm och skriva ut resultaten där istället. Sensorn fungerar genom att pinga ut ett ultraljud som vi inte...

Arduino bärbara Weather Monitor, höjdmätare, temperatur, fuktighet, med DHT11 och BMP85 med LCD med endast 3 nåla fast

jag gjorde detta projekt eftersom jag ofta klättrar berg som den i bilden och jag behöver veta höjd, temperatur och också förändringar i vädret, ibland på bara några minuter väder få mycket dålig, med hagel, snö och en mycket tät dimma.Allt du behöve...

Duscha Monitor Arduino med LCD-skärm

Välkommen! För vår miljö Capstone klass (senior te) för St. Olaf College vi byggt en bildskärm som skulle effektivt övervaka hur mycket vatten använder en dusch. Tanken bakom denna vatten monitor är att om du bifogar en piezo givare (liten mikrofon)...

Ultrasonic linjal med LCD och Arduino

du behöverEn LCD-skärmEn Arduino Uno (jag har en Ethernet-shield på min, det gör inte någon sak i detta projekt, men det är en smärta att ta på och av)En Ultrasonic Sensormodul20 - 30 hoppare ledningarDetta är en ganska enkel projekt som jag kom med,...

Arduino Joystick bakbord med LCD-utgång

vill kunna styra ett par servon med en tumme-joystick? Men vet inte var du ska börja?Jag har servon, men jag kan sätta dig på rätt spår om hur man gör saker när du flyttar med styrspak.Detta instructable kommer att lära dig att mata riktning med styr...

Hemma termostat med Arduino och stora LCD

Ersätta en vanlig termostat (SIEMENS-RAA30 16GR) med en self made, arduino-baserad, stor LCD-skärm är ett roligt projekt.DISCLAIMER: Elnätet används båda styra ugnen och för arduino power så du inte går vidare om du inte är bekväm att arbeta med näts...

Med PCF8574 ryggsäckar med LCD-skärmar och Arduino

IntroduktionMed LCD-moduler med din Arduino är populära, men mängden ledningar kräver tid och tålamod att tråd det upp rätt - och även använder mycket av digital utgångsstift. Thats varför vi älskar dessa seriell ryggsäck moduler - de är monterade på...

Arduino Powered temperatursensor med LCD-utdata första gången författaren posten

Aldrig varit en tävling kinda kille men jag gick vidare och in i för den första tid författare tävlingen, om du gillar min intructable eller bara lärt sig något nytt och tror jag har tjänat din röst gör! =]Hej till alla! Vänligen bare med mig efterso...

Självbalanserande Robot med LCD-

Den modifierade versionen av min mpu6050 balansera robot stabilare med LCD och exempel på ansluta 2 i2c på samma stiftvideo 1video 2Steg 1: Steg 1: ◾L298N dubbla motor förare breakout ombord◾L298N dubbla motor förare breakout ombord12 V BATTARY9 V BA...

Christmas Krans 2.0 Raspberry Pi / Arduino "Selfie / Photobooth"

Detta är min festliga hantverk för 2015 och bygger på min 2014 Arduino bygger jul Tune spela Christmas Krans. Jag fick i leker med Raspberry PI detta år och gillade aspekterna av körs på linux och de olika alternativen jag hade med Linux och Python (...

Din bild på en Arduino! -TFT LCD skärm Guide

har du hört talas om TFT LCD-skärmar? De är bra sätt att visa information från din Arduino eller Visa bilder. Arduino laget släppt precis en officiell TFT LCD-skärm med sina nya Robot på Maker Faire 2013. Det är mycket lätt att komma igång med! Denna...

DS18B20 temperatur sond med LCD-

DS18B20 kommer i en temperatur sond form, som är vattentät. Jag hade riktigt svårt att försöka få detta en arbetar och jag tänkte jag skulle dela hur jag till slut fik den arbetande. Njut!Steg 1: delarDe delar du behöver för detta projekt:Arduino Meg...

DIY Arduino termometer med DS18B20

Hej, alla! Idag ska jag visa dig hur man gör LCD eller följetong * termometer med DS18B20 digitaltemperature sensor använder Arduino, skärbräda, byglar. Så kan du mäta temperaturen i luft, som vätskor vatten och temperaturen i marken.* skriver ut tem...

Trådlös Arduino Display med 315mhz RF moduler

Hej Instructables. Jag är en kanadensisk Gr.9 Detta är en del av mitt sista projekt - Magnetisk Levitation. Jag kommer att publicera det i December eller januari.Redigera: Okej, så mitt projekt misslyckades, men jag kommer ändå fortsätta att försöka...

Arduino termostat med 2 x DS18b20 i2c 4 x 16 uppvisning, 2 RGB lysdioder och 3 relä

The målet med projektet är en termostat för min 2 fisk Tank med LCD Display RGB LED ett relä kontrollera värmaren i tankenen kyla Fan för stor FishtankDelar:Arduino Nano eller lika2 x RGB LED eller RGB SMD LED eller enskild färg leds1 x 2 kanal 5 v r...