Small Computers Community Workshop January 2017
I'd like the meeting to be as useful as possible. And to that end, please feel free to edit these notes and add any topics that you would like the meeting to cover.
Notes and ideas for what to cover
Overview of small computers available
Operating system
Microcontroller with/without bootloader
Arduino
Full Linux distribution
Debian on CHIP
Raspbian
Custom Linux build with cross-compiling
Buildroot
Yocto (Intel Edison)
Android Things
Windows IoT
Microcontroller vs 'system on a chip' and general OS
Startup time
Remove power vs clean shutdown
Filesystem cache
Filesystem corruption
Read-only root filesystem
Journaling filesystem
Security and managing patches/updates
Hardware driver availability
Size of current sourced and sinked to GPIO pins
IOH = current when output is high
IOL = current when output is low
Arduino Uno ATmega328
IOH: Max 40 mA, recommended 20 mA
IOL: Max 40 mA, recommended 20 mA
Also limitations on total for all pins
http://playground.arduino.cc/Main/ArduinoPinCurrentLimitations
PCF8574 on CHIP
IOH: 30 to 300 uA (47 uA reported in forum)
IOL: 10 to 25 mA
https://bbs.nextthing.co/t/electrical-characteristics-of-chips-gpio/2590
5V vs 3.3V logic
Arduino IDE and computer-hosted microcontroller tool chains
Storage
Internal
SD card
Networking
Wifi
Bluetooth
Ethernet
I/O
Digital
Analog (ADC/DAC)
PWM
Video (HDMI, DSI)
Serial over USB
USB On-The-Go
3 wire UART serial
Power
Power consumption
Power source options
USB (discuss non-standard current draw)
USB 2.0: 5V max 500 mA
Barrel jack DC
AAA batteries
LiPo batteries
https://learn.adafruit.com/li-ion-and-lipoly-batteries?view=all
Battery charging
Add-on boards
Raspberry Pi HATs
Arduino Shields
CHIP DIPs
Feather Wings
Sample boards
CHIP
Arduino
Teensy
Feather
Raspberry Pi
Beaglebone Black
Micro:bit: http://microbit.org/hardware/
Intel Edison
SAMD21
CHIP
Specs:
Allwinner R8 CPU
512MB DRAM
4GB NAND storage
Realtek RTL8723BS
802.11b/g/n
Bluetooth 4.0 LE
AXP209 power management chip
USB A socket Host (500 mA)
USB Micro B socket power and On-The-Go
TRRS A/V connector
80 pin headers
Battery connector
Power button
https://github.com/NextThingCo/CHIP-Hardware/tree/master/CHIP%5Bv1_0%5D/CHIPv1_0-BOM-Datasheets
Getting started with CHIP
Powering CHIP: http://www.chip-community.org/index.php/Power
Connecting to CHIP
Serial USB to Micro B USB OTG
UART
SSH wireless or wired (wired requires USB ethernet adapter)
stty size
stty rows M cols N
http://unix.stackexchange.com/questions/16578/resizable-serial-console-window
Default user configuration
User: chip, password: chip
passwd
User: root, password: chip
sudo passwd -l root
On headless image, ssh service is enabled
sudo systemctl disable ssh
PermitRootLogin is "yes"
/etc/ssh/sshd_config
Default hosname: chip
/etc/hostname
/etc/hosts
Using a powered USB hub
Wifi configuration
List networks: nmcli device wifi
Enabling UTF-8
sudo apt install locales
sudo dpkg-reconfigure localesIn locales to be generated, select "
en_US.UTF-8 UTF-8"Select "
en_US.UTF-8 UTF-8" as defaultReboot
CHIP GPIO
XIO pins attached to a PCF8574 via I2C
https://bbs.nextthing.co/t/electrical-characteristics-of-chips-gpio/2590
Device numbering varies with kernel version: https://docs.getchip.com/chip.html#gpio
Lighting an LED on CHIP
Circuit for Arduino: https://www.arduino.cc/en/tutorial/blink
SparkFun tutorial on selecting resistor value for LED circuit: https://www.sparkfun.com/tutorials/219
We cannot use the Arduino circuit on CHIP as the XIO pins cannot source enough current
Instead we can either:
Use XIO pin to control a current from another source (say using a FET)
Or, reverse the circuit and sink to XIO rather than source
Automate CHIP configuration: http://www.chip-community.org/index.php/Automate_CHIP_configuration
Running stuff at startup with systemd
How we are using CHIPs for Nexus
Talk by Dave Rauchwerk of Next Thing Co on the history and design of the CHIP:
Adafruit FTDI Friend: https://www.adafruit.com/products/284
Arduino
Building an Arduino on a breadboard: https://www.arduino.cc/en/Main/Standalone
Firmata: https://github.com/firmata/arduino
ATmega328 specs
20 MHz AVR
32 KB flash (non-volatile, program)
2 KB SRAM (volatile, runtime data)
1 KB EEROM (non-volatile storage)
6-channel ADC