TextBook Image

Frank Vahid and Tony Givargis

Programming Embedded Systems
An Introduction to Time-Oriented Programming




EEL 4730 - Programming Embedded Systems

This class is a natural extension of the knowledge acquired through EEL 3712, 3712L, and EEL 2880. It introduces the concept of integration between hardware design and software.

Embedded Systems implementation is introduced using programming of synchronous state machines to capture behavior of time-oriented systems for running on microcontrollers.



Class materials

Instructions:

ReadMeFirst 4730 RVC - Online

General Syllabus - EEL4730 Fall 2024
Note: ALL due dates for
lectures, assignments, exams, exercises
are on the course syllabus calendar.


This course is paperless
Anyone Can View (video)
All submissions MUST comply with requirements

Assignment Submission Form EEL4730 Fall 2024
All submissions must have name, date, time for credit -
Read Homework submision instructions below
 

Textbook: "Programming Embedded Systems"
Everyone has their own copy of the text.
Participation questions are graded for each chapter.

Programming Embedded Systems Text Fall 24

Subscibe to the text:
1. Sign in or create an account at learn.zybooks.com
2. Enter zyBook code FIUEEL4730WatsonFall2024
3. Subscribe



RI Development Tools Download
Note: the validation code is in the text
"About this Material"
under Table of Contents

Frank Vahid, Professor




Course Resources and Notes

Lee and Seshia
Introduction to Embedded Systems


Berkeley in EECS 149
EECS 149 Lectures

State Machines for Event-Driven Systems

MSP430 Illustration
MSP430 Block Diagram
MSP430 DIP pinout
MSP430 User Guide
Energia IDE
TI Cloud Tools
Launchpad Tutorials
Starting with the MSP430
MSP430g2553 header file
MSP Low Power Microprocessors
Javascript PC emulator - Linux



Z1
Introduction to Control System Design
Embedded.com
Monster.com
Arm - wiki
WhileWaitExample
C Language Review
C Language operators
TIOBE Software Index
Binary to Decimal converter
Understanding Bitwise Operators
current standard C (C11) Language

Async SM's - Z3
D Latch Logic Diagram

Sync SM's - Z4
MSP430 Timer
State Machine For Loops
Kitt Knight Rider
Kitt video 2
State Machine Diagram

Concurrent SM - Z5
Mutex vs Semaphore
Enumerations

I/O - Z6, Z7
UART Block Diagram
UART Bit Stream
UART Scope Sequence
Teletype
Switch Bounce
Sampled Analog Data
SAR Algorithm
sketch_LauchScopeProc
Switch Debouncing
Pulse Width Modulation
MPS430 PWM
PWM-Varying Duty Cycle
PWM Animation
sketch_ADC_Fade
QRD1114
OptoIsolator
H-Bridge
YouTube H-Bridge w PWM
L298 H-Bridge
HWPES_SPI
HWPES_SPIschematic
SPI Interface
SPI Communications
74HC165 Shift Register PISO
74HCT595 SIPO Shift Register
Introduction to I2C and SPI protocols
I2C Description
Nyquist Frequency

Task Scheduler - Z8
Mods for multiple period SM's
sketch_ClassISRFlag
10 Year Gas Sensor Reference Design
10 Year PID Motion Detector
Z5.7 Queues
Queue - Array Implementation - Types
Circular Queue with diagram using pointers
Circular Queue with pointers example: *
4730 Recommended Implementation
Wikipedia circular buffer explanation

Z9
Grand Canyon Image
Grid
Gigapan Images
Quantization (Signal Processing)
C2F conversion
Taylor Series Sin
Fixed point Sin & Cosine
Fixed Point Strategies
Adafruit MCP4725


Utilization & Scheduling - Z10
WCET Measurement
RTOS
FreeRTOS
TinyOS
RIOS Scheduler
AWS IOT Reinvent
IBM IoT Cloud Services
IBM QuickStart


TI-RTOS
TI-RTOS Overview - Interrupt Levels
Introduction to TI SYS/BIOS Threading
TI-RTOS User Guide - Drivers
Downloads & Tech Documents
CC3200 Data & Video Files
CC2650 Data & Video Files
SimpleLink Sub-1 GHz Sensor-to-Cloud

RIOT - friendly Operating System for the Internet of Things
Web Site
Wiki
GitHub
Guide to IOT Dashboards and Platforms
Guide
Temperature upload over MQTT
Losant.com

Control - Z11
PID Controller Design
PID Control
Using Scilab-XCOS to simulate PID
Simple Examples of PID control
PID Simulator - xls
Scilab Ninja PID
YouTube PID demo

DSP - Z12
RAW Signals
US5133350
US7197357
TI ADS1298 AFE
TI ECG Solution
OSRAM Solution
TI Analog Signal Chain
Aliasing example
Aliasing example2
Water Flowing Backwards
Waggon Wheel Effect
More Car Wheels
Mustang wheels
More Nyquist
RealData1
RealData2
Clipped
Quantization
Analog-to-digital converter


Homework Instructions


All homework submissions MUST INCLUDE the following in a single word or pdf document:

1. Inside the document header: Your Name, Date, and Time of completion
2. A WHOLE screen shot including:
a. RIMS (lines 1-10) and RIBS (chapters 3-10) frames of the solution with:
b. Date and Time (lines 1-10) created by the RIBS compiler plus the Windows taskbar
3. A listing of the code used

3.A chapter outline - Most assignments indicate outlining the upcoming chapter.
a. You will preview the material BEFORE viewing the lecture
b. You will have your own personal resource of class materials and solutions at the end of the course - the Book and Development tools license expires
No Name, Date and Time, No Credit.  Show you did the work yourself.


Snipping Tool in Windows

The Course Syllabus has due dates


HW1-Z1
Solve Exercises 1,2

HW2-Z2
Binary Operators
Solve Exercises 2,4

HW3-Z3
Async SM
Solve Exercises 2,4

HW4-Z4
Sync SM
Solve the following problems
Exercises 1,2

HW5-Z4
Sync SM
Solve the following problems associated with Chap Z4:
Homework5Z4

HW6-Z6
I/O
Solve the following problem
Homework6Z6

HW7-Z5
Multiple SM
Solve problems
Homework7Z5

HW8-Z5
Concenctric SM
Homework8Z5

HW9-Z8
Task/Scheduler
Homework9Z8

HW10-Z7
Peripherals
Solve the following assignment for Chapter Z7
(also refer to Chapter Z5.7)
Homework10Z7
HW10CircularQue.c
Solution with problems

HW11-Z10
Answer the following questions on TinyOS for Chapter Z10
TinyOs Home Page
TinyOS Wiki
Homework11Z10

MQTT Project Details

Everyone in EEL 4730 RVC and U01 is required to complete the MQTT Project 4 Modules. Submission details are included in the instructions for each module, linked below:


Order Parts on Amazon Prime NOW: These examples or similar -

NodeMCU ESP8266 development board

DHT22 Temperature and Humidity sensor with connecting wires


This project uses Losant.com Broker because of free registration and straight forward credentials plus their tutorial materials. Many thanks and credit to Losant for their offerings. You should incorporate something similar in your Senior Design or professional projects after graduation.


Example Senior Design MQTT project - Solutionaire - IoT Air Quality Monitor
Special acknowledgement for the work of Michael Rodridguez contributing guidelines for project instructions.


MQTT Introduction and Tutorial Part One Post office example


How MQTT Works video - 9 minutes


Losant Beginners Guide To The MQTT Protocol - Details and reference definitions


This project uses WIFI, but cannot connect through FIU Secure WIFI. The NodeMCU code is not suitable for WPA2 Enterprise. Use your router at home or a hot spot through your cell phone.


Modules:

The project has four weeks of Modules. The schedule and score percentages are in the Syllabus. The submission scores count toward the final grade in this course. Assignment are submitted through the form on the class web site which has drop down list options for the Modules.

ML1: MQTT Lesson One - ArduinoIDE

  • Order the parts

  • Install the Arduino IDE

  • Download .ino code for Arduino Sketch for push button example

  • Compile the Sketch (upload and try on board once arrived)


ML2: MQTT Lesson Two -Virtual

  • Download the .ino code for the Module Sketch

  • Register as a user with Losant

  • Create a Device

  • Set the Device Attributes

  • Download the credentials

  • Insert credentials in code to enable log in

  • Compile and upload code to the NodeMCU

  • Run the code on the NodeMCU - Serial Monitor for internet connection and log

  • Push the NodeMCU button and watch the Losant Device Log for event

  • Create the Workflow with Virtual Button - press and toggle the NodeMCU LED


ML3: MQTT Lesson Three - DHT22

  • Connect the DHT22 to the NodeMCU

  • Download .ino code for the Module Sketch

  • Compile and upload code to the NodeMCU

  • Print Temperature and Humidity locally on the Serial Monitor


ML4: MQTT Lesson Four - Dashboard

  • Losant - create another new device for temp/humidity

  • set Device Attributes for temp & humidity

  • Download credentials

  • Download .ino code for Module Sketch

  • Insert credentials into code to enable log in

  • Compile and upload code to the NodeMCU

  • Run the code on the NodeMCU - Serial Monitor for internet connection and log

  • Confirm communication from Device log

  • Create a Dashboard

  • Add Guage and Trend Plot components to show Temperature and Humidity

  • Get URL to share the Dashboard and leave connected for assignment submission