8-bit Microcontrollers 32-bit Microcontrollers and Application
Microcontrollers (Rex St. John)
-
Upload
future-insights -
Category
Technology
-
view
494 -
download
4
Transcript of Microcontrollers (Rex St. John)
MicrocontrollersMicrocontrollers
by @rexstjohn
(for web developers)
Our goal today is to understand what is going on here
Why Microcontrollers?Why Microcontrollers?
By 2020, there will be 50 billionBy 2020, there will be 50 billioncomputers on earthcomputers on earth
Moore's Law: They will keep gettingsmaller, cheaper and faster
Many of these devices will Many of these devices will lacklack user userinterfacesinterfaces
Often communicating via low-energy wirelessprotocols
They will rely on sensors to understandThey will rely on sensors to understandtheir environmenttheir environment
Heat, temperature, sound, light, smoke, steam,LiDAR...
And form "the edge" of large internetAnd form "the edge" of large internetconnected systems...connected systems...
These computers will often take theThese computers will often take theform of form of MicrocontrollersMicrocontrollers
Small computers specializing in real-timeoperations
Increasingly we are using webIncreasingly we are using webdevelopment tools and techniques todevelopment tools and techniques to
program these devicesprogram these devices
GitHub, Containers, Node.js etc
"Hybrid" developers will be needed who"Hybrid" developers will be needed whoare capable of understanding theseare capable of understanding these
systemssystems
Are you up for the task?
Full-Stack Developer, n: Person who isFull-Stack Developer, n: Person who iscomfortable programming both frontcomfortable programming both front
and back-end systemsand back-end systems
Full-Stack Developer, n: Person who isFull-Stack Developer, n: Person who ispaid once to do the work of four peoplepaid once to do the work of four people
(actual definition)
(technical definition)
Now that we can run Linux on our IoT devices, full-stackdeveloper takes on a whole new meaning!
Example ProjectsExample ProjectsWhat can we do with microcontrollers?
RamBotRamBot
Gamification of drones and robots
Sign++Sign++
Sign language translation glove
Smart Chicken CoopSmart Chicken Coop
Smart chicken tender
TinyCheeseTinyCheese
Makes tiny cheese
A Microcontroller (MCU) is a A Microcontroller (MCU) is a smallsmallcomputercomputer with a with a processorprocessor, , memorymemory,,
and and programmable input/outputprogrammable input/outputperipherals.peripherals.
They specialize in real-time behaviorThey are used everywhere (automotive, industrial etc)
They are contained on an integrated circuit
MicroprocessorMicroprocessor MicrocontrollerMicrocontrollerMicroprocessorPlus other stuff*On integrated circuits (IC)Often on a PCB*
Programmable deviceAccepts digital IOProcesses dataProvides results as output
*Other stuff may vary*Printed Circuit Board
PCB with microcontroller pinout
Example UsesExample UsesHome appliancesIndustrialAutomotiveDronesEverything, really
Anywhere you need cheap, highly reliable, event-driven computers
Sensors attached to PCB boards are the "userinterface" for microcontrollers, lets learn how that
works
Web DevelopmentWeb DevelopmentFor ThingsFor Things
LibMRAALibMRAA FirmataFirmataFirmata is a protocol forcommunicating withmicrocontrollers from softwareon a computer (based on MIDI).
LibMRAA is a C/C++ librarywith bindings to javascript &python to interface with theIO on Galileo, Edison etc.
We can now talk to our microcontrollers without writingassembly language!
Johnny-Five Artoo
GobotCylon.js
Digital and Analog SensorsDigital and Analog Sensors
Communication for basic data
Digital I/ODigital I/OGPIO: General purpose input / outputHigh or Low depending on voltage level (1 or 0)Frequently come in "ports" of 8 (a byte)Can alternate as analog pins (but not both!)Good for LEDs, buttons, buzzers, relays
Example: LED with MRAAExample: LED with MRAAvar m = require('mraa'); //require mar//write the mraa version to the consoleconsole.log('MRAA Version: ' + m.getVersion()); //LED hooked up to digital pin 13 (or built in pin on Galileo Gen1 & Gen2)var myLed = new m.Gpio(13); myLed.dir(m.DIR_OUT); //set the gpio direction to outputvar ledState = true; //Boolean to hold the state of Led
periodicActivity(); //call the periodicActivity function
function periodicActivity(){ //if ledState is true then write a '1' (high) otherwise write a '0' (low) myLed.write(ledState?1:0); ledState = !ledState; //invert the ledState //call the indicated function after 1 second (1000 milliseconds) setTimeout(periodicActivity,1000); }
Analog I/OAnalog I/OGPIO pins for digital can often be used for analogGood for sensing light, temperature, sound etcWe must translate digital signals to analog signals(PWM)
Pulse Width ModulationPulse Width Modulation
Pulse Width Modulation, orPWM, is a technique forgetting analog results withdigital means. Digital controlis used to create a squarewave, a signal switchedbetween on and off.
Useful for servos (robotics, drones), audio and more
Let us turn a jaggy thing into a squiggly thing
Example: 3-Axis AccelerometerExample: 3-Axis Accelerometer
Has a ground wire, power wire and 3-analog wires
// "ADXL335"var five = require("johnny-five");var Edison = require("edison-io");
var board = new five.Board({ io: new Edison()});
board.on("ready", function() { var accelerometer = new five.Accelerometer({ controller: "ADXL335", pins: ["A0", "A1", "A2"] }); accelerometer.on("change", function() { console.log(" x : ", this.x); console.log(" y : ", this.y); console.log(" z : ", this.z); });});
Johnny-Five SyntaxJohnny-Five Syntax
Serial CommunicationsSerial CommunicationsCommunication for fancy data
"Serial" aka "Time Division Multiplexed""Serial" aka "Time Division Multiplexed"Data is sent one chunk at a time based on a clock signal
Errors and noise occur when sending data via wirerequiring safeguards.
: Inter-integrated circuit: Serial peripheral communication
(SCI): Universal asynchronous receiver/ transmitter
I²CSPIUART
Want more? Read this.
Common Serial CommunicationsCommon Serial Communications
Example: I2C LCDExample: I2C LCD
// How to write to the Seeed LCD Screen// NOTE: You *MUST* plug the LCD into an I2C slot or this will not work!var Cylon = require('cylon');
function writeToScreen(screen, message) { screen.setCursor(0,0); screen.write(message);}
Cylon .robot({ name: 'LCD'}) .connection('edison', { adaptor: 'intel-iot' }) .device('screen', { driver: 'upm-jhd1313m1', connection: 'edison' }) .on('ready', function(my) { writeToScreen(my.screen, "Ready!"); }).start();
Cylon SyntaxCylon Syntax
SPISPI“ A master sends a clock signal, and
upon each clock pulse it shifts one bit outto the slave, and one bit in, coming fromthe slave. Signal names are therefore SCKfor clock, MOSI for Master Out Slave In,and MISO for Master In Slave Out.
I²CI²C“ SCL and SDA. SCL is the clock line.
It is used to synchronize all datatransfers over the I2C bus. SDA is thedata line. The SCL & SDA lines areconnected to all devices on the I2Cbus.
Common Synchronous ProtocolsCommon Synchronous Protocols
SPISPIFaster, 1-20MHzRequires 3+ physical linesLess worry about "noise"All lines are unidirectionalChip-select lines required
I²CI²CSlower, 100 - 400MHz2 lines only, easier to wireNoise an issueAll lines are bi-directionalFor chaining devices
Common Synchronous Protocols ComparedCommon Synchronous Protocols Compared
Many microcontrollers support bothprotocols.
(or SCI) uses two wires (TX / RX) to transmit data (or SCI) uses two wires (TX / RX) to transmit dataasynchronously at an agreed-upon baud rateasynchronously at an agreed-upon baud rate
UARTUART
Uses start and stop bits for primitive error correctionBuad Rate: Transmission speed (9600, 115200 etc)
Long history, common on PCs before USB
UART NotesUART NotesUART is a hardware module, not a protocolCan run in a Slow: 9 - 56 kHz (vs. 1 - 20 MHz for SPI)Used for sending ASCII charactersAlso: Keyboard, LCD monitor data
synchronous mode called USART
Test Time: ATmega32U4Xadow Main Board with Lets find: SPI, UART, I2C, Analog I/O
Test Time: Find GPIO, Analog, PWM, UART, SPI
Test Time: Find SPI, UART, I2C, USB, PWM, GPIO, Clock lines
Further ReadingFurther ReadingIntroduction to Microcontrollers