Open Hardware Summit: video recording of talks

cropped-OHS2017

The annual Open Hardware Summit took place on September 27th at MIT, and all the exciting and insightful presentation were live streamed to YouTube!

The live stream is broken into morning session and afternoon session.

Morning schedule:

9:00 AM Door Open!
10:00 Opening Remarks:  Michael Weinberg, OSHWA President
10:15 Eric Von Hippel: Economics of Open Hardware
10:45 AM Surya Mattu: Approaching adversarial research
11:00 Oluwatobi Oyinlola: Hyperloop: The rLoop Journey
11:20 Sara Chipps: C++ API for Kids
11:35 Robin Getz: Open Source Software Defined Radio
11:55 Evan Raskob: Livecoding 3D printing: experiments in live computational sculpting
12:10 Adam Benzion: How to build a huge open source community (without being a total sellout).

Mario Gómez : Building Resilience With Public Institutions and Open Hardware

 

Afternoon schedule:

1:45 PM Neil Gershenfeld: How To Make (almost) Anything
2:20 PM Joseph Apuzzo: MicroPython on ESP32 and LoBo
2:45 PM Jodi Clark: OpenCosplay, Teaching the Next Generation
3:00 PM SURPRISE SPEAKER YA’ALL
3:45 PM Tarek Loubani: Gaza tourniquet: Making lifesaving medical devices under fire
4:00 PM Stephanie Valencia: Creating a more accessible future with OSH
4:15 PM  Amitabh Shrivastava: Programmable-Air
4:30 PM Ted Hayes: How to Put A Neural Network on an Arduino and Why
4:45 PM Closing Remarks: Alicia Gibb, OSHWA Director

If you enjoyed these talks, please consider joining the Open Source Hardware Association (OSWHA)!

And follow Open Hardware Summit on Twitter for update on 2019 – we’ll be in China!

Open Hardware Summit: video recording of talks

Creating KiCad Parts From A PDF Automagically

 

For anyone out there who has ever struggled finding a part for Eagle or KiCad, there are some who would say you’re doing it wrong. You’re supposed to make your own parts if you can’t find them in the libraries you already have. This is really the only way; PCB design tools are tools, and so the story goes you’ll never be a master unless you can make your own parts.

That said, making schematic parts and footprints is a pain, and if there’s a tool to automate the process, we’d be happy to use it. That’s exactly what uConfig does. It automatically extracts pinout information from a PDF datasheet and turns it into a schematic symbol.

via Creating KiCad Parts From A PDF Automagically — Hackaday

Quote

Open Hardware Summit badge: adapter board for USB-to-serial cable

DosSfNPWwAE-ldB.jpg

The 2018 Open Hardware Summit badge features an ESP32 microcontroller running MicroPython firmware.  The firmware provides a Python interpreter prompt (REPL) on the serial port which allows interactive programming of the badge!

This post describes how to connect an FTDI 3.3V USB to serial cable to the J1 header on the badge.  In addition to the serial console, this adapter board for the J1 header enable new MicroPython firmware to be flashed on to the badge.

DorWBnpX4AAqRR_

First, solder a 2×3 pin header socket on to the badge at the J1.  Alternatively, a strip of 0.1″ header sockets could be cut into two 1×3 pieces.

IMG_20181003_235654

Here is a Fritzing diagram (PDF) of how to solder this J1 adapter board onto a perf board:

ohs18badge-j1-adapter_bb

Note: I re-purposed the OHS18 badge add-on proto dev board to act as a generic perf board.

The slide switch on the adapter board will allow the ESP32 to enter programming mode by connecting the IO0 pin on J1 to ground.  The push button on the adapter board will reset the board by connecting EN pin on J1 to ground.

If you have the serial port open in a terminal emulator, then you should see this after switching into programming mode and pressing the reset push button:

Screenshot from 2018-10-03 22-48-12

Build the MicroPython firmware for the ESP32 on the badge by following these directions in the GitHub repo README.

To flash the ESP32, close your terminal emulator program so that esptool.py can open the serial port (which is /tty/USB0 on my Linux computer):

DorYWzaXUAAhTBT

Switch from programming mode to serial console mode so that IO0 pin on J1 is no longer grounded.  Then open the serial port in your terminal emulator again (115200 baud, 8-N-1) and press the reset push button:

DothUWiW4AInYIN

You should see the output from MicroPython firmware running.

To use the interactive Python prompt (REPL), press the menu button on the badge (the icon with pencil and paintbrush) and select Serial REPL from the Available Apps menu:

IMG_20181004_113042 (1)

The terminal emulator connected to the serial port should then display the interactive Python prompt (REPL).  You can type in MicroPython code to experiment:

Screenshot from 2018-10-04 11-39-40 (2)

Here is an exmaple that displays text on the e-paper and prints that values from the accelerometer:

import gxgde0213b1
import font16
import machine
import struct
from ohsbadge import epd
from ohsbadge import fb

epd.clear_frame(fb)
epd.set_rotate(gxgde0213b1.ROTATE_270)
epd.display_string_at(fb, 0, 0, "Welcome to OHS 2018!", font16, gxgde0213b1.COLORED)
epd.display_frame(fb)

i2c = machine.I2C(scl=machine.Pin(22), sda=machine.Pin(21))
i2c.writeto_mem(30,0x18,b'\x80')
ACCX = struct.unpack("h",i2c.readfrom_mem(30,0x6,2))
ACCY = struct.unpack("h",i2c.readfrom_mem(30,0x8,2))
ACCZ = struct.unpack("h",i2c.readfrom_mem(30,0x10,2))
print("x={0} y={1} z={2}".format(ACCX[0], ACCY[0], ACCZ[0]))

Photo of the text displayed on the e-paper:

DorbVOzX4AUwAQ3

Resources:

Open Hardware Summit badge: adapter board for USB-to-serial cable

Open Hardware Summit badge: Magic 8-Ball app

Thanks to @Steve Pomeroy for creating this MicroPython demo app for the Open Hardware Summit badge:

ohs18apps/magic8ball.py

import gxgde0213b1
import font16
import font12
from machine import I2C, Pin, TouchPad
import struct
import time
import urandom
from ohsbadge import epd
from ohsbadge import fb


class TouchButton(object):
    def __init__(self, pin, on_pressed, threshold=400, debounce_ms=50):
        self._touchpad = TouchPad(pin)
        self._on_pressed = on_pressed
        self._threshold = threshold
        self._debounce_ms = debounce_ms
        self._down_ms = None
        self._pressed = False

    def read(self):
        if self._touchpad.read() < self._threshold:             if not self._pressed:                 if not self._down_ms:                     self._down_ms = time.ticks_ms()                 else:                     if time.ticks_diff(time.ticks_ms(), self._down_ms) > self._debounce_ms:
                        self._on_pressed()
                        self._pressed = True
        else:
            self._pressed = False
            self._down_ms = None


def clear_screen():
    epd.initPart()
    epd.clear_frame(fb)
    epd.display_frame(fb)

def show_message(message):
    epd.init()
    epd.clear_frame(fb)
    epd.display_string_at(fb, 0, 52, message, font16, gxgde0213b1.COLORED)
    epd.display_frame(fb)

def read_accel(i2c):
    i2c.writeto_mem(30, 0x18, b'\x80')
    x = struct.unpack("h", i2c.readfrom_mem(30, 0x6, 2))
    y = struct.unpack("h", i2c.readfrom_mem(30, 0x8, 2))
    z = struct.unpack("h", i2c.readfrom_mem(30, 0xA, 2))

    return (x[0], y[0], z[0])

def get_orientation(i2c):
    new_orientation = None

    pos = read_accel(i2c)

    if pos[2] > 13000:
        new_orientation = "upright"
    elif pos[2] < -13000:
        new_orientation = "prone"

    return new_orientation


def main():
    phrases = ["It is certain.", "It is decidedly so.", "Without a doubt.", "Yes - definitely.", "You may rely on it.", "As I see it, yes.", "Most likely.", "Outlook good.", "Yes.", "Signs point to yes.", "Reply hazy, try again", "Ask again later.", "Better not tell you now.", "Cannot predict now.", "Concentrate and ask again.", "Don't count on it.", "My reply is no.", "My sources say no.", "Outlook not so good.", "Very doubtful."]
    i2c = I2C(scl=Pin(22), sda=Pin(21))

    epd.init()
    epd.set_rotate(gxgde0213b1.ROTATE_270)
    epd.clear_frame(fb)
    epd.display_frame(fb)

    prev_orientation = None

    keep_on = [True]

    def exit_loop():
        keep_on[0] = False

    exit_button = TouchButton(Pin(32), exit_loop)

    while keep_on[0]:
        exit_button.read()
        orientation = get_orientation(i2c)

        if orientation and orientation != prev_orientation:
            if orientation == 'upright':
                show_message(urandom.choice(phrases))
            elif orientation == 'prone':
                clear_screen()
            prev_orientation = orientation

        time.sleep(0.1)

main()

This Python file can be transferred to Open Hardware Summit badge using the FTP server built into the MicroPython firmware.

Resources:

Open Hardware Summit badge: Magic 8-Ball app

Hardware Happy Hour (3H) Chicago is Wednesday, October 10th

safe_image (1)

The next Hardware Happy Hour (3H) Chicago is Wednesday, October 10th, at Haymarket Pub!

Hardware Happy Hour (3H) Chicago

Wednesday, Oct 10, 2018, 6:00 PM

Haymarket
737 W Randolph St Chicago, IL

12 Members Attending

This group is based upon the idea that you are interested in hanging out and discussing hardware. Please bring a piece of hardware to show off or talk about. Are you interested in hardware, but you haven’t built anything yet? Show off software you have built! Or come prepared to talk about the projects you want to build. There are no organized talk…

Check out this Meetup →

This group is based upon the idea that you are interested in hanging out and discussing hardware. Please bring a piece of hardware to show off or talk about. Are you interested in hardware, but you haven’t built anything yet? Show off software you have built! Or come prepared to talk about the projects you want to build.

There are no organized talks, it’s literally a show and tell at a bar or restaurant. In case you missed it two paragraphs ago, bring hardware. Seriously, just bring anything to talk about 🙂

Hardware Happy Hour (3H) Chicago is Wednesday, October 10th