Looking for Plagiarism-Free Answers for Your US, UK, Singapore, New Zealand, and Ireland College/University Assignments?
Talk to an Expert| Category | Assignment | Subject | Computer Sicence |
|---|---|---|---|
| University | UNIVERSITY OF CHESTER | Module Title | C07059 Advanced Embedded Systems and Internet of Things |
|
University of Chester School of Computer and Engineering Sciences C07059 Assignment brief |
||
|
Module code C07059 |
Module title Advanced Embedded Systems and Internet of Things |
Academic Year 2025-2026 |
|
Issue date 24 March 2026 |
Submission date 1pm 13 April 2026 and 1pm 20 April 2026 (7 days window) |
|
|
Assignment Title I2C Communication |
||
|
Learning Objectives Assessed 1. Use MBed OS and an application shield to interface with an LCD screen, accelerometer, and temperature sensor. 2. Understand the I2C communication between sensors and a microcontroller. |
||
|
Submission Information Your answers must be written into a Word document that is converted to pdf before submission. You may paste in images (including handwritten text where electronic text is impractical such as when using special symbols). The file name of the answers document should contain your module number and your J number (e.g. CO7059_Jxxxxx.pdf), and the J number must also appear on each page of the document. The accepted format of the final submission file is pdf only. Late submissions are subject to penalty according to Faculty’s coursework late submission policy. |
||
|
Important Information – Please Read Before Completing Your Work Any queries that you may have on the requirements of this assessment should be e-mailed to the Tutor: [Bin Yang b.yang@chester.ac.uk ]. No queries will be answered after the submission date. You must ensure you retain a copy of your completed work prior to submission.
For extensions above 7 days, LWP waivers and Deferrals in Exceptional Circumstances you must provide evidence, these can only be granted by your Head of School. Late work is penalised at the rate of 5% per day. All extension/late work waivers must be applied for via the online system – Sign In (chester.ac.uk) Full details of the exceptional circumstances policy can be found via this link - Exceptional Circumstances (chester.ac.uk) Academic Integrity ‘A breach of the Academic Integrity Policy may occur when a student knowingly acts in a way that is contrary to the policy or does so inadvertently by means of careless scholarship’. Academic Integrity Policy will be categorised as either unacceptable academic practice (plagiarism, reuse of previously submitted material and collusion) or academic misconduct (commissioning/contract cheating, falsification, research misconduct or cheating), with the later being far more serious. Full details can be found here - Academic Integrity - Information for Students (chester.ac.uk) |
||
This coursework accounts for 75% of your final mark of this module. [Total 60 marks]
To set up an STM32F303 microcontroller and MBedOS application shield. MBedOS will act as a layer of abstraction from the hardware. The main objective is to understand the communication between a microcontroller and sensor peripherals.
Please read the task and then follow the lab information to complete the task. You do not need to complete all the tasks. the final mark will be given based on your completion.
Tasks:
1) Using RGB LEDs to Create a Flowing Light Effect (Based on Reference Code 01): (30%)
a. Use Code 01 to understand the function of each line.
b. Modify the code to implement your own customized LED flow pattern—for example, change the colour sequence, transition timing, or direction. Take photos to document the effect, include the modified code, and provide an explanation in your report. Compile the project and program the microcontroller. Include the build output in your report.
c. Use the button to control the LED flow (reference Code 01.1).
d. Further modify the code to customize the LED flow behaviour based on button input (e.g., change colours or sequence). Again, take photos, include your modified code, and explain the setup in your report.
2) Using a Button and Potentiometer to Control LED Flow (Based on Reference Code 02): (30%)
a. Study Code 02 to understand the function of each line. Modify the code to implement your own LED sequence and behaviour. Document the output using photos, and include the code and explanation in your report.
b. Explain what happens when you change #define ACTIVE_LOW 1 to #define ACTIVE_LOW 0. Record the result and provide an explanation in your report.
c. Attempt to modify the code to use pot2 (the second potentiometer) to control the LED brightness. If successful, include the code and a detailed explanation in your report.
3.) Integrating an LCD Display (Based on Reference Code 03): (40%)
a. Import the C12832 LCD library (as demonstrated in the previous session).
b. Use Code 03 to understand the function of each line. Take photos of the LCD display output, include the code, and provide an explanation in your report.
c. Modify the LCD display content—for example, change the displayed text or message order. Document the result with photos and explain the modified code.
d. Adjust the code to change the LCD refresh rate. Record the updated behaviour, include the modified code, and explain the change in your report.
MBedOS Application Shield:



The MBedOS application board acts as a shield to the Nucleo board. Simply connect the two together.
The STM32F303 microcontroller will read the acceleration and temperature values and display them. The initial microcontroller code with simply output an incrementing value to the LCD display. The interface for the C12832 LCD and MMA7660 Accelerometer Sensor will be achieved with MBedOS libraries.
1. Go to https://os.mbed.com/ and make an account if you don’t have one. The IDE used in this lab is Keil Studio Cloud, an online IDE for MBed RTOS projects.

2. After signing in you will be shown the IDE within the browser. Click File, New, and Mbed Project.

3. In the new project configuration, select an empty Mbed OS project for MbedOS version 5. Do not use MbedOS version 6.
4. Go into the Mbed libraries and change the MbedOS version to 5.10.0.
5. Select the target as Nucleo-F303RE and build the project. Make sure that there are no errors in the IDE.
#include "mbed.h"// mbed Application Shield RGB LED pins DigitalOut ledR(D5);
DigitalOut ledG(D8); DigitalOut ledB(D9); int main() {
ledR = 0; ledG = 0; ledB = 0;
while (true) {
// Red
ledR = 1; ledG = 0; ledB = 0; wait_ms(500);
// Green
ledR = 0; ledG = 1; ledB = 0; wait_ms(500);
// Blue
ledR = 0; ledG = 0; ledB = 1; wait_ms(500);
// White
ledR = 1; ledG = 1; ledB = 1; wait_ms(500);
// Off
ledR = 0; ledG = 0; ledB = 0; wait_ms(500);
}
}
#include "mbed.h"
DigitalOut ledR(D5); DigitalOut ledG(D8); DigitalOut ledB(D9);
InterruptIn btn(D4);
volatile int mode = 0; // 0:Red 1:Green 2:Blue 3:White 4:Off volatile uint32_t last_press_ms = 0; // for debounceTimer t;
void applyMode(int m) {
// All off first
ledR = 0; ledG = 0; ledB = 0;
switch (m) {
case 0: ledR = 1; break; // Red
case 1: ledG = 1; break; // Green
case 2: ledB = 1; break; // Blue
case 3: ledR = 1; ledG = 1; ledB = 1; break; // White case 4: default: /* Off */ break; // Off
}
}
void onButtonPress() { uint32_t now = t.read_ms();
if (now - last_press_ms < 200) return; // debounce: 200ms last_press_ms = now;
mode = (mode + 1) % 5; applyMode(mode);
}
int main() { t.start();
btn.fall(&onButtonPress);
mode = 4; // start from OFF applyMode(mode);
while (true) { wait_ms(50);
}
}
#include "mbed.h"
#define ACTIVE_LOW 1
PwmOut ledR(D5); PwmOut ledG(D9); PwmOut ledB(D8);
AnalogIn pot(A0);
InterruptIn btn(D4);
volatile int mode = 4; volatile uint32_t last_ms = 0;
Timer t;
float pwmValue(float br) { if (br < 0.0f) br = 0.0f;
if (br > 1.0f) br = 1.0f;
#if ACTIVE_LOW
return 1.0f - br;
#else
return br; #endif
}
void setRGB(float r, float g, float b) { ledR.write(pwmValue(r)); ledG.write(pwmValue(g)); ledB.write(pwmValue(b));
}
void applyMode(float br) {
if (br < 0.02f || mode == 4) { setRGB(0.0f, 0.0f, 0.0f);
return;
}
switch (mode) {
case 0: setRGB(br, 0.0f, 0.0f); break; // Red case 1: setRGB(0.0f, br, 0.0f); break; // Green case 2: setRGB(0.0f, 0.0f, br); break; // Blue case 3: setRGB(br, br, br); break; // White default:setRGB(0.0f, 0.0f, 0.0f); break; // Off
}
}
void onButtonPress() { uint32_t now = t.read_ms();
if (now - last_ms < 200) return; // debounce last_ms = now;
mode = (mode + 1) % 5;
}
int main() {
t.start();
// PWM frequency ~1kHz ledR.period_ms(1); ledG.period_ms(1); ledB.period_ms(1);
// Button is usually active-low btn.fall(&onButtonPress);
while (true) {
float brightness = pot.read(); // 0..1 applyMode(brightness);
wait_ms(20); // smooth update
}
}.
#include "mbed.h" #include "C12832.h"
#define ACTIVE_LOW 1
// LCD on Application Shield
C12832 lcd(D11, D13, D12, D7, D10);
PwmOut ledR(D5); PwmOut ledG(D9); PwmOut ledB(D8);
AnalogIn pot1(A0); AnalogIn pot2(A1);
InterruptIn btn(D4);
volatile int mode = 4; volatile uint32_t last_ms = 0;
Timer t;
float pwmValue(float x) { // x:0..1 if (x < 0.0f) x = 0.0f;
if (x > 1.0f) x = 1.0f; #if ACTIVE_LOW
return 1.0f - x; #else
return x; #endif
}
const char* modeName(int m) { switch (m) {
case 0: return "RED"; case 1: return "GREEN"; case 2: return "BLUE"; case 3: return "WHITE"; default: return "OFF";
}
}
void setRGB(float r, float g, float b) { ledR.write(pwmValue(r)); ledG.write(pwmValue(g)); ledB.write(pwmValue(b));
}
void applyMode(float br) { switch (mode) {
case 0: setRGB(br, 0.0f, 0.0f); break; // Red only
case 1: setRGB(0.0f, br, 0.0f); break; // Green only
case 2: setRGB(0.0f, 0.0f, br); break; // Blue only
case 3: setRGB(br, br, br); break; // White
default: setRGB(0.0f, 0.0f, 0.0f); break; // Off
}
}
void onPress() {
uint32_t now = t.read_ms();
if (now - last_ms < 200) return; // debounce last_ms = now;
mode = (mode + 1) % 5;
}
int main() { t.start();
ledR.period_ms(1); ledG.period_ms(1); ledB.period_ms(1);
btn.fall(&onPress);
while (true) {
float br = pot1.read(); applyMode(br);
int brPct = (int)(br * 100.0f + 0.5f);
lcd.cls();
lcd.locate(0, 0);
lcd.printf("Mode: %s", modeName(mode)); lcd.locate(0, 10);
lcd.printf("Brightness: %d%%", brPct);
wait_ms(300);
}
}.
[Total 40 marks]
For this section, you will create a report explaining the code and results of the lab session. You will then perform a small research tasks to investigate other sensors for any embedded system case study of your choosing. This will require an investigation into the application of a sensor and its datasheet.
1) Investigate additional sensors:
a. Choose a case study/application which uses accelerometer, temperature sensor, and two other sensors of your choosing. Be exact with your sensor choice and reference data sheets.
b. Use data sheets, open-source code, and reference designs (example: STMicroelectronics discovery boards) to explain the implementation of the sensors.
c. Does your sensor use I2C, SPI, UART, ADC, etc? explain its method of communication. Example: for I2C communication explain its I2C address, command bytes for configuration, data register addresses, and any formula required to transform the data into the sensor value.
This is an open task, which fully dependents on your own research, learning and understanding. You
don’t need to cover every type of sensor and you can chose a few to analyse and descibe the best.
Ensure that all code developed is placed into an appendix at the end of your report.
END OF PAPER
COURSEWORK WILL BE MARKED ACCORDING TO THE FOLLOWING UNIVERSITY CRITERIA.
90-100%: a range of marks consistent with a first where the work is exceptional in all areas;
80-89%: a range of marks consistent with a first where the work is exceptional in most areas.
70-79%: a range of marks consistent with a first. Work which shows excellent content, organisation and presentation, reasoning and originality; evidence of independent reading and thinking and a clear and authoritative grasp of theoretical positions; ability to sustain an argument, to think analytically and/or critically and to synthesise material effectively.
60-69%: a range of marks consistent with an upper second. Well-organised and lucid coverage of the main points in an answer; intelligent interpretation and confident use of evidence,
examples and references; clear evidence of critical judgement in selecting, ordering and analysing content; demonstrates some ability to synthesise material and to construct responses, which reveal insight and may offer some originality.
50-59%: a range of marks consistent with pass; shows a grasp of the main issues and uses relevant materials in a generally business-like approach, restricted evidence of additional reading; possible unevenness in structure of answers and failure to understand the subtler points: some critical analysis and a modest degree of insight should be present.
40-49%: a range of marks which falls short of pass, fail; demonstrates limited understanding with no enrichment of the basic course material presented in classes; superficial lines of argument and muddled presentation; little or no attempt to relate issues to a broader framework; lower end of the range equates to a minimum or threshold pass.
30-39%: a fail; may achieve some learning outcomes but falls short in most areas; shows considerable lack of understanding of basic course material and little evidence of research.
0-29%: a fail; basic factual errors of considerable magnitude showing little understanding of basic course material; falls substantially short of the learning outcomes for compensation.
If your C07059 Advanced Embedded Systems and Internet of Things CW2 Assignment is getting complicated with hardware concepts, coding, or report writing—don’t let it slow you down. With our trusted UK Assignment Help, you get expert-level guidance that simplifies complex topics into clear, structured solutions. Our Coursework Writing Services ensure your work includes proper implementation, accurate explanation, and a professional format. You’ll also get access to Computer Science Assignment Examples and specialized Lab Report Writing Services to understand how top-level submissions are built. Turn technical confusion into a high-scoring submission with the right support.
Hire Assignment Helper Today!
Let's Book Your Work with Our Expert and Get High-Quality Content
sdadf