Skip to content

Instantly share code, notes, and snippets.

@aismail1997
Created December 12, 2016 16:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aismail1997/5c9b918860cd9b278a0a0bc47ab382de to your computer and use it in GitHub Desktop.
Save aismail1997/5c9b918860cd9b278a0a0bc47ab382de to your computer and use it in GitHub Desktop.
PaparazziBot_nodered

A raspberry Pi 3 that communicates with an ARM mbed with motor control to look for celebrities.

[
{
"id": "5d4e9bc0.c22ee4",
"type": "exec",
"z": "8f026b9e.9a8278",
"command": "raspistill -o /usr/lib/node_modules/node-red/public/campi/image1.jpg -q 5",
"addpay": true,
"append": "",
"useSpawn": "",
"timer": "",
"name": "Smile click photo",
"x": 361,
"y": 146.5,
"wires": [
[],
[
"dd630fe0.effb5"
],
[]
]
},
{
"id": "2b82306.32705d",
"type": "file in",
"z": "8f026b9e.9a8278",
"name": "image1.jpg",
"filename": "/usr/lib/node_modules/node-red/public/campi/image1.jpg",
"format": "",
"x": 402.5,
"y": 229,
"wires": [
[
"b2028380.70ceb"
]
]
},
{
"id": "b2028380.70ceb",
"type": "function",
"z": "8f026b9e.9a8278",
"name": "Reading image",
"func": "msg.headers = {\n \"Content-Type\":\"image/jpeg\"\n};\n\nvar img = msg.payload;\ncontext.global.img = img;\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 564.5,
"y": 276,
"wires": [
[
"9d9a315e.58a1d"
]
]
},
{
"id": "9d9a315e.58a1d",
"type": "visual-recognition-v3",
"z": "8f026b9e.9a8278",
"name": "Execute Face Detection",
"apikey": "__PWRD__",
"image-feature": "detectFaces",
"lang": "en",
"x": 770.5,
"y": 328,
"wires": [
[
"7586b430.4a121c",
"11a75eb8.a11831",
"ec2e4bc4.01d768"
]
]
},
{
"id": "7586b430.4a121c",
"type": "debug",
"z": "8f026b9e.9a8278",
"name": " Print Visual Recognition Result",
"active": true,
"console": "false",
"complete": "result",
"x": 1057,
"y": 395,
"wires": []
},
{
"id": "dd630fe0.effb5",
"type": "delay",
"z": "8f026b9e.9a8278",
"name": "Delay",
"pauseType": "delay",
"timeout": "0.1",
"timeoutUnits": "seconds",
"rate": "1",
"nbRateUnits": "1",
"rateUnits": "second",
"randomFirst": "1",
"randomLast": "5",
"randomUnits": "seconds",
"drop": false,
"x": 535,
"y": 152,
"wires": [
[
"2b82306.32705d"
]
]
},
{
"id": "fbfe9795.960ab8",
"type": "wiotp out",
"z": "8f026b9e.9a8278",
"authType": "d",
"qs": "false",
"qsDeviceId": "",
"deviceKey": "4771cca8.1c73f4",
"deviceType": "",
"deviceId": "",
"event": "event",
"format": "json",
"name": "Iot Output Pic Info to IBM Watson Cloud",
"x": 1335,
"y": 322,
"wires": []
},
{
"id": "11a75eb8.a11831",
"type": "function",
"z": "8f026b9e.9a8278",
"name": "Stringifiy msg.result",
"func": "msg = {\n payload: JSON.stringify(msg.result)\n \n}\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 1033,
"y": 325,
"wires": [
[
"fbfe9795.960ab8"
]
]
},
{
"id": "c4d028d2.2a6c98",
"type": "wiotp in",
"z": "8f026b9e.9a8278",
"authType": "d",
"deviceKey": "4771cca8.1c73f4",
"deviceType": "",
"deviceId": "",
"command": "takeapic",
"commandType": "g",
"name": "Iot Receive Start Command",
"x": 144,
"y": 63,
"wires": [
[
"4c2bc609.144388"
]
]
},
{
"id": "970a0714.0f7398",
"type": "inject",
"z": "8f026b9e.9a8278",
"name": "Manual Start",
"topic": "",
"payload": "",
"payloadType": "str",
"repeat": "",
"crontab": "",
"once": false,
"x": 127,
"y": 112,
"wires": [
[
"4c2bc609.144388"
]
]
},
{
"id": "b3c79aa5.6cf6c8",
"type": "serial out",
"z": "8f026b9e.9a8278",
"name": "Serial Output to Mbed",
"serial": "884229bd.d500c8",
"x": 957,
"y": 522,
"wires": []
},
{
"id": "3adb6db7.5b38d2",
"type": "function",
"z": "8f026b9e.9a8278",
"name": "Determine Direction",
"func": "if (msg.payload[0] == 0x52) { \n msg.payload = '3';\n} else if (msg.payload[0] == 0x4C) {\n msg.payload = '2';\n} else if (msg.payload[0] == 0x46 ) {\n msg.payload = '1';\n} else if (msg.payload[0] == 0x42) {\n msg.payload = '4';\n} else if (msg.payload[0] == 0x53) {\n msg.payload = '0';\n} \n\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 684,
"y": 498,
"wires": [
[
"b3c79aa5.6cf6c8"
]
]
},
{
"id": "3c7b7eaa.7fbc62",
"type": "serial in",
"z": "8f026b9e.9a8278",
"name": "Take A Pic from Mbed",
"serial": "884229bd.d500c8",
"x": 135,
"y": 330,
"wires": [
[
"71cc10d9.0a486"
]
]
},
{
"id": "8e55d8d8.30aa68",
"type": "wiotp in",
"z": "8f026b9e.9a8278",
"authType": "d",
"deviceKey": "4771cca8.1c73f4",
"deviceType": "",
"deviceId": "",
"command": "+",
"commandType": "g",
"name": "Iot Receive Movement Commands",
"x": 394,
"y": 464,
"wires": [
[
"3adb6db7.5b38d2"
]
]
},
{
"id": "860ee866.53f878",
"type": "twitter out",
"z": "8f026b9e.9a8278",
"twitter": "",
"name": "Tweet",
"x": 1200,
"y": 75,
"wires": []
},
{
"id": "ec2e4bc4.01d768",
"type": "function",
"z": "8f026b9e.9a8278",
"name": "Tweet img data",
"func": "var mode = context.global.mode;\nvar celebArray;\n\nif (mode == \"Manual\") {\n msg.payload = \"No face detected\";\n for (var i = 0; i < msg.result[\"images\"][0][\"faces\"].length; i++) {\n try {\n var gender = \"Gender: \" + JSON.stringify(msg.result[\"images\"][0][\"faces\"][i][\"gender\"][\"gender\"]);\n var gscore = \"Gender Score: \" + JSON.stringify(msg.result[\"images\"][0][\"faces\"][i][\"gender\"][\"score\"]);\n var max = \"Max: \" + JSON.stringify(msg.result[\"images\"][0][\"faces\"][i][\"age\"][\"max\"]);\n var min = \"Min: \" + JSON.stringify(msg.result[\"images\"][0][\"faces\"][i][\"age\"][\"min\"]);\n var agescore = \"Age Score: \" + JSON.stringify(msg.result[\"images\"][0][\"faces\"][i][\"age\"][\"score\"]);\n try {\n var celebrity = \"Celebrity Found! \" + JSON.stringify(msg.result[\"images\"][0][\"faces\"][i][\"identity\"][\"name\"]); \n msg.payload = msg.payload + celebrity + \"\\n\";\n msg.media = context.global.img;\n } catch(err) {\n msg.payload = msg.payload + gender + \"\\n\" + gscore + \"\\nAge Range: \" + min + \" \" + max + \"\\n\" + agescore;\n }\n } catch(err) {\n msg.payload = \"No face detected\";\n }\n }\n return msg;\n} else {\n var celeb = context.global.celeb;\n msg.payload = \"No celebrity found\";\n for (var i = 0; i < msg.result[\"images\"][0][\"faces\"].length; i++) {\n try {\n if (JSON.stringify(msg.result[\"images\"][0][\"faces\"][i][\"identity\"][\"name\"])==(celeb)) {\n var gender = \"Gender: \" + JSON.stringify(msg.result[\"images\"][0][\"faces\"][i][\"gender\"][\"gender\"]);\n var gscore = \"Gender Score: \" + JSON.stringify(msg.result[\"images\"][0][\"faces\"][i][\"gender\"][\"score\"]);\n var max = \"Max: \" + JSON.stringify(msg.result[\"images\"][0][\"faces\"][i][\"age\"][\"max\"]);\n var min = \"Min: \" + JSON.stringify(msg.result[\"images\"][0][\"faces\"][i][\"age\"][\"min\"]);\n var agescore = \"Age Score: \" + JSON.stringify(msg.result[\"images\"][0][\"faces\"][i][\"age\"][\"score\"]);\n var celebrity = \"Celebrity Found! \" + JSON.stringify(msg.result[\"images\"][0][\"faces\"][i][\"identity\"][\"name\"]);\n msg.payload = celebrity + \"\\n\" + gender + \"\\n\" + gscore + \"\\nAge Range: \" + min + \" \" + max + \"\\n\" + agescore;\n msg.media = context.global.img;\n return msg;\n } else {\n msg.payload = \"Wrong Celebrity\";\n }\n \n } catch(err) {\n msg.payload = \"No celebrity found\";\n }\n }\n return msg;\n} ",
"outputs": 1,
"noerr": 0,
"x": 940,
"y": 118,
"wires": [
[
"860ee866.53f878",
"18c549fe.aa1d06",
"b827faf1.dfc4f8"
]
]
},
{
"id": "71cc10d9.0a486",
"type": "function",
"z": "8f026b9e.9a8278",
"name": "Start Camera",
"func": "if (msg.payload[0] == \"P\") {\n msg.payload = \"\";\n return msg;\n}\n",
"outputs": 1,
"noerr": 0,
"x": 342,
"y": 366,
"wires": [
[
"5d4e9bc0.c22ee4"
]
]
},
{
"id": "4c2bc609.144388",
"type": "function",
"z": "8f026b9e.9a8278",
"name": "Initiate Camera",
"func": "msg.payload = \"\";\nvar mode = \"Manual\";\ncontext.global.mode = mode;\nreturn msg;",
"outputs": 1,
"noerr": 0,
"x": 391,
"y": 66,
"wires": [
[
"5d4e9bc0.c22ee4"
]
]
},
{
"id": "beeda734.3496d8",
"type": "serial out",
"z": "8f026b9e.9a8278",
"name": "Mbed Continue Auto Mode",
"serial": "884229bd.d500c8",
"x": 1326,
"y": 228,
"wires": []
},
{
"id": "d08cf8f4.1fcab8",
"type": "wiotp in",
"z": "8f026b9e.9a8278",
"authType": "d",
"deviceKey": "4771cca8.1c73f4",
"deviceType": "",
"deviceId": "",
"command": "Auto",
"commandType": "g",
"name": "Start Auto Mode",
"x": 418,
"y": 670,
"wires": [
[
"ad55fb39.24a598"
]
]
},
{
"id": "ad55fb39.24a598",
"type": "function",
"z": "8f026b9e.9a8278",
"name": "Determine Celebrity",
"func": "if (msg.payload[0] == 0x4A) {\n var celeb = \"\\\"Jackie Chan\\\"\";\n context.global.celeb = celeb;\n context.global.mode = \"Auto\";\n msg.payload = \"A\";\n return msg;\n} else if (msg.payload[0] == 0x41) {\n var celeb = \"\\\"Angelina Jolie\\\"\";\n context.global.celeb = celeb;\n context.global.mode = \"Auto\";\n msg.payload = \"A\";\n return msg;\n} else if (msg.payload[0] == 0x48) {\n var celeb = \"\\\"Hillary Rodham Clinton\\\"\";\n context.global.celeb = celeb;\n context.global.mode = \"Auto\";\n msg.payload = \"A\";\n return msg;\n} else if (msg.payload[0] == 0x45) {\n var celeb = \"\\\"Emma Watson\\\"\";\n context.global.celeb = celeb;\n context.global.mode = \"Auto\";\n msg.payload = \"A\";\n return msg;\n} else if (msg.payload[0] == 0x58) {\n var celeb = \"\\\"Barack Obama\\\"\";\n context.global.celeb = celeb;\n context.global.mode = \"Auto\";\n msg.payload = \"A\";\n return msg;\n} else if (msg.payload[0] == 0x43) {\n var celeb = \"\\\"Leonardo DiCaprio\\\"\";\n context.global.celeb = celeb;\n context.global.mode = \"Auto\";\n msg.payload = \"A\";\n return msg;\n}",
"outputs": 1,
"noerr": 0,
"x": 663,
"y": 676,
"wires": [
[
"c5bb13e7.a85d1"
]
]
},
{
"id": "c5bb13e7.a85d1",
"type": "serial out",
"z": "8f026b9e.9a8278",
"name": "Mbed Start Auto Mode",
"serial": "884229bd.d500c8",
"x": 929,
"y": 675,
"wires": []
},
{
"id": "18c549fe.aa1d06",
"type": "function",
"z": "8f026b9e.9a8278",
"name": "Continue Auto Mode",
"func": "var mode = context.global.mode;\nvar celeb = context.global.celeb;\n\n if (mode == \"Auto\") {\n if (msg.payload == \"No celebrity found\") {\n msg.payload = 'A';\n } else if (msg.payload == \"Wrong Celebrity\") {\n msg.payload = 'A';\n } else {\n msg.payload = 'D';\n }\n return msg;\n }",
"outputs": 1,
"noerr": 0,
"x": 1056,
"y": 227,
"wires": [
[
"beeda734.3496d8"
]
]
},
{
"id": "b827faf1.dfc4f8",
"type": "debug",
"z": "8f026b9e.9a8278",
"name": "",
"active": true,
"console": "false",
"complete": "false",
"x": 1252,
"y": 145,
"wires": []
},
{
"id": "4771cca8.1c73f4",
"type": "wiotp-credentials",
"z": "",
"name": "a2g6k39sl6r5",
"org": "73k64g",
"devType": "Raspberry_Pi3",
"devId": "Device02"
},
{
"id": "884229bd.d500c8",
"type": "serial-port",
"z": "",
"serialport": "/dev/ttyACM0",
"serialbaud": "9600",
"databits": "8",
"parity": "none",
"stopbits": "1",
"newline": "\\n",
"bin": "false",
"out": "char",
"addchar": false
}
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment