Een mobiele telefoon staat stijf van de sensoren. Het zou leuk zijn als we enkele van die sensoren zouden kunnen gebruiken voor een robot. Aangezien een telefoon enkel een USB aansluiting heeft zal alles via die aansluiting moeten worden geperst. Of blauwe tanden. Voorbeeld1. 1Sheeld is used as interface between my Arduino board and my phones. How to use the phones is explained at our 1Sheeld page. I use 2 different types of phones for my robots. Skype must be installed on both phones.
- Samsung S8
|
Vanaf maart 2019 heeft de Samsung S8 voor mij de Note3 vervangen. Het modelnummer is SM-G950F.
- Aanschaf
Bij het Phonehouse op de Hoogstraat. In combinatie met een tweejarig Telfort abonnement met een krediet van 240 (dus 2 jaar lang € 10,- per maand) en een eenmalige betaling van € 144,-. Kortom de telefoon kost me € 384,- en ik betaal per maand € 27,50. Dat is inclusief € 17,50 voor 10Gb en & 150min.
- Aansluitingen
- 3,5 mm Jack
Dit is de klassieke aansluiting voor een koptelefoon en/of microfoon.
- USB C
Dit is een verstevigde uitvoering van de micro-USB. Hiermee kan de telefoon snelladen en bovendien is het een datatransport leiding.
- Wireless lader
Banggood is 1 van de weinige opladers waarop tegelijkertijd ook de audiokabel kan worden aangesloten door de telefoon er dwars op te leggen.
|
Samsung Note 3 SM-N9005
Mijn mobiel was tot maart 2019 een Samsung Note 3. Helaas bleken de auto`s op het Margrietplein iets te veel voor deze telefoon. Deze heeft met Android 4.4.2 een Wifi probleem. Via het telefoon toetsenbord kan het service menu worden bereikt door: *#0011# te typen. Kies dan Wifi en zet de energiebesparing uit. Resultaat is dat hij nu wel verbindt maar helemaal geen internet meer heeft via Wifi. Weer aangezet en gereboot. Nu werkt Wifi wel weer.
- Galaxy Note 3 SM-N9005 (5.0)
The main difference is that the S2 only can communicate through WiFi whereas the Note S3 also can use G4.
- Galaxy S2 GT-I9100 (4.1.2)
The main difference is that the S2 only can communicate through WiFi whereas the Note S3 also can use G4.
Legacy
Ik heb een HTC Titan II mobiel. Hij heeft Windows Mobile 6.1 Pro en een GPS. Helaas is het niet mogelijk om te upgraden naar 6.5 of 7. Om een route te kunnen opslaan heb ik GPS Sport Tracker geïnstalleerd. Dit produceert een log file in de vorm *.gst.
Android is voor een GSM wat Ubuntu is voor een PC. Het is een standaard Linux kernel met een aantal patches voor Mobiles, dat oorspronkelijk door Google is opgezet. Daar bovenop liggen de Java applicaties. Jammer dat er kennelijk nog patches op zitten, want dat is binnen Linux beduidend erger dan vloeken! Het kan zijn dat deze patches met de juiste Mobile hardware niet noodzakelijk zijn. Hier wordt dan ook op het probleem gewezen en Android lijkt dan ook ten dode opgeschreven. Jammer, maar voorlopig lijkt Windows Mobile de slag te winnen op dit gebied.
Android 2.1 (Eclair) loopt op mijn mobiel, maar heeft slechts een beperkte functionaliteit. Er bestaan 2 manieren om Android op mijn toestel te installeren:
- ROM installatie (= NAND installatie)
Op deze manier wordt het ROM geflashed en ontstaat er een standaard Android telefoon. Dit is gezien het geringe aantal mogelijkheden voor mij voorlopig geen optie. In dit geval is er een zogenaamd *.nbh bestand nodig. Nbh is een bestands extentie die wordt gebruikt door HTC voor hun ROM update utility. Een nbh bestand bevat ROM upgrade data voor HTC smartphones en MDA.
- SD installatie (= HaRET installatie)
Op deze manier blijft Windows Mobile actief en kan Android worden opgestart vanuit Windows met het programma HaRET. Haret is een acroniem voor: Handheld Reverse Engineering Tool. Na een reboot wordt Windows weer opgestart. Op deze manier kan Android later eventueel ook weer worden verwijderd. Dit is dus de manier voor een beginner om Android te proberen.
Polymod is de naam van een ontwikkelaar die een build heeft gemaakt van Android Eclair die geschikt is voor de HTC TitanII, model kais130. Een beschrijving van de installatie is te vinden op dit forum: xda-developers.com:of HIER:
- Download meest actuele HaRET basis bestanden via androidonhtc.com/wiki/Latest_Builds naar een nieuwe eigen map op uw PC. Deze map mag na de voltooing van de installatie in zijn geheel worden verwijderd. In dit geval geval heb ik dus haretinstall.zip van 20 feb 2010 gedownload naar de /downloads/ HTCtitan2 map en daar geunzipped. Dit geeft een lijstje met de bestanden die straks naar de map andboot op de mobiel worden gecopieerd. Voordat dit kan gebeuren moeten de volgende aanpassingen worden gemaakt:
- Verwijder default.txt uit deze map.
- Verwijder default-polaris.txt uit deze map.
- Hernoem default-kaiser.txt in default.txt.
- Edit default.txt en wijzig set KERNEL zImage in set KERNEL zImage-eclair en opslaan.
- Download meest actuele Eclair Polymod Light-Themed versie (op dit moment 2.1g) met de link op xda-developers.com. Sla dit polymod-x.zip bestand op in de bovengenoemde map. In dit geval heb ik dus polymod_2.1.zip gedownload naar de /downloads/ HTCtitan2 map. In die map heb ik het zip bestand geunzipped. Het resultaat is 1 bestand met de naam androidinstall.tgz. Nadere inspectie leert dat dit gecomprimeerde bestand 2 mappen bevat: data en system.
Haret :http://sourceforge.net/projects/androidhtc/files/
//This is an include, so no parsing needed
$qry2 = ("SELECT onderdelen.*,
soortonderdeel.id
FROM onderdelen
JOIN soortonderdeel ON onderdelen.idsrtodd = soortonderdeel.id
WHERE onderdelen.partid = $idpart
;");
$result2 = pg_query($con1, $qry2);
$row4 = pg_fetch_array($result2); //Make the fields accesible
foreach( $row4 AS $key => $val ){
$$key = stripslashes( $val );
}
$jaar = substr($changeddate,0,4);
$maand = substr($changeddate,5,2);
$dag = substr($changeddate,8,2);
$lastupdate = ("$jaar $maand $dag");
$prtsrttxt = get_txt($con1, 26, 1, $idsrtodd);
$jaar = substr($createddate,0,4);
$maand = substr($createddate,5,2);
$dag = substr($createddate,8,2);
$create_stamp = ("$dag $maand $jaar");
//GENERAL INFO FOR EVERY USER **************************************************
echo (" ");
echo (""); //Header
$tmp = get_txt($con1, 9, $koekje[2], 3923); //Fieldname at screen
if ($koekje[3]=="1") { //If this user wants to translate then
echo ("$tmp"); //If desired
}else{ echo ("$tmp"); } //Else just show if no need to translate
if ($koekje[0]>0 and $koekje[3]>0){ //User is logged in and translates
echo (" (edit)");
}
echo ("Algemene informatie test | ");
if ($codetext) { //Code like KY-026 or NA-41
echo ("");
$tmp = get_txt($con1, 9, $koekje[2], 3739); //Fieldname at screen
if ($koekje[3]=="1") { //If this user wants to translate then
echo ("$tmp"); //Class for colour
}else{ //So you are not allowed to translate
echo $tmp; //Show screenname of this field in user language
} //End of If you want to translate this fieldname at screen
echo ("  | ");
if ($codelink) {
echo ("$codetext");
}else{
echo ("$codetext");
} //End of if ($pinoutlink)
echo (" | ");
} //End of if ($codetext)
$tmp = get_txt($con1, 9, $koekje[2], 3741); //Fieldname at screen
if ($prijseurinclbtw > 0){ //Show price indication
$prijs_formatted = number_format($prijseurinclbtw / 100, 2, ',', '.');
echo ("$tmp   | ");
echo ("");
if ($urlprijs){
echo ("€  $prijs_formatted");
}else{
echo ("€  $prijs_formatted");
} //End of if ($urlprijs > "")
echo (" | ");
} //End of if ($prijseurinclbtw > 0)
if ($sketchtext) { //Link to OWN SOFTWARE
$tmp = get_txt($con1, 9, $koekje[2], 3738); //Fieldname at screen
echo ("$tmp   | ");
if ($sketchlink) {
echo ("$sketchtext");
}else{
echo ("$sketchtext");
} //End of if ($sketchlink)
echo (" | ");
} //End of if ($sketchtext)
$tmp = get_txt($con1, 9, $koekje[2], 3744); //Fieldname at screen
if ($pinouttext) { //Pinout
echo ("$tmp   | ");
if ($pinoutlink) {
echo ("$pinouttext");
}else{
echo ("$pinouttext");
} //End of if ($pinoutlink)
echo (" | ");
}
$tmp = get_txt($con1, 9, 1, 3735); //Fieldname at screen
$tmp2 = get_txt($con1, 26, 1, $row4[16]); //Group name in its language
echo ("$tmp   | "); //MENU GROUP
echo ("");
echo ("$tmp2 | ");
if ($koekje[0]>0 and $koekje[3]>0){ //User is logged in and translates
$tmp = get_txt($con1, 9, $koekje[2], 3918); //Fieldname at screen LANGUAGE
if ($row4[26] == 1) {$imgname = "nederland.png";}
if ($row4[26] == 2) {$imgname = "deutschland.png";}
if ($row4[26] == 3) {$imgname = "uk.png";}
if ($row4[26] == 4) {$imgname = "france.png";}
echo ("$tmp | ");
echo ("");
echo (" | ");
$tmp = get_txt($con1, 9, $row4[27], 3919); //Fieldname at screen
$statuskey = get_status_key($con1, $status);
$tmp2 = get_txt($con1, 61, $koekje[2], $statuskey); //Fieldname at screen
echo ("$tmp   | "); //STATUS
echo ("$status $tmp2 | ");
}
$tmp = get_txt($con1, 9, 1, 3966); //Fieldname at screen
echo ("$tmp   | "); //LAST CHANGED
$tmp = substr($changeddate, 0, 10);
echo ("$tmp | ");
echo (" ");
return;
////////////////////////////////////////////////////////////////////////////////
function get_status_key($con, $num){
$qry = ("SELECT id FROM status WHERE nr = $num ;");
$result = pg_query($con, $qry);
$row = pg_fetch_array($result);
return ("$row[0]");
}
// LIST ALL SOFTWARE THAT WILL RUN OM THIS PART *****************************
// INCLUDED IN ALL ROBOTS TO CHECK THEIR DIRECTORY
$qry2=("SELECT tblsystext.txtname
, software.urlmain
, software.sftname
, software.sftid
, software.controller
FROM software
LEFT JOIN tblsystext ON software.controller = tblsystext.recordid
WHERE position(' $idpart ' in software.prtlst) > 0
AND software.rstid = 2
AND tblsystext.lanid = $koekje[2]
AND tblsystext.txlid = 19
ORDER BY sftname ASC
, controller ASC
;");
$result = pg_query($con1, $qry2);
if (pg_num_rows($result)>0) { //Only if at least 1 program exists
echo (' ');
echo (""); //Header
$tmp = get_txt($con1, 9, $koekje[2], 3922); //Fieldname at screen
if ($koekje[3]=="1") { //If this user wants to translate then
echo ("$tmp"); //If desired
}else{ echo ("$tmp"); } //Else just show if no need to translate
echo (" |
---|
");
while($col = pg_fetch_array($result)){
$col[0] = ("$col[0]");
echo (" ");
echo ("$col[2]   | ");
echo ("$col[0] | ");
if ($koekje[0] > 0 and $koekje[3]>0){ //User is logged in and translates
echo ("");
echo ("(Edit) | ");
}
echo (' ');
}
echo (' ');
}
?>
// LIST ALL ROBOTS THAT INCLUDE THIS PART ***********************************
// $idpart
// INCLUDED IN ALL ROBOTS TO CHECK THEIR DIRECTORY
$qry_bpp=("SELECT farmbotversie.id
, farmbotversie.part_list
, tblsystext.txtname
FROM farmbotversie
LEFT JOIN tblsystext ON farmbotversie.id = tblsystext.recordid
WHERE tblsystext.txlid = 27
AND tblsystext.lanid = $koekje[2]
ORDER BY tblsystext.txtname ASC
;");
$result_bpp = pg_query($con1, $qry_bpp);
$header = 0;
while($colbpp = pg_fetch_array($result_bpp)){ //Only if at least 1 robot exists
if(substr_count($colbpp[1], " $idpart ") > 0){
if ($header == 0) {
echo ("");
echo (""); //Header
$tmp = get_txt($con1, 9, $koekje[2], 3879); //Fieldname at screen
if ($koekje[3]=="1") { //If this user wants to translate then
echo ("$tmp"); //If desired
}else{ echo ("$tmp"); } //Else just show if no need to translate
echo (" | ");
$header++;
} //End of if ($header == 0)
echo ("");
echo ("$colbpp[2]");
//Show software van deze bot
$qry=("SELECT software_basedir
FROM farmbotversie
WHERE id = $colbpp[0];");
$result = pg_query($con1, $qry);
$col = pg_fetch_array ($result ,0);
$dir1 = "/var/www/html/robotigs/software/$col[0]";
$arr1 = glob($dir1, GLOB_ONLYDIR);
if (isset($arr1[0])){
$folder = $arr1[0];
$countertmp = 0;
echo ("");
foreach (scandir($folder, 1) as $filename) {
if ($filename<>"." AND $filename <>".."){
if ($countertmp == 0){
$countertmp++;
} //End of if ($countertmp == 0)
$tmp = "/";
$dir = substr($folder, 14) ."/";
$link = $tmp .$dir .$filename;
$showname = substr($filename, 0 ,-4);
echo ("- ");
echo "$showname";
echo ("
");
} //End of if ($filename<>"." AND $filename <>".."){
} //End of foreach (scandir($folder, 1) as $filename)
echo ("");
} //End of if (isset($arr1[0]))
echo (" | ");
}
}
if ($header > 0){
echo (" ");
}
?>
Warning: include(/var/www/html/robotigs/includes/wishlistperpart.php): Failed to open stream: No such file or directory in /var/www/html/robotigs/includes/parts_header.php on line 128
Warning: include(): Failed opening '/var/www/html/robotigs/includes/wishlistperpart.php' for inclusion (include_path='.:/usr/share/php') in /var/www/html/robotigs/includes/parts_header.php on line 128
| //Location:/robotigs/includes/ picts_show.php
// Requieres: $pict_list and several picture handling javascript routines
//*** FROM HERE ON THE PICTURE CORNER STARTS -----------------------------------
if ($pict_list){ //There are 1 or more pictures to be printed
echo ("");
$counter = 0;
$aantal = str_word_count($pict_list, 0, "0123456789");
$lijst = str_word_count($pict_list, 1, "0123456789");
while($counter < $aantal){
$pictkey = $lijst[$counter];
$qryy1 = ("SELECT *
FROM illustrations
WHERE ill_id = $pictkey
;");
$resulty1 = pg_query($con1, $qryy1);
while($row = pg_fetch_array($resulty1)){ //Fields accesible by their name
foreach( $row AS $key => $val ){
$$key = stripslashes( $val );
}
}
$image = ("/robotigs/documentatie/plaatjes/$ill_name");
$pictfull = str_replace('_small', '', $image); //Pictfull=biggest version
$alt = ("Just wait till your 57....");
$txtname = get_txt($con1, 18, $koekje[2], $ill_id); //Robot illustrations subtitles
echo ("");
echo (' ');
$nummer = $counter + 1;
$txtAfb = get_txt($con1, 9, $koekje[2], 3865); //Pic Afb
if ($koekje[0]>0 and $koekje[3]>0){ //User is logged in and translates
echo ("$txtAfb $nummer: ");
echo ("$txtname");
echo (" ");
echo ("Ontkoppelen ");
if ($counter==0){
echo ("Up ");
}else{
echo ("Up ");
}
if ($nummer == $aantal){
echo ("Down");
}else{
echo ("Down");
}
}else{ //Else of if Meaning the current useer is logged in
echo ("$txtAfb $nummer: $txtname");
}
echo (''); //End of this picture
$counter++; //Prepair for next picture
}
echo (' | '); //All pictures are printed
} //End of if there are 1 or more pictures to be printed ----------------------
?>