Styra Arduino via Android [Nu med kod]
Styra Arduino via Android [Nu med kod]
Ända sen jag fick mitt Arduino så har jag velat kontrollera den via min mobil, en Sony Ericsson Arc med Android 2.3.
Efter att jag laborerat lite med Arduinon och leds, piezo, fotoresistorer etc, så ville jag prova skicka text till en display.
Så jag köpte en display på kjell o company, en med Hitachi HD44780 chip, kostade typ 129kr. Provade lite sketcher som fanns och såg att man kunde skicka från serial vilket ledde till.....
version 1.0 konceptet
android app -> apache webserver ->php ($POST) ->skriva till fil -> python -> läsa från fil -> python skriva till arduino via serial -> arduino skriva till display.
Det gick bra och fick följande resultat:
http://www.youtube.com/watch?v=za8_6iHN0n8
Mitt Python program, om vi säger så här, lur-passade på den där filen som PHP skrev till och så fort den filen ändrades så läste Python programmet vad som stod och skickade till Arduinon.
Mer tänker jag inte skriva om v1.0 för jag förbättrade den med...
Version 2.0 konceptet
Android app -> PYTHON webserver -> Arduino och även Arduino ->Python webserver -> Android app
Jag tog bort onödiga grejer och öppnade även för två-vägs kommunikation.
http://www.youtube.com/watch?v=OX_qwl8sb3k
Så jag programmerade en Python webserver (finns en färdig i BaseHTTPserver) tweakade den utifrån mina behov.
När man sen anslöt med Android mot webservern så skickade man olika saker och tog emot siffror, i mitt fall var de bara en random nummer snurra som skickade tal mellan 0-100. Men skulle ju kunna vara en fotoresistor eller nån annan typ av sensor.
Jag kunde även stänga av och sätta på en LED.
Kanske är lite svårt att se på videon men jag lägger upp bilder imorgon och en ny film.
Kan även slänga upp all kod om ni är intresserade, Python koden, Android kod+apk, och Arduino sketch.
Vad jag har lärt mig av detta.
- Arduino är väldigt lättjobbat och snabbt att komma igång med
- Python är väldigt lättjobbat och logiskt
- Android appar och Java är svårt och lite mer komplicerat
- Googla, hitta, tweaka
- Detta är super-roligt!
När jag gör något nytt med Android+Arduino projektet så lägger jag upp det.
Efter att jag laborerat lite med Arduinon och leds, piezo, fotoresistorer etc, så ville jag prova skicka text till en display.
Så jag köpte en display på kjell o company, en med Hitachi HD44780 chip, kostade typ 129kr. Provade lite sketcher som fanns och såg att man kunde skicka från serial vilket ledde till.....
version 1.0 konceptet
android app -> apache webserver ->php ($POST) ->skriva till fil -> python -> läsa från fil -> python skriva till arduino via serial -> arduino skriva till display.
Det gick bra och fick följande resultat:
http://www.youtube.com/watch?v=za8_6iHN0n8
Mitt Python program, om vi säger så här, lur-passade på den där filen som PHP skrev till och så fort den filen ändrades så läste Python programmet vad som stod och skickade till Arduinon.
Mer tänker jag inte skriva om v1.0 för jag förbättrade den med...
Version 2.0 konceptet
Android app -> PYTHON webserver -> Arduino och även Arduino ->Python webserver -> Android app
Jag tog bort onödiga grejer och öppnade även för två-vägs kommunikation.
http://www.youtube.com/watch?v=OX_qwl8sb3k
Så jag programmerade en Python webserver (finns en färdig i BaseHTTPserver) tweakade den utifrån mina behov.
När man sen anslöt med Android mot webservern så skickade man olika saker och tog emot siffror, i mitt fall var de bara en random nummer snurra som skickade tal mellan 0-100. Men skulle ju kunna vara en fotoresistor eller nån annan typ av sensor.
Jag kunde även stänga av och sätta på en LED.
Kanske är lite svårt att se på videon men jag lägger upp bilder imorgon och en ny film.
Kan även slänga upp all kod om ni är intresserade, Python koden, Android kod+apk, och Arduino sketch.
Vad jag har lärt mig av detta.
- Arduino är väldigt lättjobbat och snabbt att komma igång med
- Python är väldigt lättjobbat och logiskt
- Android appar och Java är svårt och lite mer komplicerat
- Googla, hitta, tweaka
- Detta är super-roligt!
När jag gör något nytt med Android+Arduino projektet så lägger jag upp det.
Senast redigerad av kenntoft 13 oktober 2011, 20:17:12, redigerad totalt 1 gång.
- Klas-Kenny
- Inlägg: 11831
- Blev medlem: 17 maj 2010, 19:06:14
- Ort: Växjö/Alvesta
Re: Styra Arduino via Android
Jäklar vad häftigt! 
Har många gånger haft diverse tankar kring att styra saker (Fast då med en PIC, som jag är hemma på) ifrån Android-mobilen, att gå via webben var ju ett sätt!
Det ultimata vore ju såklart att ha en dedikerad webbserver direkt på microprocessorn, men det kräver nog en lite mera kompetent sak gissar jag.
Förresten, hur skulle det vara att använda tex. "App Inventor" eller liknande till att göra mobilapplikationen?

Har många gånger haft diverse tankar kring att styra saker (Fast då med en PIC, som jag är hemma på) ifrån Android-mobilen, att gå via webben var ju ett sätt!
Det ultimata vore ju såklart att ha en dedikerad webbserver direkt på microprocessorn, men det kräver nog en lite mera kompetent sak gissar jag.
Förresten, hur skulle det vara att använda tex. "App Inventor" eller liknande till att göra mobilapplikationen?
Re: Styra Arduino via Android
> Så jag köpte en display på kjell o company, en med Hitachi HD44780 chip, kostade typ 129kr.
Bara ett litet tips...
Om du behöver LCD'er för labb så finns det en del olika till lite bättre pris på Tradera :
http://www.tradera.com/listing.mvc/item ... 0&catid=-1
Bara ett litet tips...

Om du behöver LCD'er för labb så finns det en del olika till lite bättre pris på Tradera :
http://www.tradera.com/listing.mvc/item ... 0&catid=-1
Re: Styra Arduino via Android
Sodjan:
Bra tips!
LCD modul 16x2 HD44780. Vita stora tecken. <---- gillade den där skarpt!
Kjell kommer jag inte köpa något mer på, måste verkligen bli bättre på att söka
Klas-Kenny: Ja det var roligt att få till det. Jag använde Eclipse för att programmera till Android. Vet inte riktigt vad App Inventor är eller om det motsvarar Eclipse.
Jag har inte kollat men slänger ut det ändå, om man har en Arduino med Ethernet Shield borde man kanske kunna styra upp en webserver, såg det nånstans, men han sa oxå att det inte fanns så mkt plats var efter det.
Jag vet att man även kan modda en Linksys TG45xxxxx nånting router till att bli en webserver, så slipper man hänga på en dator på allt man gör:)
EDIT: Linksys WRT54G inget annat. Sök på det + hack eller modify. Man kan modifiera den så man får en serial-port och memory card reader.
Med Python webserver kan du skicka ut till serial, behöver ju inte vara en Arduino i andra änden, du kan ju ha en PIC med vad det nu heter rs232? Vet inte säkert, är långtifrån en expert på det här området.
Spanade in App Inventor lite snabbt, som jag såg verkar det inte gå att typ skicka på det sättet jag gör, kunde inte se att man kunde få något riktigt djup i apparna. Men jag gjorde bara en snabbsökning. Är nöjd med Eclipse och det funkar för mig.
Bra tips!
LCD modul 16x2 HD44780. Vita stora tecken. <---- gillade den där skarpt!
Kjell kommer jag inte köpa något mer på, måste verkligen bli bättre på att söka

Klas-Kenny: Ja det var roligt att få till det. Jag använde Eclipse för att programmera till Android. Vet inte riktigt vad App Inventor är eller om det motsvarar Eclipse.
Jag har inte kollat men slänger ut det ändå, om man har en Arduino med Ethernet Shield borde man kanske kunna styra upp en webserver, såg det nånstans, men han sa oxå att det inte fanns så mkt plats var efter det.
Jag vet att man även kan modda en Linksys TG45xxxxx nånting router till att bli en webserver, så slipper man hänga på en dator på allt man gör:)
EDIT: Linksys WRT54G inget annat. Sök på det + hack eller modify. Man kan modifiera den så man får en serial-port och memory card reader.
Med Python webserver kan du skicka ut till serial, behöver ju inte vara en Arduino i andra änden, du kan ju ha en PIC med vad det nu heter rs232? Vet inte säkert, är långtifrån en expert på det här området.
Spanade in App Inventor lite snabbt, som jag såg verkar det inte gå att typ skicka på det sättet jag gör, kunde inte se att man kunde få något riktigt djup i apparna. Men jag gjorde bara en snabbsökning. Är nöjd med Eclipse och det funkar för mig.
- Electricguy
- Inlägg: 12480
- Blev medlem: 15 augusti 2007, 16:52:14
- Ort: Kälmä' typ..
Re: Styra Arduino via Android
Jag håller själv på med ett projekt (tråd kommer snart) där planen är att kommunicera arduino <-> android, fast vi har löst det på ett annat sätt. Vi har kopplat en RS232 Bluetooth modul direkt på arduinon och vips har man en direkt datalänk in i mobilen.
Hittills har vi bara gjort enkla tester och det funkade klockrent på första försöket!
Om man inte har jättekrav på grafiska utseendet i android-appen så funkar AppInventor klockrent
Hittills har vi bara gjort enkla tester och det funkade klockrent på första försöket!
Om man inte har jättekrav på grafiska utseendet i android-appen så funkar AppInventor klockrent
Re: Styra Arduino via Android
jan bjorn.
det där bluetooth verkar nice. alltså jag vet ju vad det är men det verkade lite krångligare än webserver.
Men jag ska lätt köra med bluetooth nästa gång. Så ser framemot din guide.
Var de lätt att få igenom Android programmeringen?
Kommer bluetooth grejen att tas emot som en serial i arduinon??
EDIT: Vill rensa upp min kod lite grann så den är respektabel med trouble-shooting grejer borta och lite mer utförliga kommentarer.
det där bluetooth verkar nice. alltså jag vet ju vad det är men det verkade lite krångligare än webserver.
Men jag ska lätt köra med bluetooth nästa gång. Så ser framemot din guide.
Var de lätt att få igenom Android programmeringen?
Kommer bluetooth grejen att tas emot som en serial i arduinon??
EDIT: Vill rensa upp min kod lite grann så den är respektabel med trouble-shooting grejer borta och lite mer utförliga kommentarer.
Re: Styra Arduino via Android
Troligast får du upp den som en bluetoothenhet som är som en vanlig comport i datan och den reagerar troligen som en vanlig max232 på andra sidan.
- PHermansson
- EF Sponsor
- Inlägg: 4340
- Blev medlem: 22 december 2004, 00:46:38
- Ort: Särestad Grästorp
- Kontakt:
Re: Styra Arduino via Android
Inte så, men det ska bli som http://www.amarino-toolkit.net/ alltså?
Re: Styra Arduino via Android
PHermansson:
Jag läste lite grann men det framgick inte hur den kommunicerar? eller är jag bara blind -troligtvis-.
är det via BT eller USB?
Kanske kan göra allt möjligt.
Jag läste lite grann men det framgick inte hur den kommunicerar? eller är jag bara blind -troligtvis-.
är det via BT eller USB?
Kanske kan göra allt möjligt.
- PHermansson
- EF Sponsor
- Inlägg: 4340
- Blev medlem: 22 december 2004, 00:46:38
- Ort: Särestad Grästorp
- Kontakt:
Re: Styra Arduino via Android
Det är bluetooth. Har inte testat själv än men kom att tänka på det när jag läste janbjorns inlägg, låter som samma tanke.
Re: Styra Arduino via Android
Om man använder BT som överföring mellan Android och µP-plattformen, så kan man även använda BlueScripts och BluePanel från Teho Labs.
/// Marcus
/// Marcus
Re: Styra Arduino via Android
Sen så är ju den stora skillnaden att BT fungerar någon meter (?)
medan web-lösningen fungerar world-wide...
medan web-lösningen fungerar world-wide...
Re: Styra Arduino via Android
janbjorn skrev: Vi har kopplat en RS232 Bluetooth modul direkt på arduinon och vips har man en direkt datalänk in i mobilen.
Coolt, så den hittas som en BT-serieport bara, och så får man ut RS-232-data på modulen helt utan initiering osv ?
Borde man kunna göra mycket skoj med

Re: Styra Arduino via Android
Japp det va superenkelt i Arduinon.
Kopplade in blåtandsmodulen till RX/TX pinnarna och spänningsmatning och sedan bara funkade den som en rs232 port.
Inläsning och skrivning i Arduinokod:
För att debugga så parkopplade jag den med laptopen och tittade på datat som den skickar med RealTerm. Det tog max 20 minuter kopplande och kodande innan man hade kommunikationen uppe.
Kopplade in blåtandsmodulen till RX/TX pinnarna och spänningsmatning och sedan bara funkade den som en rs232 port.
Inläsning och skrivning i Arduinokod:
Kod: Markera allt
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}