Tumblelog by Soup.io
Newer posts are loading.
You are at the newest post.
Click here to check if anything new just came in.

March 22 2017

The 8th Annual Interactive Show: Call For Projects

March 21 2017

Tuesday Sweep: 21 Mar 2017

Weekly Round Up

Where do you scan for news? I keep an eye out for recent exploits and breaches that have come to light, new tools, interesting idea’s, etc.

Five topics for the week:

Reflect

What’s are the frictions keeping you from doing “what’s right”? Regret is only useful if it leads to a plan on how to improve.

Sweep

This list will be getting longer, but lets keep it simple while folks are still setting up.

Continuing Set Up

We’ve covered so much so fast. You’re not behind, you’re just where you are. Pick something to do.

  • If you’re having trouble with all the set up, the coach tool at the Crash Override Network has a great step by step break down for many of the same introductory steps we did here.
  • Review the list of OneThing articles so far and pick one to catch up on.

Engage

We are a community. You are a welcome part of it.

Hivelord at the Barnes STEAM Fair

 

The Hivelord made an appearance at the STEAM Fair at the Barnes, in his new business friendly attire, along with Hive76 members Chris Terrell and Mike Barretta! In case you didn’t know, STEAM stands for Science, Technology, Engineering, Arts, and Mathematics, ie all the good stuff. Mike was there to entice visitors into the STEAM lifestyle with his custom portable gaming machines based on the Raspberry Pi and emulationstation, while the Hivelord took photos of unwitting participants using his face, and thus stealing a tiny portion of their soul (as it is told in The Legends). Click the link below to see the photos from the Barnes!

-> Click here to see the Hivelord’s Photos from this event! <-

 

Bolts and other fixings in Fusion 360

I have been playing about with Fusion 360, one of thrings you will need to include before very long is a fixing, even if you can 3D print everything in your design at some point you will want to stick two parts together at which point you will need a bolt or a screw. 

This took me a while to find in Fusion 360 as it is not a work flow that instantly jumped out as how it would work. I also for a fair while thought about drawing my own bolts, but I reasoned that someone else must have done the drawings first. 

March 20 2017

How I make a Screencast

I have been playing with Fusion 360 again… and as part of that I have been finding cunning tricks that I am thankful that I now know. Since I think I have a blog or something, I shall share those I find to be useful.

And for this I shall use the medium of interpretive dance Screencast.

I found a useful tool called ScreencastMaker (Mac Appstore) that does the capture part, the glue is then Keynotes, and iMovie:

March 16 2017

Culver City Police Deparment Community Forum on Immigration Enforcement: Watch Online

We attended this event as a part of the Civic Engagement Survival Guide: a series of free talks and workshops focused on creating a community that is informed, organized, and engaged.

Chief Brixby of the Culver City Police Department held a community forum tonight and spoke on CCPD’s role in immigration enforcement. Chief Brixby takes the time to answer community questions, and addresses the “ACLU’s 9 “Model” State and Local Law Enforcement Policies and Rules.”

“I hear you saying that immigration law enforcement is not the primary, secondary, or tertiary function of the Culver City Police Department.
I hear you saying that sanctuary status, from what you understand […] would not prevent the CCPD from enforcing the law here in Culver City.
I hear you saying that you are already in compliance with the ACLU 9 Model Principles. Is that correct?”
– An audience member

“That is correct.” – Culver City Police Chief Bixby

For more local Culver City events on the Culver City Community Calendar. Watch past videos or view upcoming events on the Civic Engagement Survival Guide.

CRASH Space is a 501(c)3 non-profit organization which works to promote education through individual projects and social collaboration. CRASH Space is also a member of the EFF Electronic Frontier Alliance: a grassroots network of community and campus organizations across the United States working to educate our neighbors about the importance of digital rights.

Leading an event in this series is a paid opportunity. We are interested in events which encourage community action and education, on topics such as: civic engagement, social justice, support for marginalized groups, environmental protection, and more. Please send proposals to [info at crashspace dot org]. To support our work, you can donate here.

March 15 2017

Wood working Class – A foundation Course (cutting boards)

RSVP Link Wood working sessions to teach you everything you need to know to make a cutting board and beyond! Next class is Monday the 20th at 6:30pm! Powered by Eventbrite

March 14 2017

Tuesday Sweep: 14 Mar 2017

Weekly Round Up

Where do you scan for news? I keep an eye out for recent exploits and breaches that have come to light, new tools, interesting idea’s, etc.

Here’s 5 topics to think about today:

Reflect

What’s are the frictions keeping you from doing “what’s right”? Regret is only useful if it leads to a plan on how to improve.

Sweep

This list will be getting longer, but lets keep it simple while folks are still setting up.

Continuing Set Up

We’ve covered so much so fast. You’re not behind, you’re just where you are. Pick something to do.

  • If you’re having trouble with all the set up, the coach tool at the Crash Override Network has a great step by step break down for many of the same introductory steps we did here.
  • Review the list of OneThing articles so far and pick one to catch up on.

Engage

We are a community. You are a welcome part of it.

March 08 2017

Tuesday Sweep: March 7 2017

Weekly Round Up

Where do you scan for news? I keep an eye out for recent exploits and breaches that have come to light, new tools, interesting idea’s, etc.

Reflect

What’s are the frictions keeping you from doing “what’s right”? Regret is only useful if it leads to a plan on how to improve.

Sweep

This list will be getting longer, but lets keep it simple while folks are still setting up.

Continuing Set Up

We’ve covered so much so fast. You’re not behind, you’re just where you are. Pick something to do.

  • If you’re having trouble with all the set up, the coach tool at the Crash Override Network has a great step by step break down for many of the same introductory steps we did here.
  • Review the list of OneThing articles so far and pick one to catch up on.

Engage

We are a community. You are a welcome part of it.

March 02 2017

SCALE 15x This Weekend in Pasadena

The Southern California Linux Expo returns for its crystal (time crystal?) anniversary this year. This will be year two in the Pasadena Convention Center, a 0.4 mi walk from the Gold Line.

Four days, a game night, HAM testing… it’s a huge value and covers many topics relevant to not just Linux in particular, but open source in general, including a legal issues track.

I’m particularly looking forward to Saturday’s keynote by Christine Corbett Moran.

The SCALE team  is very pleased to announce our second keynote speaker – Christine Corbett Moran – for Saturday, March 4, as she presents “Open Source Software as Activism“. Astronomy and Astrophysics Postdoctoral Fellow at Caltech, Open Source and mobile app developer and NASA finalist are but a few of the achievements Dr. Corbett Moran brings to the party. Please join us on Saturday as she kicks off a full day of amazing sessions.

Hope to see you there!

February 28 2017

Tuesday Sweep: Feb 28 2017

Reflect

What’s are the frictions keeping you from doing “what’s right”? Regret is only useful if it leads to a plan on how to improve.

Confessional:  Flu season makes you stupid. So does panic. So does the drive “not to be annoying.” It’s tax season and someone told me they should email them some financial information. I died a little and then said, “No, I can bring it by.” But I feel like I of all people should of have a better solution for that at the ready.  This person is not the most tech savvy, so even tossing a password onto the file seems like too much.  Hmmm.

Continuing Set Up

We’ve covered so much so fast. You’re not behind, you’re just where you are. Pick something to do.

  • If you’re having trouble with all the set up, the coach tool at the Crash Override Network has a great step by step break down for many of the same introductory steps we did here.
  • Review the list of OneThing articles so far and pick one to catch up on.

Sweep

This list will be getting longer, but lets keep it simple while folks are still setting up.

Learn

Where do you scan for news? I keep an eye out for recent exploits and breaches that have come to light, new tools, interesting idea’s, etc.

Whew. Once again facing two weeks of news, here’s a handful.

Engage

We are a community. You are a welcome part of it.

February 27 2017

ShopBot Furniture Making by a Woodwork Dilletante

February 26 2017

Civic Hacking 101: Building Trust within a Broken System by Vyki Englert: Watch Online

This event was a part of the Civic Engagement Survival Guide: a series of free talks and workshops focused on creating a community that is informed, organized, and engaged.

Vyki Englert is a software engineer and co-founder of Compiler LA: a civic tech consultancy dedicated to building a better Los Angeles. She is also the local Brigade Captain of Los Angeles’ Code for America brigade: Hack for LA. In January, we invited her to speak at CRASH Space on her experience working in Civic Tech, as well as to provide an intro session and Q&A on what resources she knows about and how others can get involved.


Unfortunately, due to technical difficulties, the last 10 mins of the Q&A after the talk are not available online. 🙁

If you’re interested in Civic Tech, Vyki also provided us with a useful list of links to the initiatives and organizations that she mentions in her talk:

Learn more about Vyki by following her on twitter. Watch past videos or view upcoming events on the Civic Engagement Survival Guide.

CRASH Space is a 501(c)3 non-profit organization which works to promote education through individual projects and social collaboration. CRASH Space is also a member of the EFF Electronic Frontier Alliance: a grassroots network of community and campus organizations across the United States working to educate our neighbors about the importance of digital rights.

Leading an event in this series is a paid opportunity. We are interested in events which encourage community action and education, on topics such as: civic engagement, social justice, support for marginalized groups, environmental protection, and more. Please send proposals to [info at crashspace dot org]. To support our work, you can donate here.

February 21 2017

Wifi Weather Display Wall Art

February 20 2017

Introduction to Arduino Workshop on Saturday, 15th April

Nottingham Hackspace will be hosting an all-day Introduction to Arduino Workshop, run by James Fowkes and Ian Dickinson, on Saturday, 15th April.

The Arduino system is a microcontroller board and software designed for extreme ease-of-use and learning, and has been wildly successful all over the world – not just in electronics, but for all sorts of maker projects. If you want to learn how to incorporate electronic control into your projects, this is definitely the workshop for you.

This workshop will cover:

  • What an Arduino is, and how to program it
  • Components and tools
  • Basics of electronics (voltage, current, resistance, etc.)
  • Arduino input and outputs
  • Controlling high-power components
  • Analog output
  • And more!

Aimed for complete beginners, this workshop doesn’t require you to have written a single line of code, switched on a soldering iron or even own an Arduino to take part. All the electronics equipment, including Arduino boards, will be provided on the day, but you will need to bring a laptop to program the Arduino with. It would also help if you installed the Arduino software onto your laptop before the workshop.

This workshop will run from 11am to 4pm, with a break for lunch at 1pm, and will cost £20, which includes use of all tools, boards and components, and free tea or coffee.

Arduino Unos will be available to purchase for £18 and Arduino Starter Kits will be available to purchase for £35. Please bring cash if you would like to buy either of these.

You can purchase your tickets now at EventBrite. This is a very popular workshop, with only 15 spaces, so please buy your tickets early to avoid disappointment.

February 19 2017

How to make a Twin T Notch Filter

Analogue Electronics can be hard!  If an engineer doesn't do much design or calculations all the time the skills can be lost.  I have personally probably forgotten far too much.  Helpfully there are reference materials both online and in books to help remind ourselves what we need to do!

I need to design and implement a band stop filter.  This because I need to make some circuit measurements and the 13.56 MHz signal (inherent to the circuit being measured) is swamping the input stage of a spectrum analyser.  I would like to be able to measure all the signal above 30 MHz without it being affected by out of band noise.  This is a common problem when using sensitive electronic instrumentation...what appears on screen is not always correct due to unknown out of band noise.

A Twin T Notch Filter Circuit The go to circuit of choice in these situations is known as the Twin T Notch filter.  It's a great filter circuit that is easy to implement because of its low component count.  The websites below discuss the theory behind band stop filters and Twin T Notch filters:

https://en.wikipedia.org/wiki/Band-stop_filter

http://mysite.du.edu/~etuttle/electron/elect15.htm

http://www.radio-electronics.com/info/circuits/rc_notch_filter/twin_t_notch_filter.php

https://www.allaboutcircuits.com/textbook/alternating-current/chpt-8/band-stop-filters/

The quick way to design such a filter is to set the required parameters and then use the formula given. The parameters for my filter are:
  • Must use preferred component values
  • Must not filter signals above 30 MHz
  • Must have at least 30 dB of rejection at 13.56 MHz
The formula for calculating the component values is:

Now we can either plug some numbers into the formula above and try and get close to where we want to be or we can use an online calculator tool.  I am all for quickness and see little point in doing mathematics when I don't have to!  Here is a very useful site for calculating Notch filter component values:

http://sim.okawa-denshi.jp/en/TwinTCRtool.php

Credit should definitely be given to the engineers and Okawa-Denshi Electronics Design in Japan!

The useful thing about simulators is the component values can be selected based upon those available and not some pie in the sky value...some less helpful calculators prescribe using component values which either do not exist in the real world or require the skill of a police detective to obtain!

I also have found that when using online circuit calculators it is important to fix at least one of the component values before you start calculating things.  I entered 13.56 MHz as the centre frequency for the filter and set the value of C1 to 10 pF and C2 and C3 to 4.7 pF as these are real world (preferred) values in the E6 series.

Useful site for preferred values:

http://www.matrixtsl.com/courses/ecc/index.php?n=Capacitors.PreferredValuesCapacitors 

The online calculator did it's thing and provided the circuit below:
The Centre frequencies were:
  • Flow  = 13.555950 MHz
  • FHigh = 13.679649 MHz
The frequency response of filters is often shown as a special type of graph known as a Bode plot. This is shown below:


I have no doubt that if properly constructed this circuit would provide the filter response I'm looking for - It has 40 dB of rejection at 13.56 MHz, it doesn't filter the signal for frequencies above 30 MHz but the resistor values whilst available are not values I have readily to hand.  Because of that I'm going to tweak the capacitor values and run the calculator again.

I have changed the values of C2 and C3 to 22 pF which follows the rule that C2 and C3 must be roughly double C1....Here is the circuit that the calculator came up with:
Again...this circuit would probably work but I'm still not happy with the resistor values.  They are hard to obtain.  I'm going to increase the values of the capacitors again and see what happens.  The values I have chosen are C1 = 15 pF, C2 and C3 = 82 pF
The resistor values are now much more common and available.  Lets hope the filter response is good enough.

The Centre frequencies were:
  • Flow  = 13.496806 MHz
  • FHigh = 13.654780 MHz
The corresponding Bode plot:

From the numbers given and by interpreting the Bode plot this circuit meets my requirements. If I wanted I could fit a 22 pF capacitor in the C1 position and a similar result will be obtained.  That will also change the resistor values as well:

I'm liking these values the most as I am certain I have all of these components available.  I wasn't sure if I have a 15 pF capacitor. It's not a value I use much - easily obtained from any good component vendor but always best to use what you have!

The resistor values are now much more common and available.  Lets hope the filter response is good enough.

The Centre frequencies were:
  • Flow  = 13.374485 MHz
  • FHigh = 13.587897 MHz
The corresponding Bode plot:

Now that we have our component values we need to calculate the power requirements.  In this case I want to be able to put as much electrical power through the filter as possible.  The signal strength of the 13.56 MHz signal in my case will be at least 20 Watts.  Therefore each component must be capable of withstanding that power level without being burnt out.

I happen to know that the 13.56 MHz signal will be coming from a signal generator and amplifier at +30 dBm.  If we convert +30 dBm into Watts we find that it is 1 Watt.  So all components need to be rated for one Watt or better. Just for fun here is the formula:

dBm = 10 * Log10 * 1 * 10^-3 (Watts)

We need to rearrange to get Watts:

10^-3 (Watts)  =10^(dBm/10))  

If we now plug the values in we get:

10^-3 (Watts)  =10^(30/10))

Which is equal to 1000 * 10^-3 Watts or 1000 milli-Watts which is 1 Watt 

So all of the resistors need to be 1 Watt rated or better.  I'm going to need a small enclosure with connectors for this circuit and that means I'm probably going to need a printed circuit board.

I have used these diecast boxes in the past for this purpose - they are useful because they come with BNC connectors already fitted:
They are made by Pomona Electronics and are available from most good electronics vendors like RS components and Farnell Electronics.  My only complaint is the cost - £28.04 - yikes!

The datasheet for the box is here:

http://www.farnell.com/datasheets/63791.pdf?_ga=1.89445531.125022660.1487507564

The dimensions of the Box are below:

Rather unhelpfully the inner dimensions are not provided - I hate it when that happens. However it isn't too much of a concern, reasonable estimations can be made.

If the printed circuit board is 36 mm x 33 mm and when populated is less than 25 mm high it will fit the above box well enough.

Here is how the layout came out:

I have chosen to use surface mount components throughout and 2512 size resistors so that the power requirements are met.  The board should easily fit inside the enclosure chosen.  The dimensions shown are in mm - for those that might be interested.

Just for fun here is how the PCB will look when populated:

ISO view of the Notch Filter PCB The top side of the Notch Filter PCB The side view of the Notch Filter PCB Just for fun and because I wanted to practice my 3D drawing and modelling skills I have drawn up the Pomona 3231 Box.  It is available for download at the 3D warehouse if people are interested. Here is the PCB inside the box:

Top view of the PCB in the 3231 Pomona Box
ISO view of the PCB in the 3231 Pomona Box Finally all that is left to do on this is create a bill of materials and calculate the total cost for this Filter.  I normally buy my components from Farnell Electronics but anywhere would do.

Component Value Quantity Footprint Part Number Cost (£) Notes






Resistor 390 Ohms 5 2512 2476478 0.604 3 Watt resistor from Farnell Resistor 27 Ohms 5 2512 2476450 0.604 3 Watt resistor from Farnell Capacitor 82 pF 10 0603 722078 0.015 C0G from Farnell Capacitor 22 pF 10 0805 1759489 0.0323 C0G from Farnell PCB N/A 10 N/A N/A 14.04 10 PCBS from Elecrow Pomona 3231 Case N/A 1 N/A 1234948 28.04 From Farnell
Unfortunately I could not get an 0805 82 pF capacitor which is annoying but I can fit an 0603 part. The total cost for the above is £43.34 - That is enough components and PCBS to make one complete unit with plenty of spares.  The cost of a single unit alone is £29.70 which I think isn't too bad.  Those pomona cases are very expensive - I might investigate a cheaper solution at some point.
The good news is all of the resistors I found are 3 Watt parts which means the filter will be able to work with high power signals!
The more astute readers may know that it is possible to buy a notch filter from various RF vendors.  I did consider these options and for those that may be interested the following websites have them on sale:
http://www.microwavefilter.com/notchfilters.htm
http://www.imcsd.com/products/bandstop-filters.html
I couldn't find one that specifically sells a 13.56 MHz Band Stop Filter although I suspect such products do exist.  I doubt that I would be able to buy one for less than £30
If I do decide to make one of these I will test it and provide the results and photos.  Hopefully this was of interest to someone - Take care always - Langster!

February 18 2017

Working Effectively with Social Justice Movements by Hannah Howard: Watch Online

This event was a part of the Civic Engagement Survival Guide: a series of free talks and workshops focused on creating a community that is informed, organized, and engaged.

In December, we met Hannah Howard, an engineer with a long history of activism. With over a decade of experience working both as the developer and the client in the non-profit space, Hannah delivers a unique and informed perspective on how technical people can best utilize their skills to assist social justice efforts. Her talk, Working Effectively with Social Justice Movements: A Primer for Techies, provides a beginner-friendly onboarding for technical people, complete with tips, tricks, and common pitfalls to avoid.

Learn more about Hannah by following her on twitter. Watch past videos or view upcoming events on the Civic Engagement Survival Guide.

CRASH Space is a 501(c)3 non-profit organization which works to promote education through individual projects and social collaboration. CRASH Space is also a member of the EFF Electronic Frontier Alliance: a grassroots network of community and campus organizations across the United States working to educate our neighbors about the importance of digital rights.

Leading an event in this series is a paid opportunity. We are interested in events which encourage community action and education, on topics such as: civic engagement, social justice, support for marginalized groups, environmental protection, and more. Please send proposals to [info at crashspace dot org]. To support our work, you can donate here.

Intersectionality & Allyship by Patricia Realini: Watch Online

In November, CRASH Space kicked off the Civic Engagement Survival Guide: a series of free talks and workshops focused on creating a community that is informed, organized, and engaged.

Our first speaker in the series was Patricia Realini, a software engineer and artist who engages in efforts to raise the level of public debate on issues that affect underrepresented minorities. Her talk, Intersectionality & Allyship, provides an introduction to social justice, as seen through the lens of intersectional feminism.

Learn more about Patricia by following her on twitter. Watch past videos or view upcoming events on the Civic Engagement Survival Guide.

CRASH Space is a 501(c)3 non-profit organization which works to promote education through individual projects and social collaboration. CRASH Space is also a member of the EFF Electronic Frontier Alliance: a grassroots network of community and campus organizations across the United States working to educate our neighbors about the importance of digital rights.

Leading an event in this series is a paid opportunity. We are interested in events which encourage community action and education, on topics such as: civic engagement, social justice, support for marginalized groups, environmental protection, and more. Please send proposals to [info at crashspace dot org]. To support our work, you can donate here.

February 17 2017

A Capacitive-Touch Janko Keyboard: What I Did at the 2017 Georgia Tech Moog Hackathon

Last weekend (February 10-12, 2017) I made a Janko-layout capacitive-touch keyboard for the Moog Werkstatt at the Georgia Tech Moog Hackathon. The day after (Monday the 13th), I made this short video of the keyboard being played:

"Capacitive Touch Janko Keyboard for Moog Werkstatt"



(Text from the video doobly doo)

This is a Janko-layout touch keyboard I made at the 2017 Moog Hackathon at Georgia Tech, February 10-12. I'm playing a few classic bass and melody lines from popular and classic tunes. I only have one octave (13 notes) connected so far.

The capacitive touch sensors use MPR121 capacitive-touch chips, on breakout boards from Adafruit (Moog Hackathon sponsor Sparkfun makes a similar board for the same chip). The example code from Adafruit was modified to read four boards (using the Adafruit library and making four sensor objects and initializing each to one of the four I2C addresses is remarkably easy for anyone with moderate familiarity with C++), and code was written to send a gate (key down) signal to the Werkstatt, and to write a binary representation of the pressed key (low note priority) to an Arduino port connected to a precision R-2R ladder to generate the voltage for the VCO exponential input.

The capacitive touch sensors can be used to make a touch keyboard with any configuration, not just the Janko. With these sensors it's remarkably easy to make a functioning electronic musical keyboard, as no mechanical switches or moving parts are needed. The feeling is at least as responsive as a "real" keyboard, as response to touch and release feels instant as far as I can tell. If anything, there's a "problem" in that if you accidentally, even slightly, touch a key it will sound, whereas with a mechanical keyboard you have to "accidentally" press a key down for it to sound.

A traditional seven-natural-and-five-sharp-keys layout would have been just as easy, but less "interesting." I chose the Janko layout after having read about it for many years (see Paul Vandervoot's piano video "Demonstration of 4-Row Janko Keyboard" - he describes the layout at 4:06). The Janko has, from left to right, six whole steps per octave, thus is one less key wide per octave than the traditional keyboard, so with the same key spacings the Janko octave is a shorter distance. Going up or down diagonally is a half step, so a chromatic scale of all 12 notes is a zig-zag pattern. A major scale is the first three notes in a line (whole steps), diagonally up or down to the next key (a half step), this and the next three keys across (whole steps), and then diagonally again (a half step) to get to the octave key. You can start on any key and the major scale is the same description. This is the remarkable property of the Janko layout, there are very few patterns to memorize for the different scales and chords.

(End text from the doobly doo)


I used an Arduino Mega 2560 (actually the Inland brand compatible board from Micro Center), because I thought I would use more I/O pins than on an Uno. This project can be done on an Uno, but the direct write to the Mega DDRC and PORTC registers (and perhaps other I/O pin assignments) may need to be changed for the Uno. If you don't know how to use the AVR port registers directly, you may be better off just using a Mega 2560 rather than trying to change the code for an Uno.

No direct work for this project was done at Freeside Atlanta (nor at Georgia Tech's Invention Studio - I cut these pieces of wood to size at home using a circular saw just before going to the hackathon, then hot-glued everything together at the hackathon), but I did some preliminary work done at Freeside. I had been wanting to make some sort of Janko keyboard for a while, and in recent months I've 3d-printed a couple of rounded-rectangle "keys" to help get the feel of what I wanted. (The short time of a one-weekend build kept me from using anything other than a rectangle shape on this project, and even then I only had one octave done by 5PM Sunday.) I decided on key spacing the same as "standard" piano keys, which are about about 165mm (6.5 inches) per octave. Since the Janko layout has six (whole-step) keys per octave instead of the traditional seven (major scale) keys, this octave is about 141.4mm or 5.57 inches wide. The distance from one row of keys to the next above it is 1.8 inches, and each row up is 0.53 inches (the approximate heigth of a sharp note on a standard keyboard) higher than the previous. These numbers are mostly just "good guesses" as to what the dimensions of such a keyboard should be for good ergonomics. If you make one of these, feel free to make whatever changes you like, even a traditional key layout or something totally different.

The keys are made of brass strips. I had a brass sheet, dimensioned 6 inches by 24 inches by 0.004 inches. I cut this into rectangles of 1.5 inches by 0.75 inches. I soldered wires to one side and glued the soldered side down to a plywood board with hot glue. Each vertical pair arranged (first-and-third row, or second-and-fourth row) were connected together and connected to a sensor input on the MPR121 breakout board.

For greater versatility, each key could be connected to a separate sensor input (doubling the number of sensor inputs required). This would allow the vertical pairs to be "wired together" in software for the Janko layout, or for each key to generate a different note. This would be ideal for generating microtonal scales such as 24 notes per octave.

The current code implements a monophonic keyboard for a single voice analog synthesizer. The keyboard priority is for the lowest note played, and retriggering is off (you have to lift off all keys and press a key again to get a new gate signal). Many enhancements can be done, such as highest or last note priority, retriggering, and sending polyphonic MIDI data, and adding adding modulation wheels on the left side for pitch bend, LFO modulation amount, and other possible performance parameters (I think there should be at least three such wheels, with the third one changing the filter cutoff frequency). These are, as always, left as an exercise for the student.

Blatant Blurb for Synthesizer Class

This Tuesday, February 21 2017, I'll be putting on a class at Freeside:
"Introduion to Electronic Musical Instruments."
I'll cover analog music synthesizers, and have this Janko keyboard instrument and others in the Synth Petting Zoo after the class. There is a $10 charge, this covers the time and cost of setting up and of using Freeside to put on this class. Sign up here:
https://www.meetup.com/Freeside-Atlanta/events/236883195/

Schematic (power supply connections for Werkstatt and Arduino not shown):

Arduino code:

// tkey - read capacitive touch keys and control Werkstatt
// Ben Bradley Feb. 11-12, 2017
// for Moog Hackathon

// substantial code taken from the MPR121test program from the
// Adafruit library.


// From other keyscan program for the Mega2560:

// AVRpin AVR name   Arduino name
//   1    PG5         D4
//   2    PE0         D0
//   3    PE1         D1
//   4    PE2
//   5    PE3         D5
//   6    PE4         D2
//   7    PE5         D3
//   8    PE6
//   9    PE7
//  12-18 PH0-PH6     D17-D16,X,D6-D9
//  19-26 PB0-PB7     D52-D50,D10-D13
//  27    PH7
//  28-29 PG3-PG4
//  35-42 PL0-PL7     D49-D42                   // out to r-2r ladder
//  43-50 PD0-PD7     D21-D18,X,X,X,D38
//  51-52 PG0-PG1     D40-D41
//  53-60 PC0-PC7     D37-D30             ***  Voltage control output, port C
//  63-69 PJ0-PJ6     D15-D14,X,X,X,X,X
//  70    PG2         D39
//  71-78 PA7-PA0     D29-D22             ***
//  79    PJ7
//  82-89 PK7-PK0     A15-A8
//  90-97 PF7-PF0     A7-A0
//  98    AREF



/*********************************************************
This is a library for the MPR121 12-channel Capacitive touch sensor

Designed specifically to work with the MPR121 Breakout in the Adafruit shop
  ----> https://www.adafruit.com/products/

These sensors use I2C communicate, at least 2 pins are required
to interface

Adafruit invests time and resources providing this open source code,
please support Adafruit and open-source hardware by purchasing
products from Adafruit!

Written by Limor Fried/Ladyada for Adafruit Industries. 
BSD license, all text above must be included in any redistribution
**********************************************************/

#include <Wire.h>
#include "Adafruit_MPR121.h"

// You can have up to 4 on one i2c bus but one is enough for testing!
Adafruit_MPR121 chip1 = Adafruit_MPR121();
Adafruit_MPR121 chip2 = Adafruit_MPR121();
Adafruit_MPR121 chip3 = Adafruit_MPR121();
Adafruit_MPR121 chip4 = Adafruit_MPR121();

// Keeps track of the last pins touched
// so we know when buttons are 'released'
uint16_t lasttouched1 = 0;
uint16_t currtouched1 = 0;
uint16_t lasttouched2 = 0;
uint16_t currtouched2 = 0;
uint16_t lasttouched3 = 0;
uint16_t currtouched3 = 0;
uint16_t lasttouched4 = 0;
uint16_t currtouched4 = 0;



const int GateOut = 48;   // Mega digital output

void setup()
{
  Serial.begin(9600);

  while (!Serial) { // needed to keep leonardo/micro from starting too fast!
    delay(10);
  }
 
//  Serial.println("Adafruit MPR121 Capacitive Touch sensor test");

//   The MPR121 ADDR pin is pulled to ground and has a default I2C address of 0x5A
// You can adjust the I2C address by connecting ADDR to other pins:
// ADDR not connected: 0x5A
// ADDR tied to 3V: 0x5B
// ADDR tied to SDA: 0x5C
// ADDR tied to SCL: 0x5D

  // Default address is 0x5A, if tied to 3.3V its 0x5B
  // If tied to SDA its 0x5C and if SCL then 0x5D
  if (!chip1.begin(0x5A))
  {
    Serial.println("MPR121 chip1 not found, check wiring?");
    while (1);
  }
//  Serial.println("MPR121 chip1 found!");


  if (!chip2.begin(0x5B))
  {
    Serial.println("MPR121 chip2 not found, check wiring?");
    while (1);
  }
//  Serial.println("MPR121 chip2 found!");

  if (!chip3.begin(0x5C))
  {
    Serial.println("MPR121 chip3 not found, check wiring?");
    while (1);
  }
//  Serial.println("MPR121 chip3 found!");

  if (!chip4.begin(0x5D))
  {
    Serial.println("MPR121 chip4 not found, check wiring?");
    while (1);
  }
//  Serial.println("MPR121 chip4 found!");

  Serial.println("All chips found.");

  DDRC = 0xff;
  PORTC = 0;
  pinMode (GateOut, OUTPUT);
  digitalWrite(GateOut, 0);
} // void setup()

void loop()
{

  int notepressed = -1;
  // Get the currently touched pads
  currtouched1 = chip1.touched();
 
#ifdef __print_touched_
  for (uint8_t i=0; i<12; i++) {
   // it if *is* touched and *wasnt* touched before, alert!

    if ((currtouched1 & _BV(i)) && !(lasttouched1 & _BV(i)) )
    {
      Serial.print("c1 "); Serial.print(i); Serial.println(" touched");
    }
    // if it *was* touched and now *isnt*, alert!
    if (!(currtouched1 & _BV(i)) && (lasttouched1 & _BV(i)) )
    {
      Serial.print("c1 "); Serial.print(i); Serial.println(" released");
    }
  }
#endif #ifdef __print_touched_


  currtouched2 = chip2.touched();
#ifdef __print_touched_
  for (uint8_t i=0; i<12; i++)
  {
    // it if *is* touched and *wasnt* touched before, alert!
    if ((currtouched2 & _BV(i)) && !(lasttouched2 & _BV(i)) ) {
      Serial.print("c2 "); Serial.print(i); Serial.println(" touched");
    }
    // if it *was* touched and now *isnt*, alert!
    if (!(currtouched2 & _BV(i)) && (lasttouched2 & _BV(i)) )
    {
      Serial.print("c2 "); Serial.print(i); Serial.println(" released");
    }
  }
#endif #ifdef __print_touched_

  currtouched3 = chip3.touched();
 
#ifdef __print_touched_
  for (uint8_t i=0; i<12; i++)
  {
    // it if *is* touched and *wasnt* touched before, alert!
    if ((currtouched3 & _BV(i)) && !(lasttouched3 & _BV(i)) ) {
      Serial.print("c3 "); Serial.print(i); Serial.println(" touched");
    }
    // if it *was* touched and now *isnt*, alert!
    if (!(currtouched3 & _BV(i)) && (lasttouched3 & _BV(i)) )
    {
      Serial.print("c3 "); Serial.print(i); Serial.println(" released");
    }
  }
#endif #ifdef __print_touched_


  currtouched4 = chip4.touched();
 
  for (uint8_t i=0; i<12; i++)
  {
    // it if *is* touched and *wasnt* touched before, alert!
    if ((currtouched4 & _BV(i)) && !(lasttouched4 & _BV(i)) ) {
      Serial.print("c4 "); Serial.print(i); Serial.println(" touched");
    }
    // if it *was* touched and now *isnt*, alert!
    if (!(currtouched4 & _BV(i)) && (lasttouched4 & _BV(i)) )
    {
      Serial.print("c4 "); Serial.print(i); Serial.println(" released");
    }
  }


  if ((lasttouched1 != currtouched1) ||
      (lasttouched2 != currtouched2) ||
      (lasttouched3 != currtouched3) ||
      (lasttouched4 != currtouched4))
  {
    // find lowest note.

 
    if (currtouched1)
    {
      for (int8_t i=11; i>=0; i--)
      {
        if (currtouched1 & _BV(i))
          notepressed = i;
      }
    }
    else
    if (currtouched2)
    {
      for (int8_t i=11; i>=0; i--)
      {
        if (currtouched2 & _BV(i))
          notepressed = 12 + i;
      }
    }
    else
    if (currtouched3)
    {
      for (int8_t i=11; i>=0; i--)
      {
        if (currtouched3 & _BV(i))
          notepressed = 24 + i;
      }
    }
    else
    if (currtouched4 & 0x01)
      notepressed = 36;     // highest key
//    Serial.print("lowest note ");
    if (notepressed != -1)
    {
      PORTC = 37 - notepressed; // invert bits for negative sum
      Serial.print(notepressed);
      Serial.print (' ');
    }
    if (currtouched1 | currtouched2 | currtouched3 | currtouched4)
      digitalWrite(GateOut, 1);
   else
      digitalWrite(GateOut, 0);
  } // if ((lasttouched1 != // note changed

  // reset our state
  lasttouched1 = currtouched1;
  lasttouched2 = currtouched2;
  lasttouched3 = currtouched3;
  lasttouched4 = currtouched4;

} // void loop()

February 15 2017

One Thing To Do Today: Border Control Advice Round Up

blonde border collie jumping over bar

Ozfozz via wikimedia commons

Lots of bad advice is getting floated around about border crossings, including creating weird partitions or fake lightweight logins. Sadly, as this 2011 EFF guide shows, border control overreach isn’t a new problem, but their is a new scope of ruthlessness. The social media password request is certainly a new wrinkle. Take this EFF quiz to see how your knowledge stacks up. As mentioned in the Jan 31st Tuesday sweep, the new pressures are damaging US based tech conferences and research institutions.

Wired has put out an article that seems to sum up the best advice, but that 2011 EFF article is MUCH more complete in terms of actual processes. (UPDATE: also New York Times, Ars Technica about your rights.)

The essentials:

  • Do not attempt to lie, deceive, obstruct or hassle a CPB official. Maintain your cool and be polite.
  • Have as little with you as possible in terms of number of items and what data they carry.
  • Biometrics are not protected by the 5th amendment the way passwords are.
  • Call someone (your lawyer?) before going into, and after leaving customs.

Not planning on traveling anytime soon? With the current political climate, those 200 million of us living inside the 100 mile border zone (set in 1953, btw) might need to consider following some of this advice on a more daily basis.

If you are hassled, document it the incident following this advice from the EFF.

These policies and practices of DHS/CBP must be chronicled and opposed.

Please tell us your border search stories. You can write to us at borders@eff.org. If you want to contact us securely via email, please use PGP/GPG. Or you can call us at +1-415-436-9333.

We also encourage you to contact your congressional representatives in the Senate and House of Representatives.

You may also contact the DHS Office of Civil Rights and Civil Liberties (crcl@dhs.gov) and the DHS Inspector General (dhs-oig.officepublicaffairs@oig.dhs.gov).

Older posts are this way If this message doesn't go away, click anywhere on the page to continue loading posts.
Could not load more posts
Maybe Soup is currently being updated? I'll try again automatically in a few seconds...
Just a second, loading more posts...
You've reached the end.

Don't be the product, buy the product!

Schweinderl