Arm Education: Internet of Things Course

Table of contents

image

 

{tabbedtable} Tab LabelTab Content
About

In this roadtest, the selected applicants will be testing an online course offered by Arm Education.

 

Introduction

The transformative intersection between the Internet, mobile and sensor technology has inspired this course. Learn to create the next generation of IoT-enabling technologies, by designing an IoT system to connect embedded sensors using commodity smartphones via low power Bluetooth Low Energy. Skills such as app development and embedded system design are practiced using various applications including a sensor station.

 

Course Goal

To learn to specify, design and program modern connected electronic systems based on commodity smartphones and sensor networks

 

Learning Outcomes

Knowledge and understanding of:

  • Smart phone architecture and technologies
  • Arm-based SoCs: architecture and development
  • Appcessory programming and embedded programming
  • BLE technology
  • Sensor networks and applications
  • IoT fundamentals

 

Intellectual

  • Ability to specify, design and develop a smartphone based networked electronic system, which entails appcessory development, MCU programming, and connected app development
  • Ability to use the Arm Mbed IoT Device Platform and Android SDK to create smartphone apps and control end devices such as a mini robot or a wearable health device

 

Practical

  • Design and implement an appcessory with BLE connectivity using standard mobile application development tools
  • Program an Arm based BLE-connected MCU using mbed development tools
  • Develop demonstration applications e.g. smartphone-based, sensor station

 

Pre-requisites

  • Basics of programming in C/ C++, assembly, Entry level Java programming
  • Android phone with Bluetooth ( e.g Nexus 5)

 

Materials

  • The course includes:

image

NUCLEO-F401RE -  Development Board

 

image

X-NUCLEO-IKS01A2

 

image

X-NUCLEO-IDB05A1

 

Syllabus

  • 1 Introduction to Internet of Things
  • 2 Introduction to Embedded Systems
  • 3 Arm Cortex-M4 Processor: Part 1
  • 4 Arm Cortex-M4 Processor: Part 2
  • 5 Interrupts and Low Power Features
  • 6 Introduction to the Mbed Platform and the CMSIS Library
  • 7 ArmV7-A/R - ISA Overview
  • 8 Arm Cortex-A9 Processor
  • 9 Smartphone Programming
  • 10 Introduction to Bluetooth Low Energy
  • 11 Networks and Connecting Things to the Cloud
  • 12 Weather Station
Important Dates

Enrollment Begin: Jan 23 2019

Enrollment Ends: Feb 26 2019

RoadTesters Selected: Mar 11 2019 (estimated)

Product Shipped (EMAIL): May 14 2019

RoadTesting Begins: May 15 2019

Reminder/Update Email: June 15 2019*

Submit Reviews By: July 15 2019*

*The element14 RoadTest Staff will send this reminder/update email.

**If a RoadTester is unable to meet the deadline, please notify the RoadTest Program Lead, , as soon as possible before the deadline.

RoadTesters

Terms and Conditions

Terms and Conditions

These are the terms and conditions which govern the Arm Education: Internet of Things Course contest. This Contest requires participants to submit an application indicating their previous experience with this type of equipment/component, information on what they would do to test the equipment/component, and the applicant’s desire to post a thorough review of their experience with images, photos, or other supplemental materials. Participants will be required to meet the Conditions for Participation.  The winners of this RoadTest will receive the item(s) listed below. RoadTest Reviews are due no later than 60 days after the receipt of the item(s). No other prizes are offered.

The Principal terms of the Competition:

The following words and phrases are used in these terms and conditions and have the meanings given to them below.

Arm Education: Internet of Things Course

(RoadTest or Contest)

Key dates:

Applications Close: midnight (GMT) on Feb 26 2019

Announcement of Winner (estimated): Feb 28 2019

Prize: Arm Education: Internet of Things Course

Additional Prizes: none

Competition Site: https://www.element14.com/community/groups/roadtest?ICID=menubar_resources_roadtest

Site or element14 Community: www.element14.com/community

Judges: members of the element14 community team chosen at the Organiser’s discretion.

Judging Criteria, All of the following which will have equal weighting:

· Demonstrated competence with the technologies including links or descriptions of past projects

· Qualifications as indicated by current job role and/or schooling/vocational training;

· A thorough description of how the prize would be tested;

· Likelihood that the Applicant will blog about the prize and provide a review on element14.com;

· Originality;

· Innovation.

Organiser: Premier Farnell plc (registered in England and Wales under company number 876412) whose registered office is at Farnell House, Forge Lane, Leeds, UK

Conditions for Qualification: in addition to meeting the requirements of these terms, all persons applying to take part in the Contest (each one an Applicant) must:

· Provide a RoadTest application describing what he/she would do if awarded the Prize including similar previous projects, product experience and qualifications

Terms: these terms and conditions which govern the Competition and to which the Organiser reserves the right to make changes from time to time and the latest version of these Terms from time to time will be posted to the Site.

  1. Eligibility
  2. Applications:
  3. Selecting Winners:
  4. Liability:
  5. General:

1.1 Save as set out in these Terms, the Contest is open to any natural or legal person, firm or company or group of natural persons or unincorporated body.

1.2 All Applicants must be aged at least 18 at the time of their application.

1.3 Applicants must not enter the RoadTest if doing so or taking part may:

1.3.1 cause the Organiser and/or themselves to be in breach of any agreement (including but not limited to any contract of employment) to which they are a party or in breach of any law, regulation or rule having the force of law to which the Organiser or the Applicant may be subject or any policy of the Organiser or the Sponsor;

1.3.2 Require the Organiser to obtain any licence, authorisation or permission to deal with the Applicant; or

1.3.3 Be in breach of any policy or practice of their employer. Some employers prohibit or restrict their employees from taking part in competitions such as these or receiving prizes under them and the Organiser respects those policies and practices.

The Organiser reserves the right to disqualify any Application made in breach of these Terms and to reject any Application which it reasonably believes may be or become in breach. The Organiser reserves the right to require evidence in such form as the Organiser may reasonably require of any Applicant’s compliance with any of these Terms and to disqualify any Applicant or Participant who cannot provide such evidence reasonably promptly.

1.4 Multiple applications are not permitted.

1.5 Applications may not be submitted by an agent whether acting on behalf of an undisclosed principal or otherwise.

1.6 The Contest is NOT open to:

1.6.1 Any person or entity who is a resident or national of any country which is subject to sanctions, embargoes or national trade restrictions of the United States of America, the European Union or the United Kingdom;

1.6.2 Any employee, director, member, shareholder (as appropriate) or any of their direct families (parents, siblings, spouse, partner, children) (“Direct Families”) of the Organiser and Sponsors; or

2.1 Each Applicant must fully complete and submit a RoadTest Application by the Application Close.

2.2 By submitting a Registration Form, each Applicant:

2.2.1 Authorises the Organiser to use his or her personal data (as defined in the Data Protection Act 1998) for the purposes of running and promoting the RoadTest;

2.2.2 Authorises the Organizer to copy, reproduce and publish their application should they be accepted as a Participant;

2.2.3 Will be deemed to have read, accepted and agree to be bound by these Terms. Applicants are advised to print and keep safe these Terms;

2.2.4 Authorises the Organiser to copy, reproduce and use the Application and/or Review for the purposes of the RoadTest and as otherwise contemplated by these Terms. The Organiser will not be responsible for any inaccuracy, error or omission contained in any reproduction or use of the Project Blogs.

2.2.5 Licenses the Organiser to use the intellectual property in the Project (IP) for the purposes of this Contest. As between the Applicant and the Organiser the IP remains owned by the Applicant.

2.2.6 Grants the Organiser the right to use his or her likeness, photographs, logos, trademarks, audio or video recordings without restriction for the purposes of Contest or the promotion of it or the Site;

2.2.7 Agrees to participate positively in all publicity surrounding the Contest;

2.2.8 Agrees to be responsible for all expenses and costs incurred by him or her in preparing for, entering and participating in the Contest (save for any expenses expressly agreed by the Organiser to be borne by it in these Terms);

2.2.9 Confirms that he or she owns all IP used in his or her application or Project or Blogs and indemnifies the Organiser from any claim by a third party that use of any material provided by an Applicant to the Organiser infringes the intellectual property rights of any third party;

2.2.10 Agrees not to act in any way or fail to act in any way or be associated with any cause or group which would have a negative impact on the reputation of the Organiser and/or the RoadTest.

2.3 All applications submitted to this RoadTest must meet the following criteria:

2.3.1 Applicants must be the author, creator and owner of the proposed review idea. Applicants must not submit someone else’s idea;

2.3.2 The proposed application must be reasonably achievable by the within the time constraints of the Contest;

2.3.3 Applications must not include or propose any of the following, the inclusion of which shall render any proposed application ineligible:

(a) Applications which relate to socially taboo topics, such as illicit drug use or sexual gratification;

(b) Applications that are or could reasonably be considered to be illegal, immoral, discriminatory or offensive as determined by the Organiser;

(c) Applications in relation to them which if accepted would infringe or breach any of the policies or terms of access or use of the Site.

2.4 No Application may contain any of the hazardous substances identified by Article 4 of Directive 2002/95/EC of the European Parliament on the Restrictions on the Use of Substances in Electronic and Electrical Equipment ("the Directive") or the use of such hazardous substances in the in any such Project must not exceed the maximum concentration values set out in the Directive.

3.1 Winners will be selected by the Organiser on the basis of the quality of his or her application and its adherence to these Terms.

3.2 The total number of Winners selected will be at least the minimum number set out above but the actual number is at the sole discretion of the Organizer and/or the Sponsor, if applicable.

3.3 The Organiser will use all reasonable efforts to announce the Winners via an update to the RoadTest page by the date listed above.

3.4 Winners agree to take part in all publicity which the Organiser or the Sponsor wishes to use to promote the RoadTest, the Products featured or other Contests with which the Organiser may be connected from time to time.

3.5 Details of the Winners may also be published in the media.

3.6 Winners are responsible for all applicable taxes, duties or other charges payable in relation to any prize.

3.7

4.1 The Organiser hereby excludes all and any Liability arising out of the Contest or the acceptance, use, quality, condition, suitability or performance of any Prize, even where that Liability may arise from the Organiser’s negligence.

4.2 Nothing in these Terms will affect any Liability of the Organiser for death or personal injury arising from its negligence, for breach of Part II of the Consumer Protection Act 1987 (in the event that any entrant is entitled to claim rights under the Consumer Protection Act 1987) or for any matter in relation to which it would be illegal for the Organiser to exclude or to attempt to exclude its Liability.

4.3 Subject to 4.2, neither the Organiser, any parent company nor any subsidiary of the Organiser or such parent company or any of their directors, officers and employees (together referred to in these terms and the ‘Associates’) makes any guarantee, warranty or representation of any kind, express or implied, with respect to this Competition or the Prizes potentially available under it. Neither the Organiser nor any of its Associates shall be responsible for any Liability that may arise out of or in connection with person’s participation in this Competition, the claiming, redemption or value of any prizes under it, the use or enjoyment of such prizes or any events or circumstances arising out of or in connection with any of them. Any implied warranties of condition, merchantability or suitability or fitness for purpose of any of them are hereby expressly excluded. Wherever used in these Terms, ‘Liability’ shall mean any and all costs, expenses, claims, damages, actions, proceedings, demands, losses and other liabilities (including legal fees and costs on a full indemnity basis) arising directly or indirectly out of or in connection with the matter concerned.

5.1 The RoadTest is organised and sponsored by the Organiser. The Organiser reserves the right to delegate all or any of its powers, rights and obligations arising in relation to the RoadTest to any Associate and certain such rights and powers are assumed by the Organiser on behalf of itself and each Associate. Reference to “Organiser” shall be deemed to include reference to each Associate.

5.2 The RoadTest may be terminated at any time if there are, in the sole opinion of the Organiser, an insufficient number of entries, or if the Applications are not of an appropriate standard for a competition of this nature. The Organiser has the right to cancel or suspend the RoadTest at any time due to circumstances outside its reasonable control.

5.3 The Organiser shall have the sole discretion to disqualify (without correspondence or right of appeal) any Applicant it considers to be adversely affecting the process or the operation of the RoadTest or to be in breach of these Terms or to be acting in a disruptive manner or with intent to annoy, abuse, threaten or harass any other Applicant or Participant.

5.4 The Organiser has the right to amend or add to these Terms from time to time. Revised Terms and Conditions will be posted on the Contest Site and it is a condition of entry to the RoadTest that Applicants agree to comply with these Terms and, if appropriate, such Terms as amended from time to time.

5.5 Headings are for convenience only and do not affect the interpretation or construction of these Terms and Conditions.

5.6 These Terms and the operation of the Contest shall be governed by and construed in accordance with English Law and any claim or matter arising under these Terms shall be subject to the exclusive jurisdiction of the English courts.

Comment List
Anonymous
  • Chapter 8 Lab has me confused as well likely with various tool revisions and install packages.

    Per the course lab video, the DS5 tool should look like this:

    image

    mine looks like this: and when I import the lab library directory, the tool does it and does nothing else.

    image

  • Wow, thank you.

    The last road test I did on a course, the sponsor/vendor had a course expert monitoring the Element14 comments to help testers and evaluate feedbacks, 

    I took it for granted that was standard, my bad.

     

    We have 8 weeks to evaluate a 12 chapter course. With so many different tools to load and labs to accomplish, getting stuck on known bugs is a time (and motivation) killer.

    Kudos for your persistence and your expertise. I appreciate your comments.

  • Hi Gary (and whoever else is interested),

     

    I too had a problem with Module 6’s lab and here is what I found.  Many thanks go out to fellow review ralphjy and Robert Iannello, senior education manager at ARM Education Media.  For future reference if you have any questions concerning the course material and content you can contact Robert at edumedia@arm.comRobert also mentioned that they are “planning to create forums on our Arm Connected Community website for each of our online courses where learners can post their questions and provide feedback on the materials.

     

    As all those who are reviewing this course you probably have already realized that many of the slides and videos are outdated. It would seem that is the case with module 6's lab.  The mbed compiler web site has been updated since the video had been made.

     

    As already mentioned, following the video instruction for exporting resulted in a compile error in the build output window:

     

    Build started: Project: LED_and_Button

    *** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'

    Build target 'LED_and_Button'

    compiling main.cpp...

    1. linking...

    .\BUILD\LED_and_Button.axf: error: L6031U: Could not open scatter description file /filer/web_data/repo_builds/4/336/TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f401xe.sct: No such file or directory

    Not enough information to list image symbols.

    Not enough information to list load addresses in the image map.

    Finished: 2 information, 0 warning, 0 error and 1 fatal error messages.

    ".\BUILD\LED_and_Button.axf" - 1 Error(s), 0 Warning(s).

    Target not created.

    Build Time Elapsed:  00:00:01

     

    The highlighted line shows path of the scatter file generated by the exporting process, but in fact is incorrect.  This path is defined under the linker tab under the target options window (Project->Options for Target <projectname>).  To correct the path click on the […] button next to the scatter file path entry and highlight the stm32401xe.sct file then press [Open]:

     

    image

    image

    Close the Options window and compile (with 1 warning).

     

    Build started: Project: LED_and_Button

    *** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'

    Build target 'LED_and_Button'

    compiling main.cpp...

    1. linking...

    .\BUILD\LED_and_Button.axf: Warning: L6320W: Ignoring --keep command. Cannot find argument 'os_cb_sections'.

    Program Size: Code=21782 RO-data=2350 RW-data=132 ZI-data=1276 

    Finished: 0 information, 1 warning and 0 error messages.

    ".\BUILD\LED_and_Button.axf" - 0 Error(s), 1 Warning(s).

    Build Time Elapsed:  00:00:01

     

    Next load the code to your board…

     

    Load "C:\\Users\\gordonmx\\Labs\\Module_6\\LED_and_Button_uvision5_nucleo_f401re\\LED_and_Button\\BUILD\\LED_and_Button.axf"

    No Algorithm found for: 08000000H - 08005EC7H

    Erase skipped!

    Error: Flash Download failed  -  "Cortex-M4"

    Flash Load finished at 00:07:55

     

    OOPS another problem!!!  After a little googling it would seem that there needs to be an algorithm for our MCU.  Back to the options window again, but this time let open the Utilities tab.  Press the [Settings] button under “Configure Flash Menu Command” to get a MCU selection popup:

    image

    Select “STM32F4xx 512kB Flash” then click [Add], then [OK]. Finally close the Options window, compile and load.

     

    Build started: Project: LED_and_Button

    *** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'

    Build target 'LED_and_Button'

    compiling main.cpp...

    1. linking...

    .\BUILD\LED_and_Button.axf: Warning: L6320W: Ignoring --keep command. Cannot find argument 'os_cb_sections'.

    Program Size: Code=21782 RO-data=2350 RW-data=132 ZI-data=1276 

    Finished: 0 information, 1 warning and 0 error messages.

    ".\BUILD\LED_and_Button.axf" - 0 Error(s), 1 Warning(s).

    Build Time Elapsed:  00:00:03

     

    Load "C:\\Users\\gordonmx\\Labs\\Module_6\\LED_and_Button_uvision5_nucleo_f401re3\\LED_and_Button\\BUILD\\LED_and_Button.axf"

    Erase Done.

    Programming Done.

    Verify OK.

    Flash Load finished at 00:02:03

     

    Everything should work fine.  I’m sorry for the delay in responding, but something came up. Thanks again to Ralph and Robert for their help.

     

    Regards, Gordon

  • Hi Gary,

     

    I see.. sounds like it is possibly a Keil bug, or perhaps it is permissions related, since it appears from the build output window that the error is complaining about a file it cannot open on a non-local file system (/filer/web_data..). Does the file it is referring to exist at that location, and has read permission?

  • The training lab exercise teaches to leverage mbed IDE with open source examples.

    Mbed can compile to a BIN file to load directly to the controller (like a microbit)

    Mbed can also export the project file for Keil IDE to further detailed editing.

  • Hi Gary,

     

    Does the training suggest to build an mbed project with Keil, or is this something you're just trying anyway?

    Mbed compiles very well with gcc, so I don't really understand the need for Keil for an mbed project. I'm not saying it shouldn't work.

    But I don't really know (I have not seen the training material).

  • Chapter 6 Lab - ran Lab example mbed IDE compiler with no errors. ( Program works on STM board dragging .Bin to drive E:)

    Export same file to uVision project. Making no changes, get a fatal error in Keil IDE.

    Any suggestions for correction ? Thanks G

     

    Build started: Project: blinkOnPB

    *** Using Compiler 'V5.06 update 6 (build 750)', folder: 'C:\Keil_v5\ARM\ARMCC\Bin'

    Build target 'blinkOnPB'

    compiling main.cpp...

    linking...

    .\BUILD\blinkOnPB.axf: error: L6031U: Could not open scatter description file /filer/web_data/repo_builds/4/336/TARGET_NUCLEO_F401RE/TOOLCHAIN_ARM_STD/stm32f401xe.sct: No such file or directory

    Not enough information to list image symbols.

    Not enough information to list load addresses in the image map.

    Finished: 2 information, 0 warning, 0 error and 1 fatal error messages.

    ".\BUILD\blinkOnPB.axf" - 1 Error(s), 0 Warning(s).

    Target not created.

    Build Time Elapsed:  00:00:03

     

     

       imageimage

  • About pending interrupts (lab 3), the IRQHandler begins with clearing pending IRQ:

    NVIC_ClearPendingIRQ(EXTI15_10_IRQn);

     

    which goes into

    /**
      \brief   Clear Pending Interrupt
      \details Clears the pending bit of a device specific interrupt in the NVIC pending register.
      \param [in]      IRQn  Device specific interrupt number.
      \note    IRQn must not be negative.
     */
    __STATIC_INLINE void __NVIC_ClearPendingIRQ(IRQn_Type IRQn)
    {
      if ((int32_t)(IRQn) >= 0)
      {
        NVIC->ICPR[(((uint32_t)IRQn) >> 5UL)] = (uint32_t)(1UL << (((uint32_t)IRQn) & 0x1FUL));
      }
    }

     

    The ICPR is meant to clear pending requests and the bit should read as 1 if pending, but when I use System Viewer, ICPR was 0 to begin with. What then was I changing?

     

    Further digging led me to the Cortex-M4 Devices Generic User Guide, which says:

    A pending interrupt remains pending until one of the following:

    • The processor enters the ISR for the interrupt. This changes the state of the interrupt from pending to active.

     

    This might be a question since time immemorial, but I can't find the answer. Why call the clear pending interrupt if it is cleared when the processor enters the ISR?

     

    PS: ISR is the same as IRQHandler right?

     

    Update:

    Out of curiosity, I tried the following code to see if any change was made. Still nothing. :/

    uint32_t test=0;
    //Get pending interrupts
    test = NVIC_GetPendingIRQ(EXTI15_10_IRQn); // test = 0
    
    //Clear pending interrupts
    NVIC_ClearPendingIRQ(EXTI15_10_IRQn); // what does ICPR and ISPR do?
    
    //Get pending interrupts again
    test = NVIC_GetPendingIRQ(EXTI15_10_IRQn); // test = 0

  • Please pass typos onto course creators for correction. I dont want to clutter a Road Test Evaluation with minor stuff, but yet still OCD enough need to help improve course presentation. :-)  Thanks G

    image

    image

     

    The Instruction Set Overview slide is in video, missing from lecture slides

  • Hey Gary,

     

    Thanks for sharing your detailed progress with the rest of us.

    say Go to the Keil directory (by default C:\Keil_v5),  instead of Vx ?.

    I believe the Vx is meant to allow different versions of Keil (e.g. Keil_v6, Keil_v7 in the future).

     

    This online course might be better suited to professionals in the specific industry than the hobbyist community. The platform for this course isn't as friendly as some others (such as coursera or udemy.) And quite a few times I have suffered death by PowerPoint. In any case, I'll refrain from dishing out any more unfair judgment until I finish my review.

     

    Have a good one. image