From a7c2e64d9cb1f5278240e9f2b460694ef3f1cc71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nicholas=20St=C4=83nescu?= Date: Thu, 20 Nov 2025 16:35:06 +0100 Subject: [PATCH] fixed the beacon not starting --- Manual/3_Module_1.ipynb | 230 +++++++++++++++------------------------- 1 file changed, 88 insertions(+), 142 deletions(-) diff --git a/Manual/3_Module_1.ipynb b/Manual/3_Module_1.ipynb index c0be467..2cc342e 100644 --- a/Manual/3_Module_1.ipynb +++ b/Manual/3_Module_1.ipynb @@ -21,12 +21,7 @@ ] }, { - "metadata": { - "ExecuteTime": { - "end_time": "2025-11-19T17:06:41.856101Z", - "start_time": "2025-11-19T17:06:41.668014Z" - } - }, + "metadata": {}, "cell_type": "code", "source": [ "# Import necessary libraries\n", @@ -43,7 +38,7 @@ "# Note: After changing the import statement, you need to restart the kernel for changes to take effect." ], "outputs": [], - "execution_count": 1 + "execution_count": null }, { "cell_type": "markdown", @@ -170,12 +165,7 @@ ] }, { - "metadata": { - "ExecuteTime": { - "end_time": "2025-11-19T17:06:57.927792Z", - "start_time": "2025-11-19T17:06:41.870747Z" - } - }, + "metadata": {}, "cell_type": "code", "source": [ "### Student Version: play with this! ###\n", @@ -214,35 +204,8 @@ "# Close the serial connection (important!)\n", "serial.close()" ], - "outputs": [ - { - "data": { - "text/plain": [ - "Canvas(height=520, width=520)" - ], - "application/vnd.jupyter.widget-view+json": { - "version_major": 2, - "version_minor": 0, - "model_id": "21304a88906c4d9f9de4a2379cb59850" - } - }, - "metadata": {}, - "output_type": "display_data", - "jetTransient": { - "display_id": null - } - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Motors are ON\n", - "Car is outside the field boundaries!\n", - "Motors are OFF\n" - ] - } - ], - "execution_count": 2 + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -302,12 +265,7 @@ ] }, { - "metadata": { - "ExecuteTime": { - "end_time": "2025-11-19T17:07:03.101925Z", - "start_time": "2025-11-19T17:06:58.026789Z" - } - }, + "metadata": {}, "cell_type": "code", "source": [ "### Student Version ###\n", @@ -369,34 +327,8 @@ "# TODO: Very Important! Close the serial connection\n", "serial.close()\n" ], - "outputs": [ - { - "data": { - "text/plain": [ - "Canvas(height=520, width=520)" - ], - "application/vnd.jupyter.widget-view+json": { - "version_major": 2, - "version_minor": 0, - "model_id": "1d9fa86f637f476d8ec8f4cce01a4b5f" - } - }, - "metadata": {}, - "output_type": "display_data", - "jetTransient": { - "display_id": null - } - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Beacon is ON\n", - "Beacon is OFF\n" - ] - } - ], - "execution_count": 3 + "outputs": [], + "execution_count": null }, { "metadata": {}, @@ -446,12 +378,7 @@ ] }, { - "metadata": { - "ExecuteTime": { - "end_time": "2025-11-19T17:07:03.301301Z", - "start_time": "2025-11-19T17:07:03.206413Z" - } - }, + "metadata": {}, "cell_type": "code", "source": [ "### Student Version ###\n", @@ -470,50 +397,8 @@ "serial.close()\n", "# TODO: Close the serial connection (important!)" ], - "outputs": [ - { - "data": { - "text/plain": [ - "Canvas(height=520, width=520)" - ], - "application/vnd.jupyter.widget-view+json": { - "version_major": 2, - "version_minor": 0, - "model_id": "0e272aeb98f24f13a805d0bccaf4596b" - } - }, - "metadata": {}, - "output_type": "display_data", - "jetTransient": { - "display_id": null - } - }, - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Car status is:\n", - "\n", - "**************************\n", - "* Audio Beacon: off\n", - "* c: 0xabcdef00\n", - "* f_c: 5678\n", - "* f_b: 1234\n", - "* c_r: 1337\n", - "**************************\n", - "* PWM:\n", - "* Dir. 150\n", - "* Mot. 150\n", - "**************************\n", - "* Sensors:\n", - "* Dist. L 0 R 0\n", - "* V_batt 11.5 V\n", - "**************************\n", - "\u0004\n" - ] - } - ], - "execution_count": 4 + "outputs": [], + "execution_count": null }, { "cell_type": "markdown", @@ -581,8 +466,8 @@ { "metadata": { "ExecuteTime": { - "end_time": "2025-11-19T17:09:36.903066Z", - "start_time": "2025-11-19T17:09:36.884806Z" + "end_time": "2025-11-19T20:47:25.030226Z", + "start_time": "2025-11-19T20:47:25.017941Z" } }, "cell_type": "code", @@ -644,12 +529,12 @@ " def start_beacon(self):\n", " # Send commands to start the beacon\n", " # Use the command 'A1\\n'\n", - " self.send_command(str(b\"A1\\n\"))\n", + " self.send_command(\"A1\\n\")\n", "\n", " def stop_beacon(self):\n", " # Send commands to stop the beacon\n", " # Use the command 'A0\\n'\n", - " self.send_command(str(b\"A0\\n\"))\n", + " self.send_command(\"A0\\n\")\n", "\n", " def close(self):\n", " # Close the serial connection\n", @@ -657,13 +542,13 @@ " self.serial.close()\n" ], "outputs": [], - "execution_count": 11 + "execution_count": 20 }, { "metadata": { "ExecuteTime": { - "end_time": "2025-11-19T17:15:34.819411Z", - "start_time": "2025-11-19T17:15:34.810196Z" + "end_time": "2025-11-19T20:47:26.839827Z", + "start_time": "2025-11-19T20:47:26.826565Z" } }, "cell_type": "code", @@ -715,13 +600,13 @@ " kitt.close()" ], "outputs": [], - "execution_count": 14 + "execution_count": 21 }, { "metadata": { "ExecuteTime": { - "end_time": "2025-11-19T17:15:43.089078Z", - "start_time": "2025-11-19T17:15:36.212088Z" + "end_time": "2025-11-19T20:47:41.559047Z", + "start_time": "2025-11-19T20:47:30.566425Z" } }, "cell_type": "code", @@ -745,7 +630,7 @@ "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, - "model_id": "4498f99b8dbd43e895b0854ee6ddf7be" + "model_id": "bf6b02cc69244330a431bf392738a083" } }, "metadata": {}, @@ -760,9 +645,23 @@ "text": [ "Control the car with W (forward), S (backward), A (left), D (right), E (start beacon), R (stop beacon), and Q (to exit).\n" ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "Interrupted by user", + "output_type": "error", + "traceback": [ + "\u001B[31m---------------------------------------------------------------------------\u001B[39m", + "\u001B[31mKeyboardInterrupt\u001B[39m Traceback (most recent call last)", + "\u001B[36mCell\u001B[39m\u001B[36m \u001B[39m\u001B[32mIn[22]\u001B[39m\u001B[32m, line 9\u001B[39m\n\u001B[32m 6\u001B[39m kitt = KITT(\u001B[33m'\u001B[39m\u001B[33m/dev/rfcomm2\u001B[39m\u001B[33m'\u001B[39m) \u001B[38;5;66;03m# Replace with the actual port\u001B[39;00m\n\u001B[32m 8\u001B[39m \u001B[38;5;66;03m# Start the control function\u001B[39;00m\n\u001B[32m----> \u001B[39m\u001B[32m9\u001B[39m \u001B[43mwasd_control\u001B[49m\u001B[43m(\u001B[49m\u001B[43mkitt\u001B[49m\u001B[43m)\u001B[49m\n", + "\u001B[36mCell\u001B[39m\u001B[36m \u001B[39m\u001B[32mIn[21]\u001B[39m\u001B[32m, line 12\u001B[39m, in \u001B[36mwasd_control\u001B[39m\u001B[34m(kitt)\u001B[39m\n\u001B[32m 9\u001B[39m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[32m 10\u001B[39m \u001B[38;5;28;01mwhile\u001B[39;00m \u001B[38;5;28;01mTrue\u001B[39;00m:\n\u001B[32m 11\u001B[39m \u001B[38;5;66;03m# Read input from the user\u001B[39;00m\n\u001B[32m---> \u001B[39m\u001B[32m12\u001B[39m command = \u001B[38;5;28;43minput\u001B[39;49m\u001B[43m(\u001B[49m\u001B[33;43m\"\u001B[39;49m\u001B[33;43mEnter command: \u001B[39;49m\u001B[33;43m\"\u001B[39;49m\u001B[43m)\u001B[49m.lower()\n\u001B[32m 13\u001B[39m \u001B[38;5;28;01mif\u001B[39;00m command == \u001B[33m\"\u001B[39m\u001B[33mw\u001B[39m\u001B[33m\"\u001B[39m:\n\u001B[32m 14\u001B[39m car_speed = car_speed + \u001B[32m5\u001B[39m\n", + "\u001B[36mFile \u001B[39m\u001B[32m~/Documents/EE/Y2/IP3/A.K.03/.venv/lib/python3.13/site-packages/ipykernel/kernelbase.py:1396\u001B[39m, in \u001B[36mKernel.raw_input\u001B[39m\u001B[34m(self, prompt)\u001B[39m\n\u001B[32m 1394\u001B[39m msg = \u001B[33m\"\u001B[39m\u001B[33mraw_input was called, but this frontend does not support input requests.\u001B[39m\u001B[33m\"\u001B[39m\n\u001B[32m 1395\u001B[39m \u001B[38;5;28;01mraise\u001B[39;00m StdinNotImplementedError(msg)\n\u001B[32m-> \u001B[39m\u001B[32m1396\u001B[39m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43m_input_request\u001B[49m\u001B[43m(\u001B[49m\n\u001B[32m 1397\u001B[39m \u001B[43m \u001B[49m\u001B[38;5;28;43mstr\u001B[39;49m\u001B[43m(\u001B[49m\u001B[43mprompt\u001B[49m\u001B[43m)\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 1398\u001B[39m \u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43m_get_shell_context_var\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43m_shell_parent_ident\u001B[49m\u001B[43m)\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 1399\u001B[39m \u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m.\u001B[49m\u001B[43mget_parent\u001B[49m\u001B[43m(\u001B[49m\u001B[33;43m\"\u001B[39;49m\u001B[33;43mshell\u001B[39;49m\u001B[33;43m\"\u001B[39;49m\u001B[43m)\u001B[49m\u001B[43m,\u001B[49m\n\u001B[32m 1400\u001B[39m \u001B[43m \u001B[49m\u001B[43mpassword\u001B[49m\u001B[43m=\u001B[49m\u001B[38;5;28;43;01mFalse\u001B[39;49;00m\u001B[43m,\u001B[49m\n\u001B[32m 1401\u001B[39m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n", + "\u001B[36mFile \u001B[39m\u001B[32m~/Documents/EE/Y2/IP3/A.K.03/.venv/lib/python3.13/site-packages/ipykernel/kernelbase.py:1441\u001B[39m, in \u001B[36mKernel._input_request\u001B[39m\u001B[34m(self, prompt, ident, parent, password)\u001B[39m\n\u001B[32m 1438\u001B[39m \u001B[38;5;28;01mexcept\u001B[39;00m \u001B[38;5;167;01mKeyboardInterrupt\u001B[39;00m:\n\u001B[32m 1439\u001B[39m \u001B[38;5;66;03m# re-raise KeyboardInterrupt, to truncate traceback\u001B[39;00m\n\u001B[32m 1440\u001B[39m msg = \u001B[33m\"\u001B[39m\u001B[33mInterrupted by user\u001B[39m\u001B[33m\"\u001B[39m\n\u001B[32m-> \u001B[39m\u001B[32m1441\u001B[39m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mKeyboardInterrupt\u001B[39;00m(msg) \u001B[38;5;28;01mfrom\u001B[39;00m\u001B[38;5;250m \u001B[39m\u001B[38;5;28;01mNone\u001B[39;00m\n\u001B[32m 1442\u001B[39m \u001B[38;5;28;01mexcept\u001B[39;00m \u001B[38;5;167;01mException\u001B[39;00m:\n\u001B[32m 1443\u001B[39m \u001B[38;5;28mself\u001B[39m.log.warning(\u001B[33m\"\u001B[39m\u001B[33mInvalid Message:\u001B[39m\u001B[33m\"\u001B[39m, exc_info=\u001B[38;5;28;01mTrue\u001B[39;00m)\n", + "\u001B[31mKeyboardInterrupt\u001B[39m: Interrupted by user" + ] } ], - "execution_count": 15 + "execution_count": 22 }, { "metadata": {}, @@ -794,17 +693,64 @@ ] }, { - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2025-11-19T19:27:44.069076Z", + "start_time": "2025-11-19T19:27:44.033559Z" + } + }, "cell_type": "code", - "outputs": [], - "execution_count": null, "source": [ "import serial.tools.list_ports\n", "\n", "ports = list(serial.tools.list_ports.comports())\n", "for port in ports:\n", " print(port.device)" - ] + ], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "/dev/ttyS31\n", + "/dev/ttyS30\n", + "/dev/ttyS29\n", + "/dev/ttyS28\n", + "/dev/ttyS27\n", + "/dev/ttyS26\n", + "/dev/ttyS25\n", + "/dev/ttyS24\n", + "/dev/ttyS23\n", + "/dev/ttyS22\n", + "/dev/ttyS21\n", + "/dev/ttyS20\n", + "/dev/ttyS19\n", + "/dev/ttyS18\n", + "/dev/ttyS17\n", + "/dev/ttyS16\n", + "/dev/ttyS15\n", + "/dev/ttyS14\n", + "/dev/ttyS13\n", + "/dev/ttyS12\n", + "/dev/ttyS11\n", + "/dev/ttyS10\n", + "/dev/ttyS9\n", + "/dev/ttyS8\n", + "/dev/ttyS7\n", + "/dev/ttyS6\n", + "/dev/ttyS5\n", + "/dev/ttyS4\n", + "/dev/ttyS3\n", + "/dev/ttyS2\n", + "/dev/ttyS1\n", + "/dev/ttyS0\n", + "/dev/rfcomm2\n", + "/dev/rfcomm1\n", + "/dev/rfcomm0\n" + ] + } + ], + "execution_count": 18 }, { "cell_type": "markdown",