<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://wiki.lvl1.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bpwagner</id>
	<title>LVL1 - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.lvl1.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Bpwagner"/>
	<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/Special:Contributions/Bpwagner"/>
	<updated>2026-05-08T20:44:56Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12800</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12800"/>
		<updated>2020-02-29T17:44:11Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* Load Weather Station software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
== Setup the Wemos D1 mini for the Arduino ==&lt;br /&gt;
* good tutorial here https://averagemaker.com/2018/03/wemos-d1-mini-setup.html&lt;br /&gt;
* overview&lt;br /&gt;
** install ch340 serial usb drivers&lt;br /&gt;
** install Arduino IDE - not the web version&lt;br /&gt;
** Add the json string to the board manager URLs in file-&amp;gt;preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
** Set the board in Arduino&lt;br /&gt;
** Get the blink example working&lt;br /&gt;
&lt;br /&gt;
== hook up the screen ==&lt;br /&gt;
* Solder dupont headers to 5V, Gnd, D3 and D4 on the Wemos D1 Mini&lt;br /&gt;
* connect the other end of dupont headers to oled screen&lt;br /&gt;
* see the below pics to see where the wires are soldered.&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipOGQOS6dypO040hpkg5JxpgiVx4hfn3O9EkiXW5&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipNhJHZNDAGd6mUlpzu_d7v162e096tIUPb5aiYb&lt;br /&gt;
&lt;br /&gt;
== Load Weather Station software ==&lt;br /&gt;
&lt;br /&gt;
20889a71fc890355a9adf0d7d0c0d611&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. First download and install these two libraries&lt;br /&gt;
&lt;br /&gt;
* https://github.com/ThingPulse/esp8266-oled-ssd1306&lt;br /&gt;
&lt;br /&gt;
* https://github.com/ThingPulse/esp8266-weather-station&lt;br /&gt;
&lt;br /&gt;
You do this by clicking the green button on the above web pages and click the GREEN &#039;Clone or Download&#039; button and download the zip files for both.&lt;br /&gt;
&lt;br /&gt;
2. Next install these libraries into the Arduino Software&lt;br /&gt;
&lt;br /&gt;
* Sketch-&amp;gt;Include Library-&amp;gt;Add .Zip library... then choose the zip file you previously downloaded and install.&lt;br /&gt;
&lt;br /&gt;
3. Now open the Weather Station Demo code...&lt;br /&gt;
&lt;br /&gt;
* File-&amp;gt;Examples-&amp;gt;ESP8266 Weather Station-&amp;gt;Weather Station Demo&lt;br /&gt;
&lt;br /&gt;
4. Now you will see the Weather Station Demo code and you will need to replace it with the code here [[WeatherStationDemoCode]] . Copy and paste all of it.&lt;br /&gt;
&lt;br /&gt;
* Modify the WIFI settings needed for home and work&lt;br /&gt;
&lt;br /&gt;
* Follow this link to get an OpenWeatherMap API key: https://docs.thingpulse.com/how-tos/openweathermap-key/&lt;br /&gt;
&lt;br /&gt;
* Copy and paste code into the weatherstation code&lt;br /&gt;
&lt;br /&gt;
5. At this point you should be able to upload your code to the D1 Mini board and enjoy the weather&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12797</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12797"/>
		<updated>2020-02-28T19:15:27Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* Load Weather Station software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
== Setup the Wemos D1 mini for the Arduino ==&lt;br /&gt;
* good tutorial here https://averagemaker.com/2018/03/wemos-d1-mini-setup.html&lt;br /&gt;
* overview&lt;br /&gt;
** install ch340 serial usb drivers&lt;br /&gt;
** install Arduino IDE - not the web version&lt;br /&gt;
** Add the json string to the board manager URLs in file-&amp;gt;preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
** Set the board in Arduino&lt;br /&gt;
** Get the blink example working&lt;br /&gt;
&lt;br /&gt;
== hook up the screen ==&lt;br /&gt;
* Solder dupont headers to 5V, Gnd, D3 and D4 on the Wemos D1 Mini&lt;br /&gt;
* connect the other end of dupont headers to oled screen&lt;br /&gt;
* see the below pics to see where the wires are soldered.&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipOGQOS6dypO040hpkg5JxpgiVx4hfn3O9EkiXW5&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipNhJHZNDAGd6mUlpzu_d7v162e096tIUPb5aiYb&lt;br /&gt;
&lt;br /&gt;
== Load Weather Station software ==&lt;br /&gt;
1. First download and install these two libraries&lt;br /&gt;
&lt;br /&gt;
* https://github.com/ThingPulse/esp8266-oled-ssd1306&lt;br /&gt;
&lt;br /&gt;
* https://github.com/ThingPulse/esp8266-weather-station&lt;br /&gt;
&lt;br /&gt;
You do this by clicking the green button on the above web pages and click the GREEN &#039;Clone or Download&#039; button and download the zip files for both.&lt;br /&gt;
&lt;br /&gt;
2. Next install these libraries into the Arduino Software&lt;br /&gt;
&lt;br /&gt;
* Sketch-&amp;gt;Include Library-&amp;gt;Add .Zip library... then choose the zip file you previously downloaded and install.&lt;br /&gt;
&lt;br /&gt;
3. Now open the Weather Station Demo code...&lt;br /&gt;
&lt;br /&gt;
* File-&amp;gt;Examples-&amp;gt;ESP8266 Weather Station-&amp;gt;Weather Station Demo&lt;br /&gt;
&lt;br /&gt;
4. Now you will see the Weather Station Demo code and you will need to replace it with the code here [[WeatherStationDemoCode]] . Copy and paste all of it.&lt;br /&gt;
&lt;br /&gt;
* Modify the WIFI settings needed for home and work&lt;br /&gt;
&lt;br /&gt;
* Follow this link to get an OpenWeatherMap API key: https://docs.thingpulse.com/how-tos/openweathermap-key/&lt;br /&gt;
&lt;br /&gt;
* Copy and paste code into the weatherstation code&lt;br /&gt;
&lt;br /&gt;
5. At this point you should be able to upload your code to the D1 Mini board and enjoy the weather&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12796</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12796"/>
		<updated>2020-02-28T19:12:18Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* Load Weather Station software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
== Setup the Wemos D1 mini for the Arduino ==&lt;br /&gt;
* good tutorial here https://averagemaker.com/2018/03/wemos-d1-mini-setup.html&lt;br /&gt;
* overview&lt;br /&gt;
** install ch340 serial usb drivers&lt;br /&gt;
** install Arduino IDE - not the web version&lt;br /&gt;
** Add the json string to the board manager URLs in file-&amp;gt;preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
** Set the board in Arduino&lt;br /&gt;
** Get the blink example working&lt;br /&gt;
&lt;br /&gt;
== hook up the screen ==&lt;br /&gt;
* Solder dupont headers to 5V, Gnd, D3 and D4 on the Wemos D1 Mini&lt;br /&gt;
* connect the other end of dupont headers to oled screen&lt;br /&gt;
* see the below pics to see where the wires are soldered.&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipOGQOS6dypO040hpkg5JxpgiVx4hfn3O9EkiXW5&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipNhJHZNDAGd6mUlpzu_d7v162e096tIUPb5aiYb&lt;br /&gt;
&lt;br /&gt;
== Load Weather Station software ==&lt;br /&gt;
1. First download and install these two libraries&lt;br /&gt;
&lt;br /&gt;
* https://github.com/ThingPulse/esp8266-oled-ssd1306&lt;br /&gt;
&lt;br /&gt;
* https://github.com/ThingPulse/esp8266-weather-station&lt;br /&gt;
&lt;br /&gt;
You do this by clicking the green button on the above web pages and click the GREEN &#039;Clone or Download&#039; button and download the zip files for both.&lt;br /&gt;
&lt;br /&gt;
2. Next install these libraries into the Arduino Software&lt;br /&gt;
&lt;br /&gt;
* Sketch-&amp;gt;Include Library-&amp;gt;Add .Zip library... then choose the zip file you previously downloaded and install.&lt;br /&gt;
&lt;br /&gt;
3. Now open the Weather Station Demo code...&lt;br /&gt;
&lt;br /&gt;
* File-&amp;gt;Examples-&amp;gt;ESP8266 Weather Station-&amp;gt;Weather Station Demo&lt;br /&gt;
&lt;br /&gt;
4. Now you will see the Weather Station Demo code and you will need to replace it with the code here [[WeatherStationDemoCode]] . Copy and paste all of it.&lt;br /&gt;
&lt;br /&gt;
* Modify the WIFI settings needed for home and work&lt;br /&gt;
&lt;br /&gt;
* Follow this link to get an OpenWeatherMap API key: https://docs.thingpulse.com/how-tos/openweathermap-key/&lt;br /&gt;
&lt;br /&gt;
* Copy and paste code into the weatherstation code&lt;br /&gt;
&lt;br /&gt;
* At this point you should be able to upload your code to the D1 Mini board and enjoy the weather&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12795</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12795"/>
		<updated>2020-02-28T19:05:46Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* Load Weather Station software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
== Setup the Wemos D1 mini for the Arduino ==&lt;br /&gt;
* good tutorial here https://averagemaker.com/2018/03/wemos-d1-mini-setup.html&lt;br /&gt;
* overview&lt;br /&gt;
** install ch340 serial usb drivers&lt;br /&gt;
** install Arduino IDE - not the web version&lt;br /&gt;
** Add the json string to the board manager URLs in file-&amp;gt;preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
** Set the board in Arduino&lt;br /&gt;
** Get the blink example working&lt;br /&gt;
&lt;br /&gt;
== hook up the screen ==&lt;br /&gt;
* Solder dupont headers to 5V, Gnd, D3 and D4 on the Wemos D1 Mini&lt;br /&gt;
* connect the other end of dupont headers to oled screen&lt;br /&gt;
* see the below pics to see where the wires are soldered.&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipOGQOS6dypO040hpkg5JxpgiVx4hfn3O9EkiXW5&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipNhJHZNDAGd6mUlpzu_d7v162e096tIUPb5aiYb&lt;br /&gt;
&lt;br /&gt;
== Load Weather Station software ==&lt;br /&gt;
1. First download and install these two libraries&lt;br /&gt;
&lt;br /&gt;
* https://github.com/ThingPulse/esp8266-oled-ssd1306&lt;br /&gt;
&lt;br /&gt;
* https://github.com/ThingPulse/esp8266-weather-station&lt;br /&gt;
&lt;br /&gt;
You do this by clicking the green button on the above web pages and click the GREEN &#039;Clone or Download&#039; button and download the zip files for both.&lt;br /&gt;
&lt;br /&gt;
2. Next install these libraries into the Arduino Software&lt;br /&gt;
&lt;br /&gt;
* Sketch-&amp;gt;Include Library-&amp;gt;Add .Zip library... then choose the zip file you previously downloaded and install.&lt;br /&gt;
&lt;br /&gt;
3. Now open the Weather Station Demo code...&lt;br /&gt;
&lt;br /&gt;
* File-&amp;gt;Examples-&amp;gt;ESP8266 Weather Station-&amp;gt;Weather Station Demo&lt;br /&gt;
&lt;br /&gt;
4. Now you will see the Weather Station Demo code and you will need to replace it with the code here [[WeatherStationDemoCode]] . Copy and paste all of it.&lt;br /&gt;
&lt;br /&gt;
* Modify the WIFI settings needed for home and work&lt;br /&gt;
&lt;br /&gt;
* Create a &lt;br /&gt;
&lt;br /&gt;
* At this point you should be able to upload your code to the D1 Mini board and enjoy the weather&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12794</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12794"/>
		<updated>2020-02-28T19:03:29Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* Load Weather Station software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
== Setup the Wemos D1 mini for the Arduino ==&lt;br /&gt;
* good tutorial here https://averagemaker.com/2018/03/wemos-d1-mini-setup.html&lt;br /&gt;
* overview&lt;br /&gt;
** install ch340 serial usb drivers&lt;br /&gt;
** install Arduino IDE - not the web version&lt;br /&gt;
** Add the json string to the board manager URLs in file-&amp;gt;preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
** Set the board in Arduino&lt;br /&gt;
** Get the blink example working&lt;br /&gt;
&lt;br /&gt;
== hook up the screen ==&lt;br /&gt;
* Solder dupont headers to 5V, Gnd, D3 and D4 on the Wemos D1 Mini&lt;br /&gt;
* connect the other end of dupont headers to oled screen&lt;br /&gt;
* see the below pics to see where the wires are soldered.&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipOGQOS6dypO040hpkg5JxpgiVx4hfn3O9EkiXW5&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipNhJHZNDAGd6mUlpzu_d7v162e096tIUPb5aiYb&lt;br /&gt;
&lt;br /&gt;
== Load Weather Station software ==&lt;br /&gt;
1. First download and install these two libraries&lt;br /&gt;
&lt;br /&gt;
* https://github.com/ThingPulse/esp8266-oled-ssd1306&lt;br /&gt;
&lt;br /&gt;
* https://github.com/ThingPulse/esp8266-weather-station&lt;br /&gt;
&lt;br /&gt;
You do this by clicking the green button on the above web pages and click the GREEN &#039;Clone or Download&#039; button and download the zip files for both.&lt;br /&gt;
&lt;br /&gt;
2. Next install these libraries into the Arduino Software&lt;br /&gt;
&lt;br /&gt;
* Sketch-&amp;gt;Include Library-&amp;gt;Add .Zip library... then choose the zip file you previously downloaded and install.&lt;br /&gt;
&lt;br /&gt;
3. Now open the Weather Station Demo code...&lt;br /&gt;
&lt;br /&gt;
* File-&amp;gt;Examples-&amp;gt;ESP8266 Weather Station-&amp;gt;Weather Station Demo&lt;br /&gt;
&lt;br /&gt;
4. Now you will see the Weather Station Demo code and you will need to replace it with the code here [[WeatherStationDemoCode]] . Copy and paste all of it.&lt;br /&gt;
&lt;br /&gt;
* Modify the WIFI settings needed for home and work&lt;br /&gt;
&lt;br /&gt;
At this point you should be able to upload your code to the D1 Mini board and enjoy the weather&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12793</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12793"/>
		<updated>2020-02-28T18:59:34Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* Load Weather Station software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
== Setup the Wemos D1 mini for the Arduino ==&lt;br /&gt;
* good tutorial here https://averagemaker.com/2018/03/wemos-d1-mini-setup.html&lt;br /&gt;
* overview&lt;br /&gt;
** install ch340 serial usb drivers&lt;br /&gt;
** install Arduino IDE - not the web version&lt;br /&gt;
** Add the json string to the board manager URLs in file-&amp;gt;preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
** Set the board in Arduino&lt;br /&gt;
** Get the blink example working&lt;br /&gt;
&lt;br /&gt;
== hook up the screen ==&lt;br /&gt;
* Solder dupont headers to 5V, Gnd, D3 and D4 on the Wemos D1 Mini&lt;br /&gt;
* connect the other end of dupont headers to oled screen&lt;br /&gt;
* see the below pics to see where the wires are soldered.&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipOGQOS6dypO040hpkg5JxpgiVx4hfn3O9EkiXW5&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipNhJHZNDAGd6mUlpzu_d7v162e096tIUPb5aiYb&lt;br /&gt;
&lt;br /&gt;
== Load Weather Station software ==&lt;br /&gt;
1. First download and install these two libraries&lt;br /&gt;
&lt;br /&gt;
* https://github.com/ThingPulse/esp8266-oled-ssd1306&lt;br /&gt;
&lt;br /&gt;
* https://github.com/ThingPulse/esp8266-weather-station&lt;br /&gt;
&lt;br /&gt;
** You do this by clicking the green button on the above web pages and click the GREEN &#039;Clone or Download&#039; button and download the zip files for both.&lt;br /&gt;
&lt;br /&gt;
#Next install these libraries into the Arduino Software&lt;br /&gt;
Sketch-&amp;gt;Include Library-&amp;gt;Add .Zip library... then choose the zip file you previously downloaded and install.&lt;br /&gt;
&lt;br /&gt;
Now open the Weather Station Demo code...&lt;br /&gt;
File-&amp;gt;Examples-&amp;gt;ESP8266 Weather Station-&amp;gt;Weather Station Demo&lt;br /&gt;
&lt;br /&gt;
Now you will see the Weather Station Demo code and you will need to replace it with the code here [[WeatherStationDemoCode]] . Copy and paste all of it.&lt;br /&gt;
&lt;br /&gt;
Modify the WIFI settings needed for home and work&lt;br /&gt;
&lt;br /&gt;
At this point you should be able to upload your code to the D1 Mini board and enjoy the weather&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12792</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12792"/>
		<updated>2020-02-28T18:56:34Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* Load Weather Station software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
== Setup the Wemos D1 mini for the Arduino ==&lt;br /&gt;
* good tutorial here https://averagemaker.com/2018/03/wemos-d1-mini-setup.html&lt;br /&gt;
* overview&lt;br /&gt;
** install ch340 serial usb drivers&lt;br /&gt;
** install Arduino IDE - not the web version&lt;br /&gt;
** Add the json string to the board manager URLs in file-&amp;gt;preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
** Set the board in Arduino&lt;br /&gt;
** Get the blink example working&lt;br /&gt;
&lt;br /&gt;
== hook up the screen ==&lt;br /&gt;
* Solder dupont headers to 5V, Gnd, D3 and D4 on the Wemos D1 Mini&lt;br /&gt;
* connect the other end of dupont headers to oled screen&lt;br /&gt;
* see the below pics to see where the wires are soldered.&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipOGQOS6dypO040hpkg5JxpgiVx4hfn3O9EkiXW5&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipNhJHZNDAGd6mUlpzu_d7v162e096tIUPb5aiYb&lt;br /&gt;
&lt;br /&gt;
== Load Weather Station software ==&lt;br /&gt;
1.  First download and install these two libraries&lt;br /&gt;
&lt;br /&gt;
*https://github.com/ThingPulse/esp8266-oled-ssd1306&lt;br /&gt;
&lt;br /&gt;
*https://github.com/ThingPulse/esp8266-weather-station&lt;br /&gt;
&lt;br /&gt;
**You do this by clicking the green button on the above web pages and click the GREEN &#039;Clone or Download&#039; button and download the zip files for both.&lt;br /&gt;
&lt;br /&gt;
#Next install these libraries into the Arduino Software&lt;br /&gt;
Sketch-&amp;gt;Include Library-&amp;gt;Add .Zip library... then choose the zip file you previously downloaded and install.&lt;br /&gt;
&lt;br /&gt;
Now open the Weather Station Demo code...&lt;br /&gt;
File-&amp;gt;Examples-&amp;gt;ESP8266 Weather Station-&amp;gt;Weather Station Demo&lt;br /&gt;
&lt;br /&gt;
Now you will see the Weather Station Demo code and you will need to replace it with the code here [[WeatherStationDemoCode]] . Copy and paste all of it.&lt;br /&gt;
&lt;br /&gt;
Modify the WIFI settings needed for home and work&lt;br /&gt;
&lt;br /&gt;
At this point you should be able to upload your code to the D1 Mini board and enjoy the weather&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12791</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12791"/>
		<updated>2020-02-28T18:56:00Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* Load Weather Station software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
== Setup the Wemos D1 mini for the Arduino ==&lt;br /&gt;
* good tutorial here https://averagemaker.com/2018/03/wemos-d1-mini-setup.html&lt;br /&gt;
* overview&lt;br /&gt;
** install ch340 serial usb drivers&lt;br /&gt;
** install Arduino IDE - not the web version&lt;br /&gt;
** Add the json string to the board manager URLs in file-&amp;gt;preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
** Set the board in Arduino&lt;br /&gt;
** Get the blink example working&lt;br /&gt;
&lt;br /&gt;
== hook up the screen ==&lt;br /&gt;
* Solder dupont headers to 5V, Gnd, D3 and D4 on the Wemos D1 Mini&lt;br /&gt;
* connect the other end of dupont headers to oled screen&lt;br /&gt;
* see the below pics to see where the wires are soldered.&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipOGQOS6dypO040hpkg5JxpgiVx4hfn3O9EkiXW5&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipNhJHZNDAGd6mUlpzu_d7v162e096tIUPb5aiYb&lt;br /&gt;
&lt;br /&gt;
== Load Weather Station software ==&lt;br /&gt;
1.  First download and install these two libraries&lt;br /&gt;
&lt;br /&gt;
*https://github.com/ThingPulse/esp8266-oled-ssd1306&lt;br /&gt;
&lt;br /&gt;
*https://github.com/ThingPulse/esp8266-weather-station&lt;br /&gt;
&lt;br /&gt;
2.  You do this by clicking the green button on the above web pages and click the GREEN &#039;Clone or Download&#039; button and download the zip files for both.&lt;br /&gt;
&lt;br /&gt;
#Next install these libraries into the Arduino Software&lt;br /&gt;
Sketch-&amp;gt;Include Library-&amp;gt;Add .Zip library... then choose the zip file you previously downloaded and install.&lt;br /&gt;
&lt;br /&gt;
Now open the Weather Station Demo code...&lt;br /&gt;
File-&amp;gt;Examples-&amp;gt;ESP8266 Weather Station-&amp;gt;Weather Station Demo&lt;br /&gt;
&lt;br /&gt;
Now you will see the Weather Station Demo code and you will need to replace it with the code here [[WeatherStationDemoCode]] . Copy and paste all of it.&lt;br /&gt;
&lt;br /&gt;
Modify the WIFI settings needed for home and work&lt;br /&gt;
&lt;br /&gt;
At this point you should be able to upload your code to the D1 Mini board and enjoy the weather&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12790</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12790"/>
		<updated>2020-02-28T18:55:15Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* Load Weather Station software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
== Setup the Wemos D1 mini for the Arduino ==&lt;br /&gt;
* good tutorial here https://averagemaker.com/2018/03/wemos-d1-mini-setup.html&lt;br /&gt;
* overview&lt;br /&gt;
** install ch340 serial usb drivers&lt;br /&gt;
** install Arduino IDE - not the web version&lt;br /&gt;
** Add the json string to the board manager URLs in file-&amp;gt;preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
** Set the board in Arduino&lt;br /&gt;
** Get the blink example working&lt;br /&gt;
&lt;br /&gt;
== hook up the screen ==&lt;br /&gt;
* Solder dupont headers to 5V, Gnd, D3 and D4 on the Wemos D1 Mini&lt;br /&gt;
* connect the other end of dupont headers to oled screen&lt;br /&gt;
* see the below pics to see where the wires are soldered.&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipOGQOS6dypO040hpkg5JxpgiVx4hfn3O9EkiXW5&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipNhJHZNDAGd6mUlpzu_d7v162e096tIUPb5aiYb&lt;br /&gt;
&lt;br /&gt;
== Load Weather Station software ==&lt;br /&gt;
#First download and install these two libraries&lt;br /&gt;
&lt;br /&gt;
##https://github.com/ThingPulse/esp8266-oled-ssd1306&lt;br /&gt;
&lt;br /&gt;
##https://github.com/ThingPulse/esp8266-weather-station&lt;br /&gt;
&lt;br /&gt;
###You do this by clicking the green button on the above web pages and click the GREEN &#039;Clone or Download&#039; button and download the zip files for both.&lt;br /&gt;
&lt;br /&gt;
#Next install these libraries into the Arduino Software&lt;br /&gt;
Sketch-&amp;gt;Include Library-&amp;gt;Add .Zip library... then choose the zip file you previously downloaded and install.&lt;br /&gt;
&lt;br /&gt;
Now open the Weather Station Demo code...&lt;br /&gt;
File-&amp;gt;Examples-&amp;gt;ESP8266 Weather Station-&amp;gt;Weather Station Demo&lt;br /&gt;
&lt;br /&gt;
Now you will see the Weather Station Demo code and you will need to replace it with the code here [[WeatherStationDemoCode]] . Copy and paste all of it.&lt;br /&gt;
&lt;br /&gt;
Modify the WIFI settings needed for home and work&lt;br /&gt;
&lt;br /&gt;
At this point you should be able to upload your code to the D1 Mini board and enjoy the weather&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12789</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12789"/>
		<updated>2020-02-28T18:54:32Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* Load Weather Station software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
== Setup the Wemos D1 mini for the Arduino ==&lt;br /&gt;
* good tutorial here https://averagemaker.com/2018/03/wemos-d1-mini-setup.html&lt;br /&gt;
* overview&lt;br /&gt;
** install ch340 serial usb drivers&lt;br /&gt;
** install Arduino IDE - not the web version&lt;br /&gt;
** Add the json string to the board manager URLs in file-&amp;gt;preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
** Set the board in Arduino&lt;br /&gt;
** Get the blink example working&lt;br /&gt;
&lt;br /&gt;
== hook up the screen ==&lt;br /&gt;
* Solder dupont headers to 5V, Gnd, D3 and D4 on the Wemos D1 Mini&lt;br /&gt;
* connect the other end of dupont headers to oled screen&lt;br /&gt;
* see the below pics to see where the wires are soldered.&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipOGQOS6dypO040hpkg5JxpgiVx4hfn3O9EkiXW5&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipNhJHZNDAGd6mUlpzu_d7v162e096tIUPb5aiYb&lt;br /&gt;
&lt;br /&gt;
== Load Weather Station software ==&lt;br /&gt;
#First download and install these two libraries&lt;br /&gt;
&lt;br /&gt;
**https://github.com/ThingPulse/esp8266-oled-ssd1306&lt;br /&gt;
&lt;br /&gt;
**https://github.com/ThingPulse/esp8266-weather-station&lt;br /&gt;
&lt;br /&gt;
***You do this by clicking the green button on the above web pages and click the GREEN &#039;Clone or Download&#039; button and download the zip files for both.&lt;br /&gt;
&lt;br /&gt;
#Next install these libraries into the Arduino Software&lt;br /&gt;
Sketch-&amp;gt;Include Library-&amp;gt;Add .Zip library... then choose the zip file you previously downloaded and install.&lt;br /&gt;
&lt;br /&gt;
Now open the Weather Station Demo code...&lt;br /&gt;
File-&amp;gt;Examples-&amp;gt;ESP8266 Weather Station-&amp;gt;Weather Station Demo&lt;br /&gt;
&lt;br /&gt;
Now you will see the Weather Station Demo code and you will need to replace it with the code here [[WeatherStationDemoCode]] . Copy and paste all of it.&lt;br /&gt;
&lt;br /&gt;
Modify the WIFI settings needed for home and work&lt;br /&gt;
&lt;br /&gt;
At this point you should be able to upload your code to the D1 Mini board and enjoy the weather&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12788</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12788"/>
		<updated>2020-02-28T18:53:36Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* Load Weather Station software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
== Setup the Wemos D1 mini for the Arduino ==&lt;br /&gt;
* good tutorial here https://averagemaker.com/2018/03/wemos-d1-mini-setup.html&lt;br /&gt;
* overview&lt;br /&gt;
** install ch340 serial usb drivers&lt;br /&gt;
** install Arduino IDE - not the web version&lt;br /&gt;
** Add the json string to the board manager URLs in file-&amp;gt;preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
** Set the board in Arduino&lt;br /&gt;
** Get the blink example working&lt;br /&gt;
&lt;br /&gt;
== hook up the screen ==&lt;br /&gt;
* Solder dupont headers to 5V, Gnd, D3 and D4 on the Wemos D1 Mini&lt;br /&gt;
* connect the other end of dupont headers to oled screen&lt;br /&gt;
* see the below pics to see where the wires are soldered.&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipOGQOS6dypO040hpkg5JxpgiVx4hfn3O9EkiXW5&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipNhJHZNDAGd6mUlpzu_d7v162e096tIUPb5aiYb&lt;br /&gt;
&lt;br /&gt;
== Load Weather Station software ==&lt;br /&gt;
#First download and install these two libraries&lt;br /&gt;
&lt;br /&gt;
*https://github.com/ThingPulse/esp8266-oled-ssd1306&lt;br /&gt;
&lt;br /&gt;
*https://github.com/ThingPulse/esp8266-weather-station&lt;br /&gt;
&lt;br /&gt;
You do this by clicking the green button on the above web pages and click the GREEN &#039;Clone or Download&#039; button and download the zip files for both.&lt;br /&gt;
&lt;br /&gt;
Next install these libraries into the Arduino Software&lt;br /&gt;
Sketch-&amp;gt;Include Library-&amp;gt;Add .Zip library... then choose the zip file you previously downloaded and install.&lt;br /&gt;
&lt;br /&gt;
Now open the Weather Station Demo code...&lt;br /&gt;
File-&amp;gt;Examples-&amp;gt;ESP8266 Weather Station-&amp;gt;Weather Station Demo&lt;br /&gt;
&lt;br /&gt;
Now you will see the Weather Station Demo code and you will need to replace it with the code here [[WeatherStationDemoCode]] . Copy and paste all of it.&lt;br /&gt;
&lt;br /&gt;
Modify the WIFI settings needed for home and work&lt;br /&gt;
&lt;br /&gt;
At this point you should be able to upload your code to the D1 Mini board and enjoy the weather&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12787</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12787"/>
		<updated>2020-02-28T18:53:08Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* Setup the Wemos D1 mini for the Arduino */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
== Setup the Wemos D1 mini for the Arduino ==&lt;br /&gt;
* good tutorial here https://averagemaker.com/2018/03/wemos-d1-mini-setup.html&lt;br /&gt;
* overview&lt;br /&gt;
** install ch340 serial usb drivers&lt;br /&gt;
** install Arduino IDE - not the web version&lt;br /&gt;
** Add the json string to the board manager URLs in file-&amp;gt;preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
** Set the board in Arduino&lt;br /&gt;
** Get the blink example working&lt;br /&gt;
&lt;br /&gt;
== hook up the screen ==&lt;br /&gt;
* Solder dupont headers to 5V, Gnd, D3 and D4 on the Wemos D1 Mini&lt;br /&gt;
* connect the other end of dupont headers to oled screen&lt;br /&gt;
* see the below pics to see where the wires are soldered.&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipOGQOS6dypO040hpkg5JxpgiVx4hfn3O9EkiXW5&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipNhJHZNDAGd6mUlpzu_d7v162e096tIUPb5aiYb&lt;br /&gt;
&lt;br /&gt;
== Load Weather Station software ==&lt;br /&gt;
First download and install these two libraries&lt;br /&gt;
&lt;br /&gt;
*https://github.com/ThingPulse/esp8266-oled-ssd1306&lt;br /&gt;
&lt;br /&gt;
*https://github.com/ThingPulse/esp8266-weather-station&lt;br /&gt;
&lt;br /&gt;
You do this by clicking the green button on the above web pages and click the GREEN &#039;Clone or Download&#039; button and download the zip files for both.&lt;br /&gt;
&lt;br /&gt;
Next install these libraries into the Arduino Software&lt;br /&gt;
Sketch-&amp;gt;Include Library-&amp;gt;Add .Zip library... then choose the zip file you previously downloaded and install.&lt;br /&gt;
&lt;br /&gt;
Now open the Weather Station Demo code...&lt;br /&gt;
File-&amp;gt;Examples-&amp;gt;ESP8266 Weather Station-&amp;gt;Weather Station Demo&lt;br /&gt;
&lt;br /&gt;
Now you will see the Weather Station Demo code and you will need to replace it with the code here [[WeatherStationDemoCode]] . Copy and paste all of it.&lt;br /&gt;
&lt;br /&gt;
Modify the WIFI settings needed for home and work&lt;br /&gt;
&lt;br /&gt;
At this point you should be able to upload your code to the D1 Mini board and enjoy the weather&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12786</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12786"/>
		<updated>2020-02-28T18:52:37Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* Load Weather Station software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
== Setup the Wemos D1 mini for the Arduino ==&lt;br /&gt;
** good tutorial here https://averagemaker.com/2018/03/wemos-d1-mini-setup.html&lt;br /&gt;
** overview&lt;br /&gt;
*** install ch340 serial usb drivers&lt;br /&gt;
*** install Arduino IDE - not the web version&lt;br /&gt;
*** Add the json string to the board manager URLs in file-&amp;gt;preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
*** Set the board in Arduino&lt;br /&gt;
*** Get the blink example working&lt;br /&gt;
&lt;br /&gt;
== hook up the screen ==&lt;br /&gt;
* Solder dupont headers to 5V, Gnd, D3 and D4 on the Wemos D1 Mini&lt;br /&gt;
* connect the other end of dupont headers to oled screen&lt;br /&gt;
* see the below pics to see where the wires are soldered.&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipOGQOS6dypO040hpkg5JxpgiVx4hfn3O9EkiXW5&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipNhJHZNDAGd6mUlpzu_d7v162e096tIUPb5aiYb&lt;br /&gt;
&lt;br /&gt;
== Load Weather Station software ==&lt;br /&gt;
First download and install these two libraries&lt;br /&gt;
&lt;br /&gt;
*https://github.com/ThingPulse/esp8266-oled-ssd1306&lt;br /&gt;
&lt;br /&gt;
*https://github.com/ThingPulse/esp8266-weather-station&lt;br /&gt;
&lt;br /&gt;
You do this by clicking the green button on the above web pages and click the GREEN &#039;Clone or Download&#039; button and download the zip files for both.&lt;br /&gt;
&lt;br /&gt;
Next install these libraries into the Arduino Software&lt;br /&gt;
Sketch-&amp;gt;Include Library-&amp;gt;Add .Zip library... then choose the zip file you previously downloaded and install.&lt;br /&gt;
&lt;br /&gt;
Now open the Weather Station Demo code...&lt;br /&gt;
File-&amp;gt;Examples-&amp;gt;ESP8266 Weather Station-&amp;gt;Weather Station Demo&lt;br /&gt;
&lt;br /&gt;
Now you will see the Weather Station Demo code and you will need to replace it with the code here [[WeatherStationDemoCode]] . Copy and paste all of it.&lt;br /&gt;
&lt;br /&gt;
Modify the WIFI settings needed for home and work&lt;br /&gt;
&lt;br /&gt;
At this point you should be able to upload your code to the D1 Mini board and enjoy the weather&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12785</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12785"/>
		<updated>2020-02-28T18:52:07Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* hook up the screen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
== Setup the Wemos D1 mini for the Arduino ==&lt;br /&gt;
** good tutorial here https://averagemaker.com/2018/03/wemos-d1-mini-setup.html&lt;br /&gt;
** overview&lt;br /&gt;
*** install ch340 serial usb drivers&lt;br /&gt;
*** install Arduino IDE - not the web version&lt;br /&gt;
*** Add the json string to the board manager URLs in file-&amp;gt;preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
*** Set the board in Arduino&lt;br /&gt;
*** Get the blink example working&lt;br /&gt;
&lt;br /&gt;
== hook up the screen ==&lt;br /&gt;
* Solder dupont headers to 5V, Gnd, D3 and D4 on the Wemos D1 Mini&lt;br /&gt;
* connect the other end of dupont headers to oled screen&lt;br /&gt;
* see the below pics to see where the wires are soldered.&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipOGQOS6dypO040hpkg5JxpgiVx4hfn3O9EkiXW5&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipNhJHZNDAGd6mUlpzu_d7v162e096tIUPb5aiYb&lt;br /&gt;
&lt;br /&gt;
== Load Weather Station software ==&lt;br /&gt;
First download and install these two libraries&lt;br /&gt;
&lt;br /&gt;
https://github.com/ThingPulse/esp8266-oled-ssd1306&lt;br /&gt;
&lt;br /&gt;
https://github.com/ThingPulse/esp8266-weather-station&lt;br /&gt;
&lt;br /&gt;
You do this by clicking the green button on the above web pages and click the GREEN &#039;Clone or Download&#039; button and download the zip files for both.&lt;br /&gt;
&lt;br /&gt;
Next install these libraries into the Arduino Software&lt;br /&gt;
Sketch-&amp;gt;Include Library-&amp;gt;Add .Zip library... then choose the zip file you previously downloaded and install.&lt;br /&gt;
&lt;br /&gt;
Now open the Weather Station Demo code...&lt;br /&gt;
File-&amp;gt;Examples-&amp;gt;ESP8266 Weather Station-&amp;gt;Weather Station Demo&lt;br /&gt;
&lt;br /&gt;
Now you will see the Weather Station Demo code and you will need to replace it with the code here [[WeatherStationDemoCode]] . Copy and paste all of it.&lt;br /&gt;
&lt;br /&gt;
Modify the WIFI settings needed for home and work&lt;br /&gt;
&lt;br /&gt;
At this point you should be able to upload your code to the D1 Mini board and enjoy the weather&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12784</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12784"/>
		<updated>2020-02-28T18:50:57Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* hook up the screen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
== Setup the Wemos D1 mini for the Arduino ==&lt;br /&gt;
** good tutorial here https://averagemaker.com/2018/03/wemos-d1-mini-setup.html&lt;br /&gt;
** overview&lt;br /&gt;
*** install ch340 serial usb drivers&lt;br /&gt;
*** install Arduino IDE - not the web version&lt;br /&gt;
*** Add the json string to the board manager URLs in file-&amp;gt;preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
*** Set the board in Arduino&lt;br /&gt;
*** Get the blink example working&lt;br /&gt;
&lt;br /&gt;
== hook up the screen ==&lt;br /&gt;
* Solder dupont headers to 5V, Gnd, D3 and D4 on the Wemos D1 Mini&lt;br /&gt;
* connect the other end of dupont headers to oled screen&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipOGQOS6dypO040hpkg5JxpgiVx4hfn3O9EkiXW5&lt;br /&gt;
&lt;br /&gt;
https://photos.google.com/photo/AF1QipNhJHZNDAGd6mUlpzu_d7v162e096tIUPb5aiYb&lt;br /&gt;
&lt;br /&gt;
== Load Weather Station software ==&lt;br /&gt;
First download and install these two libraries&lt;br /&gt;
&lt;br /&gt;
https://github.com/ThingPulse/esp8266-oled-ssd1306&lt;br /&gt;
&lt;br /&gt;
https://github.com/ThingPulse/esp8266-weather-station&lt;br /&gt;
&lt;br /&gt;
You do this by clicking the green button on the above web pages and click the GREEN &#039;Clone or Download&#039; button and download the zip files for both.&lt;br /&gt;
&lt;br /&gt;
Next install these libraries into the Arduino Software&lt;br /&gt;
Sketch-&amp;gt;Include Library-&amp;gt;Add .Zip library... then choose the zip file you previously downloaded and install.&lt;br /&gt;
&lt;br /&gt;
Now open the Weather Station Demo code...&lt;br /&gt;
File-&amp;gt;Examples-&amp;gt;ESP8266 Weather Station-&amp;gt;Weather Station Demo&lt;br /&gt;
&lt;br /&gt;
Now you will see the Weather Station Demo code and you will need to replace it with the code here [[WeatherStationDemoCode]] . Copy and paste all of it.&lt;br /&gt;
&lt;br /&gt;
Modify the WIFI settings needed for home and work&lt;br /&gt;
&lt;br /&gt;
At this point you should be able to upload your code to the D1 Mini board and enjoy the weather&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12783</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12783"/>
		<updated>2020-02-26T01:51:17Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
== Setup the Wemos D1 mini for the Arduino ==&lt;br /&gt;
** good tutorial here https://averagemaker.com/2018/03/wemos-d1-mini-setup.html&lt;br /&gt;
** overview&lt;br /&gt;
*** install ch340 serial usb drivers&lt;br /&gt;
*** install Arduino IDE - not the web version&lt;br /&gt;
*** Add the json string to the board manager URLs in file-&amp;gt;preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
*** Set the board in Arduino&lt;br /&gt;
*** Get the blink example working&lt;br /&gt;
&lt;br /&gt;
== hook up the screen ==&lt;br /&gt;
* Solder dupont headers to 5V, Gnd, D3 and D4 on the Wemos D1 Mini&lt;br /&gt;
* connect the other end of dupont headers to oled screen&lt;br /&gt;
&lt;br /&gt;
== Load Weather Station software ==&lt;br /&gt;
First download and install these two libraries&lt;br /&gt;
&lt;br /&gt;
https://github.com/ThingPulse/esp8266-oled-ssd1306&lt;br /&gt;
&lt;br /&gt;
https://github.com/ThingPulse/esp8266-weather-station&lt;br /&gt;
&lt;br /&gt;
You do this by clicking the green button on the above web pages and click the GREEN &#039;Clone or Download&#039; button and download the zip files for both.&lt;br /&gt;
&lt;br /&gt;
Next install these libraries into the Arduino Software&lt;br /&gt;
Sketch-&amp;gt;Include Library-&amp;gt;Add .Zip library... then choose the zip file you previously downloaded and install.&lt;br /&gt;
&lt;br /&gt;
Now open the Weather Station Demo code...&lt;br /&gt;
File-&amp;gt;Examples-&amp;gt;ESP8266 Weather Station-&amp;gt;Weather Station Demo&lt;br /&gt;
&lt;br /&gt;
Now you will see the Weather Station Demo code and you will need to replace it with the code here [[WeatherStationDemoCode]] . Copy and paste all of it.&lt;br /&gt;
&lt;br /&gt;
Modify the WIFI settings needed for home and work&lt;br /&gt;
&lt;br /&gt;
At this point you should be able to upload your code to the D1 Mini board and enjoy the weather&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12782</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12782"/>
		<updated>2020-02-26T01:50:52Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* Load Weather Station software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
== Setup the Wemos D1 mini for the Arduino ==&lt;br /&gt;
** good tutorial here https://averagemaker.com/2018/03/wemos-d1-mini-setup.html&lt;br /&gt;
** overview&lt;br /&gt;
*** install ch340 serial usb drivers&lt;br /&gt;
*** install Arduino IDE - not the web version&lt;br /&gt;
*** Add the json string to the board manager URLs in file-&amp;gt;preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
*** Set the board in Arduino&lt;br /&gt;
*** Get the blink example working&lt;br /&gt;
&lt;br /&gt;
== hook up the screen ==&lt;br /&gt;
* Solder dupont headers to 5V, Gnd, D3 and D4 on the Wemos D1 Mini&lt;br /&gt;
* connect the other end of dupont headers to oled screen&lt;br /&gt;
&lt;br /&gt;
== Load Weather Station software ==&lt;br /&gt;
First download and install these two libraries&lt;br /&gt;
&lt;br /&gt;
https://github.com/ThingPulse/esp8266-oled-ssd1306&lt;br /&gt;
&lt;br /&gt;
https://github.com/ThingPulse/esp8266-weather-station&lt;br /&gt;
&lt;br /&gt;
You do this by clicking the green button on the above web pages and click the GREEN &#039;Clone or Download&#039; button and download the zip files for both.&lt;br /&gt;
&lt;br /&gt;
Next install these libraries into the Arduino Software&lt;br /&gt;
Sketch-&amp;gt;Include Library-&amp;gt;Add .Zip library... then choose the zip file you previously downloaded and install.&lt;br /&gt;
&lt;br /&gt;
Now open the Weather Station Demo code...&lt;br /&gt;
File-&amp;gt;Examples-&amp;gt;ESP8266 Weather Station-&amp;gt;Weather Station Demo&lt;br /&gt;
&lt;br /&gt;
Now you will see the Weather Station Demo code and you will need to replace it with the code here [[WeatherStationDemoCode]] . Copy and paste all of it.&lt;br /&gt;
&lt;br /&gt;
Modify the WIFI settings needed for home and work&lt;br /&gt;
&lt;br /&gt;
At this point you should be able to upload your code to the D1 Mini board and enjoy the weather&lt;br /&gt;
&lt;br /&gt;
= Resources and Links = &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Code =&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12781</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12781"/>
		<updated>2020-02-26T01:49:07Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* Load Weather Station software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
== Setup the Wemos D1 mini for the Arduino ==&lt;br /&gt;
** good tutorial here https://averagemaker.com/2018/03/wemos-d1-mini-setup.html&lt;br /&gt;
** overview&lt;br /&gt;
*** install ch340 serial usb drivers&lt;br /&gt;
*** install Arduino IDE - not the web version&lt;br /&gt;
*** Add the json string to the board manager URLs in file-&amp;gt;preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
*** Set the board in Arduino&lt;br /&gt;
*** Get the blink example working&lt;br /&gt;
&lt;br /&gt;
== hook up the screen ==&lt;br /&gt;
* Solder dupont headers to 5V, Gnd, D3 and D4 on the Wemos D1 Mini&lt;br /&gt;
* connect the other end of dupont headers to oled screen&lt;br /&gt;
&lt;br /&gt;
== Load Weather Station software ==&lt;br /&gt;
First download and install these two libraries&lt;br /&gt;
&lt;br /&gt;
https://github.com/ThingPulse/esp8266-oled-ssd1306&lt;br /&gt;
&lt;br /&gt;
https://github.com/ThingPulse/esp8266-weather-station&lt;br /&gt;
&lt;br /&gt;
You do this by clicking the green button on the above web pages and click the GREEN &#039;Clone or Download&#039; button and download the zip files for both.&lt;br /&gt;
&lt;br /&gt;
Next install these libraries into the Arduino Software&lt;br /&gt;
Sketch-&amp;gt;Include Library-&amp;gt;Add .Zip library... then choose the zip file you previously downloaded and install.&lt;br /&gt;
&lt;br /&gt;
Now open the Weather Station Demo code...&lt;br /&gt;
File-&amp;gt;Examples-&amp;gt;ESP8266 Weather Station-&amp;gt;Weather Station Demo&lt;br /&gt;
&lt;br /&gt;
Now you will see the Weather Station Demo code and you will need to replace it with the code here [[WeatherStationDemoCode]] . Copy and paste all of it.&lt;br /&gt;
&lt;br /&gt;
= Resources and Links = &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Code =&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=WeatherStationDemoCode&amp;diff=12780</id>
		<title>WeatherStationDemoCode</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=WeatherStationDemoCode&amp;diff=12780"/>
		<updated>2020-02-26T01:48:10Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/**The MIT License (MIT)&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2018 by Daniel Eichhorn - ThingPulse&lt;br /&gt;
&lt;br /&gt;
Permission is hereby granted, free of charge, to any person obtaining a copy&lt;br /&gt;
of this software and associated documentation files (the &amp;quot;Software&amp;quot;), to deal&lt;br /&gt;
in the Software without restriction, including without limitation the rights&lt;br /&gt;
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell&lt;br /&gt;
copies of the Software, and to permit persons to whom the Software is&lt;br /&gt;
furnished to do so, subject to the following conditions:&lt;br /&gt;
&lt;br /&gt;
The above copyright notice and this permission notice shall be included in all&lt;br /&gt;
copies or substantial portions of the Software.&lt;br /&gt;
&lt;br /&gt;
THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR&lt;br /&gt;
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&lt;br /&gt;
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE&lt;br /&gt;
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER&lt;br /&gt;
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,&lt;br /&gt;
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE&lt;br /&gt;
SOFTWARE.&lt;br /&gt;
&lt;br /&gt;
See more at https://thingpulse.com&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* &lt;br /&gt;
 *  this code has been modified for the LVL1 Hackerspace&lt;br /&gt;
 *  workshop on making a weather station that is &lt;br /&gt;
 *  specific to Louisville, KY and also has the ability to&lt;br /&gt;
 *  connect to 3 specific WIFI nets&lt;br /&gt;
 *  Also this code uses the 1.3&amp;quot;oled that uses the sh1106Wire library&lt;br /&gt;
 *  Brian Wagner 2/23/20&lt;br /&gt;
 *  &lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;ESPWiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESPHTTPClient.h&amp;gt;&lt;br /&gt;
#include &amp;lt;JsonListener.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// time&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;                       // time() ctime()&lt;br /&gt;
#include &amp;lt;sys/time.h&amp;gt;                   // struct timeval&lt;br /&gt;
#include &amp;lt;coredecls.h&amp;gt;                  // settimeofday_cb()&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;SSD1306Wire.h&amp;quot;&lt;br /&gt;
#include &amp;quot;OLEDDisplayUi.h&amp;quot;&lt;br /&gt;
#include &amp;quot;Wire.h&amp;quot;&lt;br /&gt;
#include &amp;quot;OpenWeatherMapCurrent.h&amp;quot;&lt;br /&gt;
#include &amp;quot;OpenWeatherMapForecast.h&amp;quot;&lt;br /&gt;
#include &amp;quot;WeatherStationFonts.h&amp;quot;&lt;br /&gt;
#include &amp;quot;WeatherStationImages.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;SH1106Wire.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/***************************&lt;br /&gt;
 * Begin Settings&lt;br /&gt;
 **************************/&lt;br /&gt;
&lt;br /&gt;
// WIFI&lt;br /&gt;
const char* WIFI_SSID1 = &amp;quot;lvl1&amp;quot;;&lt;br /&gt;
const char* WIFI_PWD1 = &amp;quot;whatpassword&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//change these to your work and/or home wifi networks&lt;br /&gt;
const char* WIFI_SSID2 = &amp;quot;ssd1&amp;quot;;&lt;br /&gt;
const char* WIFI_PWD2 = &amp;quot;pass2&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
const char* WIFI_SSID3 = &amp;quot;ssd2&amp;quot;;&lt;br /&gt;
const char* WIFI_PWD3 = &amp;quot;pass2&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#define TZ              -6       // (utc+) TZ in hours&lt;br /&gt;
//-6 is eastern... Louisville time&lt;br /&gt;
#define H24              1       //0 if 24 hour 1 if not&lt;br /&gt;
&lt;br /&gt;
#define DST_MN          60      // use 60mn for summer time in some countries&lt;br /&gt;
&lt;br /&gt;
// Setup&lt;br /&gt;
const int UPDATE_INTERVAL_SECS = 20 * 60; // Update every 20 minutes&lt;br /&gt;
&lt;br /&gt;
// Display Settings&lt;br /&gt;
const int I2C_DISPLAY_ADDRESS = 0x3c;&lt;br /&gt;
#if defined(ESP8266)&lt;br /&gt;
const int SDA_PIN = D3;&lt;br /&gt;
const int SDC_PIN = D4;&lt;br /&gt;
#else&lt;br /&gt;
const int SDA_PIN = 5; //D3;&lt;br /&gt;
const int SDC_PIN = 4; //D4;&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// OpenWeatherMap Settings&lt;br /&gt;
// Sign up here to get an API key:&lt;br /&gt;
// https://docs.thingpulse.com/how-tos/openweathermap-key/&lt;br /&gt;
String OPEN_WEATHER_MAP_APP_ID = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
/*&lt;br /&gt;
Go to https://openweathermap.org/find?q= and search for a location. Go through the&lt;br /&gt;
result set and select the entry closest to the actual location you want to display &lt;br /&gt;
data for. It&#039;ll be a URL like https://openweathermap.org/city/2657896. The number&lt;br /&gt;
at the end is what you assign to the constant below.&lt;br /&gt;
 */&lt;br /&gt;
String OPEN_WEATHER_MAP_LOCATION_ID = &amp;quot;4299276&amp;quot;; //louisville&lt;br /&gt;
&lt;br /&gt;
// Pick a language code from this list:&lt;br /&gt;
// Arabic - ar, Bulgarian - bg, Catalan - ca, Czech - cz, German - de, Greek - el,&lt;br /&gt;
// English - en, Persian (Farsi) - fa, Finnish - fi, French - fr, Galician - gl,&lt;br /&gt;
// Croatian - hr, Hungarian - hu, Italian - it, Japanese - ja, Korean - kr,&lt;br /&gt;
// Latvian - la, Lithuanian - lt, Macedonian - mk, Dutch - nl, Polish - pl,&lt;br /&gt;
// Portuguese - pt, Romanian - ro, Russian - ru, Swedish - se, Slovak - sk,&lt;br /&gt;
// Slovenian - sl, Spanish - es, Turkish - tr, Ukrainian - ua, Vietnamese - vi,&lt;br /&gt;
// Chinese Simplified - zh_cn, Chinese Traditional - zh_tw.&lt;br /&gt;
String OPEN_WEATHER_MAP_LANGUAGE = &amp;quot;en&amp;quot;;&lt;br /&gt;
const uint8_t MAX_FORECASTS = 4;&lt;br /&gt;
&lt;br /&gt;
const boolean IS_METRIC = false;&lt;br /&gt;
&lt;br /&gt;
// Adjust according to your language&lt;br /&gt;
const String WDAY_NAMES[] = {&amp;quot;SUN&amp;quot;, &amp;quot;MON&amp;quot;, &amp;quot;TUE&amp;quot;, &amp;quot;WED&amp;quot;, &amp;quot;THU&amp;quot;, &amp;quot;FRI&amp;quot;, &amp;quot;SAT&amp;quot;};&lt;br /&gt;
const String MONTH_NAMES[] = {&amp;quot;JAN&amp;quot;, &amp;quot;FEB&amp;quot;, &amp;quot;MAR&amp;quot;, &amp;quot;APR&amp;quot;, &amp;quot;MAY&amp;quot;, &amp;quot;JUN&amp;quot;, &amp;quot;JUL&amp;quot;, &amp;quot;AUG&amp;quot;, &amp;quot;SEP&amp;quot;, &amp;quot;OCT&amp;quot;, &amp;quot;NOV&amp;quot;, &amp;quot;DEC&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
/***************************&lt;br /&gt;
 * End Settings&lt;br /&gt;
 **************************/&lt;br /&gt;
 // Initialize the oled display for address 0x3c&lt;br /&gt;
 // sda-pin=14 and sdc-pin=12&lt;br /&gt;
 SH1106Wire     display(I2C_DISPLAY_ADDRESS, SDA_PIN, SDC_PIN);&lt;br /&gt;
 OLEDDisplayUi   ui( &amp;amp;display );&lt;br /&gt;
&lt;br /&gt;
OpenWeatherMapCurrentData currentWeather;&lt;br /&gt;
OpenWeatherMapCurrent currentWeatherClient;&lt;br /&gt;
&lt;br /&gt;
OpenWeatherMapForecastData forecasts[MAX_FORECASTS];&lt;br /&gt;
OpenWeatherMapForecast forecastClient;&lt;br /&gt;
&lt;br /&gt;
#define TZ_MN           ((TZ)*60)&lt;br /&gt;
#define TZ_SEC          ((TZ)*3600)&lt;br /&gt;
#define DST_SEC         ((DST_MN)*60)&lt;br /&gt;
time_t now;&lt;br /&gt;
&lt;br /&gt;
// flag changed in the ticker function every 10 minutes&lt;br /&gt;
bool readyForWeatherUpdate = false;&lt;br /&gt;
&lt;br /&gt;
String lastUpdate = &amp;quot;--&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
long timeSinceLastWUpdate = 0;&lt;br /&gt;
&lt;br /&gt;
//declaring prototypes&lt;br /&gt;
void drawProgress(OLEDDisplay *display, int percentage, String label);&lt;br /&gt;
void updateData(OLEDDisplay *display);&lt;br /&gt;
void drawDateTime(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);&lt;br /&gt;
void drawCurrentWeather(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);&lt;br /&gt;
void drawForecast(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);&lt;br /&gt;
void drawForecastDetails(OLEDDisplay *display, int x, int y, int dayIndex);&lt;br /&gt;
void drawHeaderOverlay(OLEDDisplay *display, OLEDDisplayUiState* state);&lt;br /&gt;
void setReadyForWeatherUpdate();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Add frames&lt;br /&gt;
// this array keeps function pointers to all frames&lt;br /&gt;
// frames are the single views that slide from right to left&lt;br /&gt;
FrameCallback frames[] = { drawDateTime, drawCurrentWeather, drawForecast };&lt;br /&gt;
int numberOfFrames = 3;&lt;br /&gt;
&lt;br /&gt;
OverlayCallback overlays[] = { drawHeaderOverlay };&lt;br /&gt;
int numberOfOverlays = 1;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();&lt;br /&gt;
&lt;br /&gt;
  // initialize dispaly&lt;br /&gt;
  display.init();&lt;br /&gt;
  display.clear();&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  //display.flipScreenVertically();&lt;br /&gt;
  display.setFont(ArialMT_Plain_10);&lt;br /&gt;
  display.setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display.setContrast(255);&lt;br /&gt;
&lt;br /&gt;
  WiFi.begin(WIFI_SSID1, WIFI_PWD1);&lt;br /&gt;
  String wifiMsg = &amp;quot;Trying wifi 1&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  int counter = 0;&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    display.clear();&lt;br /&gt;
    display.drawString(64, 10, wifiMsg );&lt;br /&gt;
    display.drawXbm(46, 30, 8, 8, counter % 3 == 0 ? activeSymbole : inactiveSymbole);&lt;br /&gt;
    display.drawXbm(60, 30, 8, 8, counter % 3 == 1 ? activeSymbole : inactiveSymbole);&lt;br /&gt;
    display.drawXbm(74, 30, 8, 8, counter % 3 == 2 ? activeSymbole : inactiveSymbole);&lt;br /&gt;
    display.display();&lt;br /&gt;
&lt;br /&gt;
    counter++;&lt;br /&gt;
    if (counter ==15) {&lt;br /&gt;
        WiFi.begin(WIFI_SSID2, WIFI_PWD2);&lt;br /&gt;
        wifiMsg = &amp;quot;Trying wifi 2&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if (counter == 30) {&lt;br /&gt;
        WiFi.begin(WIFI_SSID3, WIFI_PWD3);&lt;br /&gt;
        wifiMsg = &amp;quot;Trying wifi 3&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if (counter == 45) {&lt;br /&gt;
        WiFi.begin(WIFI_SSID1, WIFI_PWD1);&lt;br /&gt;
        wifiMsg = &amp;quot;Trying wifi 1&amp;quot;;&lt;br /&gt;
        counter = 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
  // Get time from network time service&lt;br /&gt;
  configTime(TZ_SEC, DST_SEC, &amp;quot;pool.ntp.org&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  ui.setTargetFPS(30);&lt;br /&gt;
&lt;br /&gt;
  ui.setActiveSymbol(activeSymbole);&lt;br /&gt;
  ui.setInactiveSymbol(inactiveSymbole);&lt;br /&gt;
&lt;br /&gt;
  // You can change this to&lt;br /&gt;
  // TOP, LEFT, BOTTOM, RIGHT&lt;br /&gt;
  ui.setIndicatorPosition(BOTTOM);&lt;br /&gt;
&lt;br /&gt;
  // Defines where the first frame is located in the bar.&lt;br /&gt;
  ui.setIndicatorDirection(LEFT_RIGHT);&lt;br /&gt;
&lt;br /&gt;
  // You can change the transition that is used&lt;br /&gt;
  // SLIDE_LEFT, SLIDE_RIGHT, SLIDE_TOP, SLIDE_DOWN&lt;br /&gt;
  ui.setFrameAnimation(SLIDE_LEFT);&lt;br /&gt;
&lt;br /&gt;
  ui.setFrames(frames, numberOfFrames);&lt;br /&gt;
&lt;br /&gt;
  ui.setOverlays(overlays, numberOfOverlays);&lt;br /&gt;
&lt;br /&gt;
  // Inital UI takes care of initalising the display too.&lt;br /&gt;
  ui.init();&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  updateData(&amp;amp;display);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
  if (millis() - timeSinceLastWUpdate &amp;gt; (1000L*UPDATE_INTERVAL_SECS)) {&lt;br /&gt;
    setReadyForWeatherUpdate();&lt;br /&gt;
    timeSinceLastWUpdate = millis();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (readyForWeatherUpdate &amp;amp;&amp;amp; ui.getUiState()-&amp;gt;frameState == FIXED) {&lt;br /&gt;
    updateData(&amp;amp;display);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  int remainingTimeBudget = ui.update();&lt;br /&gt;
&lt;br /&gt;
  if (remainingTimeBudget &amp;gt; 0) {&lt;br /&gt;
    // You can do some work here&lt;br /&gt;
    // Don&#039;t do stuff if you are below your&lt;br /&gt;
    // time budget.&lt;br /&gt;
    delay(remainingTimeBudget);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawProgress(OLEDDisplay *display, int percentage, String label) {&lt;br /&gt;
  display-&amp;gt;clear();&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  display-&amp;gt;drawString(64, 10, label);&lt;br /&gt;
  display-&amp;gt;drawProgressBar(2, 28, 124, 10, percentage);&lt;br /&gt;
  display-&amp;gt;display();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void updateData(OLEDDisplay *display) {&lt;br /&gt;
  drawProgress(display, 10, &amp;quot;Updating time...&amp;quot;);&lt;br /&gt;
  drawProgress(display, 30, &amp;quot;Updating weather...&amp;quot;);&lt;br /&gt;
  currentWeatherClient.setMetric(IS_METRIC);&lt;br /&gt;
  currentWeatherClient.setLanguage(OPEN_WEATHER_MAP_LANGUAGE);&lt;br /&gt;
  currentWeatherClient.updateCurrentById(&amp;amp;currentWeather, OPEN_WEATHER_MAP_APP_ID, OPEN_WEATHER_MAP_LOCATION_ID);&lt;br /&gt;
  drawProgress(display, 50, &amp;quot;Updating forecasts...&amp;quot;);&lt;br /&gt;
  forecastClient.setMetric(IS_METRIC);&lt;br /&gt;
  forecastClient.setLanguage(OPEN_WEATHER_MAP_LANGUAGE);&lt;br /&gt;
  uint8_t allowedHours[] = {12};&lt;br /&gt;
  forecastClient.setAllowedHours(allowedHours, sizeof(allowedHours));&lt;br /&gt;
  forecastClient.updateForecastsById(forecasts, OPEN_WEATHER_MAP_APP_ID, OPEN_WEATHER_MAP_LOCATION_ID, MAX_FORECASTS);&lt;br /&gt;
&lt;br /&gt;
  readyForWeatherUpdate = false;&lt;br /&gt;
  drawProgress(display, 100, &amp;quot;Done...&amp;quot;);&lt;br /&gt;
  delay(1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void drawDateTime(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {&lt;br /&gt;
  now = time(nullptr);&lt;br /&gt;
  struct tm* timeInfo;&lt;br /&gt;
  timeInfo = localtime(&amp;amp;now);&lt;br /&gt;
  char buff[16];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  String date = WDAY_NAMES[timeInfo-&amp;gt;tm_wday];&lt;br /&gt;
&lt;br /&gt;
  sprintf_P(buff, PSTR(&amp;quot;%s, %02d/%02d/%04d&amp;quot;), WDAY_NAMES[timeInfo-&amp;gt;tm_wday].c_str(), timeInfo-&amp;gt;tm_mday, timeInfo-&amp;gt;tm_mon+1, timeInfo-&amp;gt;tm_year + 1900);&lt;br /&gt;
  display-&amp;gt;drawString(64 + x, 5 + y, String(buff));&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_24);&lt;br /&gt;
&lt;br /&gt;
  int hour = timeInfo-&amp;gt;tm_hour;&lt;br /&gt;
  if (H24 == 1 &amp;amp;&amp;amp; hour &amp;gt; 12){&lt;br /&gt;
    hour = hour - 12;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  sprintf_P(buff, PSTR(&amp;quot;%02d:%02d:%02d&amp;quot;), hour, timeInfo-&amp;gt;tm_min, timeInfo-&amp;gt;tm_sec);&lt;br /&gt;
  display-&amp;gt;drawString(64 + x, 15 + y, String(buff));&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_LEFT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawCurrentWeather(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display-&amp;gt;drawString(64 + x, 38 + y, currentWeather.description);&lt;br /&gt;
&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_24);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_LEFT);&lt;br /&gt;
  String temp = String(currentWeather.temp, 1) + (IS_METRIC ? &amp;quot;°C&amp;quot; : &amp;quot;°F&amp;quot;);&lt;br /&gt;
  display-&amp;gt;drawString(60 + x, 5 + y, temp);&lt;br /&gt;
&lt;br /&gt;
  display-&amp;gt;setFont(Meteocons_Plain_36);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display-&amp;gt;drawString(32 + x, 0 + y, currentWeather.iconMeteoCon);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void drawForecast(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {&lt;br /&gt;
  drawForecastDetails(display, x, y, 0);&lt;br /&gt;
  drawForecastDetails(display, x + 44, y, 1);&lt;br /&gt;
  drawForecastDetails(display, x + 88, y, 2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawForecastDetails(OLEDDisplay *display, int x, int y, int dayIndex) {&lt;br /&gt;
  time_t observationTimestamp = forecasts[dayIndex].observationTime;&lt;br /&gt;
  struct tm* timeInfo;&lt;br /&gt;
  timeInfo = localtime(&amp;amp;observationTimestamp);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  display-&amp;gt;drawString(x + 20, y, WDAY_NAMES[timeInfo-&amp;gt;tm_wday]);&lt;br /&gt;
&lt;br /&gt;
  display-&amp;gt;setFont(Meteocons_Plain_21);&lt;br /&gt;
  display-&amp;gt;drawString(x + 20, y + 12, forecasts[dayIndex].iconMeteoCon);&lt;br /&gt;
  String temp = String(forecasts[dayIndex].temp, 0) + (IS_METRIC ? &amp;quot;°C&amp;quot; : &amp;quot;°F&amp;quot;);&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  display-&amp;gt;drawString(x + 20, y + 34, temp);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_LEFT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawHeaderOverlay(OLEDDisplay *display, OLEDDisplayUiState* state) {&lt;br /&gt;
  now = time(nullptr);&lt;br /&gt;
  struct tm* timeInfo;&lt;br /&gt;
  timeInfo = localtime(&amp;amp;now);&lt;br /&gt;
  char buff[14];&lt;br /&gt;
&lt;br /&gt;
  int hour = timeInfo-&amp;gt;tm_hour;&lt;br /&gt;
  if (H24 == 1 &amp;amp;&amp;amp; hour &amp;gt; 12){&lt;br /&gt;
    hour = hour - 12;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  sprintf_P(buff, PSTR(&amp;quot;%02d:%02d&amp;quot;), hour, timeInfo-&amp;gt;tm_min);&lt;br /&gt;
&lt;br /&gt;
  display-&amp;gt;setColor(WHITE);&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_LEFT);&lt;br /&gt;
  display-&amp;gt;drawString(0, 54, String(buff));&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_RIGHT);&lt;br /&gt;
  String temp = String(currentWeather.temp, 1) + (IS_METRIC ? &amp;quot;°C&amp;quot; : &amp;quot;°F&amp;quot;);&lt;br /&gt;
  display-&amp;gt;drawString(128, 54, temp);&lt;br /&gt;
  display-&amp;gt;drawHorizontalLine(0, 52, 128);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setReadyForWeatherUpdate() {&lt;br /&gt;
  Serial.println(&amp;quot;Setting readyForUpdate to true&amp;quot;);&lt;br /&gt;
  readyForWeatherUpdate = true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=WeatherStationDemoCode&amp;diff=12779</id>
		<title>WeatherStationDemoCode</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=WeatherStationDemoCode&amp;diff=12779"/>
		<updated>2020-02-26T01:47:22Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/**The MIT License (MIT)&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2018 by Daniel Eichhorn - ThingPulse&lt;br /&gt;
&lt;br /&gt;
Permission is hereby granted, free of charge, to any person obtaining a copy&lt;br /&gt;
of this software and associated documentation files (the &amp;quot;Software&amp;quot;), to deal&lt;br /&gt;
in the Software without restriction, including without limitation the rights&lt;br /&gt;
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell&lt;br /&gt;
copies of the Software, and to permit persons to whom the Software is&lt;br /&gt;
furnished to do so, subject to the following conditions:&lt;br /&gt;
&lt;br /&gt;
The above copyright notice and this permission notice shall be included in all&lt;br /&gt;
copies or substantial portions of the Software.&lt;br /&gt;
&lt;br /&gt;
THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR&lt;br /&gt;
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&lt;br /&gt;
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE&lt;br /&gt;
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER&lt;br /&gt;
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,&lt;br /&gt;
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE&lt;br /&gt;
SOFTWARE.&lt;br /&gt;
&lt;br /&gt;
See more at https://thingpulse.com&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* &lt;br /&gt;
 *  this code has been modified for the LVL1 Hackerspace&lt;br /&gt;
 *  workshop on making a weather station that is &lt;br /&gt;
 *  specific to Louisville, KY and also has the ability to&lt;br /&gt;
 *  connect to 3 specific WIFI nets&lt;br /&gt;
 *  Also this code uses the 1.3&amp;quot;oled that uses the sh1106Wire library&lt;br /&gt;
 *  Brian Wagner 2/23/20&lt;br /&gt;
 *  &lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;ESPWiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESPHTTPClient.h&amp;gt;&lt;br /&gt;
#include &amp;lt;JsonListener.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// time&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;                       // time() ctime()&lt;br /&gt;
#include &amp;lt;sys/time.h&amp;gt;                   // struct timeval&lt;br /&gt;
#include &amp;lt;coredecls.h&amp;gt;                  // settimeofday_cb()&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;SSD1306Wire.h&amp;quot;&lt;br /&gt;
#include &amp;quot;OLEDDisplayUi.h&amp;quot;&lt;br /&gt;
#include &amp;quot;Wire.h&amp;quot;&lt;br /&gt;
#include &amp;quot;OpenWeatherMapCurrent.h&amp;quot;&lt;br /&gt;
#include &amp;quot;OpenWeatherMapForecast.h&amp;quot;&lt;br /&gt;
#include &amp;quot;WeatherStationFonts.h&amp;quot;&lt;br /&gt;
#include &amp;quot;WeatherStationImages.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;SH1106Wire.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/***************************&lt;br /&gt;
 * Begin Settings&lt;br /&gt;
 **************************/&lt;br /&gt;
&lt;br /&gt;
// WIFI&lt;br /&gt;
const char* WIFI_SSID1 = &amp;quot;lvl1&amp;quot;;&lt;br /&gt;
const char* WIFI_PWD1 = &amp;quot;whatpassword&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//change these to your work and/or home wifi networks&lt;br /&gt;
const char* WIFI_SSID2 = &amp;quot;ssd1&amp;quot;;&lt;br /&gt;
const char* WIFI_PWD2 = &amp;quot;pass2&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
const char* WIFI_SSID3 = &amp;quot;ssd2&amp;quot;;&lt;br /&gt;
const char* WIFI_PWD3 = &amp;quot;pass2&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#define TZ              -6       // (utc+) TZ in hours&lt;br /&gt;
//-6 is eastern... Louisville time&lt;br /&gt;
#define H24              1       //0 if 24 hour 1 if not&lt;br /&gt;
&lt;br /&gt;
#define DST_MN          60      // use 60mn for summer time in some countries&lt;br /&gt;
&lt;br /&gt;
// Setup&lt;br /&gt;
const int UPDATE_INTERVAL_SECS = 20 * 60; // Update every 20 minutes&lt;br /&gt;
&lt;br /&gt;
// Display Settings&lt;br /&gt;
const int I2C_DISPLAY_ADDRESS = 0x3c;&lt;br /&gt;
#if defined(ESP8266)&lt;br /&gt;
const int SDA_PIN = D3;&lt;br /&gt;
const int SDC_PIN = D4;&lt;br /&gt;
#else&lt;br /&gt;
const int SDA_PIN = 5; //D3;&lt;br /&gt;
const int SDC_PIN = 4; //D4;&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// OpenWeatherMap Settings&lt;br /&gt;
// Sign up here to get an API key:&lt;br /&gt;
// https://docs.thingpulse.com/how-tos/openweathermap-key/&lt;br /&gt;
String OPEN_WEATHER_MAP_APP_ID = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
/*&lt;br /&gt;
Go to https://openweathermap.org/find?q= and search for a location. Go through the&lt;br /&gt;
result set and select the entry closest to the actual location you want to display &lt;br /&gt;
data for. It&#039;ll be a URL like https://openweathermap.org/city/2657896. The number&lt;br /&gt;
at the end is what you assign to the constant below.&lt;br /&gt;
 */&lt;br /&gt;
String OPEN_WEATHER_MAP_LOCATION_ID = &amp;quot;4299276&amp;quot;; //louisville&lt;br /&gt;
&lt;br /&gt;
// Pick a language code from this list:&lt;br /&gt;
// Arabic - ar, Bulgarian - bg, Catalan - ca, Czech - cz, German - de, Greek - el,&lt;br /&gt;
// English - en, Persian (Farsi) - fa, Finnish - fi, French - fr, Galician - gl,&lt;br /&gt;
// Croatian - hr, Hungarian - hu, Italian - it, Japanese - ja, Korean - kr,&lt;br /&gt;
// Latvian - la, Lithuanian - lt, Macedonian - mk, Dutch - nl, Polish - pl,&lt;br /&gt;
// Portuguese - pt, Romanian - ro, Russian - ru, Swedish - se, Slovak - sk,&lt;br /&gt;
// Slovenian - sl, Spanish - es, Turkish - tr, Ukrainian - ua, Vietnamese - vi,&lt;br /&gt;
// Chinese Simplified - zh_cn, Chinese Traditional - zh_tw.&lt;br /&gt;
String OPEN_WEATHER_MAP_LANGUAGE = &amp;quot;en&amp;quot;;&lt;br /&gt;
const uint8_t MAX_FORECASTS = 4;&lt;br /&gt;
&lt;br /&gt;
const boolean IS_METRIC = false;&lt;br /&gt;
&lt;br /&gt;
// Adjust according to your language&lt;br /&gt;
const String WDAY_NAMES[] = {&amp;quot;SUN&amp;quot;, &amp;quot;MON&amp;quot;, &amp;quot;TUE&amp;quot;, &amp;quot;WED&amp;quot;, &amp;quot;THU&amp;quot;, &amp;quot;FRI&amp;quot;, &amp;quot;SAT&amp;quot;};&lt;br /&gt;
const String MONTH_NAMES[] = {&amp;quot;JAN&amp;quot;, &amp;quot;FEB&amp;quot;, &amp;quot;MAR&amp;quot;, &amp;quot;APR&amp;quot;, &amp;quot;MAY&amp;quot;, &amp;quot;JUN&amp;quot;, &amp;quot;JUL&amp;quot;, &amp;quot;AUG&amp;quot;, &amp;quot;SEP&amp;quot;, &amp;quot;OCT&amp;quot;, &amp;quot;NOV&amp;quot;, &amp;quot;DEC&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
/***************************&lt;br /&gt;
 * End Settings&lt;br /&gt;
 **************************/&lt;br /&gt;
 // Initialize the oled display for address 0x3c&lt;br /&gt;
 // sda-pin=14 and sdc-pin=12&lt;br /&gt;
 SH1106Wire     display(I2C_DISPLAY_ADDRESS, SDA_PIN, SDC_PIN);&lt;br /&gt;
 OLEDDisplayUi   ui( &amp;amp;display );&lt;br /&gt;
&lt;br /&gt;
OpenWeatherMapCurrentData currentWeather;&lt;br /&gt;
OpenWeatherMapCurrent currentWeatherClient;&lt;br /&gt;
&lt;br /&gt;
OpenWeatherMapForecastData forecasts[MAX_FORECASTS];&lt;br /&gt;
OpenWeatherMapForecast forecastClient;&lt;br /&gt;
&lt;br /&gt;
#define TZ_MN           ((TZ)*60)&lt;br /&gt;
#define TZ_SEC          ((TZ)*3600)&lt;br /&gt;
#define DST_SEC         ((DST_MN)*60)&lt;br /&gt;
time_t now;&lt;br /&gt;
&lt;br /&gt;
// flag changed in the ticker function every 10 minutes&lt;br /&gt;
bool readyForWeatherUpdate = false;&lt;br /&gt;
&lt;br /&gt;
String lastUpdate = &amp;quot;--&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
long timeSinceLastWUpdate = 0;&lt;br /&gt;
&lt;br /&gt;
//declaring prototypes&lt;br /&gt;
void drawProgress(OLEDDisplay *display, int percentage, String label);&lt;br /&gt;
void updateData(OLEDDisplay *display);&lt;br /&gt;
void drawDateTime(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);&lt;br /&gt;
void drawCurrentWeather(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);&lt;br /&gt;
void drawForecast(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);&lt;br /&gt;
void drawForecastDetails(OLEDDisplay *display, int x, int y, int dayIndex);&lt;br /&gt;
void drawHeaderOverlay(OLEDDisplay *display, OLEDDisplayUiState* state);&lt;br /&gt;
void setReadyForWeatherUpdate();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Add frames&lt;br /&gt;
// this array keeps function pointers to all frames&lt;br /&gt;
// frames are the single views that slide from right to left&lt;br /&gt;
FrameCallback frames[] = { drawDateTime, drawCurrentWeather, drawForecast };&lt;br /&gt;
int numberOfFrames = 3;&lt;br /&gt;
&lt;br /&gt;
OverlayCallback overlays[] = { drawHeaderOverlay };&lt;br /&gt;
int numberOfOverlays = 1;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();&lt;br /&gt;
&lt;br /&gt;
  // initialize dispaly&lt;br /&gt;
  display.init();&lt;br /&gt;
  display.clear();&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  //display.flipScreenVertically();&lt;br /&gt;
  display.setFont(ArialMT_Plain_10);&lt;br /&gt;
  display.setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display.setContrast(255);&lt;br /&gt;
&lt;br /&gt;
  WiFi.begin(WIFI_SSID1, WIFI_PWD1);&lt;br /&gt;
  String wifiMsg = &amp;quot;Trying wifi 1&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  int counter = 0;&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    display.clear();&lt;br /&gt;
    display.drawString(64, 10, wifiMsg );&lt;br /&gt;
    display.drawXbm(46, 30, 8, 8, counter % 3 == 0 ? activeSymbole : inactiveSymbole);&lt;br /&gt;
    display.drawXbm(60, 30, 8, 8, counter % 3 == 1 ? activeSymbole : inactiveSymbole);&lt;br /&gt;
    display.drawXbm(74, 30, 8, 8, counter % 3 == 2 ? activeSymbole : inactiveSymbole);&lt;br /&gt;
    display.display();&lt;br /&gt;
&lt;br /&gt;
    counter++;&lt;br /&gt;
    if (counter ==15) {&lt;br /&gt;
        WiFi.begin(WIFI_SSID2, WIFI_PWD2);&lt;br /&gt;
        wifiMsg = &amp;quot;Trying wifi 2&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if (counter == 30) {&lt;br /&gt;
        WiFi.begin(WIFI_SSID3, WIFI_PWD3);&lt;br /&gt;
        wifiMsg = &amp;quot;Trying wifi 3&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if (counter == 45) {&lt;br /&gt;
        WiFi.begin(WIFI_SSID1, WIFI_PWD1);&lt;br /&gt;
        wifiMsg = &amp;quot;Trying wifi 1&amp;quot;;&lt;br /&gt;
        counter = 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
  // Get time from network time service&lt;br /&gt;
  configTime(TZ_SEC, DST_SEC, &amp;quot;pool.ntp.org&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  ui.setTargetFPS(30);&lt;br /&gt;
&lt;br /&gt;
  ui.setActiveSymbol(activeSymbole);&lt;br /&gt;
  ui.setInactiveSymbol(inactiveSymbole);&lt;br /&gt;
&lt;br /&gt;
  // You can change this to&lt;br /&gt;
  // TOP, LEFT, BOTTOM, RIGHT&lt;br /&gt;
  ui.setIndicatorPosition(BOTTOM);&lt;br /&gt;
&lt;br /&gt;
  // Defines where the first frame is located in the bar.&lt;br /&gt;
  ui.setIndicatorDirection(LEFT_RIGHT);&lt;br /&gt;
&lt;br /&gt;
  // You can change the transition that is used&lt;br /&gt;
  // SLIDE_LEFT, SLIDE_RIGHT, SLIDE_TOP, SLIDE_DOWN&lt;br /&gt;
  ui.setFrameAnimation(SLIDE_LEFT);&lt;br /&gt;
&lt;br /&gt;
  ui.setFrames(frames, numberOfFrames);&lt;br /&gt;
&lt;br /&gt;
  ui.setOverlays(overlays, numberOfOverlays);&lt;br /&gt;
&lt;br /&gt;
  // Inital UI takes care of initalising the display too.&lt;br /&gt;
  ui.init();&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  updateData(&amp;amp;display);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
  if (millis() - timeSinceLastWUpdate &amp;gt; (1000L*UPDATE_INTERVAL_SECS)) {&lt;br /&gt;
    setReadyForWeatherUpdate();&lt;br /&gt;
    timeSinceLastWUpdate = millis();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (readyForWeatherUpdate &amp;amp;&amp;amp; ui.getUiState()-&amp;gt;frameState == FIXED) {&lt;br /&gt;
    updateData(&amp;amp;display);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  int remainingTimeBudget = ui.update();&lt;br /&gt;
&lt;br /&gt;
  if (remainingTimeBudget &amp;gt; 0) {&lt;br /&gt;
    // You can do some work here&lt;br /&gt;
    // Don&#039;t do stuff if you are below your&lt;br /&gt;
    // time budget.&lt;br /&gt;
    delay(remainingTimeBudget);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawProgress(OLEDDisplay *display, int percentage, String label) {&lt;br /&gt;
  display-&amp;gt;clear();&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  display-&amp;gt;drawString(64, 10, label);&lt;br /&gt;
  display-&amp;gt;drawProgressBar(2, 28, 124, 10, percentage);&lt;br /&gt;
  display-&amp;gt;display();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void updateData(OLEDDisplay *display) {&lt;br /&gt;
  drawProgress(display, 10, &amp;quot;Updating time...&amp;quot;);&lt;br /&gt;
  drawProgress(display, 30, &amp;quot;Updating weather...&amp;quot;);&lt;br /&gt;
  currentWeatherClient.setMetric(IS_METRIC);&lt;br /&gt;
  currentWeatherClient.setLanguage(OPEN_WEATHER_MAP_LANGUAGE);&lt;br /&gt;
  currentWeatherClient.updateCurrentById(&amp;amp;currentWeather, OPEN_WEATHER_MAP_APP_ID, OPEN_WEATHER_MAP_LOCATION_ID);&lt;br /&gt;
  drawProgress(display, 50, &amp;quot;Updating forecasts...&amp;quot;);&lt;br /&gt;
  forecastClient.setMetric(IS_METRIC);&lt;br /&gt;
  forecastClient.setLanguage(OPEN_WEATHER_MAP_LANGUAGE);&lt;br /&gt;
  uint8_t allowedHours[] = {12};&lt;br /&gt;
  forecastClient.setAllowedHours(allowedHours, sizeof(allowedHours));&lt;br /&gt;
  forecastClient.updateForecastsById(forecasts, OPEN_WEATHER_MAP_APP_ID, OPEN_WEATHER_MAP_LOCATION_ID, MAX_FORECASTS);&lt;br /&gt;
&lt;br /&gt;
  readyForWeatherUpdate = false;&lt;br /&gt;
  drawProgress(display, 100, &amp;quot;Done...&amp;quot;);&lt;br /&gt;
  delay(1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void drawDateTime(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {&lt;br /&gt;
  now = time(nullptr);&lt;br /&gt;
  struct tm* timeInfo;&lt;br /&gt;
  timeInfo = localtime(&amp;amp;now);&lt;br /&gt;
  char buff[16];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  String date = WDAY_NAMES[timeInfo-&amp;gt;tm_wday];&lt;br /&gt;
&lt;br /&gt;
  sprintf_P(buff, PSTR(&amp;quot;%s, %02d/%02d/%04d&amp;quot;), WDAY_NAMES[timeInfo-&amp;gt;tm_wday].c_str(), timeInfo-&amp;gt;tm_mday, timeInfo-&amp;gt;tm_mon+1, timeInfo-&amp;gt;tm_year + 1900);&lt;br /&gt;
  display-&amp;gt;drawString(64 + x, 5 + y, String(buff));&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_24);&lt;br /&gt;
&lt;br /&gt;
  int hour = timeInfo-&amp;gt;tm_hour;&lt;br /&gt;
  if (H24 == 1 &amp;amp;&amp;amp; hour &amp;gt; 12){&lt;br /&gt;
    hour = hour - 12;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  sprintf_P(buff, PSTR(&amp;quot;%02d:%02d:%02d&amp;quot;), hour, timeInfo-&amp;gt;tm_min, timeInfo-&amp;gt;tm_sec);&lt;br /&gt;
  display-&amp;gt;drawString(64 + x, 15 + y, String(buff));&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_LEFT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawCurrentWeather(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display-&amp;gt;drawString(64 + x, 38 + y, currentWeather.description);&lt;br /&gt;
&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_24);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_LEFT);&lt;br /&gt;
  String temp = String(currentWeather.temp, 1) + (IS_METRIC ? &amp;quot;°C&amp;quot; : &amp;quot;°F&amp;quot;);&lt;br /&gt;
  display-&amp;gt;drawString(60 + x, 5 + y, temp);&lt;br /&gt;
&lt;br /&gt;
  display-&amp;gt;setFont(Meteocons_Plain_36);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display-&amp;gt;drawString(32 + x, 0 + y, currentWeather.iconMeteoCon);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void drawForecast(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {&lt;br /&gt;
  drawForecastDetails(display, x, y, 0);&lt;br /&gt;
  drawForecastDetails(display, x + 44, y, 1);&lt;br /&gt;
  drawForecastDetails(display, x + 88, y, 2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawForecastDetails(OLEDDisplay *display, int x, int y, int dayIndex) {&lt;br /&gt;
  time_t observationTimestamp = forecasts[dayIndex].observationTime;&lt;br /&gt;
  struct tm* timeInfo;&lt;br /&gt;
  timeInfo = localtime(&amp;amp;observationTimestamp);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  display-&amp;gt;drawString(x + 20, y, WDAY_NAMES[timeInfo-&amp;gt;tm_wday]);&lt;br /&gt;
&lt;br /&gt;
  display-&amp;gt;setFont(Meteocons_Plain_21);&lt;br /&gt;
  display-&amp;gt;drawString(x + 20, y + 12, forecasts[dayIndex].iconMeteoCon);&lt;br /&gt;
  String temp = String(forecasts[dayIndex].temp, 0) + (IS_METRIC ? &amp;quot;°C&amp;quot; : &amp;quot;°F&amp;quot;);&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  display-&amp;gt;drawString(x + 20, y + 34, temp);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_LEFT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawHeaderOverlay(OLEDDisplay *display, OLEDDisplayUiState* state) {&lt;br /&gt;
  now = time(nullptr);&lt;br /&gt;
  struct tm* timeInfo;&lt;br /&gt;
  timeInfo = localtime(&amp;amp;now);&lt;br /&gt;
  char buff[14];&lt;br /&gt;
&lt;br /&gt;
  int hour = timeInfo-&amp;gt;tm_hour;&lt;br /&gt;
  if (H24 == 1 &amp;amp;&amp;amp; hour &amp;gt; 12){&lt;br /&gt;
    hour = hour - 12;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  sprintf_P(buff, PSTR(&amp;quot;%02d:%02d&amp;quot;), hour, timeInfo-&amp;gt;tm_min);&lt;br /&gt;
&lt;br /&gt;
  display-&amp;gt;setColor(WHITE);&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_LEFT);&lt;br /&gt;
  display-&amp;gt;drawString(0, 54, String(buff));&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_RIGHT);&lt;br /&gt;
  String temp = String(currentWeather.temp, 1) + (IS_METRIC ? &amp;quot;°C&amp;quot; : &amp;quot;°F&amp;quot;);&lt;br /&gt;
  display-&amp;gt;drawString(128, 54, temp);&lt;br /&gt;
  display-&amp;gt;drawHorizontalLine(0, 52, 128);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setReadyForWeatherUpdate() {&lt;br /&gt;
  Serial.println(&amp;quot;Setting readyForUpdate to true&amp;quot;);&lt;br /&gt;
  readyForWeatherUpdate = true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=WeatherStationDemoCode&amp;diff=12778</id>
		<title>WeatherStationDemoCode</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=WeatherStationDemoCode&amp;diff=12778"/>
		<updated>2020-02-26T01:45:11Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;nowiki&amp;gt;Insert non-formatted text here&lt;br /&gt;
&lt;br /&gt;
/**The MIT License (MIT)&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2018 by Daniel Eichhorn - ThingPulse&lt;br /&gt;
&lt;br /&gt;
Permission is hereby granted, free of charge, to any person obtaining a copy&lt;br /&gt;
of this software and associated documentation files (the &amp;quot;Software&amp;quot;), to deal&lt;br /&gt;
in the Software without restriction, including without limitation the rights&lt;br /&gt;
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell&lt;br /&gt;
copies of the Software, and to permit persons to whom the Software is&lt;br /&gt;
furnished to do so, subject to the following conditions:&lt;br /&gt;
&lt;br /&gt;
The above copyright notice and this permission notice shall be included in all&lt;br /&gt;
copies or substantial portions of the Software.&lt;br /&gt;
&lt;br /&gt;
THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR&lt;br /&gt;
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&lt;br /&gt;
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE&lt;br /&gt;
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER&lt;br /&gt;
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,&lt;br /&gt;
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE&lt;br /&gt;
SOFTWARE.&lt;br /&gt;
&lt;br /&gt;
See more at https://thingpulse.com&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* &lt;br /&gt;
 *  this code has been modified for the LVL1 Hackerspace&lt;br /&gt;
 *  workshop on making a weather station that is &lt;br /&gt;
 *  specific to Louisville, KY and also has the ability to&lt;br /&gt;
 *  connect to 3 specific WIFI nets&lt;br /&gt;
 *  Also this code uses the 1.3&amp;quot;oled that uses the sh1106Wire library&lt;br /&gt;
 *  Brian Wagner 2/23/20&lt;br /&gt;
 *  &lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;ESPWiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESPHTTPClient.h&amp;gt;&lt;br /&gt;
#include &amp;lt;JsonListener.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// time&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;                       // time() ctime()&lt;br /&gt;
#include &amp;lt;sys/time.h&amp;gt;                   // struct timeval&lt;br /&gt;
#include &amp;lt;coredecls.h&amp;gt;                  // settimeofday_cb()&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;SSD1306Wire.h&amp;quot;&lt;br /&gt;
#include &amp;quot;OLEDDisplayUi.h&amp;quot;&lt;br /&gt;
#include &amp;quot;Wire.h&amp;quot;&lt;br /&gt;
#include &amp;quot;OpenWeatherMapCurrent.h&amp;quot;&lt;br /&gt;
#include &amp;quot;OpenWeatherMapForecast.h&amp;quot;&lt;br /&gt;
#include &amp;quot;WeatherStationFonts.h&amp;quot;&lt;br /&gt;
#include &amp;quot;WeatherStationImages.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;SH1106Wire.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/***************************&lt;br /&gt;
 * Begin Settings&lt;br /&gt;
 **************************/&lt;br /&gt;
&lt;br /&gt;
// WIFI&lt;br /&gt;
const char* WIFI_SSID1 = &amp;quot;lvl1&amp;quot;;&lt;br /&gt;
const char* WIFI_PWD1 = &amp;quot;whatpassword&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//change these to your work and/or home wifi networks&lt;br /&gt;
const char* WIFI_SSID2 = &amp;quot;ssd1&amp;quot;;&lt;br /&gt;
const char* WIFI_PWD2 = &amp;quot;pass2&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
const char* WIFI_SSID3 = &amp;quot;ssd2&amp;quot;;&lt;br /&gt;
const char* WIFI_PWD3 = &amp;quot;pass2&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#define TZ              -6       // (utc+) TZ in hours&lt;br /&gt;
//-6 is eastern... Louisville time&lt;br /&gt;
#define H24              1       //0 if 24 hour 1 if not&lt;br /&gt;
&lt;br /&gt;
#define DST_MN          60      // use 60mn for summer time in some countries&lt;br /&gt;
&lt;br /&gt;
// Setup&lt;br /&gt;
const int UPDATE_INTERVAL_SECS = 20 * 60; // Update every 20 minutes&lt;br /&gt;
&lt;br /&gt;
// Display Settings&lt;br /&gt;
const int I2C_DISPLAY_ADDRESS = 0x3c;&lt;br /&gt;
#if defined(ESP8266)&lt;br /&gt;
const int SDA_PIN = D3;&lt;br /&gt;
const int SDC_PIN = D4;&lt;br /&gt;
#else&lt;br /&gt;
const int SDA_PIN = 5; //D3;&lt;br /&gt;
const int SDC_PIN = 4; //D4;&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// OpenWeatherMap Settings&lt;br /&gt;
// Sign up here to get an API key:&lt;br /&gt;
// https://docs.thingpulse.com/how-tos/openweathermap-key/&lt;br /&gt;
String OPEN_WEATHER_MAP_APP_ID = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
/*&lt;br /&gt;
Go to https://openweathermap.org/find?q= and search for a location. Go through the&lt;br /&gt;
result set and select the entry closest to the actual location you want to display &lt;br /&gt;
data for. It&#039;ll be a URL like https://openweathermap.org/city/2657896. The number&lt;br /&gt;
at the end is what you assign to the constant below.&lt;br /&gt;
 */&lt;br /&gt;
String OPEN_WEATHER_MAP_LOCATION_ID = &amp;quot;4299276&amp;quot;; //louisville&lt;br /&gt;
&lt;br /&gt;
// Pick a language code from this list:&lt;br /&gt;
// Arabic - ar, Bulgarian - bg, Catalan - ca, Czech - cz, German - de, Greek - el,&lt;br /&gt;
// English - en, Persian (Farsi) - fa, Finnish - fi, French - fr, Galician - gl,&lt;br /&gt;
// Croatian - hr, Hungarian - hu, Italian - it, Japanese - ja, Korean - kr,&lt;br /&gt;
// Latvian - la, Lithuanian - lt, Macedonian - mk, Dutch - nl, Polish - pl,&lt;br /&gt;
// Portuguese - pt, Romanian - ro, Russian - ru, Swedish - se, Slovak - sk,&lt;br /&gt;
// Slovenian - sl, Spanish - es, Turkish - tr, Ukrainian - ua, Vietnamese - vi,&lt;br /&gt;
// Chinese Simplified - zh_cn, Chinese Traditional - zh_tw.&lt;br /&gt;
String OPEN_WEATHER_MAP_LANGUAGE = &amp;quot;en&amp;quot;;&lt;br /&gt;
const uint8_t MAX_FORECASTS = 4;&lt;br /&gt;
&lt;br /&gt;
const boolean IS_METRIC = false;&lt;br /&gt;
&lt;br /&gt;
// Adjust according to your language&lt;br /&gt;
const String WDAY_NAMES[] = {&amp;quot;SUN&amp;quot;, &amp;quot;MON&amp;quot;, &amp;quot;TUE&amp;quot;, &amp;quot;WED&amp;quot;, &amp;quot;THU&amp;quot;, &amp;quot;FRI&amp;quot;, &amp;quot;SAT&amp;quot;};&lt;br /&gt;
const String MONTH_NAMES[] = {&amp;quot;JAN&amp;quot;, &amp;quot;FEB&amp;quot;, &amp;quot;MAR&amp;quot;, &amp;quot;APR&amp;quot;, &amp;quot;MAY&amp;quot;, &amp;quot;JUN&amp;quot;, &amp;quot;JUL&amp;quot;, &amp;quot;AUG&amp;quot;, &amp;quot;SEP&amp;quot;, &amp;quot;OCT&amp;quot;, &amp;quot;NOV&amp;quot;, &amp;quot;DEC&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
/***************************&lt;br /&gt;
 * End Settings&lt;br /&gt;
 **************************/&lt;br /&gt;
 // Initialize the oled display for address 0x3c&lt;br /&gt;
 // sda-pin=14 and sdc-pin=12&lt;br /&gt;
 SH1106Wire     display(I2C_DISPLAY_ADDRESS, SDA_PIN, SDC_PIN);&lt;br /&gt;
 OLEDDisplayUi   ui( &amp;amp;display );&lt;br /&gt;
&lt;br /&gt;
OpenWeatherMapCurrentData currentWeather;&lt;br /&gt;
OpenWeatherMapCurrent currentWeatherClient;&lt;br /&gt;
&lt;br /&gt;
OpenWeatherMapForecastData forecasts[MAX_FORECASTS];&lt;br /&gt;
OpenWeatherMapForecast forecastClient;&lt;br /&gt;
&lt;br /&gt;
#define TZ_MN           ((TZ)*60)&lt;br /&gt;
#define TZ_SEC          ((TZ)*3600)&lt;br /&gt;
#define DST_SEC         ((DST_MN)*60)&lt;br /&gt;
time_t now;&lt;br /&gt;
&lt;br /&gt;
// flag changed in the ticker function every 10 minutes&lt;br /&gt;
bool readyForWeatherUpdate = false;&lt;br /&gt;
&lt;br /&gt;
String lastUpdate = &amp;quot;--&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
long timeSinceLastWUpdate = 0;&lt;br /&gt;
&lt;br /&gt;
//declaring prototypes&lt;br /&gt;
void drawProgress(OLEDDisplay *display, int percentage, String label);&lt;br /&gt;
void updateData(OLEDDisplay *display);&lt;br /&gt;
void drawDateTime(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);&lt;br /&gt;
void drawCurrentWeather(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);&lt;br /&gt;
void drawForecast(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);&lt;br /&gt;
void drawForecastDetails(OLEDDisplay *display, int x, int y, int dayIndex);&lt;br /&gt;
void drawHeaderOverlay(OLEDDisplay *display, OLEDDisplayUiState* state);&lt;br /&gt;
void setReadyForWeatherUpdate();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Add frames&lt;br /&gt;
// this array keeps function pointers to all frames&lt;br /&gt;
// frames are the single views that slide from right to left&lt;br /&gt;
FrameCallback frames[] = { drawDateTime, drawCurrentWeather, drawForecast };&lt;br /&gt;
int numberOfFrames = 3;&lt;br /&gt;
&lt;br /&gt;
OverlayCallback overlays[] = { drawHeaderOverlay };&lt;br /&gt;
int numberOfOverlays = 1;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();&lt;br /&gt;
&lt;br /&gt;
  // initialize dispaly&lt;br /&gt;
  display.init();&lt;br /&gt;
  display.clear();&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  //display.flipScreenVertically();&lt;br /&gt;
  display.setFont(ArialMT_Plain_10);&lt;br /&gt;
  display.setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display.setContrast(255);&lt;br /&gt;
&lt;br /&gt;
  WiFi.begin(WIFI_SSID1, WIFI_PWD1);&lt;br /&gt;
  String wifiMsg = &amp;quot;Trying wifi 1&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  int counter = 0;&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    display.clear();&lt;br /&gt;
    display.drawString(64, 10, wifiMsg );&lt;br /&gt;
    display.drawXbm(46, 30, 8, 8, counter % 3 == 0 ? activeSymbole : inactiveSymbole);&lt;br /&gt;
    display.drawXbm(60, 30, 8, 8, counter % 3 == 1 ? activeSymbole : inactiveSymbole);&lt;br /&gt;
    display.drawXbm(74, 30, 8, 8, counter % 3 == 2 ? activeSymbole : inactiveSymbole);&lt;br /&gt;
    display.display();&lt;br /&gt;
&lt;br /&gt;
    counter++;&lt;br /&gt;
    if (counter ==15) {&lt;br /&gt;
        WiFi.begin(WIFI_SSID2, WIFI_PWD2);&lt;br /&gt;
        wifiMsg = &amp;quot;Trying wifi 2&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if (counter == 30) {&lt;br /&gt;
        WiFi.begin(WIFI_SSID3, WIFI_PWD3);&lt;br /&gt;
        wifiMsg = &amp;quot;Trying wifi 3&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if (counter == 45) {&lt;br /&gt;
        WiFi.begin(WIFI_SSID1, WIFI_PWD1);&lt;br /&gt;
        wifiMsg = &amp;quot;Trying wifi 1&amp;quot;;&lt;br /&gt;
        counter = 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
  // Get time from network time service&lt;br /&gt;
  configTime(TZ_SEC, DST_SEC, &amp;quot;pool.ntp.org&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  ui.setTargetFPS(30);&lt;br /&gt;
&lt;br /&gt;
  ui.setActiveSymbol(activeSymbole);&lt;br /&gt;
  ui.setInactiveSymbol(inactiveSymbole);&lt;br /&gt;
&lt;br /&gt;
  // You can change this to&lt;br /&gt;
  // TOP, LEFT, BOTTOM, RIGHT&lt;br /&gt;
  ui.setIndicatorPosition(BOTTOM);&lt;br /&gt;
&lt;br /&gt;
  // Defines where the first frame is located in the bar.&lt;br /&gt;
  ui.setIndicatorDirection(LEFT_RIGHT);&lt;br /&gt;
&lt;br /&gt;
  // You can change the transition that is used&lt;br /&gt;
  // SLIDE_LEFT, SLIDE_RIGHT, SLIDE_TOP, SLIDE_DOWN&lt;br /&gt;
  ui.setFrameAnimation(SLIDE_LEFT);&lt;br /&gt;
&lt;br /&gt;
  ui.setFrames(frames, numberOfFrames);&lt;br /&gt;
&lt;br /&gt;
  ui.setOverlays(overlays, numberOfOverlays);&lt;br /&gt;
&lt;br /&gt;
  // Inital UI takes care of initalising the display too.&lt;br /&gt;
  ui.init();&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  updateData(&amp;amp;display);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
  if (millis() - timeSinceLastWUpdate &amp;gt; (1000L*UPDATE_INTERVAL_SECS)) {&lt;br /&gt;
    setReadyForWeatherUpdate();&lt;br /&gt;
    timeSinceLastWUpdate = millis();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (readyForWeatherUpdate &amp;amp;&amp;amp; ui.getUiState()-&amp;gt;frameState == FIXED) {&lt;br /&gt;
    updateData(&amp;amp;display);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  int remainingTimeBudget = ui.update();&lt;br /&gt;
&lt;br /&gt;
  if (remainingTimeBudget &amp;gt; 0) {&lt;br /&gt;
    // You can do some work here&lt;br /&gt;
    // Don&#039;t do stuff if you are below your&lt;br /&gt;
    // time budget.&lt;br /&gt;
    delay(remainingTimeBudget);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawProgress(OLEDDisplay *display, int percentage, String label) {&lt;br /&gt;
  display-&amp;gt;clear();&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  display-&amp;gt;drawString(64, 10, label);&lt;br /&gt;
  display-&amp;gt;drawProgressBar(2, 28, 124, 10, percentage);&lt;br /&gt;
  display-&amp;gt;display();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void updateData(OLEDDisplay *display) {&lt;br /&gt;
  drawProgress(display, 10, &amp;quot;Updating time...&amp;quot;);&lt;br /&gt;
  drawProgress(display, 30, &amp;quot;Updating weather...&amp;quot;);&lt;br /&gt;
  currentWeatherClient.setMetric(IS_METRIC);&lt;br /&gt;
  currentWeatherClient.setLanguage(OPEN_WEATHER_MAP_LANGUAGE);&lt;br /&gt;
  currentWeatherClient.updateCurrentById(&amp;amp;currentWeather, OPEN_WEATHER_MAP_APP_ID, OPEN_WEATHER_MAP_LOCATION_ID);&lt;br /&gt;
  drawProgress(display, 50, &amp;quot;Updating forecasts...&amp;quot;);&lt;br /&gt;
  forecastClient.setMetric(IS_METRIC);&lt;br /&gt;
  forecastClient.setLanguage(OPEN_WEATHER_MAP_LANGUAGE);&lt;br /&gt;
  uint8_t allowedHours[] = {12};&lt;br /&gt;
  forecastClient.setAllowedHours(allowedHours, sizeof(allowedHours));&lt;br /&gt;
  forecastClient.updateForecastsById(forecasts, OPEN_WEATHER_MAP_APP_ID, OPEN_WEATHER_MAP_LOCATION_ID, MAX_FORECASTS);&lt;br /&gt;
&lt;br /&gt;
  readyForWeatherUpdate = false;&lt;br /&gt;
  drawProgress(display, 100, &amp;quot;Done...&amp;quot;);&lt;br /&gt;
  delay(1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void drawDateTime(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {&lt;br /&gt;
  now = time(nullptr);&lt;br /&gt;
  struct tm* timeInfo;&lt;br /&gt;
  timeInfo = localtime(&amp;amp;now);&lt;br /&gt;
  char buff[16];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  String date = WDAY_NAMES[timeInfo-&amp;gt;tm_wday];&lt;br /&gt;
&lt;br /&gt;
  sprintf_P(buff, PSTR(&amp;quot;%s, %02d/%02d/%04d&amp;quot;), WDAY_NAMES[timeInfo-&amp;gt;tm_wday].c_str(), timeInfo-&amp;gt;tm_mday, timeInfo-&amp;gt;tm_mon+1, timeInfo-&amp;gt;tm_year + 1900);&lt;br /&gt;
  display-&amp;gt;drawString(64 + x, 5 + y, String(buff));&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_24);&lt;br /&gt;
&lt;br /&gt;
  int hour = timeInfo-&amp;gt;tm_hour;&lt;br /&gt;
  if (H24 == 1 &amp;amp;&amp;amp; hour &amp;gt; 12){&lt;br /&gt;
    hour = hour - 12;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  sprintf_P(buff, PSTR(&amp;quot;%02d:%02d:%02d&amp;quot;), hour, timeInfo-&amp;gt;tm_min, timeInfo-&amp;gt;tm_sec);&lt;br /&gt;
  display-&amp;gt;drawString(64 + x, 15 + y, String(buff));&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_LEFT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawCurrentWeather(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display-&amp;gt;drawString(64 + x, 38 + y, currentWeather.description);&lt;br /&gt;
&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_24);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_LEFT);&lt;br /&gt;
  String temp = String(currentWeather.temp, 1) + (IS_METRIC ? &amp;quot;°C&amp;quot; : &amp;quot;°F&amp;quot;);&lt;br /&gt;
  display-&amp;gt;drawString(60 + x, 5 + y, temp);&lt;br /&gt;
&lt;br /&gt;
  display-&amp;gt;setFont(Meteocons_Plain_36);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display-&amp;gt;drawString(32 + x, 0 + y, currentWeather.iconMeteoCon);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void drawForecast(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {&lt;br /&gt;
  drawForecastDetails(display, x, y, 0);&lt;br /&gt;
  drawForecastDetails(display, x + 44, y, 1);&lt;br /&gt;
  drawForecastDetails(display, x + 88, y, 2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawForecastDetails(OLEDDisplay *display, int x, int y, int dayIndex) {&lt;br /&gt;
  time_t observationTimestamp = forecasts[dayIndex].observationTime;&lt;br /&gt;
  struct tm* timeInfo;&lt;br /&gt;
  timeInfo = localtime(&amp;amp;observationTimestamp);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  display-&amp;gt;drawString(x + 20, y, WDAY_NAMES[timeInfo-&amp;gt;tm_wday]);&lt;br /&gt;
&lt;br /&gt;
  display-&amp;gt;setFont(Meteocons_Plain_21);&lt;br /&gt;
  display-&amp;gt;drawString(x + 20, y + 12, forecasts[dayIndex].iconMeteoCon);&lt;br /&gt;
  String temp = String(forecasts[dayIndex].temp, 0) + (IS_METRIC ? &amp;quot;°C&amp;quot; : &amp;quot;°F&amp;quot;);&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  display-&amp;gt;drawString(x + 20, y + 34, temp);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_LEFT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawHeaderOverlay(OLEDDisplay *display, OLEDDisplayUiState* state) {&lt;br /&gt;
  now = time(nullptr);&lt;br /&gt;
  struct tm* timeInfo;&lt;br /&gt;
  timeInfo = localtime(&amp;amp;now);&lt;br /&gt;
  char buff[14];&lt;br /&gt;
&lt;br /&gt;
  int hour = timeInfo-&amp;gt;tm_hour;&lt;br /&gt;
  if (H24 == 1 &amp;amp;&amp;amp; hour &amp;gt; 12){&lt;br /&gt;
    hour = hour - 12;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  sprintf_P(buff, PSTR(&amp;quot;%02d:%02d&amp;quot;), hour, timeInfo-&amp;gt;tm_min);&lt;br /&gt;
&lt;br /&gt;
  display-&amp;gt;setColor(WHITE);&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_LEFT);&lt;br /&gt;
  display-&amp;gt;drawString(0, 54, String(buff));&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_RIGHT);&lt;br /&gt;
  String temp = String(currentWeather.temp, 1) + (IS_METRIC ? &amp;quot;°C&amp;quot; : &amp;quot;°F&amp;quot;);&lt;br /&gt;
  display-&amp;gt;drawString(128, 54, temp);&lt;br /&gt;
  display-&amp;gt;drawHorizontalLine(0, 52, 128);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setReadyForWeatherUpdate() {&lt;br /&gt;
  Serial.println(&amp;quot;Setting readyForUpdate to true&amp;quot;);&lt;br /&gt;
  readyForWeatherUpdate = true;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=WeatherStationDemoCode&amp;diff=12777</id>
		<title>WeatherStationDemoCode</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=WeatherStationDemoCode&amp;diff=12777"/>
		<updated>2020-02-26T01:43:06Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: Created page with &amp;quot;/**The MIT License (MIT)  Copyright (c) 2018 by Daniel Eichhorn - ThingPulse  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/**The MIT License (MIT)&lt;br /&gt;
&lt;br /&gt;
Copyright (c) 2018 by Daniel Eichhorn - ThingPulse&lt;br /&gt;
&lt;br /&gt;
Permission is hereby granted, free of charge, to any person obtaining a copy&lt;br /&gt;
of this software and associated documentation files (the &amp;quot;Software&amp;quot;), to deal&lt;br /&gt;
in the Software without restriction, including without limitation the rights&lt;br /&gt;
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell&lt;br /&gt;
copies of the Software, and to permit persons to whom the Software is&lt;br /&gt;
furnished to do so, subject to the following conditions:&lt;br /&gt;
&lt;br /&gt;
The above copyright notice and this permission notice shall be included in all&lt;br /&gt;
copies or substantial portions of the Software.&lt;br /&gt;
&lt;br /&gt;
THE SOFTWARE IS PROVIDED &amp;quot;AS IS&amp;quot;, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR&lt;br /&gt;
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,&lt;br /&gt;
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE&lt;br /&gt;
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER&lt;br /&gt;
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,&lt;br /&gt;
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE&lt;br /&gt;
SOFTWARE.&lt;br /&gt;
&lt;br /&gt;
See more at https://thingpulse.com&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* &lt;br /&gt;
 *  this code has been modified for the LVL1 Hackerspace&lt;br /&gt;
 *  workshop on making a weather station that is &lt;br /&gt;
 *  specific to Louisville, KY and also has the ability to&lt;br /&gt;
 *  connect to 3 specific WIFI nets&lt;br /&gt;
 *  Also this code uses the 1.3&amp;quot;oled that uses the sh1106Wire library&lt;br /&gt;
 *  Brian Wagner 2/23/20&lt;br /&gt;
 *  &lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;Arduino.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
#include &amp;lt;ESPWiFi.h&amp;gt;&lt;br /&gt;
#include &amp;lt;ESPHTTPClient.h&amp;gt;&lt;br /&gt;
#include &amp;lt;JsonListener.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// time&lt;br /&gt;
#include &amp;lt;time.h&amp;gt;                       // time() ctime()&lt;br /&gt;
#include &amp;lt;sys/time.h&amp;gt;                   // struct timeval&lt;br /&gt;
#include &amp;lt;coredecls.h&amp;gt;                  // settimeofday_cb()&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;SSD1306Wire.h&amp;quot;&lt;br /&gt;
#include &amp;quot;OLEDDisplayUi.h&amp;quot;&lt;br /&gt;
#include &amp;quot;Wire.h&amp;quot;&lt;br /&gt;
#include &amp;quot;OpenWeatherMapCurrent.h&amp;quot;&lt;br /&gt;
#include &amp;quot;OpenWeatherMapForecast.h&amp;quot;&lt;br /&gt;
#include &amp;quot;WeatherStationFonts.h&amp;quot;&lt;br /&gt;
#include &amp;quot;WeatherStationImages.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;SH1106Wire.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/***************************&lt;br /&gt;
 * Begin Settings&lt;br /&gt;
 **************************/&lt;br /&gt;
&lt;br /&gt;
// WIFI&lt;br /&gt;
const char* WIFI_SSID1 = &amp;quot;lvl1&amp;quot;;&lt;br /&gt;
const char* WIFI_PWD1 = &amp;quot;whatpassword&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
//change these to your work and/or home wifi networks&lt;br /&gt;
const char* WIFI_SSID2 = &amp;quot;ssd1&amp;quot;;&lt;br /&gt;
const char* WIFI_PWD2 = &amp;quot;pass2&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
const char* WIFI_SSID3 = &amp;quot;ssd2&amp;quot;;&lt;br /&gt;
const char* WIFI_PWD3 = &amp;quot;pass2&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#define TZ              -6       // (utc+) TZ in hours&lt;br /&gt;
//-6 is eastern... Louisville time&lt;br /&gt;
#define H24              1       //0 if 24 hour 1 if not&lt;br /&gt;
&lt;br /&gt;
#define DST_MN          60      // use 60mn for summer time in some countries&lt;br /&gt;
&lt;br /&gt;
// Setup&lt;br /&gt;
const int UPDATE_INTERVAL_SECS = 20 * 60; // Update every 20 minutes&lt;br /&gt;
&lt;br /&gt;
// Display Settings&lt;br /&gt;
const int I2C_DISPLAY_ADDRESS = 0x3c;&lt;br /&gt;
#if defined(ESP8266)&lt;br /&gt;
const int SDA_PIN = D3;&lt;br /&gt;
const int SDC_PIN = D4;&lt;br /&gt;
#else&lt;br /&gt;
const int SDA_PIN = 5; //D3;&lt;br /&gt;
const int SDC_PIN = 4; //D4;&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// OpenWeatherMap Settings&lt;br /&gt;
// Sign up here to get an API key:&lt;br /&gt;
// https://docs.thingpulse.com/how-tos/openweathermap-key/&lt;br /&gt;
String OPEN_WEATHER_MAP_APP_ID = &amp;quot;12345678&amp;quot;;&lt;br /&gt;
/*&lt;br /&gt;
Go to https://openweathermap.org/find?q= and search for a location. Go through the&lt;br /&gt;
result set and select the entry closest to the actual location you want to display &lt;br /&gt;
data for. It&#039;ll be a URL like https://openweathermap.org/city/2657896. The number&lt;br /&gt;
at the end is what you assign to the constant below.&lt;br /&gt;
 */&lt;br /&gt;
String OPEN_WEATHER_MAP_LOCATION_ID = &amp;quot;4299276&amp;quot;; //louisville&lt;br /&gt;
&lt;br /&gt;
// Pick a language code from this list:&lt;br /&gt;
// Arabic - ar, Bulgarian - bg, Catalan - ca, Czech - cz, German - de, Greek - el,&lt;br /&gt;
// English - en, Persian (Farsi) - fa, Finnish - fi, French - fr, Galician - gl,&lt;br /&gt;
// Croatian - hr, Hungarian - hu, Italian - it, Japanese - ja, Korean - kr,&lt;br /&gt;
// Latvian - la, Lithuanian - lt, Macedonian - mk, Dutch - nl, Polish - pl,&lt;br /&gt;
// Portuguese - pt, Romanian - ro, Russian - ru, Swedish - se, Slovak - sk,&lt;br /&gt;
// Slovenian - sl, Spanish - es, Turkish - tr, Ukrainian - ua, Vietnamese - vi,&lt;br /&gt;
// Chinese Simplified - zh_cn, Chinese Traditional - zh_tw.&lt;br /&gt;
String OPEN_WEATHER_MAP_LANGUAGE = &amp;quot;en&amp;quot;;&lt;br /&gt;
const uint8_t MAX_FORECASTS = 4;&lt;br /&gt;
&lt;br /&gt;
const boolean IS_METRIC = false;&lt;br /&gt;
&lt;br /&gt;
// Adjust according to your language&lt;br /&gt;
const String WDAY_NAMES[] = {&amp;quot;SUN&amp;quot;, &amp;quot;MON&amp;quot;, &amp;quot;TUE&amp;quot;, &amp;quot;WED&amp;quot;, &amp;quot;THU&amp;quot;, &amp;quot;FRI&amp;quot;, &amp;quot;SAT&amp;quot;};&lt;br /&gt;
const String MONTH_NAMES[] = {&amp;quot;JAN&amp;quot;, &amp;quot;FEB&amp;quot;, &amp;quot;MAR&amp;quot;, &amp;quot;APR&amp;quot;, &amp;quot;MAY&amp;quot;, &amp;quot;JUN&amp;quot;, &amp;quot;JUL&amp;quot;, &amp;quot;AUG&amp;quot;, &amp;quot;SEP&amp;quot;, &amp;quot;OCT&amp;quot;, &amp;quot;NOV&amp;quot;, &amp;quot;DEC&amp;quot;};&lt;br /&gt;
&lt;br /&gt;
/***************************&lt;br /&gt;
 * End Settings&lt;br /&gt;
 **************************/&lt;br /&gt;
 // Initialize the oled display for address 0x3c&lt;br /&gt;
 // sda-pin=14 and sdc-pin=12&lt;br /&gt;
 SH1106Wire     display(I2C_DISPLAY_ADDRESS, SDA_PIN, SDC_PIN);&lt;br /&gt;
 OLEDDisplayUi   ui( &amp;amp;display );&lt;br /&gt;
&lt;br /&gt;
OpenWeatherMapCurrentData currentWeather;&lt;br /&gt;
OpenWeatherMapCurrent currentWeatherClient;&lt;br /&gt;
&lt;br /&gt;
OpenWeatherMapForecastData forecasts[MAX_FORECASTS];&lt;br /&gt;
OpenWeatherMapForecast forecastClient;&lt;br /&gt;
&lt;br /&gt;
#define TZ_MN           ((TZ)*60)&lt;br /&gt;
#define TZ_SEC          ((TZ)*3600)&lt;br /&gt;
#define DST_SEC         ((DST_MN)*60)&lt;br /&gt;
time_t now;&lt;br /&gt;
&lt;br /&gt;
// flag changed in the ticker function every 10 minutes&lt;br /&gt;
bool readyForWeatherUpdate = false;&lt;br /&gt;
&lt;br /&gt;
String lastUpdate = &amp;quot;--&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
long timeSinceLastWUpdate = 0;&lt;br /&gt;
&lt;br /&gt;
//declaring prototypes&lt;br /&gt;
void drawProgress(OLEDDisplay *display, int percentage, String label);&lt;br /&gt;
void updateData(OLEDDisplay *display);&lt;br /&gt;
void drawDateTime(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);&lt;br /&gt;
void drawCurrentWeather(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);&lt;br /&gt;
void drawForecast(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y);&lt;br /&gt;
void drawForecastDetails(OLEDDisplay *display, int x, int y, int dayIndex);&lt;br /&gt;
void drawHeaderOverlay(OLEDDisplay *display, OLEDDisplayUiState* state);&lt;br /&gt;
void setReadyForWeatherUpdate();&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Add frames&lt;br /&gt;
// this array keeps function pointers to all frames&lt;br /&gt;
// frames are the single views that slide from right to left&lt;br /&gt;
FrameCallback frames[] = { drawDateTime, drawCurrentWeather, drawForecast };&lt;br /&gt;
int numberOfFrames = 3;&lt;br /&gt;
&lt;br /&gt;
OverlayCallback overlays[] = { drawHeaderOverlay };&lt;br /&gt;
int numberOfOverlays = 1;&lt;br /&gt;
&lt;br /&gt;
void setup() {&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  Serial.println();&lt;br /&gt;
  Serial.println();&lt;br /&gt;
&lt;br /&gt;
  // initialize dispaly&lt;br /&gt;
  display.init();&lt;br /&gt;
  display.clear();&lt;br /&gt;
  display.display();&lt;br /&gt;
&lt;br /&gt;
  //display.flipScreenVertically();&lt;br /&gt;
  display.setFont(ArialMT_Plain_10);&lt;br /&gt;
  display.setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display.setContrast(255);&lt;br /&gt;
&lt;br /&gt;
  WiFi.begin(WIFI_SSID1, WIFI_PWD1);&lt;br /&gt;
  String wifiMsg = &amp;quot;Trying wifi 1&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
  int counter = 0;&lt;br /&gt;
  while (WiFi.status() != WL_CONNECTED) {&lt;br /&gt;
    delay(500);&lt;br /&gt;
    Serial.print(&amp;quot;.&amp;quot;);&lt;br /&gt;
    display.clear();&lt;br /&gt;
    display.drawString(64, 10, wifiMsg );&lt;br /&gt;
    display.drawXbm(46, 30, 8, 8, counter % 3 == 0 ? activeSymbole : inactiveSymbole);&lt;br /&gt;
    display.drawXbm(60, 30, 8, 8, counter % 3 == 1 ? activeSymbole : inactiveSymbole);&lt;br /&gt;
    display.drawXbm(74, 30, 8, 8, counter % 3 == 2 ? activeSymbole : inactiveSymbole);&lt;br /&gt;
    display.display();&lt;br /&gt;
&lt;br /&gt;
    counter++;&lt;br /&gt;
    if (counter ==15) {&lt;br /&gt;
        WiFi.begin(WIFI_SSID2, WIFI_PWD2);&lt;br /&gt;
        wifiMsg = &amp;quot;Trying wifi 2&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if (counter == 30) {&lt;br /&gt;
        WiFi.begin(WIFI_SSID3, WIFI_PWD3);&lt;br /&gt;
        wifiMsg = &amp;quot;Trying wifi 3&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
    if (counter == 45) {&lt;br /&gt;
        WiFi.begin(WIFI_SSID1, WIFI_PWD1);&lt;br /&gt;
        wifiMsg = &amp;quot;Trying wifi 1&amp;quot;;&lt;br /&gt;
        counter = 0;&lt;br /&gt;
    }&lt;br /&gt;
    &lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  delay(500);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
  // Get time from network time service&lt;br /&gt;
  configTime(TZ_SEC, DST_SEC, &amp;quot;pool.ntp.org&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  ui.setTargetFPS(30);&lt;br /&gt;
&lt;br /&gt;
  ui.setActiveSymbol(activeSymbole);&lt;br /&gt;
  ui.setInactiveSymbol(inactiveSymbole);&lt;br /&gt;
&lt;br /&gt;
  // You can change this to&lt;br /&gt;
  // TOP, LEFT, BOTTOM, RIGHT&lt;br /&gt;
  ui.setIndicatorPosition(BOTTOM);&lt;br /&gt;
&lt;br /&gt;
  // Defines where the first frame is located in the bar.&lt;br /&gt;
  ui.setIndicatorDirection(LEFT_RIGHT);&lt;br /&gt;
&lt;br /&gt;
  // You can change the transition that is used&lt;br /&gt;
  // SLIDE_LEFT, SLIDE_RIGHT, SLIDE_TOP, SLIDE_DOWN&lt;br /&gt;
  ui.setFrameAnimation(SLIDE_LEFT);&lt;br /&gt;
&lt;br /&gt;
  ui.setFrames(frames, numberOfFrames);&lt;br /&gt;
&lt;br /&gt;
  ui.setOverlays(overlays, numberOfOverlays);&lt;br /&gt;
&lt;br /&gt;
  // Inital UI takes care of initalising the display too.&lt;br /&gt;
  ui.init();&lt;br /&gt;
&lt;br /&gt;
  Serial.println(&amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  updateData(&amp;amp;display);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
&lt;br /&gt;
  if (millis() - timeSinceLastWUpdate &amp;gt; (1000L*UPDATE_INTERVAL_SECS)) {&lt;br /&gt;
    setReadyForWeatherUpdate();&lt;br /&gt;
    timeSinceLastWUpdate = millis();&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if (readyForWeatherUpdate &amp;amp;&amp;amp; ui.getUiState()-&amp;gt;frameState == FIXED) {&lt;br /&gt;
    updateData(&amp;amp;display);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  int remainingTimeBudget = ui.update();&lt;br /&gt;
&lt;br /&gt;
  if (remainingTimeBudget &amp;gt; 0) {&lt;br /&gt;
    // You can do some work here&lt;br /&gt;
    // Don&#039;t do stuff if you are below your&lt;br /&gt;
    // time budget.&lt;br /&gt;
    delay(remainingTimeBudget);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawProgress(OLEDDisplay *display, int percentage, String label) {&lt;br /&gt;
  display-&amp;gt;clear();&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  display-&amp;gt;drawString(64, 10, label);&lt;br /&gt;
  display-&amp;gt;drawProgressBar(2, 28, 124, 10, percentage);&lt;br /&gt;
  display-&amp;gt;display();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void updateData(OLEDDisplay *display) {&lt;br /&gt;
  drawProgress(display, 10, &amp;quot;Updating time...&amp;quot;);&lt;br /&gt;
  drawProgress(display, 30, &amp;quot;Updating weather...&amp;quot;);&lt;br /&gt;
  currentWeatherClient.setMetric(IS_METRIC);&lt;br /&gt;
  currentWeatherClient.setLanguage(OPEN_WEATHER_MAP_LANGUAGE);&lt;br /&gt;
  currentWeatherClient.updateCurrentById(&amp;amp;currentWeather, OPEN_WEATHER_MAP_APP_ID, OPEN_WEATHER_MAP_LOCATION_ID);&lt;br /&gt;
  drawProgress(display, 50, &amp;quot;Updating forecasts...&amp;quot;);&lt;br /&gt;
  forecastClient.setMetric(IS_METRIC);&lt;br /&gt;
  forecastClient.setLanguage(OPEN_WEATHER_MAP_LANGUAGE);&lt;br /&gt;
  uint8_t allowedHours[] = {12};&lt;br /&gt;
  forecastClient.setAllowedHours(allowedHours, sizeof(allowedHours));&lt;br /&gt;
  forecastClient.updateForecastsById(forecasts, OPEN_WEATHER_MAP_APP_ID, OPEN_WEATHER_MAP_LOCATION_ID, MAX_FORECASTS);&lt;br /&gt;
&lt;br /&gt;
  readyForWeatherUpdate = false;&lt;br /&gt;
  drawProgress(display, 100, &amp;quot;Done...&amp;quot;);&lt;br /&gt;
  delay(1000);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void drawDateTime(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {&lt;br /&gt;
  now = time(nullptr);&lt;br /&gt;
  struct tm* timeInfo;&lt;br /&gt;
  timeInfo = localtime(&amp;amp;now);&lt;br /&gt;
  char buff[16];&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  String date = WDAY_NAMES[timeInfo-&amp;gt;tm_wday];&lt;br /&gt;
&lt;br /&gt;
  sprintf_P(buff, PSTR(&amp;quot;%s, %02d/%02d/%04d&amp;quot;), WDAY_NAMES[timeInfo-&amp;gt;tm_wday].c_str(), timeInfo-&amp;gt;tm_mday, timeInfo-&amp;gt;tm_mon+1, timeInfo-&amp;gt;tm_year + 1900);&lt;br /&gt;
  display-&amp;gt;drawString(64 + x, 5 + y, String(buff));&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_24);&lt;br /&gt;
&lt;br /&gt;
  int hour = timeInfo-&amp;gt;tm_hour;&lt;br /&gt;
  if (H24 == 1 &amp;amp;&amp;amp; hour &amp;gt; 12){&lt;br /&gt;
    hour = hour - 12;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  sprintf_P(buff, PSTR(&amp;quot;%02d:%02d:%02d&amp;quot;), hour, timeInfo-&amp;gt;tm_min, timeInfo-&amp;gt;tm_sec);&lt;br /&gt;
  display-&amp;gt;drawString(64 + x, 15 + y, String(buff));&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_LEFT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawCurrentWeather(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display-&amp;gt;drawString(64 + x, 38 + y, currentWeather.description);&lt;br /&gt;
&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_24);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_LEFT);&lt;br /&gt;
  String temp = String(currentWeather.temp, 1) + (IS_METRIC ? &amp;quot;°C&amp;quot; : &amp;quot;°F&amp;quot;);&lt;br /&gt;
  display-&amp;gt;drawString(60 + x, 5 + y, temp);&lt;br /&gt;
&lt;br /&gt;
  display-&amp;gt;setFont(Meteocons_Plain_36);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display-&amp;gt;drawString(32 + x, 0 + y, currentWeather.iconMeteoCon);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void drawForecast(OLEDDisplay *display, OLEDDisplayUiState* state, int16_t x, int16_t y) {&lt;br /&gt;
  drawForecastDetails(display, x, y, 0);&lt;br /&gt;
  drawForecastDetails(display, x + 44, y, 1);&lt;br /&gt;
  drawForecastDetails(display, x + 88, y, 2);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawForecastDetails(OLEDDisplay *display, int x, int y, int dayIndex) {&lt;br /&gt;
  time_t observationTimestamp = forecasts[dayIndex].observationTime;&lt;br /&gt;
  struct tm* timeInfo;&lt;br /&gt;
  timeInfo = localtime(&amp;amp;observationTimestamp);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_CENTER);&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  display-&amp;gt;drawString(x + 20, y, WDAY_NAMES[timeInfo-&amp;gt;tm_wday]);&lt;br /&gt;
&lt;br /&gt;
  display-&amp;gt;setFont(Meteocons_Plain_21);&lt;br /&gt;
  display-&amp;gt;drawString(x + 20, y + 12, forecasts[dayIndex].iconMeteoCon);&lt;br /&gt;
  String temp = String(forecasts[dayIndex].temp, 0) + (IS_METRIC ? &amp;quot;°C&amp;quot; : &amp;quot;°F&amp;quot;);&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  display-&amp;gt;drawString(x + 20, y + 34, temp);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_LEFT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void drawHeaderOverlay(OLEDDisplay *display, OLEDDisplayUiState* state) {&lt;br /&gt;
  now = time(nullptr);&lt;br /&gt;
  struct tm* timeInfo;&lt;br /&gt;
  timeInfo = localtime(&amp;amp;now);&lt;br /&gt;
  char buff[14];&lt;br /&gt;
&lt;br /&gt;
  int hour = timeInfo-&amp;gt;tm_hour;&lt;br /&gt;
  if (H24 == 1 &amp;amp;&amp;amp; hour &amp;gt; 12){&lt;br /&gt;
    hour = hour - 12;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  sprintf_P(buff, PSTR(&amp;quot;%02d:%02d&amp;quot;), hour, timeInfo-&amp;gt;tm_min);&lt;br /&gt;
&lt;br /&gt;
  display-&amp;gt;setColor(WHITE);&lt;br /&gt;
  display-&amp;gt;setFont(ArialMT_Plain_10);&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_LEFT);&lt;br /&gt;
  display-&amp;gt;drawString(0, 54, String(buff));&lt;br /&gt;
  display-&amp;gt;setTextAlignment(TEXT_ALIGN_RIGHT);&lt;br /&gt;
  String temp = String(currentWeather.temp, 1) + (IS_METRIC ? &amp;quot;°C&amp;quot; : &amp;quot;°F&amp;quot;);&lt;br /&gt;
  display-&amp;gt;drawString(128, 54, temp);&lt;br /&gt;
  display-&amp;gt;drawHorizontalLine(0, 52, 128);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void setReadyForWeatherUpdate() {&lt;br /&gt;
  Serial.println(&amp;quot;Setting readyForUpdate to true&amp;quot;);&lt;br /&gt;
  readyForWeatherUpdate = true;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12776</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12776"/>
		<updated>2020-02-26T01:42:30Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* Load Weather Station software */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
== Setup the Wemos D1 mini for the Arduino ==&lt;br /&gt;
** good tutorial here https://averagemaker.com/2018/03/wemos-d1-mini-setup.html&lt;br /&gt;
** overview&lt;br /&gt;
*** install ch340 serial usb drivers&lt;br /&gt;
*** install Arduino IDE - not the web version&lt;br /&gt;
*** Add the json string to the board manager URLs in file-&amp;gt;preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
*** Set the board in Arduino&lt;br /&gt;
*** Get the blink example working&lt;br /&gt;
&lt;br /&gt;
== hook up the screen ==&lt;br /&gt;
* Solder dupont headers to 5V, Gnd, D3 and D4 on the Wemos D1 Mini&lt;br /&gt;
* connect the other end of dupont headers to oled screen&lt;br /&gt;
&lt;br /&gt;
== Load Weather Station software ==&lt;br /&gt;
First download and install these two libraries&lt;br /&gt;
&lt;br /&gt;
https://github.com/ThingPulse/esp8266-oled-ssd1306&lt;br /&gt;
https://github.com/ThingPulse/esp8266-weather-station&lt;br /&gt;
&lt;br /&gt;
You do this by clicking the green button on the above web pages and click the GREEN &#039;Clone or Download&#039; button and download the zip files for both.&lt;br /&gt;
&lt;br /&gt;
Next install these libraries into the Arduino Software&lt;br /&gt;
Sketch-&amp;gt;Include Library-&amp;gt;Add .Zip library... then choose the zip file you previously downloaded and install.&lt;br /&gt;
&lt;br /&gt;
Now open the Weather Station Demo code...&lt;br /&gt;
File-&amp;gt;Examples-&amp;gt;ESP8266 Weather Station-&amp;gt;Weather Station Demo&lt;br /&gt;
&lt;br /&gt;
Now you will see the Weather Station Demo code and you will need to replace it with the code here [[WeatherStationDemoCode]] . Copy and paste all of it.&lt;br /&gt;
&lt;br /&gt;
= Resources and Links = &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Code =&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12775</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12775"/>
		<updated>2020-02-26T01:27:04Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* hook up the screen */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
== Setup the Wemos D1 mini for the Arduino ==&lt;br /&gt;
** good tutorial here https://averagemaker.com/2018/03/wemos-d1-mini-setup.html&lt;br /&gt;
** overview&lt;br /&gt;
*** install ch340 serial usb drivers&lt;br /&gt;
*** install Arduino IDE - not the web version&lt;br /&gt;
*** Add the json string to the board manager URLs in file-&amp;gt;preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
*** Set the board in Arduino&lt;br /&gt;
*** Get the blink example working&lt;br /&gt;
&lt;br /&gt;
== hook up the screen ==&lt;br /&gt;
* Solder dupont headers to 5V, Gnd, D3 and D4 on the Wemos D1 Mini&lt;br /&gt;
* connect the other end of dupont headers to oled screen&lt;br /&gt;
&lt;br /&gt;
== Load Weather Station software ==&lt;br /&gt;
&lt;br /&gt;
= Resources and Links = &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Code =&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12745</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12745"/>
		<updated>2020-02-07T12:25:37Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* Instructions */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
== Setup the Wemos D1 mini for the Arduino ==&lt;br /&gt;
** good tutorial here https://averagemaker.com/2018/03/wemos-d1-mini-setup.html&lt;br /&gt;
** overview&lt;br /&gt;
*** install ch340 serial usb drivers&lt;br /&gt;
*** install Arduino IDE - not the web version&lt;br /&gt;
*** Add the json string to the board manager URLs in file-&amp;gt;preferences http://arduino.esp8266.com/stable/package_esp8266com_index.json&lt;br /&gt;
*** Set the board in Arduino&lt;br /&gt;
*** Get the blink example working&lt;br /&gt;
&lt;br /&gt;
== hook up the screen ==&lt;br /&gt;
* Solder dupont headers to 5V, Gnd, D3 and D4 on the Wemos D1 Mini&lt;br /&gt;
* Slug other end of dupont headers to oled screen&lt;br /&gt;
&lt;br /&gt;
== Load Weather Station software ==&lt;br /&gt;
&lt;br /&gt;
= Resources and Links = &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Code =&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12744</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12744"/>
		<updated>2020-02-07T12:12:26Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* Materials */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example but you can get cheaper: https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
** you can also use a 0.96&amp;quot; screen but that one uses a different chip for the driver so you have to set your code to use the SSD1306.  If your screen lights up but screen is garbled then this is the case.&lt;br /&gt;
&lt;br /&gt;
* 3d Printed Enclosure&lt;br /&gt;
** search for &amp;quot;D1 Mini 1.3&amp;quot; on Thingiverse&lt;br /&gt;
** https://www.thingiverse.com/thing:2934049&lt;br /&gt;
** https://www.thingiverse.com/thing:3044478&lt;br /&gt;
&lt;br /&gt;
* Misc&lt;br /&gt;
** Dupont wires - these push onto the header pins. &lt;br /&gt;
*** https://www.amazon.com/EDGELEC-Breadboard-Optional-Assorted-Multicolored/dp/B07GD2BWPY/ref=sr_1_1_sspa&lt;br /&gt;
** Solder&lt;br /&gt;
** assorted 2mm self taping screws&lt;br /&gt;
** hot glue&lt;br /&gt;
** donuts and coffee&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Resources and Links = &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Code =&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12743</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12743"/>
		<updated>2020-02-07T12:02:33Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;br /&gt;
&lt;br /&gt;
= Materials =&lt;br /&gt;
* Wemos D1 Mini 4M (Not the lite version with 1M)&lt;br /&gt;
** https://docs.wemos.cc/en/latest/d1/index.html&lt;br /&gt;
** You can buy them on Ali Express (takes about 3 weeks) or Amazon (2 days)&lt;br /&gt;
** programmable with Arduino or microPython.  We will be using Arduino&lt;br /&gt;
&lt;br /&gt;
* OLED Display 1.3&amp;quot;&lt;br /&gt;
** very common display that can be found on Amazon, eBay or Ali Express&lt;br /&gt;
** uses SH1106 chip so you have to use SH1106 library in your code&lt;br /&gt;
** I2C serial connection &lt;br /&gt;
** pinout is VCC, GND, SCL, SDA&lt;br /&gt;
** example https://www.amazon.com/HiLetgo-Serial-SSH1106-Display-Arduino/dp/B01MRR4LVE/ref=pd_sbs_147_t_0/139-4905825-1461144&lt;br /&gt;
&lt;br /&gt;
= Instructions =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Resources and Links = &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Code =&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12742</id>
		<title>Micro Weather Station</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Micro_Weather_Station&amp;diff=12742"/>
		<updated>2020-02-07T11:53:11Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: Created page with &amp;quot; = Micro Weather Station = * Hosts: Brian and Andy * 2/29/20 * Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= Micro Weather Station =&lt;br /&gt;
* Hosts: Brian and Andy&lt;br /&gt;
* 2/29/20&lt;br /&gt;
* Build a Micro Weather Station using a Wemos D1 Mini, 1.3&amp;quot; OLED display, 3D Printed enclosure&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Main_Page&amp;diff=12741</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Main_Page&amp;diff=12741"/>
		<updated>2020-02-07T11:51:14Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border:1px; background-color:#f9f9f9; solid #B0B0B0; padding:3px; width:100%; margin-bottom:2px;&amp;quot;&lt;br /&gt;
!width=&amp;quot;49%&amp;quot;|&lt;br /&gt;
!width=&amp;quot;49%&amp;quot;|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;;|&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===New to LVL1.org?===&lt;br /&gt;
This is our fast and loose wiki site. It&#039;s the quickest way for all those involved with LVL1 to add and update information. For lots of basic info including our calendar, blog posts, social media links, driving and parking directions, etc. check out our web site [http://www.lvl1.org http://www.lvl1.org]! For more detailed and technical info including [[Older_Meetings|minutes]] to every one of our open meetings, our [[Bylaws|bylaws]], plus [[LVL1_Member_Projects_on_The_Net|projects]], [[Equipment|tools]], instructions, etc. check out the rest of this wiki.&lt;br /&gt;
&lt;br /&gt;
==== General Info ====&lt;br /&gt;
* [[Manual]]&lt;br /&gt;
* [[Community Guidelines]]&lt;br /&gt;
** [[How To Be Excellent]]&lt;br /&gt;
* [[Finding Information]]&lt;br /&gt;
* [[:Category:HOWTO|HOWTOs]]&lt;br /&gt;
* [[LVL1&#039;s Story]]&lt;br /&gt;
* [[Makership]]&lt;br /&gt;
&lt;br /&gt;
=== Communications ===&lt;br /&gt;
* See the [[http://www.lvl1.org/connect/ Connect page]] on our web site for links to our discussion group, hangout, social media and more!&lt;br /&gt;
&lt;br /&gt;
=== Recent Meetings ===&lt;br /&gt;
These are the agendas from recent meetings:*&lt;br /&gt;
* [[02/11/2020]]&lt;br /&gt;
* [[02/04/2020]]&lt;br /&gt;
* [[01/28/2020]]&lt;br /&gt;
* [[01/21/2020]]&lt;br /&gt;
* [[01/14/2020]]&lt;br /&gt;
* [[01/07/2020]]&lt;br /&gt;
* [[Older_Meetings]]&lt;br /&gt;
&lt;br /&gt;
=== Membership ===&lt;br /&gt;
You don&#039;t need to be a LVL1 member to enjoy any of our meetings, events and workshops. But if you&#039;d like the full LVL1 access that membership provides, and want to fully support LVL1, we&#039;d love to have you!&lt;br /&gt;
* [[How To Become A Member]]&lt;br /&gt;
* [[Previous Votes]]&lt;br /&gt;
* [[Voting ProTips]]&lt;br /&gt;
* [[Officers and Directors]]&lt;br /&gt;
&lt;br /&gt;
=== Support LVL1 ===&lt;br /&gt;
* See the [[http://www.lvl1.org/about/#support Support section]] on the About page of our web site.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* [http://makezine.com/blog Make magazine blog]&lt;br /&gt;
* [http://instructables.com Instructables]&lt;br /&gt;
&lt;br /&gt;
=== Our Neighbors ===&lt;br /&gt;
*[http://firstbuild.com/ FirstBuild] - Louisville, KY&lt;br /&gt;
*[https://www.maker13.com/ Maker13] - Louisville, KY&lt;br /&gt;
*[https://www.kre8now.com/ Kre8now] - Lexington, KY&lt;br /&gt;
*[http://bloominglabs.org/index.php/Main_Page Bloominglabs] - Bloomington, IN&lt;br /&gt;
*[http://www.hive13.org/ Hive 13] - Cincinnati, OH &lt;br /&gt;
*[https://makenashville.org/ Make Nashville] - Nashville, TN&lt;br /&gt;
*[http://www.clubcyberia.org/ Club Cyberia] - Indianapolis, IN&lt;br /&gt;
*[http://tekventure.org TekVenture] - Fort Wayne, IN&lt;br /&gt;
*[http://www.daytondiode.org/ Dayton Diode] - Dayton, OH &lt;br /&gt;
*[http://www.pumpingstationone.org/ Pumping Station One] - Chicago, IL&lt;br /&gt;
*[https://www.i3detroit.org/ i3] - Detroit, MI&lt;br /&gt;
*[https://milwaukeemakerspace.org/ Milwaukee Makerspace] - Milwaukee , WI&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
[[File:lvl1logo.png|300px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s Happening? ===&lt;br /&gt;
* See &#039;&#039;&#039;[http://www.lvl1.org/events/ Our Calendar]&#039;&#039;&#039; on our web site for details&lt;br /&gt;
* &#039;&#039;&#039;Workshops&#039;&#039;&#039; [[Workshops| - archive]]&lt;br /&gt;
** [[Micro Weather Station]] Build a Micro Weather Station with OLED display, Wemos D1 Mini and 3D Printed case - Brian and Andy 2/29/20&lt;br /&gt;
* &#039;&#039;&#039;Hackathons&#039;&#039;&#039; [[Hackathons| - archive]]&lt;br /&gt;
* &#039;&#039;&#039; Regular Activities &#039;&#039;&#039;&lt;br /&gt;
** [[Louisville Soundbuilders]], Mondays fortnightly (alternates with Night of the Hat), 8:00pm&lt;br /&gt;
** [[Night of the Hat]], Mondays fortnightly (alternates with Soundbuilders), 7:00pm&lt;br /&gt;
** [[Older_Meetings|Tuesday Open Meeting &amp;amp; Making]], 8:00pm&lt;br /&gt;
** [[Dust_Collection]] - Wednesday night build sessions, 7:00pm - 9:00pm&lt;br /&gt;
** [[Threadsday Thursday]] 7:00pm - 9:00pm&lt;br /&gt;
** [[Power_Racing_Series]] - Thursday night planning and build sessions&lt;br /&gt;
** [[Thursday_Code_Night]] - Open Code Night 6:00pm - 8:00pm &lt;br /&gt;
** [[LVL1 Movie Night]] &amp;amp; Open Build Night, Friday 7:30pm&lt;br /&gt;
* &#039;&#039;&#039;[[What&#039;s Happening Archive]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== LVL1 Member Projects on the Net ===&lt;br /&gt;
&lt;br /&gt;
* [[LVL1 Member Projects on The Net]]&lt;br /&gt;
* [[JAC Projects]]&lt;br /&gt;
* [[Group Projects]]&lt;br /&gt;
&lt;br /&gt;
=== Our Space ===&lt;br /&gt;
* &#039;&#039;&#039;1205 E Washington Street, The Pointe. Suite LL100!&#039;&#039;&#039;&lt;br /&gt;
* [[Space|Our Facilities]]&lt;br /&gt;
* [[Community Development Initiative]]&lt;br /&gt;
* Equipment - Partial list of popular items - [[Equipment|Click here for full list]]&lt;br /&gt;
** [[ShopBot]]&lt;br /&gt;
** [[Full Spectrum Laser]] (Small Laser)&lt;br /&gt;
** [[Rabbit Laser]] (Big Laser)&lt;br /&gt;
** [[Graphtec Vinyl Cutter]]&lt;br /&gt;
** [[Zenbot_1216_CNC]]&lt;br /&gt;
* [[Equipment Wishlist]]&lt;br /&gt;
* [[Oculus LVL1 2018]]&lt;br /&gt;
** [http://www.flickr.com/photos/lvl1 Flickr Photostream]&lt;br /&gt;
** [https://www.flickr.com/groups/lvl1/pool/ Flickr Photosharing Group]&lt;br /&gt;
*** For some info on how to interact through Flickr see [[Flickr_Photosharing]]&lt;br /&gt;
&lt;br /&gt;
=== Media ===&lt;br /&gt;
* [[Graphics]]&lt;br /&gt;
* [[t-shirts]] etc.&lt;br /&gt;
* Stickers are at the space&lt;br /&gt;
&lt;br /&gt;
=== Paper Work ===&lt;br /&gt;
* [[Articles of Incorporation]]&lt;br /&gt;
* [[Bylaws]]&lt;br /&gt;
* [[Mission]]&lt;br /&gt;
* [[Waiver]]&lt;br /&gt;
* [[Media:LVL1_MembershipForm_2015NOV24.pdf|New Member Signup/Info Form]]&lt;br /&gt;
* [[Equipment Removal Curses]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Likely unneeded as we don&#039;t control parking? * LVL1 Parking Permit ([[Media:Lvl1_parking_permits.pdf | PDF]] and [[Media:Lvl1_parking_permit.svg | Inkscape File]]) --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Workshops&amp;diff=12740</id>
		<title>Workshops</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Workshops&amp;diff=12740"/>
		<updated>2020-02-07T11:49:20Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a free resource for all learning materials used in LVL1 workshops. Check our [http://www.lvl1.org/events/ Calendar] to see what LVL1 workshops are on the horizon! Enjoy!&lt;br /&gt;
&lt;br /&gt;
== How to Host a Workshop ==&lt;br /&gt;
&lt;br /&gt;
We love it when members of our community share their knowledge and expertise! Check out our [http://www.lvl1.org/hosting-guide/ Hosting Guide] for assistance in organizing an event.&lt;br /&gt;
&lt;br /&gt;
== 2020 ==&lt;br /&gt;
=== Micro Weather Station ===&lt;br /&gt;
* docs coming soon&lt;br /&gt;
&lt;br /&gt;
== 2019 ==&lt;br /&gt;
=== Magic Mirror ===&lt;br /&gt;
* [[Magic Mirror 2019]] - Sunday, 14 April, 10:00am - 2:00pm by &#039;&#039;&#039;Andy&#039;&#039;&#039;&lt;br /&gt;
=== LED Wreath workshop ===&lt;br /&gt;
* [[LED 2019]] Wreath making workshop using WLED software, Wemos D1 mini and WS2812 LED strip&lt;br /&gt;
=== Other Workshops ===&lt;br /&gt;
* March Laser Cutter and Vinyl Cutter workshop: 3/20/19 @ Noon Contact &#039;&#039;&#039;Ned&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 2018 ==&lt;br /&gt;
=== Woodworking Workshop ===&lt;br /&gt;
* Woodworking Workshop - A foundation Course (cutting boards), Saturday, 15 December, 1:00pm - 4:00pm&lt;br /&gt;
=== Neopixel Holiday Workshop WiFi Edition!!! ===&lt;br /&gt;
* Neopixel Holiday Workshop WiFi Edition!!!, Saturday, 8 December, 10:00am - 1:00pm&lt;br /&gt;
** &#039;&#039;&#039;[[NeoPixel Web Server]]&#039;&#039;&#039;&lt;br /&gt;
===Soapmaking with Helen===&lt;br /&gt;
*November 17 - [http://www.lvl1.org/2018/12/12/project-recap/ Project Recap]&lt;br /&gt;
=== How to Make Your Own Lip Balm ===&lt;br /&gt;
* October 22 - [[http://www.lvl1.org/2018/10/12/upcoming-class-how-to-make-your-own-lip-balm/ How to Make Your Own Lip Balm]]&lt;br /&gt;
===How to make your own body scrub===&lt;br /&gt;
* September 10 - [[body scrub class]]&lt;br /&gt;
=== DIY Auto Repair Basics ===&lt;br /&gt;
* August 25&lt;br /&gt;
=== Shabori Dyeing ===&lt;br /&gt;
* July 25 - [[http://www.lvl1.org/2018/07/13/makerfaire-workshop-july/ Makerfaire Workshop – July Shabori Dyeing]]&lt;br /&gt;
=== DIY Auto Repair Basics ===&lt;br /&gt;
* July 21 - [[http://www.lvl1.org/2018/07/17/diy-auto-repair-basics/ DIY Auto Repair Basics]]&lt;br /&gt;
=== Making Jewelry ===&lt;br /&gt;
* May 30 - [[http://www.lvl1.org/2018/05/15/makerfaire-workshop-may/ Makerfaire Workshop – Making Jewelry]]&lt;br /&gt;
=== Build a Cloud workshop II ===&lt;br /&gt;
* April 28 - [[http://www.lvl1.org/2018/04/13/makerfaire-workshop-april/ Build a Cloud workshop II]]&lt;br /&gt;
=== Open Sew - Derby Edition ===&lt;br /&gt;
* April 18 - [[http://www.lvl1.org/2018/04/10/open-sew-derby-edition/ Open Sew - Derby Edition]]&lt;br /&gt;
=== MotoPhoto Photo Frame Workshop ===&lt;br /&gt;
* March 28 - [[Makerfaire Louisville Workshop Series 2018]] - [[MotoPhoto Photo Frame Mar 2018]]&lt;br /&gt;
=== Bath Bomb workshop ===&lt;br /&gt;
* March 17&lt;br /&gt;
=== Glass Bottle Decor Workshop ===&lt;br /&gt;
* February 28 - [[Makerfaire Louisville Workshop Series 2018]] - [[Glass bottle Decor Workshop Feb 2018]]&lt;br /&gt;
=== Build a Cloud Workshop ===&lt;br /&gt;
* January 24 - [[Makerfaire Louisville Workshop Series 2018]] - [[Build a Cloud Workshop Jan 2018]]&lt;br /&gt;
&lt;br /&gt;
== 2017 ==&lt;br /&gt;
=== Cuttlefish Pewter Casting Workshop ===&lt;br /&gt;
* December 3rd&lt;br /&gt;
[[Cuttlefish Pewter Casting Workshop]]&lt;br /&gt;
=== Neopixel Holiday Workshop ===&lt;br /&gt;
* November 11th &lt;br /&gt;
[[NeoPixel Workshop Instructions]] - Neopixel Holiday Workshop By Andy Miller&lt;br /&gt;
=== Wemos D1 Mini ===&lt;br /&gt;
* July - [[Wemos D1 Mini]]&lt;br /&gt;
=== Raspberry Pi Magic Mirror ===&lt;br /&gt;
* February - [[Raspberry Pi MagicMirror]]&lt;br /&gt;
&lt;br /&gt;
== 2016 ==&lt;br /&gt;
=== Start Sewing ===&lt;br /&gt;
* [[Start Sewing!]]&lt;br /&gt;
=== Raspberry Pi Workshop ===&lt;br /&gt;
&lt;br /&gt;
* [[Raspberry_Pi_Jukebox|Raspberry Pi Workshop]]&lt;br /&gt;
&lt;br /&gt;
== 2015 ==&lt;br /&gt;
&lt;br /&gt;
=== Arduino 101 ===&lt;br /&gt;
* [[Arduino 101]]&lt;br /&gt;
&lt;br /&gt;
=== Audio-Driven Flashing LEDs ===&lt;br /&gt;
*Illuminate an LED with varying brightness with respect to the amplitude of an audio signal: louder is brighter, quieter is softer.&lt;br /&gt;
[[Audio-Driven_Flashing_LEDs]]&lt;br /&gt;
&lt;br /&gt;
== 2013 ==&lt;br /&gt;
&lt;br /&gt;
=== FPGA ===&lt;br /&gt;
*[[FPGA]]&lt;br /&gt;
&lt;br /&gt;
=== OpenSCAD ===&lt;br /&gt;
* [[Workshops/OpenSCAD]]&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi Bootcamp ===&lt;br /&gt;
* Presentation [http://www.meatandnetworking.com/RasPiPresentation.pdf in PDF Format]&lt;br /&gt;
* Presentation [http://www.meatandnetworking.com/RasPiPresentation.ppt in Powerpoint Format]&lt;br /&gt;
&lt;br /&gt;
=== Sketchup Workshop ===&lt;br /&gt;
&lt;br /&gt;
* Presentation [[File:3dPrintingAndSketchUp.pdf]]&lt;br /&gt;
** Links to plugins for SketchUp&lt;br /&gt;
&lt;br /&gt;
== 2012 ==&lt;br /&gt;
&lt;br /&gt;
=== Arduino: Beyond the Blink ===&lt;br /&gt;
&lt;br /&gt;
* Presentation [[File:BeyondBlinkPresent.pdf]]&lt;br /&gt;
** Notes are on pages 71-140&lt;br /&gt;
&lt;br /&gt;
=== Atari Punk Console ===&lt;br /&gt;
* Follow the build instructions at [http://jimmieprodgers.com/kits/apc/makeapc/ Jimmie P. Rodgers Make APC]&lt;br /&gt;
* Check out APC hacks [http://jimmieprodgers.com/kits/apc/hacks/ here]. A CdS cell is included for experimentation.&lt;br /&gt;
* More info [http://wiki.lvl1.org/APC#Atari_Punk_Console here].&lt;br /&gt;
&lt;br /&gt;
=== Digital Electronics for Arduino ===&lt;br /&gt;
* [[Digital for Arduino]] - Digital Electronics for Arduino Workshop&lt;br /&gt;
&lt;br /&gt;
=== Freeduino Games (Gadget Lab at U of Louisville) ===&lt;br /&gt;
Add some games to the Freeduino Frenzy/Spring Training workshops!&lt;br /&gt;
*[[Freeduino Games]]&lt;br /&gt;
&lt;br /&gt;
=== KiCad Workshop (1/21/12)===&lt;br /&gt;
&lt;br /&gt;
[http://wiki.lvl1.org/File:KiCad.pdf Kicad Presentation]&lt;br /&gt;
[meatandnetworking.com/w/Kicad_Resources More KiCad links and resources]&lt;br /&gt;
&lt;br /&gt;
=== Trilife Workshop (Gadget Lab at U of Louisville + LVL1) ===&lt;br /&gt;
Learn to solder by building a small board that interacts with others in a giant array.&lt;br /&gt;
*[[Trilife Workshop]]&lt;br /&gt;
&lt;br /&gt;
== 2011 ==&lt;br /&gt;
&lt;br /&gt;
=== Android Game Workshop ===&lt;br /&gt;
*[https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B4p7lji7MVk7NGU3Zjk1NDUtMTliMS00NzFhLTg4YTMtNjMzMjQ1ZWIxMzVm&amp;amp;hl=en&amp;amp;authkey=CLqd-usM] Android Slides PDF&lt;br /&gt;
*[https://docs.google.com/leaf?id=0B4p7lji7MVk7YjBlN2Q1OTYtNjIyZS00MmZiLWIzMGMtYzMxMmNmZTQ0MGRm&amp;amp;hl=en&amp;amp;authkey=CMHRx3E] Android Sample App&lt;br /&gt;
&lt;br /&gt;
=== February Freeduino Frenzy ===&lt;br /&gt;
* [[February Freeduino Frenzy]]&lt;br /&gt;
&lt;br /&gt;
=== Griswold Christmas Light Controller ===&lt;br /&gt;
* [[Griswold]]&lt;br /&gt;
&lt;br /&gt;
=== LVL1 Summer Camp ===&lt;br /&gt;
&lt;br /&gt;
LVL1 Summer Camp was a workshop that is occurring during the month of June, 2011, taking up every Saturday in June, from 1pm to 5pm.&lt;br /&gt;
&lt;br /&gt;
==== Eagle Workshop ====&lt;br /&gt;
----&lt;br /&gt;
===== Links =====&lt;br /&gt;
&lt;br /&gt;
Eagle itself: [http://www.cadsoft.de/download.htm Eagle Download]&lt;br /&gt;
&lt;br /&gt;
Sparkfun parts library used for this workshop: [https://github.com/sparkfun/SparkFun-Eagle-Library/raw/master/SparkFun.lbr Sparkfun Library]&lt;br /&gt;
&lt;br /&gt;
Dangerous Prototypes Parts Library: [http://dangerous-prototypes-open-hardware.googlecode.com/svn/trunk/Eagle_Part_Library/dp_devices.lbr DP Parts Library]&lt;br /&gt;
&lt;br /&gt;
Sparkfun Keyboard Shortcuts, Appropriate for most layouts: [http://www.sparkfun.com/tutorial/BeginningEmbedded/8-EagleSchematics/sfe_eagle_shortcuts.zip Keyboard Shortcuts]&lt;br /&gt;
&lt;br /&gt;
CAM file: [http://www.sparkfun.com/tutorial/BeginningEmbedded/9-EaglePCBs/sfe-gerb274x.cam Sparkfun CAM, appropriate for GoldPhoenix]&lt;br /&gt;
&lt;br /&gt;
===== Board files we created =====&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/13484341/capsLocker.brd Caps Locker Board File]&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/13484341/tinyBreakout.brd Caps Locker Schematic File]&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/13484341/vusbtiny.brd V-USB Tiny Board File]&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/13484341/vusbtiny.sch V-USB Tiny Schematic File]&lt;br /&gt;
&lt;br /&gt;
===== GadgetLab TriLife blinker files =====&lt;br /&gt;
OK, this wasn&#039;t part of summer camp but it&#039;s here if you want more Eagle practice. [[GadgetLab_Trilife_Blinker]] is an Eagle layout project to route a board that contains about 10 parts and fits in a small footprint. The board controls the brightness of a LED depending on what neighboring boards&#039; LEDs are doing. From the University of Louisville GadgetLab class.&lt;br /&gt;
&lt;br /&gt;
==== Etching Workshop ====&lt;br /&gt;
----&lt;br /&gt;
Please See: [http://www.meatandnetworking.com/?p=47 Toner Transfer and Muriatic Acid Etchant: Making PCBs at LVL1]&lt;br /&gt;
&lt;br /&gt;
==== Soldering Workshop ====&lt;br /&gt;
----&lt;br /&gt;
[http://wiki.lvl1.org/File:Surface_Mount_Soldering.pdf Summer Camp Soldering Presentation]&lt;br /&gt;
&lt;br /&gt;
If you&#039;d like to create your own, you&#039;ll need these parts:&lt;br /&gt;
&lt;br /&gt;
===== V-USB Programmer =====&lt;br /&gt;
&lt;br /&gt;
* 1x AtTiny45, .3&amp;quot; SOIC package&lt;br /&gt;
* 1x Mini-USB B Port (surface mount)&lt;br /&gt;
* 1x Surface Mount Slide Switch (See Sparkfun)&lt;br /&gt;
* 2x 1.5k Ohm, 0805 Resistors&lt;br /&gt;
* 2x 68 Ohm, 0805 Resistors&lt;br /&gt;
* 1x Decoupling Cap&lt;br /&gt;
* 2x 3.3v Zener Diodes, SMB Package (Note: MUST Clamp Voltage to 3.3v)&lt;br /&gt;
* 1x Surface Mount, 6 pin, 2 row terminal block&lt;br /&gt;
&lt;br /&gt;
===== Caps Locker =====&lt;br /&gt;
&lt;br /&gt;
* 1x AtTiny45, .3&amp;quot; SOIC package&lt;br /&gt;
* 2x 68 Ohm 0805 Resistors&lt;br /&gt;
* 1x 1.5k Ohm 0805 Resistors&lt;br /&gt;
* 1x Surface Mount, 6 pin, 2 row terminal block&lt;br /&gt;
&lt;br /&gt;
==== Programming Workshop ==== &lt;br /&gt;
----&lt;br /&gt;
[http://wiki.lvl1.org/File:Presentationn.pdf Presentation with Notes]&lt;br /&gt;
&lt;br /&gt;
For Code, see [[Resources and Code]]&lt;br /&gt;
&lt;br /&gt;
=== Pimping your Home Network with DDWRT ===&lt;br /&gt;
&lt;br /&gt;
*[http://www.dd-wrt.com/site/support/router-database DDWRT Database Search]&lt;br /&gt;
*[http://www.dd-wrt.com/wiki/index.php/Repeater_Bridge Creating a wireless bridge]&lt;br /&gt;
*[http://www.pennock.nl/dd-wrt/Multiple_BSSIDs.html Guest Wifi]&lt;br /&gt;
*[https://docs.google.com/leaf?id=1w1FSYX70ejcjo5jaXnvqVe3HGLekPd3I0CW5LnRBrs6RnAOcU8jWBn4ES-Lb&amp;amp;hl=en_US&amp;amp;authkey=CKC21ZMF DDWRT Power Point]&lt;br /&gt;
&lt;br /&gt;
====Parts for a custom home router====&lt;br /&gt;
*[http://www.newegg.com/Product/Product.aspx?Item=N82E16813153154 Motherboard]&lt;br /&gt;
*[http://www.newegg.com/Product/Product.aspx?Item=N82E16820144151 RAM]&lt;br /&gt;
*[http://www.newegg.com/Product/Product.aspx?Item=N82E16822136771 Hard Drive]&lt;br /&gt;
*[http://www.newegg.com/Product/Product.aspx?Item=N82E16811108196 Case]&lt;br /&gt;
&lt;br /&gt;
=== Ruby on Rails Workshop ===&lt;br /&gt;
==== Source Code &amp;amp; Notes ====&lt;br /&gt;
*[https://docs.google.com/leaf?id=0Bzy184pfAcrUMThkNGVjMmItMWVmNS00OTM2LTg3ZTctOWY5MDk1MDdjY2Mx&amp;amp;hl=en&amp;amp;authkey=CP_Qo5kI] blog.zip&lt;br /&gt;
==== References ====&lt;br /&gt;
*[http://www.amazon.com/Design-Patterns-Ruby-Russ-Olsen/dp/0321490452/ref=sr_1_1?ie=UTF8&amp;amp;qid=1305291175&amp;amp;sr=8-1|Design Patterns in Ruby, by Russ Olsen]&lt;br /&gt;
This book is both very readable (a rarity in tech books) and a fantastic introduction to Ruby for someone familiar with the GoF design pattern implementations in other languages. It has a quick Ruby syntax primer in the beginning, then jumps straight into the patterns.&lt;br /&gt;
&lt;br /&gt;
*[http://www.amazon.com/Programming-Ruby-1-9-Pragmatic-Programmers/dp/1934356085/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1305291335&amp;amp;sr=1-1|Programming Ruby 1.9, by Dave Thomas, Chad Fowler, and Andy Hunt]&lt;br /&gt;
This is the latest edition of the book commonly known as &amp;quot;The Pickaxe&amp;quot; in the Ruby community -- in its first edition, it was the first comprehensive English-language reference for Ruby, and was therefore indispensable to someone just getting started with the language. The latest edition is still a great reference book to have around.&lt;br /&gt;
&lt;br /&gt;
*[http://www.amazon.com/Agile-Development-Rails-Pragmatic-Programmers/dp/1934356549/ref=sr_1_1?ie=UTF8&amp;amp;qid=1305291555&amp;amp;sr=8-1|Agile Web Development with Rails, 4th Edition, by Sam Ruby, Dave Thomas, and David Heinemeier Hansson]&lt;br /&gt;
Agile Web Development was co-authored by David Heinemeier Hansson, the creator of Rails, and was the closest thing that the Rails community had to &amp;quot;The Pickaxe&amp;quot; for Ruby, in its first edition. The authors have done a great job of cleaning it up and keeping it relevant, and the latest version covers Rails 3.&lt;br /&gt;
&lt;br /&gt;
*[http://www.amazon.com/Rails-Way-Addison-Wesley-Professional-Ruby/dp/0321601661/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1305291830&amp;amp;sr=1-1|The Rails 3 Way, 2nd Edition, by Obie Fernandez]&lt;br /&gt;
Obie heads up the Florida-based Rails consultancy, Hashrocket, and was an early adopter of Rails, coming over from the Java camp. He&#039;s been a vocal advocate of best practices in Rails for just about as long as Rails has existed, and his book helps to explain not just how to do things in Rails, but why.&lt;br /&gt;
&lt;br /&gt;
=== Tinkering to Commercialization Workshop ===&lt;br /&gt;
[[Media:Tinkering_To_Commercialization_-_August_2011.pdf|Tinkering to Commercialization Presentation]]&lt;br /&gt;
&lt;br /&gt;
=== Twiddle N Scratch ===&lt;br /&gt;
&lt;br /&gt;
*[[Workshops/TwiddleNScratch|Twiddle N Scratch]]&lt;br /&gt;
&lt;br /&gt;
== 2010 ==&lt;br /&gt;
&lt;br /&gt;
=== Freeduino Spring Training ===&lt;br /&gt;
&lt;br /&gt;
[[Freediuino_Spring_Training|Freeduino Spring Training]]&lt;br /&gt;
&lt;br /&gt;
Below are the lessons for the Freeduino Spring Training.  They are Creative Commons licensed, so share and use.  Pass them along.  If there are issues (bugs) with the instruction, code or circuits, then email me brian_at_lvl1.org.  The breadboard and schematic pictures are drawn using the [http://www.fritzing.org Fritzing] Program.  Try Fritzing out - it is really cool! &lt;br /&gt;
&lt;br /&gt;
*[[1st Inning]] - Arduino and Breadboard setup, Power&lt;br /&gt;
*[[2nd Inning]] - Blinking LED&lt;br /&gt;
*[[3rd Inning]] - Tri-Color LED fading&lt;br /&gt;
*[[4th Inning]] - LCD display&lt;br /&gt;
*[[5th Inning]] - Pushbutton switches&lt;br /&gt;
*[[6th Inning]] - Potentiometers and voltage dividers&lt;br /&gt;
*[[7th Inning]] - Photocell, Thermistor&lt;br /&gt;
*[[8th Inning]] - Spin a motor, transistors and diodes&lt;br /&gt;
*[[9th Inning]] - Sounds and speakers&lt;br /&gt;
&lt;br /&gt;
=== Learn To Solder with Mitch Altman and Jimmie Rodgers ===&lt;br /&gt;
*[[Media:LearnToSolderWithMitch.odt|Flyer for the workshop in OOO Writer format.]]&lt;br /&gt;
*[[Media:LearnToSolderWithMitch.pdf|Flyer for the workshop in PDF format.]]&lt;br /&gt;
&lt;br /&gt;
=== Intermediate Microcontroller Workshop, &amp;quot;Beyond Arduino&amp;quot; === &lt;br /&gt;
*[http://drop.io/kt3wfh7 Presentation] - The Powerpoint Presentation used in the workshop, with notes.&lt;br /&gt;
*[[Resources and Code]] - The files used during the course of this workshop.&lt;br /&gt;
*[[Parts]] - Parts used in this workshop&lt;br /&gt;
*[[Media:Lvl1_avr_workshop.svg|Flyer for the workshop in SVG Format.]]&lt;br /&gt;
*[[Media:Lvl1_avr_workshop.pdf|Flyer for the workshop in PDF Format.]]&lt;br /&gt;
&lt;br /&gt;
=== Minti Boost Workshop ===&lt;br /&gt;
[[MintiBoost]] Workshop Information for 12/6/10 and 12/18/10&lt;br /&gt;
&lt;br /&gt;
=== Solder Your Own Freeduino ===&lt;br /&gt;
*[http://www.arduino.cc/en/Main/Software Download Arduino Software] the Arduino software and install.&lt;br /&gt;
*[http://arduino.cc/en/Tutorial/HomePage Arduino Tutorials] Arduino Tutorials&lt;br /&gt;
*[[Media:Solder_your_own_freeduino_handout.pdf|Solder Your Own Freeduino Instructions PDF]]&lt;br /&gt;
*[[Media:Solder_your_own_freeduino_handout.odp|Solder Your Own Freeduino Instructions Open Office Presentation]]&lt;br /&gt;
*[[Media:ResistorQV.pdf|Resistor Color Code PDF]]&lt;br /&gt;
*[[Media:Arduino_cheat_sheet_v02c.pdf|Arduino Cheatsheet PDF]]&lt;br /&gt;
&lt;br /&gt;
=== TV-B-Gone Workshop ===&lt;br /&gt;
*[[Media:Tv-b-gone.odp|TV-B-Gone instructions Open Office Presentation]]&lt;br /&gt;
*[[Media:Tv-b-gone.pdf|TV-B-Gone instructions PDF]]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
*How to Solder&lt;br /&gt;
** [[media:soldercomic.pdf|Soldering is Easy Comic]]&lt;br /&gt;
&lt;br /&gt;
[[Category:HOWTO]]&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Workshops&amp;diff=12739</id>
		<title>Workshops</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Workshops&amp;diff=12739"/>
		<updated>2020-02-07T11:48:26Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a free resource for all learning materials used in LVL1 workshops. Check our [http://www.lvl1.org/events/ Calendar] to see what LVL1 workshops are on the horizon! Enjoy!&lt;br /&gt;
&lt;br /&gt;
== How to Host a Workshop ==&lt;br /&gt;
&lt;br /&gt;
We love it when members of our community share their knowledge and expertise! Check out our [http://www.lvl1.org/hosting-guide/ Hosting Guide] for assistance in organizing an event.&lt;br /&gt;
&lt;br /&gt;
== 2019 ==&lt;br /&gt;
=== Magic Mirror ===&lt;br /&gt;
* [[Magic Mirror 2019]] - Sunday, 14 April, 10:00am - 2:00pm by &#039;&#039;&#039;Andy&#039;&#039;&#039;&lt;br /&gt;
=== LED Wreath workshop ===&lt;br /&gt;
* [[LED 2019]] Wreath making workshop using WLED software, Wemos D1 mini and WS2812 LED strip&lt;br /&gt;
=== Other Workshops ===&lt;br /&gt;
* March Laser Cutter and Vinyl Cutter workshop: 3/20/19 @ Noon Contact &#039;&#039;&#039;Ned&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
== 2018 ==&lt;br /&gt;
=== Woodworking Workshop ===&lt;br /&gt;
* Woodworking Workshop - A foundation Course (cutting boards), Saturday, 15 December, 1:00pm - 4:00pm&lt;br /&gt;
=== Neopixel Holiday Workshop WiFi Edition!!! ===&lt;br /&gt;
* Neopixel Holiday Workshop WiFi Edition!!!, Saturday, 8 December, 10:00am - 1:00pm&lt;br /&gt;
** &#039;&#039;&#039;[[NeoPixel Web Server]]&#039;&#039;&#039;&lt;br /&gt;
===Soapmaking with Helen===&lt;br /&gt;
*November 17 - [http://www.lvl1.org/2018/12/12/project-recap/ Project Recap]&lt;br /&gt;
=== How to Make Your Own Lip Balm ===&lt;br /&gt;
* October 22 - [[http://www.lvl1.org/2018/10/12/upcoming-class-how-to-make-your-own-lip-balm/ How to Make Your Own Lip Balm]]&lt;br /&gt;
===How to make your own body scrub===&lt;br /&gt;
* September 10 - [[body scrub class]]&lt;br /&gt;
=== DIY Auto Repair Basics ===&lt;br /&gt;
* August 25&lt;br /&gt;
=== Shabori Dyeing ===&lt;br /&gt;
* July 25 - [[http://www.lvl1.org/2018/07/13/makerfaire-workshop-july/ Makerfaire Workshop – July Shabori Dyeing]]&lt;br /&gt;
=== DIY Auto Repair Basics ===&lt;br /&gt;
* July 21 - [[http://www.lvl1.org/2018/07/17/diy-auto-repair-basics/ DIY Auto Repair Basics]]&lt;br /&gt;
=== Making Jewelry ===&lt;br /&gt;
* May 30 - [[http://www.lvl1.org/2018/05/15/makerfaire-workshop-may/ Makerfaire Workshop – Making Jewelry]]&lt;br /&gt;
=== Build a Cloud workshop II ===&lt;br /&gt;
* April 28 - [[http://www.lvl1.org/2018/04/13/makerfaire-workshop-april/ Build a Cloud workshop II]]&lt;br /&gt;
=== Open Sew - Derby Edition ===&lt;br /&gt;
* April 18 - [[http://www.lvl1.org/2018/04/10/open-sew-derby-edition/ Open Sew - Derby Edition]]&lt;br /&gt;
=== MotoPhoto Photo Frame Workshop ===&lt;br /&gt;
* March 28 - [[Makerfaire Louisville Workshop Series 2018]] - [[MotoPhoto Photo Frame Mar 2018]]&lt;br /&gt;
=== Bath Bomb workshop ===&lt;br /&gt;
* March 17&lt;br /&gt;
=== Glass Bottle Decor Workshop ===&lt;br /&gt;
* February 28 - [[Makerfaire Louisville Workshop Series 2018]] - [[Glass bottle Decor Workshop Feb 2018]]&lt;br /&gt;
=== Build a Cloud Workshop ===&lt;br /&gt;
* January 24 - [[Makerfaire Louisville Workshop Series 2018]] - [[Build a Cloud Workshop Jan 2018]]&lt;br /&gt;
&lt;br /&gt;
== 2017 ==&lt;br /&gt;
=== Cuttlefish Pewter Casting Workshop ===&lt;br /&gt;
* December 3rd&lt;br /&gt;
[[Cuttlefish Pewter Casting Workshop]]&lt;br /&gt;
=== Neopixel Holiday Workshop ===&lt;br /&gt;
* November 11th &lt;br /&gt;
[[NeoPixel Workshop Instructions]] - Neopixel Holiday Workshop By Andy Miller&lt;br /&gt;
=== Wemos D1 Mini ===&lt;br /&gt;
* July - [[Wemos D1 Mini]]&lt;br /&gt;
=== Raspberry Pi Magic Mirror ===&lt;br /&gt;
* February - [[Raspberry Pi MagicMirror]]&lt;br /&gt;
&lt;br /&gt;
== 2016 ==&lt;br /&gt;
=== Start Sewing ===&lt;br /&gt;
* [[Start Sewing!]]&lt;br /&gt;
=== Raspberry Pi Workshop ===&lt;br /&gt;
&lt;br /&gt;
* [[Raspberry_Pi_Jukebox|Raspberry Pi Workshop]]&lt;br /&gt;
&lt;br /&gt;
== 2015 ==&lt;br /&gt;
&lt;br /&gt;
=== Arduino 101 ===&lt;br /&gt;
* [[Arduino 101]]&lt;br /&gt;
&lt;br /&gt;
=== Audio-Driven Flashing LEDs ===&lt;br /&gt;
*Illuminate an LED with varying brightness with respect to the amplitude of an audio signal: louder is brighter, quieter is softer.&lt;br /&gt;
[[Audio-Driven_Flashing_LEDs]]&lt;br /&gt;
&lt;br /&gt;
== 2013 ==&lt;br /&gt;
&lt;br /&gt;
=== FPGA ===&lt;br /&gt;
*[[FPGA]]&lt;br /&gt;
&lt;br /&gt;
=== OpenSCAD ===&lt;br /&gt;
* [[Workshops/OpenSCAD]]&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi Bootcamp ===&lt;br /&gt;
* Presentation [http://www.meatandnetworking.com/RasPiPresentation.pdf in PDF Format]&lt;br /&gt;
* Presentation [http://www.meatandnetworking.com/RasPiPresentation.ppt in Powerpoint Format]&lt;br /&gt;
&lt;br /&gt;
=== Sketchup Workshop ===&lt;br /&gt;
&lt;br /&gt;
* Presentation [[File:3dPrintingAndSketchUp.pdf]]&lt;br /&gt;
** Links to plugins for SketchUp&lt;br /&gt;
&lt;br /&gt;
== 2012 ==&lt;br /&gt;
&lt;br /&gt;
=== Arduino: Beyond the Blink ===&lt;br /&gt;
&lt;br /&gt;
* Presentation [[File:BeyondBlinkPresent.pdf]]&lt;br /&gt;
** Notes are on pages 71-140&lt;br /&gt;
&lt;br /&gt;
=== Atari Punk Console ===&lt;br /&gt;
* Follow the build instructions at [http://jimmieprodgers.com/kits/apc/makeapc/ Jimmie P. Rodgers Make APC]&lt;br /&gt;
* Check out APC hacks [http://jimmieprodgers.com/kits/apc/hacks/ here]. A CdS cell is included for experimentation.&lt;br /&gt;
* More info [http://wiki.lvl1.org/APC#Atari_Punk_Console here].&lt;br /&gt;
&lt;br /&gt;
=== Digital Electronics for Arduino ===&lt;br /&gt;
* [[Digital for Arduino]] - Digital Electronics for Arduino Workshop&lt;br /&gt;
&lt;br /&gt;
=== Freeduino Games (Gadget Lab at U of Louisville) ===&lt;br /&gt;
Add some games to the Freeduino Frenzy/Spring Training workshops!&lt;br /&gt;
*[[Freeduino Games]]&lt;br /&gt;
&lt;br /&gt;
=== KiCad Workshop (1/21/12)===&lt;br /&gt;
&lt;br /&gt;
[http://wiki.lvl1.org/File:KiCad.pdf Kicad Presentation]&lt;br /&gt;
[meatandnetworking.com/w/Kicad_Resources More KiCad links and resources]&lt;br /&gt;
&lt;br /&gt;
=== Trilife Workshop (Gadget Lab at U of Louisville + LVL1) ===&lt;br /&gt;
Learn to solder by building a small board that interacts with others in a giant array.&lt;br /&gt;
*[[Trilife Workshop]]&lt;br /&gt;
&lt;br /&gt;
== 2011 ==&lt;br /&gt;
&lt;br /&gt;
=== Android Game Workshop ===&lt;br /&gt;
*[https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B4p7lji7MVk7NGU3Zjk1NDUtMTliMS00NzFhLTg4YTMtNjMzMjQ1ZWIxMzVm&amp;amp;hl=en&amp;amp;authkey=CLqd-usM] Android Slides PDF&lt;br /&gt;
*[https://docs.google.com/leaf?id=0B4p7lji7MVk7YjBlN2Q1OTYtNjIyZS00MmZiLWIzMGMtYzMxMmNmZTQ0MGRm&amp;amp;hl=en&amp;amp;authkey=CMHRx3E] Android Sample App&lt;br /&gt;
&lt;br /&gt;
=== February Freeduino Frenzy ===&lt;br /&gt;
* [[February Freeduino Frenzy]]&lt;br /&gt;
&lt;br /&gt;
=== Griswold Christmas Light Controller ===&lt;br /&gt;
* [[Griswold]]&lt;br /&gt;
&lt;br /&gt;
=== LVL1 Summer Camp ===&lt;br /&gt;
&lt;br /&gt;
LVL1 Summer Camp was a workshop that is occurring during the month of June, 2011, taking up every Saturday in June, from 1pm to 5pm.&lt;br /&gt;
&lt;br /&gt;
==== Eagle Workshop ====&lt;br /&gt;
----&lt;br /&gt;
===== Links =====&lt;br /&gt;
&lt;br /&gt;
Eagle itself: [http://www.cadsoft.de/download.htm Eagle Download]&lt;br /&gt;
&lt;br /&gt;
Sparkfun parts library used for this workshop: [https://github.com/sparkfun/SparkFun-Eagle-Library/raw/master/SparkFun.lbr Sparkfun Library]&lt;br /&gt;
&lt;br /&gt;
Dangerous Prototypes Parts Library: [http://dangerous-prototypes-open-hardware.googlecode.com/svn/trunk/Eagle_Part_Library/dp_devices.lbr DP Parts Library]&lt;br /&gt;
&lt;br /&gt;
Sparkfun Keyboard Shortcuts, Appropriate for most layouts: [http://www.sparkfun.com/tutorial/BeginningEmbedded/8-EagleSchematics/sfe_eagle_shortcuts.zip Keyboard Shortcuts]&lt;br /&gt;
&lt;br /&gt;
CAM file: [http://www.sparkfun.com/tutorial/BeginningEmbedded/9-EaglePCBs/sfe-gerb274x.cam Sparkfun CAM, appropriate for GoldPhoenix]&lt;br /&gt;
&lt;br /&gt;
===== Board files we created =====&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/13484341/capsLocker.brd Caps Locker Board File]&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/13484341/tinyBreakout.brd Caps Locker Schematic File]&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/13484341/vusbtiny.brd V-USB Tiny Board File]&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/13484341/vusbtiny.sch V-USB Tiny Schematic File]&lt;br /&gt;
&lt;br /&gt;
===== GadgetLab TriLife blinker files =====&lt;br /&gt;
OK, this wasn&#039;t part of summer camp but it&#039;s here if you want more Eagle practice. [[GadgetLab_Trilife_Blinker]] is an Eagle layout project to route a board that contains about 10 parts and fits in a small footprint. The board controls the brightness of a LED depending on what neighboring boards&#039; LEDs are doing. From the University of Louisville GadgetLab class.&lt;br /&gt;
&lt;br /&gt;
==== Etching Workshop ====&lt;br /&gt;
----&lt;br /&gt;
Please See: [http://www.meatandnetworking.com/?p=47 Toner Transfer and Muriatic Acid Etchant: Making PCBs at LVL1]&lt;br /&gt;
&lt;br /&gt;
==== Soldering Workshop ====&lt;br /&gt;
----&lt;br /&gt;
[http://wiki.lvl1.org/File:Surface_Mount_Soldering.pdf Summer Camp Soldering Presentation]&lt;br /&gt;
&lt;br /&gt;
If you&#039;d like to create your own, you&#039;ll need these parts:&lt;br /&gt;
&lt;br /&gt;
===== V-USB Programmer =====&lt;br /&gt;
&lt;br /&gt;
* 1x AtTiny45, .3&amp;quot; SOIC package&lt;br /&gt;
* 1x Mini-USB B Port (surface mount)&lt;br /&gt;
* 1x Surface Mount Slide Switch (See Sparkfun)&lt;br /&gt;
* 2x 1.5k Ohm, 0805 Resistors&lt;br /&gt;
* 2x 68 Ohm, 0805 Resistors&lt;br /&gt;
* 1x Decoupling Cap&lt;br /&gt;
* 2x 3.3v Zener Diodes, SMB Package (Note: MUST Clamp Voltage to 3.3v)&lt;br /&gt;
* 1x Surface Mount, 6 pin, 2 row terminal block&lt;br /&gt;
&lt;br /&gt;
===== Caps Locker =====&lt;br /&gt;
&lt;br /&gt;
* 1x AtTiny45, .3&amp;quot; SOIC package&lt;br /&gt;
* 2x 68 Ohm 0805 Resistors&lt;br /&gt;
* 1x 1.5k Ohm 0805 Resistors&lt;br /&gt;
* 1x Surface Mount, 6 pin, 2 row terminal block&lt;br /&gt;
&lt;br /&gt;
==== Programming Workshop ==== &lt;br /&gt;
----&lt;br /&gt;
[http://wiki.lvl1.org/File:Presentationn.pdf Presentation with Notes]&lt;br /&gt;
&lt;br /&gt;
For Code, see [[Resources and Code]]&lt;br /&gt;
&lt;br /&gt;
=== Pimping your Home Network with DDWRT ===&lt;br /&gt;
&lt;br /&gt;
*[http://www.dd-wrt.com/site/support/router-database DDWRT Database Search]&lt;br /&gt;
*[http://www.dd-wrt.com/wiki/index.php/Repeater_Bridge Creating a wireless bridge]&lt;br /&gt;
*[http://www.pennock.nl/dd-wrt/Multiple_BSSIDs.html Guest Wifi]&lt;br /&gt;
*[https://docs.google.com/leaf?id=1w1FSYX70ejcjo5jaXnvqVe3HGLekPd3I0CW5LnRBrs6RnAOcU8jWBn4ES-Lb&amp;amp;hl=en_US&amp;amp;authkey=CKC21ZMF DDWRT Power Point]&lt;br /&gt;
&lt;br /&gt;
====Parts for a custom home router====&lt;br /&gt;
*[http://www.newegg.com/Product/Product.aspx?Item=N82E16813153154 Motherboard]&lt;br /&gt;
*[http://www.newegg.com/Product/Product.aspx?Item=N82E16820144151 RAM]&lt;br /&gt;
*[http://www.newegg.com/Product/Product.aspx?Item=N82E16822136771 Hard Drive]&lt;br /&gt;
*[http://www.newegg.com/Product/Product.aspx?Item=N82E16811108196 Case]&lt;br /&gt;
&lt;br /&gt;
=== Ruby on Rails Workshop ===&lt;br /&gt;
==== Source Code &amp;amp; Notes ====&lt;br /&gt;
*[https://docs.google.com/leaf?id=0Bzy184pfAcrUMThkNGVjMmItMWVmNS00OTM2LTg3ZTctOWY5MDk1MDdjY2Mx&amp;amp;hl=en&amp;amp;authkey=CP_Qo5kI] blog.zip&lt;br /&gt;
==== References ====&lt;br /&gt;
*[http://www.amazon.com/Design-Patterns-Ruby-Russ-Olsen/dp/0321490452/ref=sr_1_1?ie=UTF8&amp;amp;qid=1305291175&amp;amp;sr=8-1|Design Patterns in Ruby, by Russ Olsen]&lt;br /&gt;
This book is both very readable (a rarity in tech books) and a fantastic introduction to Ruby for someone familiar with the GoF design pattern implementations in other languages. It has a quick Ruby syntax primer in the beginning, then jumps straight into the patterns.&lt;br /&gt;
&lt;br /&gt;
*[http://www.amazon.com/Programming-Ruby-1-9-Pragmatic-Programmers/dp/1934356085/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1305291335&amp;amp;sr=1-1|Programming Ruby 1.9, by Dave Thomas, Chad Fowler, and Andy Hunt]&lt;br /&gt;
This is the latest edition of the book commonly known as &amp;quot;The Pickaxe&amp;quot; in the Ruby community -- in its first edition, it was the first comprehensive English-language reference for Ruby, and was therefore indispensable to someone just getting started with the language. The latest edition is still a great reference book to have around.&lt;br /&gt;
&lt;br /&gt;
*[http://www.amazon.com/Agile-Development-Rails-Pragmatic-Programmers/dp/1934356549/ref=sr_1_1?ie=UTF8&amp;amp;qid=1305291555&amp;amp;sr=8-1|Agile Web Development with Rails, 4th Edition, by Sam Ruby, Dave Thomas, and David Heinemeier Hansson]&lt;br /&gt;
Agile Web Development was co-authored by David Heinemeier Hansson, the creator of Rails, and was the closest thing that the Rails community had to &amp;quot;The Pickaxe&amp;quot; for Ruby, in its first edition. The authors have done a great job of cleaning it up and keeping it relevant, and the latest version covers Rails 3.&lt;br /&gt;
&lt;br /&gt;
*[http://www.amazon.com/Rails-Way-Addison-Wesley-Professional-Ruby/dp/0321601661/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1305291830&amp;amp;sr=1-1|The Rails 3 Way, 2nd Edition, by Obie Fernandez]&lt;br /&gt;
Obie heads up the Florida-based Rails consultancy, Hashrocket, and was an early adopter of Rails, coming over from the Java camp. He&#039;s been a vocal advocate of best practices in Rails for just about as long as Rails has existed, and his book helps to explain not just how to do things in Rails, but why.&lt;br /&gt;
&lt;br /&gt;
=== Tinkering to Commercialization Workshop ===&lt;br /&gt;
[[Media:Tinkering_To_Commercialization_-_August_2011.pdf|Tinkering to Commercialization Presentation]]&lt;br /&gt;
&lt;br /&gt;
=== Twiddle N Scratch ===&lt;br /&gt;
&lt;br /&gt;
*[[Workshops/TwiddleNScratch|Twiddle N Scratch]]&lt;br /&gt;
&lt;br /&gt;
== 2010 ==&lt;br /&gt;
&lt;br /&gt;
=== Freeduino Spring Training ===&lt;br /&gt;
&lt;br /&gt;
[[Freediuino_Spring_Training|Freeduino Spring Training]]&lt;br /&gt;
&lt;br /&gt;
Below are the lessons for the Freeduino Spring Training.  They are Creative Commons licensed, so share and use.  Pass them along.  If there are issues (bugs) with the instruction, code or circuits, then email me brian_at_lvl1.org.  The breadboard and schematic pictures are drawn using the [http://www.fritzing.org Fritzing] Program.  Try Fritzing out - it is really cool! &lt;br /&gt;
&lt;br /&gt;
*[[1st Inning]] - Arduino and Breadboard setup, Power&lt;br /&gt;
*[[2nd Inning]] - Blinking LED&lt;br /&gt;
*[[3rd Inning]] - Tri-Color LED fading&lt;br /&gt;
*[[4th Inning]] - LCD display&lt;br /&gt;
*[[5th Inning]] - Pushbutton switches&lt;br /&gt;
*[[6th Inning]] - Potentiometers and voltage dividers&lt;br /&gt;
*[[7th Inning]] - Photocell, Thermistor&lt;br /&gt;
*[[8th Inning]] - Spin a motor, transistors and diodes&lt;br /&gt;
*[[9th Inning]] - Sounds and speakers&lt;br /&gt;
&lt;br /&gt;
=== Learn To Solder with Mitch Altman and Jimmie Rodgers ===&lt;br /&gt;
*[[Media:LearnToSolderWithMitch.odt|Flyer for the workshop in OOO Writer format.]]&lt;br /&gt;
*[[Media:LearnToSolderWithMitch.pdf|Flyer for the workshop in PDF format.]]&lt;br /&gt;
&lt;br /&gt;
=== Intermediate Microcontroller Workshop, &amp;quot;Beyond Arduino&amp;quot; === &lt;br /&gt;
*[http://drop.io/kt3wfh7 Presentation] - The Powerpoint Presentation used in the workshop, with notes.&lt;br /&gt;
*[[Resources and Code]] - The files used during the course of this workshop.&lt;br /&gt;
*[[Parts]] - Parts used in this workshop&lt;br /&gt;
*[[Media:Lvl1_avr_workshop.svg|Flyer for the workshop in SVG Format.]]&lt;br /&gt;
*[[Media:Lvl1_avr_workshop.pdf|Flyer for the workshop in PDF Format.]]&lt;br /&gt;
&lt;br /&gt;
=== Minti Boost Workshop ===&lt;br /&gt;
[[MintiBoost]] Workshop Information for 12/6/10 and 12/18/10&lt;br /&gt;
&lt;br /&gt;
=== Solder Your Own Freeduino ===&lt;br /&gt;
*[http://www.arduino.cc/en/Main/Software Download Arduino Software] the Arduino software and install.&lt;br /&gt;
*[http://arduino.cc/en/Tutorial/HomePage Arduino Tutorials] Arduino Tutorials&lt;br /&gt;
*[[Media:Solder_your_own_freeduino_handout.pdf|Solder Your Own Freeduino Instructions PDF]]&lt;br /&gt;
*[[Media:Solder_your_own_freeduino_handout.odp|Solder Your Own Freeduino Instructions Open Office Presentation]]&lt;br /&gt;
*[[Media:ResistorQV.pdf|Resistor Color Code PDF]]&lt;br /&gt;
*[[Media:Arduino_cheat_sheet_v02c.pdf|Arduino Cheatsheet PDF]]&lt;br /&gt;
&lt;br /&gt;
=== TV-B-Gone Workshop ===&lt;br /&gt;
*[[Media:Tv-b-gone.odp|TV-B-Gone instructions Open Office Presentation]]&lt;br /&gt;
*[[Media:Tv-b-gone.pdf|TV-B-Gone instructions PDF]]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
*How to Solder&lt;br /&gt;
** [[media:soldercomic.pdf|Soldering is Easy Comic]]&lt;br /&gt;
&lt;br /&gt;
[[Category:HOWTO]]&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Workshops&amp;diff=12738</id>
		<title>Workshops</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Workshops&amp;diff=12738"/>
		<updated>2020-02-07T11:46:53Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a free resource for all learning materials used in LVL1 workshops. Check our [http://www.lvl1.org/events/ Calendar] to see what LVL1 workshops are on the horizon! Enjoy!&lt;br /&gt;
&lt;br /&gt;
== How to Host a Workshop ==&lt;br /&gt;
&lt;br /&gt;
We love it when members of our community share their knowledge and expertise! Check out our [http://www.lvl1.org/hosting-guide/ Hosting Guide] for assistance in organizing an event.&lt;br /&gt;
&lt;br /&gt;
== 2019 ==&lt;br /&gt;
* March Laser Cutter and Vinyl Cutter workshop: 3/20/19 @ Noon Contact &#039;&#039;&#039;Ned&#039;&#039;&#039;.&lt;br /&gt;
* [[Magic Mirror 2019]] - Sunday, 14 April, 10:00am - 2:00pm by &#039;&#039;&#039;Andy&#039;&#039;&#039;&lt;br /&gt;
* [[LED 2019]] Wreath making workshop using WLED software, Wemos D1 mini and WS2812 LED strip&lt;br /&gt;
&lt;br /&gt;
== 2018 ==&lt;br /&gt;
=== Woodworking Workshop ===&lt;br /&gt;
* Woodworking Workshop - A foundation Course (cutting boards), Saturday, 15 December, 1:00pm - 4:00pm&lt;br /&gt;
=== Neopixel Holiday Workshop WiFi Edition!!! ===&lt;br /&gt;
* Neopixel Holiday Workshop WiFi Edition!!!, Saturday, 8 December, 10:00am - 1:00pm&lt;br /&gt;
** &#039;&#039;&#039;[[NeoPixel Web Server]]&#039;&#039;&#039;&lt;br /&gt;
===Soapmaking with Helen===&lt;br /&gt;
*November 17 - [http://www.lvl1.org/2018/12/12/project-recap/ Project Recap]&lt;br /&gt;
=== How to Make Your Own Lip Balm ===&lt;br /&gt;
* October 22 - [[http://www.lvl1.org/2018/10/12/upcoming-class-how-to-make-your-own-lip-balm/ How to Make Your Own Lip Balm]]&lt;br /&gt;
===How to make your own body scrub===&lt;br /&gt;
* September 10 - [[body scrub class]]&lt;br /&gt;
=== DIY Auto Repair Basics ===&lt;br /&gt;
* August 25&lt;br /&gt;
=== Shabori Dyeing ===&lt;br /&gt;
* July 25 - [[http://www.lvl1.org/2018/07/13/makerfaire-workshop-july/ Makerfaire Workshop – July Shabori Dyeing]]&lt;br /&gt;
=== DIY Auto Repair Basics ===&lt;br /&gt;
* July 21 - [[http://www.lvl1.org/2018/07/17/diy-auto-repair-basics/ DIY Auto Repair Basics]]&lt;br /&gt;
=== Making Jewelry ===&lt;br /&gt;
* May 30 - [[http://www.lvl1.org/2018/05/15/makerfaire-workshop-may/ Makerfaire Workshop – Making Jewelry]]&lt;br /&gt;
=== Build a Cloud workshop II ===&lt;br /&gt;
* April 28 - [[http://www.lvl1.org/2018/04/13/makerfaire-workshop-april/ Build a Cloud workshop II]]&lt;br /&gt;
=== Open Sew - Derby Edition ===&lt;br /&gt;
* April 18 - [[http://www.lvl1.org/2018/04/10/open-sew-derby-edition/ Open Sew - Derby Edition]]&lt;br /&gt;
=== MotoPhoto Photo Frame Workshop ===&lt;br /&gt;
* March 28 - [[Makerfaire Louisville Workshop Series 2018]] - [[MotoPhoto Photo Frame Mar 2018]]&lt;br /&gt;
=== Bath Bomb workshop ===&lt;br /&gt;
* March 17&lt;br /&gt;
=== Glass Bottle Decor Workshop ===&lt;br /&gt;
* February 28 - [[Makerfaire Louisville Workshop Series 2018]] - [[Glass bottle Decor Workshop Feb 2018]]&lt;br /&gt;
=== Build a Cloud Workshop ===&lt;br /&gt;
* January 24 - [[Makerfaire Louisville Workshop Series 2018]] - [[Build a Cloud Workshop Jan 2018]]&lt;br /&gt;
&lt;br /&gt;
== 2017 ==&lt;br /&gt;
=== Cuttlefish Pewter Casting Workshop ===&lt;br /&gt;
* December 3rd&lt;br /&gt;
[[Cuttlefish Pewter Casting Workshop]]&lt;br /&gt;
=== Neopixel Holiday Workshop ===&lt;br /&gt;
* November 11th &lt;br /&gt;
[[NeoPixel Workshop Instructions]] - Neopixel Holiday Workshop By Andy Miller&lt;br /&gt;
=== Wemos D1 Mini ===&lt;br /&gt;
* July - [[Wemos D1 Mini]]&lt;br /&gt;
=== Raspberry Pi Magic Mirror ===&lt;br /&gt;
* February - [[Raspberry Pi MagicMirror]]&lt;br /&gt;
&lt;br /&gt;
== 2016 ==&lt;br /&gt;
=== Start Sewing ===&lt;br /&gt;
* [[Start Sewing!]]&lt;br /&gt;
=== Raspberry Pi Workshop ===&lt;br /&gt;
&lt;br /&gt;
* [[Raspberry_Pi_Jukebox|Raspberry Pi Workshop]]&lt;br /&gt;
&lt;br /&gt;
== 2015 ==&lt;br /&gt;
&lt;br /&gt;
=== Arduino 101 ===&lt;br /&gt;
* [[Arduino 101]]&lt;br /&gt;
&lt;br /&gt;
=== Audio-Driven Flashing LEDs ===&lt;br /&gt;
*Illuminate an LED with varying brightness with respect to the amplitude of an audio signal: louder is brighter, quieter is softer.&lt;br /&gt;
[[Audio-Driven_Flashing_LEDs]]&lt;br /&gt;
&lt;br /&gt;
== 2013 ==&lt;br /&gt;
&lt;br /&gt;
=== FPGA ===&lt;br /&gt;
*[[FPGA]]&lt;br /&gt;
&lt;br /&gt;
=== OpenSCAD ===&lt;br /&gt;
* [[Workshops/OpenSCAD]]&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi Bootcamp ===&lt;br /&gt;
* Presentation [http://www.meatandnetworking.com/RasPiPresentation.pdf in PDF Format]&lt;br /&gt;
* Presentation [http://www.meatandnetworking.com/RasPiPresentation.ppt in Powerpoint Format]&lt;br /&gt;
&lt;br /&gt;
=== Sketchup Workshop ===&lt;br /&gt;
&lt;br /&gt;
* Presentation [[File:3dPrintingAndSketchUp.pdf]]&lt;br /&gt;
** Links to plugins for SketchUp&lt;br /&gt;
&lt;br /&gt;
== 2012 ==&lt;br /&gt;
&lt;br /&gt;
=== Arduino: Beyond the Blink ===&lt;br /&gt;
&lt;br /&gt;
* Presentation [[File:BeyondBlinkPresent.pdf]]&lt;br /&gt;
** Notes are on pages 71-140&lt;br /&gt;
&lt;br /&gt;
=== Atari Punk Console ===&lt;br /&gt;
* Follow the build instructions at [http://jimmieprodgers.com/kits/apc/makeapc/ Jimmie P. Rodgers Make APC]&lt;br /&gt;
* Check out APC hacks [http://jimmieprodgers.com/kits/apc/hacks/ here]. A CdS cell is included for experimentation.&lt;br /&gt;
* More info [http://wiki.lvl1.org/APC#Atari_Punk_Console here].&lt;br /&gt;
&lt;br /&gt;
=== Digital Electronics for Arduino ===&lt;br /&gt;
* [[Digital for Arduino]] - Digital Electronics for Arduino Workshop&lt;br /&gt;
&lt;br /&gt;
=== Freeduino Games (Gadget Lab at U of Louisville) ===&lt;br /&gt;
Add some games to the Freeduino Frenzy/Spring Training workshops!&lt;br /&gt;
*[[Freeduino Games]]&lt;br /&gt;
&lt;br /&gt;
=== KiCad Workshop (1/21/12)===&lt;br /&gt;
&lt;br /&gt;
[http://wiki.lvl1.org/File:KiCad.pdf Kicad Presentation]&lt;br /&gt;
[meatandnetworking.com/w/Kicad_Resources More KiCad links and resources]&lt;br /&gt;
&lt;br /&gt;
=== Trilife Workshop (Gadget Lab at U of Louisville + LVL1) ===&lt;br /&gt;
Learn to solder by building a small board that interacts with others in a giant array.&lt;br /&gt;
*[[Trilife Workshop]]&lt;br /&gt;
&lt;br /&gt;
== 2011 ==&lt;br /&gt;
&lt;br /&gt;
=== Android Game Workshop ===&lt;br /&gt;
*[https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B4p7lji7MVk7NGU3Zjk1NDUtMTliMS00NzFhLTg4YTMtNjMzMjQ1ZWIxMzVm&amp;amp;hl=en&amp;amp;authkey=CLqd-usM] Android Slides PDF&lt;br /&gt;
*[https://docs.google.com/leaf?id=0B4p7lji7MVk7YjBlN2Q1OTYtNjIyZS00MmZiLWIzMGMtYzMxMmNmZTQ0MGRm&amp;amp;hl=en&amp;amp;authkey=CMHRx3E] Android Sample App&lt;br /&gt;
&lt;br /&gt;
=== February Freeduino Frenzy ===&lt;br /&gt;
* [[February Freeduino Frenzy]]&lt;br /&gt;
&lt;br /&gt;
=== Griswold Christmas Light Controller ===&lt;br /&gt;
* [[Griswold]]&lt;br /&gt;
&lt;br /&gt;
=== LVL1 Summer Camp ===&lt;br /&gt;
&lt;br /&gt;
LVL1 Summer Camp was a workshop that is occurring during the month of June, 2011, taking up every Saturday in June, from 1pm to 5pm.&lt;br /&gt;
&lt;br /&gt;
==== Eagle Workshop ====&lt;br /&gt;
----&lt;br /&gt;
===== Links =====&lt;br /&gt;
&lt;br /&gt;
Eagle itself: [http://www.cadsoft.de/download.htm Eagle Download]&lt;br /&gt;
&lt;br /&gt;
Sparkfun parts library used for this workshop: [https://github.com/sparkfun/SparkFun-Eagle-Library/raw/master/SparkFun.lbr Sparkfun Library]&lt;br /&gt;
&lt;br /&gt;
Dangerous Prototypes Parts Library: [http://dangerous-prototypes-open-hardware.googlecode.com/svn/trunk/Eagle_Part_Library/dp_devices.lbr DP Parts Library]&lt;br /&gt;
&lt;br /&gt;
Sparkfun Keyboard Shortcuts, Appropriate for most layouts: [http://www.sparkfun.com/tutorial/BeginningEmbedded/8-EagleSchematics/sfe_eagle_shortcuts.zip Keyboard Shortcuts]&lt;br /&gt;
&lt;br /&gt;
CAM file: [http://www.sparkfun.com/tutorial/BeginningEmbedded/9-EaglePCBs/sfe-gerb274x.cam Sparkfun CAM, appropriate for GoldPhoenix]&lt;br /&gt;
&lt;br /&gt;
===== Board files we created =====&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/13484341/capsLocker.brd Caps Locker Board File]&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/13484341/tinyBreakout.brd Caps Locker Schematic File]&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/13484341/vusbtiny.brd V-USB Tiny Board File]&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/13484341/vusbtiny.sch V-USB Tiny Schematic File]&lt;br /&gt;
&lt;br /&gt;
===== GadgetLab TriLife blinker files =====&lt;br /&gt;
OK, this wasn&#039;t part of summer camp but it&#039;s here if you want more Eagle practice. [[GadgetLab_Trilife_Blinker]] is an Eagle layout project to route a board that contains about 10 parts and fits in a small footprint. The board controls the brightness of a LED depending on what neighboring boards&#039; LEDs are doing. From the University of Louisville GadgetLab class.&lt;br /&gt;
&lt;br /&gt;
==== Etching Workshop ====&lt;br /&gt;
----&lt;br /&gt;
Please See: [http://www.meatandnetworking.com/?p=47 Toner Transfer and Muriatic Acid Etchant: Making PCBs at LVL1]&lt;br /&gt;
&lt;br /&gt;
==== Soldering Workshop ====&lt;br /&gt;
----&lt;br /&gt;
[http://wiki.lvl1.org/File:Surface_Mount_Soldering.pdf Summer Camp Soldering Presentation]&lt;br /&gt;
&lt;br /&gt;
If you&#039;d like to create your own, you&#039;ll need these parts:&lt;br /&gt;
&lt;br /&gt;
===== V-USB Programmer =====&lt;br /&gt;
&lt;br /&gt;
* 1x AtTiny45, .3&amp;quot; SOIC package&lt;br /&gt;
* 1x Mini-USB B Port (surface mount)&lt;br /&gt;
* 1x Surface Mount Slide Switch (See Sparkfun)&lt;br /&gt;
* 2x 1.5k Ohm, 0805 Resistors&lt;br /&gt;
* 2x 68 Ohm, 0805 Resistors&lt;br /&gt;
* 1x Decoupling Cap&lt;br /&gt;
* 2x 3.3v Zener Diodes, SMB Package (Note: MUST Clamp Voltage to 3.3v)&lt;br /&gt;
* 1x Surface Mount, 6 pin, 2 row terminal block&lt;br /&gt;
&lt;br /&gt;
===== Caps Locker =====&lt;br /&gt;
&lt;br /&gt;
* 1x AtTiny45, .3&amp;quot; SOIC package&lt;br /&gt;
* 2x 68 Ohm 0805 Resistors&lt;br /&gt;
* 1x 1.5k Ohm 0805 Resistors&lt;br /&gt;
* 1x Surface Mount, 6 pin, 2 row terminal block&lt;br /&gt;
&lt;br /&gt;
==== Programming Workshop ==== &lt;br /&gt;
----&lt;br /&gt;
[http://wiki.lvl1.org/File:Presentationn.pdf Presentation with Notes]&lt;br /&gt;
&lt;br /&gt;
For Code, see [[Resources and Code]]&lt;br /&gt;
&lt;br /&gt;
=== Pimping your Home Network with DDWRT ===&lt;br /&gt;
&lt;br /&gt;
*[http://www.dd-wrt.com/site/support/router-database DDWRT Database Search]&lt;br /&gt;
*[http://www.dd-wrt.com/wiki/index.php/Repeater_Bridge Creating a wireless bridge]&lt;br /&gt;
*[http://www.pennock.nl/dd-wrt/Multiple_BSSIDs.html Guest Wifi]&lt;br /&gt;
*[https://docs.google.com/leaf?id=1w1FSYX70ejcjo5jaXnvqVe3HGLekPd3I0CW5LnRBrs6RnAOcU8jWBn4ES-Lb&amp;amp;hl=en_US&amp;amp;authkey=CKC21ZMF DDWRT Power Point]&lt;br /&gt;
&lt;br /&gt;
====Parts for a custom home router====&lt;br /&gt;
*[http://www.newegg.com/Product/Product.aspx?Item=N82E16813153154 Motherboard]&lt;br /&gt;
*[http://www.newegg.com/Product/Product.aspx?Item=N82E16820144151 RAM]&lt;br /&gt;
*[http://www.newegg.com/Product/Product.aspx?Item=N82E16822136771 Hard Drive]&lt;br /&gt;
*[http://www.newegg.com/Product/Product.aspx?Item=N82E16811108196 Case]&lt;br /&gt;
&lt;br /&gt;
=== Ruby on Rails Workshop ===&lt;br /&gt;
==== Source Code &amp;amp; Notes ====&lt;br /&gt;
*[https://docs.google.com/leaf?id=0Bzy184pfAcrUMThkNGVjMmItMWVmNS00OTM2LTg3ZTctOWY5MDk1MDdjY2Mx&amp;amp;hl=en&amp;amp;authkey=CP_Qo5kI] blog.zip&lt;br /&gt;
==== References ====&lt;br /&gt;
*[http://www.amazon.com/Design-Patterns-Ruby-Russ-Olsen/dp/0321490452/ref=sr_1_1?ie=UTF8&amp;amp;qid=1305291175&amp;amp;sr=8-1|Design Patterns in Ruby, by Russ Olsen]&lt;br /&gt;
This book is both very readable (a rarity in tech books) and a fantastic introduction to Ruby for someone familiar with the GoF design pattern implementations in other languages. It has a quick Ruby syntax primer in the beginning, then jumps straight into the patterns.&lt;br /&gt;
&lt;br /&gt;
*[http://www.amazon.com/Programming-Ruby-1-9-Pragmatic-Programmers/dp/1934356085/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1305291335&amp;amp;sr=1-1|Programming Ruby 1.9, by Dave Thomas, Chad Fowler, and Andy Hunt]&lt;br /&gt;
This is the latest edition of the book commonly known as &amp;quot;The Pickaxe&amp;quot; in the Ruby community -- in its first edition, it was the first comprehensive English-language reference for Ruby, and was therefore indispensable to someone just getting started with the language. The latest edition is still a great reference book to have around.&lt;br /&gt;
&lt;br /&gt;
*[http://www.amazon.com/Agile-Development-Rails-Pragmatic-Programmers/dp/1934356549/ref=sr_1_1?ie=UTF8&amp;amp;qid=1305291555&amp;amp;sr=8-1|Agile Web Development with Rails, 4th Edition, by Sam Ruby, Dave Thomas, and David Heinemeier Hansson]&lt;br /&gt;
Agile Web Development was co-authored by David Heinemeier Hansson, the creator of Rails, and was the closest thing that the Rails community had to &amp;quot;The Pickaxe&amp;quot; for Ruby, in its first edition. The authors have done a great job of cleaning it up and keeping it relevant, and the latest version covers Rails 3.&lt;br /&gt;
&lt;br /&gt;
*[http://www.amazon.com/Rails-Way-Addison-Wesley-Professional-Ruby/dp/0321601661/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1305291830&amp;amp;sr=1-1|The Rails 3 Way, 2nd Edition, by Obie Fernandez]&lt;br /&gt;
Obie heads up the Florida-based Rails consultancy, Hashrocket, and was an early adopter of Rails, coming over from the Java camp. He&#039;s been a vocal advocate of best practices in Rails for just about as long as Rails has existed, and his book helps to explain not just how to do things in Rails, but why.&lt;br /&gt;
&lt;br /&gt;
=== Tinkering to Commercialization Workshop ===&lt;br /&gt;
[[Media:Tinkering_To_Commercialization_-_August_2011.pdf|Tinkering to Commercialization Presentation]]&lt;br /&gt;
&lt;br /&gt;
=== Twiddle N Scratch ===&lt;br /&gt;
&lt;br /&gt;
*[[Workshops/TwiddleNScratch|Twiddle N Scratch]]&lt;br /&gt;
&lt;br /&gt;
== 2010 ==&lt;br /&gt;
&lt;br /&gt;
=== Freeduino Spring Training ===&lt;br /&gt;
&lt;br /&gt;
[[Freediuino_Spring_Training|Freeduino Spring Training]]&lt;br /&gt;
&lt;br /&gt;
Below are the lessons for the Freeduino Spring Training.  They are Creative Commons licensed, so share and use.  Pass them along.  If there are issues (bugs) with the instruction, code or circuits, then email me brian_at_lvl1.org.  The breadboard and schematic pictures are drawn using the [http://www.fritzing.org Fritzing] Program.  Try Fritzing out - it is really cool! &lt;br /&gt;
&lt;br /&gt;
*[[1st Inning]] - Arduino and Breadboard setup, Power&lt;br /&gt;
*[[2nd Inning]] - Blinking LED&lt;br /&gt;
*[[3rd Inning]] - Tri-Color LED fading&lt;br /&gt;
*[[4th Inning]] - LCD display&lt;br /&gt;
*[[5th Inning]] - Pushbutton switches&lt;br /&gt;
*[[6th Inning]] - Potentiometers and voltage dividers&lt;br /&gt;
*[[7th Inning]] - Photocell, Thermistor&lt;br /&gt;
*[[8th Inning]] - Spin a motor, transistors and diodes&lt;br /&gt;
*[[9th Inning]] - Sounds and speakers&lt;br /&gt;
&lt;br /&gt;
=== Learn To Solder with Mitch Altman and Jimmie Rodgers ===&lt;br /&gt;
*[[Media:LearnToSolderWithMitch.odt|Flyer for the workshop in OOO Writer format.]]&lt;br /&gt;
*[[Media:LearnToSolderWithMitch.pdf|Flyer for the workshop in PDF format.]]&lt;br /&gt;
&lt;br /&gt;
=== Intermediate Microcontroller Workshop, &amp;quot;Beyond Arduino&amp;quot; === &lt;br /&gt;
*[http://drop.io/kt3wfh7 Presentation] - The Powerpoint Presentation used in the workshop, with notes.&lt;br /&gt;
*[[Resources and Code]] - The files used during the course of this workshop.&lt;br /&gt;
*[[Parts]] - Parts used in this workshop&lt;br /&gt;
*[[Media:Lvl1_avr_workshop.svg|Flyer for the workshop in SVG Format.]]&lt;br /&gt;
*[[Media:Lvl1_avr_workshop.pdf|Flyer for the workshop in PDF Format.]]&lt;br /&gt;
&lt;br /&gt;
=== Minti Boost Workshop ===&lt;br /&gt;
[[MintiBoost]] Workshop Information for 12/6/10 and 12/18/10&lt;br /&gt;
&lt;br /&gt;
=== Solder Your Own Freeduino ===&lt;br /&gt;
*[http://www.arduino.cc/en/Main/Software Download Arduino Software] the Arduino software and install.&lt;br /&gt;
*[http://arduino.cc/en/Tutorial/HomePage Arduino Tutorials] Arduino Tutorials&lt;br /&gt;
*[[Media:Solder_your_own_freeduino_handout.pdf|Solder Your Own Freeduino Instructions PDF]]&lt;br /&gt;
*[[Media:Solder_your_own_freeduino_handout.odp|Solder Your Own Freeduino Instructions Open Office Presentation]]&lt;br /&gt;
*[[Media:ResistorQV.pdf|Resistor Color Code PDF]]&lt;br /&gt;
*[[Media:Arduino_cheat_sheet_v02c.pdf|Arduino Cheatsheet PDF]]&lt;br /&gt;
&lt;br /&gt;
=== TV-B-Gone Workshop ===&lt;br /&gt;
*[[Media:Tv-b-gone.odp|TV-B-Gone instructions Open Office Presentation]]&lt;br /&gt;
*[[Media:Tv-b-gone.pdf|TV-B-Gone instructions PDF]]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
*How to Solder&lt;br /&gt;
** [[media:soldercomic.pdf|Soldering is Easy Comic]]&lt;br /&gt;
&lt;br /&gt;
[[Category:HOWTO]]&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Workshops&amp;diff=12737</id>
		<title>Workshops</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Workshops&amp;diff=12737"/>
		<updated>2020-02-07T11:45:06Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a free resource for all learning materials used in LVL1 workshops. Check our [http://www.lvl1.org/events/ Calendar] to see what LVL1 workshops are on the horizon! Enjoy!&lt;br /&gt;
&lt;br /&gt;
== How to Host a Workshop ==&lt;br /&gt;
&lt;br /&gt;
We love it when members of our community share their knowledge and expertise! Check out our [http://www.lvl1.org/hosting-guide/ Hosting Guide] for assistance in organizing an event.&lt;br /&gt;
&lt;br /&gt;
== 2019 ==&lt;br /&gt;
* March Laser Cutter and Vinyl Cutter workshop: 3/20/19 @ Noon Contact &#039;&#039;&#039;Ned&#039;&#039;&#039;.&lt;br /&gt;
* [[Magic Mirror 2019]] - Sunday, 14 April, 10:00am - 2:00pm by &#039;&#039;&#039;Andy&#039;&#039;&#039;&lt;br /&gt;
* [[LED]]&lt;br /&gt;
&lt;br /&gt;
== 2018 ==&lt;br /&gt;
=== Woodworking Workshop ===&lt;br /&gt;
* Woodworking Workshop - A foundation Course (cutting boards), Saturday, 15 December, 1:00pm - 4:00pm&lt;br /&gt;
=== Neopixel Holiday Workshop WiFi Edition!!! ===&lt;br /&gt;
* Neopixel Holiday Workshop WiFi Edition!!!, Saturday, 8 December, 10:00am - 1:00pm&lt;br /&gt;
** &#039;&#039;&#039;[[NeoPixel Web Server]]&#039;&#039;&#039;&lt;br /&gt;
===Soapmaking with Helen===&lt;br /&gt;
*November 17 - [http://www.lvl1.org/2018/12/12/project-recap/ Project Recap]&lt;br /&gt;
=== How to Make Your Own Lip Balm ===&lt;br /&gt;
* October 22 - [[http://www.lvl1.org/2018/10/12/upcoming-class-how-to-make-your-own-lip-balm/ How to Make Your Own Lip Balm]]&lt;br /&gt;
===How to make your own body scrub===&lt;br /&gt;
* September 10 - [[body scrub class]]&lt;br /&gt;
=== DIY Auto Repair Basics ===&lt;br /&gt;
* August 25&lt;br /&gt;
=== Shabori Dyeing ===&lt;br /&gt;
* July 25 - [[http://www.lvl1.org/2018/07/13/makerfaire-workshop-july/ Makerfaire Workshop – July Shabori Dyeing]]&lt;br /&gt;
=== DIY Auto Repair Basics ===&lt;br /&gt;
* July 21 - [[http://www.lvl1.org/2018/07/17/diy-auto-repair-basics/ DIY Auto Repair Basics]]&lt;br /&gt;
=== Making Jewelry ===&lt;br /&gt;
* May 30 - [[http://www.lvl1.org/2018/05/15/makerfaire-workshop-may/ Makerfaire Workshop – Making Jewelry]]&lt;br /&gt;
=== Build a Cloud workshop II ===&lt;br /&gt;
* April 28 - [[http://www.lvl1.org/2018/04/13/makerfaire-workshop-april/ Build a Cloud workshop II]]&lt;br /&gt;
=== Open Sew - Derby Edition ===&lt;br /&gt;
* April 18 - [[http://www.lvl1.org/2018/04/10/open-sew-derby-edition/ Open Sew - Derby Edition]]&lt;br /&gt;
=== MotoPhoto Photo Frame Workshop ===&lt;br /&gt;
* March 28 - [[Makerfaire Louisville Workshop Series 2018]] - [[MotoPhoto Photo Frame Mar 2018]]&lt;br /&gt;
=== Bath Bomb workshop ===&lt;br /&gt;
* March 17&lt;br /&gt;
=== Glass Bottle Decor Workshop ===&lt;br /&gt;
* February 28 - [[Makerfaire Louisville Workshop Series 2018]] - [[Glass bottle Decor Workshop Feb 2018]]&lt;br /&gt;
=== Build a Cloud Workshop ===&lt;br /&gt;
* January 24 - [[Makerfaire Louisville Workshop Series 2018]] - [[Build a Cloud Workshop Jan 2018]]&lt;br /&gt;
&lt;br /&gt;
== 2017 ==&lt;br /&gt;
=== Cuttlefish Pewter Casting Workshop ===&lt;br /&gt;
* December 3rd&lt;br /&gt;
[[Cuttlefish Pewter Casting Workshop]]&lt;br /&gt;
=== Neopixel Holiday Workshop ===&lt;br /&gt;
* November 11th &lt;br /&gt;
[[NeoPixel Workshop Instructions]] - Neopixel Holiday Workshop By Andy Miller&lt;br /&gt;
=== Wemos D1 Mini ===&lt;br /&gt;
* July - [[Wemos D1 Mini]]&lt;br /&gt;
=== Raspberry Pi Magic Mirror ===&lt;br /&gt;
* February - [[Raspberry Pi MagicMirror]]&lt;br /&gt;
&lt;br /&gt;
== 2016 ==&lt;br /&gt;
=== Start Sewing ===&lt;br /&gt;
* [[Start Sewing!]]&lt;br /&gt;
=== Raspberry Pi Workshop ===&lt;br /&gt;
&lt;br /&gt;
* [[Raspberry_Pi_Jukebox|Raspberry Pi Workshop]]&lt;br /&gt;
&lt;br /&gt;
== 2015 ==&lt;br /&gt;
&lt;br /&gt;
=== Arduino 101 ===&lt;br /&gt;
* [[Arduino 101]]&lt;br /&gt;
&lt;br /&gt;
=== Audio-Driven Flashing LEDs ===&lt;br /&gt;
*Illuminate an LED with varying brightness with respect to the amplitude of an audio signal: louder is brighter, quieter is softer.&lt;br /&gt;
[[Audio-Driven_Flashing_LEDs]]&lt;br /&gt;
&lt;br /&gt;
== 2013 ==&lt;br /&gt;
&lt;br /&gt;
=== FPGA ===&lt;br /&gt;
*[[FPGA]]&lt;br /&gt;
&lt;br /&gt;
=== OpenSCAD ===&lt;br /&gt;
* [[Workshops/OpenSCAD]]&lt;br /&gt;
&lt;br /&gt;
=== Raspberry Pi Bootcamp ===&lt;br /&gt;
* Presentation [http://www.meatandnetworking.com/RasPiPresentation.pdf in PDF Format]&lt;br /&gt;
* Presentation [http://www.meatandnetworking.com/RasPiPresentation.ppt in Powerpoint Format]&lt;br /&gt;
&lt;br /&gt;
=== Sketchup Workshop ===&lt;br /&gt;
&lt;br /&gt;
* Presentation [[File:3dPrintingAndSketchUp.pdf]]&lt;br /&gt;
** Links to plugins for SketchUp&lt;br /&gt;
&lt;br /&gt;
== 2012 ==&lt;br /&gt;
&lt;br /&gt;
=== Arduino: Beyond the Blink ===&lt;br /&gt;
&lt;br /&gt;
* Presentation [[File:BeyondBlinkPresent.pdf]]&lt;br /&gt;
** Notes are on pages 71-140&lt;br /&gt;
&lt;br /&gt;
=== Atari Punk Console ===&lt;br /&gt;
* Follow the build instructions at [http://jimmieprodgers.com/kits/apc/makeapc/ Jimmie P. Rodgers Make APC]&lt;br /&gt;
* Check out APC hacks [http://jimmieprodgers.com/kits/apc/hacks/ here]. A CdS cell is included for experimentation.&lt;br /&gt;
* More info [http://wiki.lvl1.org/APC#Atari_Punk_Console here].&lt;br /&gt;
&lt;br /&gt;
=== Digital Electronics for Arduino ===&lt;br /&gt;
* [[Digital for Arduino]] - Digital Electronics for Arduino Workshop&lt;br /&gt;
&lt;br /&gt;
=== Freeduino Games (Gadget Lab at U of Louisville) ===&lt;br /&gt;
Add some games to the Freeduino Frenzy/Spring Training workshops!&lt;br /&gt;
*[[Freeduino Games]]&lt;br /&gt;
&lt;br /&gt;
=== KiCad Workshop (1/21/12)===&lt;br /&gt;
&lt;br /&gt;
[http://wiki.lvl1.org/File:KiCad.pdf Kicad Presentation]&lt;br /&gt;
[meatandnetworking.com/w/Kicad_Resources More KiCad links and resources]&lt;br /&gt;
&lt;br /&gt;
=== Trilife Workshop (Gadget Lab at U of Louisville + LVL1) ===&lt;br /&gt;
Learn to solder by building a small board that interacts with others in a giant array.&lt;br /&gt;
*[[Trilife Workshop]]&lt;br /&gt;
&lt;br /&gt;
== 2011 ==&lt;br /&gt;
&lt;br /&gt;
=== Android Game Workshop ===&lt;br /&gt;
*[https://docs.google.com/viewer?a=v&amp;amp;pid=explorer&amp;amp;chrome=true&amp;amp;srcid=0B4p7lji7MVk7NGU3Zjk1NDUtMTliMS00NzFhLTg4YTMtNjMzMjQ1ZWIxMzVm&amp;amp;hl=en&amp;amp;authkey=CLqd-usM] Android Slides PDF&lt;br /&gt;
*[https://docs.google.com/leaf?id=0B4p7lji7MVk7YjBlN2Q1OTYtNjIyZS00MmZiLWIzMGMtYzMxMmNmZTQ0MGRm&amp;amp;hl=en&amp;amp;authkey=CMHRx3E] Android Sample App&lt;br /&gt;
&lt;br /&gt;
=== February Freeduino Frenzy ===&lt;br /&gt;
* [[February Freeduino Frenzy]]&lt;br /&gt;
&lt;br /&gt;
=== Griswold Christmas Light Controller ===&lt;br /&gt;
* [[Griswold]]&lt;br /&gt;
&lt;br /&gt;
=== LVL1 Summer Camp ===&lt;br /&gt;
&lt;br /&gt;
LVL1 Summer Camp was a workshop that is occurring during the month of June, 2011, taking up every Saturday in June, from 1pm to 5pm.&lt;br /&gt;
&lt;br /&gt;
==== Eagle Workshop ====&lt;br /&gt;
----&lt;br /&gt;
===== Links =====&lt;br /&gt;
&lt;br /&gt;
Eagle itself: [http://www.cadsoft.de/download.htm Eagle Download]&lt;br /&gt;
&lt;br /&gt;
Sparkfun parts library used for this workshop: [https://github.com/sparkfun/SparkFun-Eagle-Library/raw/master/SparkFun.lbr Sparkfun Library]&lt;br /&gt;
&lt;br /&gt;
Dangerous Prototypes Parts Library: [http://dangerous-prototypes-open-hardware.googlecode.com/svn/trunk/Eagle_Part_Library/dp_devices.lbr DP Parts Library]&lt;br /&gt;
&lt;br /&gt;
Sparkfun Keyboard Shortcuts, Appropriate for most layouts: [http://www.sparkfun.com/tutorial/BeginningEmbedded/8-EagleSchematics/sfe_eagle_shortcuts.zip Keyboard Shortcuts]&lt;br /&gt;
&lt;br /&gt;
CAM file: [http://www.sparkfun.com/tutorial/BeginningEmbedded/9-EaglePCBs/sfe-gerb274x.cam Sparkfun CAM, appropriate for GoldPhoenix]&lt;br /&gt;
&lt;br /&gt;
===== Board files we created =====&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/13484341/capsLocker.brd Caps Locker Board File]&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/13484341/tinyBreakout.brd Caps Locker Schematic File]&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/13484341/vusbtiny.brd V-USB Tiny Board File]&lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/13484341/vusbtiny.sch V-USB Tiny Schematic File]&lt;br /&gt;
&lt;br /&gt;
===== GadgetLab TriLife blinker files =====&lt;br /&gt;
OK, this wasn&#039;t part of summer camp but it&#039;s here if you want more Eagle practice. [[GadgetLab_Trilife_Blinker]] is an Eagle layout project to route a board that contains about 10 parts and fits in a small footprint. The board controls the brightness of a LED depending on what neighboring boards&#039; LEDs are doing. From the University of Louisville GadgetLab class.&lt;br /&gt;
&lt;br /&gt;
==== Etching Workshop ====&lt;br /&gt;
----&lt;br /&gt;
Please See: [http://www.meatandnetworking.com/?p=47 Toner Transfer and Muriatic Acid Etchant: Making PCBs at LVL1]&lt;br /&gt;
&lt;br /&gt;
==== Soldering Workshop ====&lt;br /&gt;
----&lt;br /&gt;
[http://wiki.lvl1.org/File:Surface_Mount_Soldering.pdf Summer Camp Soldering Presentation]&lt;br /&gt;
&lt;br /&gt;
If you&#039;d like to create your own, you&#039;ll need these parts:&lt;br /&gt;
&lt;br /&gt;
===== V-USB Programmer =====&lt;br /&gt;
&lt;br /&gt;
* 1x AtTiny45, .3&amp;quot; SOIC package&lt;br /&gt;
* 1x Mini-USB B Port (surface mount)&lt;br /&gt;
* 1x Surface Mount Slide Switch (See Sparkfun)&lt;br /&gt;
* 2x 1.5k Ohm, 0805 Resistors&lt;br /&gt;
* 2x 68 Ohm, 0805 Resistors&lt;br /&gt;
* 1x Decoupling Cap&lt;br /&gt;
* 2x 3.3v Zener Diodes, SMB Package (Note: MUST Clamp Voltage to 3.3v)&lt;br /&gt;
* 1x Surface Mount, 6 pin, 2 row terminal block&lt;br /&gt;
&lt;br /&gt;
===== Caps Locker =====&lt;br /&gt;
&lt;br /&gt;
* 1x AtTiny45, .3&amp;quot; SOIC package&lt;br /&gt;
* 2x 68 Ohm 0805 Resistors&lt;br /&gt;
* 1x 1.5k Ohm 0805 Resistors&lt;br /&gt;
* 1x Surface Mount, 6 pin, 2 row terminal block&lt;br /&gt;
&lt;br /&gt;
==== Programming Workshop ==== &lt;br /&gt;
----&lt;br /&gt;
[http://wiki.lvl1.org/File:Presentationn.pdf Presentation with Notes]&lt;br /&gt;
&lt;br /&gt;
For Code, see [[Resources and Code]]&lt;br /&gt;
&lt;br /&gt;
=== Pimping your Home Network with DDWRT ===&lt;br /&gt;
&lt;br /&gt;
*[http://www.dd-wrt.com/site/support/router-database DDWRT Database Search]&lt;br /&gt;
*[http://www.dd-wrt.com/wiki/index.php/Repeater_Bridge Creating a wireless bridge]&lt;br /&gt;
*[http://www.pennock.nl/dd-wrt/Multiple_BSSIDs.html Guest Wifi]&lt;br /&gt;
*[https://docs.google.com/leaf?id=1w1FSYX70ejcjo5jaXnvqVe3HGLekPd3I0CW5LnRBrs6RnAOcU8jWBn4ES-Lb&amp;amp;hl=en_US&amp;amp;authkey=CKC21ZMF DDWRT Power Point]&lt;br /&gt;
&lt;br /&gt;
====Parts for a custom home router====&lt;br /&gt;
*[http://www.newegg.com/Product/Product.aspx?Item=N82E16813153154 Motherboard]&lt;br /&gt;
*[http://www.newegg.com/Product/Product.aspx?Item=N82E16820144151 RAM]&lt;br /&gt;
*[http://www.newegg.com/Product/Product.aspx?Item=N82E16822136771 Hard Drive]&lt;br /&gt;
*[http://www.newegg.com/Product/Product.aspx?Item=N82E16811108196 Case]&lt;br /&gt;
&lt;br /&gt;
=== Ruby on Rails Workshop ===&lt;br /&gt;
==== Source Code &amp;amp; Notes ====&lt;br /&gt;
*[https://docs.google.com/leaf?id=0Bzy184pfAcrUMThkNGVjMmItMWVmNS00OTM2LTg3ZTctOWY5MDk1MDdjY2Mx&amp;amp;hl=en&amp;amp;authkey=CP_Qo5kI] blog.zip&lt;br /&gt;
==== References ====&lt;br /&gt;
*[http://www.amazon.com/Design-Patterns-Ruby-Russ-Olsen/dp/0321490452/ref=sr_1_1?ie=UTF8&amp;amp;qid=1305291175&amp;amp;sr=8-1|Design Patterns in Ruby, by Russ Olsen]&lt;br /&gt;
This book is both very readable (a rarity in tech books) and a fantastic introduction to Ruby for someone familiar with the GoF design pattern implementations in other languages. It has a quick Ruby syntax primer in the beginning, then jumps straight into the patterns.&lt;br /&gt;
&lt;br /&gt;
*[http://www.amazon.com/Programming-Ruby-1-9-Pragmatic-Programmers/dp/1934356085/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1305291335&amp;amp;sr=1-1|Programming Ruby 1.9, by Dave Thomas, Chad Fowler, and Andy Hunt]&lt;br /&gt;
This is the latest edition of the book commonly known as &amp;quot;The Pickaxe&amp;quot; in the Ruby community -- in its first edition, it was the first comprehensive English-language reference for Ruby, and was therefore indispensable to someone just getting started with the language. The latest edition is still a great reference book to have around.&lt;br /&gt;
&lt;br /&gt;
*[http://www.amazon.com/Agile-Development-Rails-Pragmatic-Programmers/dp/1934356549/ref=sr_1_1?ie=UTF8&amp;amp;qid=1305291555&amp;amp;sr=8-1|Agile Web Development with Rails, 4th Edition, by Sam Ruby, Dave Thomas, and David Heinemeier Hansson]&lt;br /&gt;
Agile Web Development was co-authored by David Heinemeier Hansson, the creator of Rails, and was the closest thing that the Rails community had to &amp;quot;The Pickaxe&amp;quot; for Ruby, in its first edition. The authors have done a great job of cleaning it up and keeping it relevant, and the latest version covers Rails 3.&lt;br /&gt;
&lt;br /&gt;
*[http://www.amazon.com/Rails-Way-Addison-Wesley-Professional-Ruby/dp/0321601661/ref=sr_1_1?s=books&amp;amp;ie=UTF8&amp;amp;qid=1305291830&amp;amp;sr=1-1|The Rails 3 Way, 2nd Edition, by Obie Fernandez]&lt;br /&gt;
Obie heads up the Florida-based Rails consultancy, Hashrocket, and was an early adopter of Rails, coming over from the Java camp. He&#039;s been a vocal advocate of best practices in Rails for just about as long as Rails has existed, and his book helps to explain not just how to do things in Rails, but why.&lt;br /&gt;
&lt;br /&gt;
=== Tinkering to Commercialization Workshop ===&lt;br /&gt;
[[Media:Tinkering_To_Commercialization_-_August_2011.pdf|Tinkering to Commercialization Presentation]]&lt;br /&gt;
&lt;br /&gt;
=== Twiddle N Scratch ===&lt;br /&gt;
&lt;br /&gt;
*[[Workshops/TwiddleNScratch|Twiddle N Scratch]]&lt;br /&gt;
&lt;br /&gt;
== 2010 ==&lt;br /&gt;
&lt;br /&gt;
=== Freeduino Spring Training ===&lt;br /&gt;
&lt;br /&gt;
[[Freediuino_Spring_Training|Freeduino Spring Training]]&lt;br /&gt;
&lt;br /&gt;
Below are the lessons for the Freeduino Spring Training.  They are Creative Commons licensed, so share and use.  Pass them along.  If there are issues (bugs) with the instruction, code or circuits, then email me brian_at_lvl1.org.  The breadboard and schematic pictures are drawn using the [http://www.fritzing.org Fritzing] Program.  Try Fritzing out - it is really cool! &lt;br /&gt;
&lt;br /&gt;
*[[1st Inning]] - Arduino and Breadboard setup, Power&lt;br /&gt;
*[[2nd Inning]] - Blinking LED&lt;br /&gt;
*[[3rd Inning]] - Tri-Color LED fading&lt;br /&gt;
*[[4th Inning]] - LCD display&lt;br /&gt;
*[[5th Inning]] - Pushbutton switches&lt;br /&gt;
*[[6th Inning]] - Potentiometers and voltage dividers&lt;br /&gt;
*[[7th Inning]] - Photocell, Thermistor&lt;br /&gt;
*[[8th Inning]] - Spin a motor, transistors and diodes&lt;br /&gt;
*[[9th Inning]] - Sounds and speakers&lt;br /&gt;
&lt;br /&gt;
=== Learn To Solder with Mitch Altman and Jimmie Rodgers ===&lt;br /&gt;
*[[Media:LearnToSolderWithMitch.odt|Flyer for the workshop in OOO Writer format.]]&lt;br /&gt;
*[[Media:LearnToSolderWithMitch.pdf|Flyer for the workshop in PDF format.]]&lt;br /&gt;
&lt;br /&gt;
=== Intermediate Microcontroller Workshop, &amp;quot;Beyond Arduino&amp;quot; === &lt;br /&gt;
*[http://drop.io/kt3wfh7 Presentation] - The Powerpoint Presentation used in the workshop, with notes.&lt;br /&gt;
*[[Resources and Code]] - The files used during the course of this workshop.&lt;br /&gt;
*[[Parts]] - Parts used in this workshop&lt;br /&gt;
*[[Media:Lvl1_avr_workshop.svg|Flyer for the workshop in SVG Format.]]&lt;br /&gt;
*[[Media:Lvl1_avr_workshop.pdf|Flyer for the workshop in PDF Format.]]&lt;br /&gt;
&lt;br /&gt;
=== Minti Boost Workshop ===&lt;br /&gt;
[[MintiBoost]] Workshop Information for 12/6/10 and 12/18/10&lt;br /&gt;
&lt;br /&gt;
=== Solder Your Own Freeduino ===&lt;br /&gt;
*[http://www.arduino.cc/en/Main/Software Download Arduino Software] the Arduino software and install.&lt;br /&gt;
*[http://arduino.cc/en/Tutorial/HomePage Arduino Tutorials] Arduino Tutorials&lt;br /&gt;
*[[Media:Solder_your_own_freeduino_handout.pdf|Solder Your Own Freeduino Instructions PDF]]&lt;br /&gt;
*[[Media:Solder_your_own_freeduino_handout.odp|Solder Your Own Freeduino Instructions Open Office Presentation]]&lt;br /&gt;
*[[Media:ResistorQV.pdf|Resistor Color Code PDF]]&lt;br /&gt;
*[[Media:Arduino_cheat_sheet_v02c.pdf|Arduino Cheatsheet PDF]]&lt;br /&gt;
&lt;br /&gt;
=== TV-B-Gone Workshop ===&lt;br /&gt;
*[[Media:Tv-b-gone.odp|TV-B-Gone instructions Open Office Presentation]]&lt;br /&gt;
*[[Media:Tv-b-gone.pdf|TV-B-Gone instructions PDF]]&lt;br /&gt;
&lt;br /&gt;
== Resources ==&lt;br /&gt;
&lt;br /&gt;
*How to Solder&lt;br /&gt;
** [[media:soldercomic.pdf|Soldering is Easy Comic]]&lt;br /&gt;
&lt;br /&gt;
[[Category:HOWTO]]&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=LED_2019&amp;diff=12336</id>
		<title>LED 2019</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=LED_2019&amp;diff=12336"/>
		<updated>2019-11-21T19:49:22Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WiFi LED Holiday Workshop&lt;br /&gt;
&lt;br /&gt;
Dec 14, 2019 1pm - 4pm&lt;br /&gt;
&lt;br /&gt;
$30&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
https://www.eventbrite.com/e/lvl1-holiday-led-workshop-tickets-83226457575&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
The LEDS are controlled with the WLED library&lt;br /&gt;
&lt;br /&gt;
https://github.com/Aircoookie/WLED&lt;br /&gt;
&lt;br /&gt;
The WIKI for WLED https://github.com/Aircoookie/WLED/wiki&lt;br /&gt;
&lt;br /&gt;
Good tutorial https://tynick.com/blog/11-03-2019/getting-started-with-wled-on-esp8266/&lt;br /&gt;
&lt;br /&gt;
Download NodeMCU Pyflasher here: https://github.com/marcelstoer/nodemcu-pyflasher/releases&lt;br /&gt;
&lt;br /&gt;
Download the latest release of WLED https://github.com/Aircoookie/WLED/releases...  Get the one like this WLED_0.8.5_ESP8266.bin&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=LED_2019&amp;diff=12335</id>
		<title>LED 2019</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=LED_2019&amp;diff=12335"/>
		<updated>2019-11-21T18:19:46Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WiFi LED Holiday Workshop&lt;br /&gt;
&lt;br /&gt;
Dec 14, 2019 1pm - 4pm&lt;br /&gt;
&lt;br /&gt;
$30&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eventbrite link coming soon!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
The LEDS are controlled with the WLED library&lt;br /&gt;
&lt;br /&gt;
https://github.com/Aircoookie/WLED&lt;br /&gt;
&lt;br /&gt;
The WIKI for WLED https://github.com/Aircoookie/WLED/wiki&lt;br /&gt;
&lt;br /&gt;
Good tutorial https://tynick.com/blog/11-03-2019/getting-started-with-wled-on-esp8266/&lt;br /&gt;
&lt;br /&gt;
Download NodeMCU Pyflasher here: https://github.com/marcelstoer/nodemcu-pyflasher/releases&lt;br /&gt;
&lt;br /&gt;
Download the latest release of WLED https://github.com/Aircoookie/WLED/releases...  Get the one like this WLED_0.8.5_ESP8266.bin&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=LED_2019&amp;diff=12334</id>
		<title>LED 2019</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=LED_2019&amp;diff=12334"/>
		<updated>2019-11-21T17:59:23Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WiFi LED Holiday Workshop&lt;br /&gt;
&lt;br /&gt;
Dec 14, 2019 1pm - 4pm&lt;br /&gt;
&lt;br /&gt;
$30&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eventbrite link coming soon!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
The LEDS are controlled with the WLED library&lt;br /&gt;
&lt;br /&gt;
https://github.com/Aircoookie/WLED&lt;br /&gt;
&lt;br /&gt;
Good tutorial https://tynick.com/blog/11-03-2019/getting-started-with-wled-on-esp8266/&lt;br /&gt;
&lt;br /&gt;
Download NodeMCU Pyflasher here: https://github.com/marcelstoer/nodemcu-pyflasher/releases&lt;br /&gt;
&lt;br /&gt;
Download the latest release of WLED https://github.com/Aircoookie/WLED/releases...  Get the one like this WLED_0.8.5_ESP8266.bin&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=LED_2019&amp;diff=12333</id>
		<title>LED 2019</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=LED_2019&amp;diff=12333"/>
		<updated>2019-11-21T16:29:46Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WiFi LED Holiday Workshop&lt;br /&gt;
Dec 14, 2019 1pm - 4pm&lt;br /&gt;
$30&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eventbrite link coming soon!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
The LEDS are controlled with the WLED library&lt;br /&gt;
&lt;br /&gt;
https://github.com/Aircoookie/WLED&lt;br /&gt;
&lt;br /&gt;
Good tutorial https://tynick.com/blog/11-03-2019/getting-started-with-wled-on-esp8266/&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=LED_2019&amp;diff=12332</id>
		<title>LED 2019</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=LED_2019&amp;diff=12332"/>
		<updated>2019-11-21T16:27:23Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WiFi LED Holiday Workshop&lt;br /&gt;
Dec 14, 2019 1pm - 4pm&lt;br /&gt;
$30&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eventbrite link coming soon!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
The LEDS are controlled with the WLED library&lt;br /&gt;
&lt;br /&gt;
https://github.com/Aircoookie/WLED&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Main_Page&amp;diff=12331</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Main_Page&amp;diff=12331"/>
		<updated>2019-11-21T16:24:28Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* What&amp;#039;s Happening? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border:1px; background-color:#f9f9f9; solid #B0B0B0; padding:3px; width:100%; margin-bottom:2px;&amp;quot;&lt;br /&gt;
!width=&amp;quot;49%&amp;quot;|&lt;br /&gt;
!width=&amp;quot;49%&amp;quot;|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;;|&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===New to LVL1.org?===&lt;br /&gt;
This is our fast and loose wiki site. It&#039;s the quickest way for all those involved with LVL1 to add and update information. For lots of basic info including our calendar, blog posts, social media links, driving and parking directions, etc. check out our web site [http://www.lvl1.org http://www.lvl1.org]! For more detailed and technical info including [[Older_Meetings|minutes]] to every one of our open meetings, our [[Bylaws|bylaws]], plus [[LVL1_Member_Projects_on_The_Net|projects]], [[Equipment|tools]], instructions, etc. check out the rest of this wiki.&lt;br /&gt;
&lt;br /&gt;
==== General Info ====&lt;br /&gt;
* [[Manual]]&lt;br /&gt;
* [[Community Guidelines]]&lt;br /&gt;
** [[How To Be Excellent]]&lt;br /&gt;
* [[Finding Information]]&lt;br /&gt;
* [[:Category:HOWTO|HOWTOs]]&lt;br /&gt;
* [[LVL1&#039;s Story]]&lt;br /&gt;
* [[Makership]]&lt;br /&gt;
&lt;br /&gt;
=== Communications ===&lt;br /&gt;
* See the [[http://www.lvl1.org/connect/ Connect page]] on our web site for links to our discussion group, hangout, social media and more!&lt;br /&gt;
&lt;br /&gt;
=== Recent Meetings ===&lt;br /&gt;
These are the agendas from recent meetings:* &lt;br /&gt;
* [[11/19/2019]]&lt;br /&gt;
* [[11/12/2019]]&lt;br /&gt;
* [[11/05/2019]]&lt;br /&gt;
* [[10/29/2019]]&lt;br /&gt;
* [[10/22/2019]]&lt;br /&gt;
* [[10/15/2019]]&lt;br /&gt;
* [[10/08/2019]]&lt;br /&gt;
* [[10/01/2019]]&lt;br /&gt;
* [[09/24/2019]]&lt;br /&gt;
* [[09/17/2019]]&lt;br /&gt;
* [[09/10/2019]]&lt;br /&gt;
* [[09/03/2019]]&lt;br /&gt;
* [[08/27/2019]]&lt;br /&gt;
* [[Older_Meetings]]&lt;br /&gt;
&lt;br /&gt;
== Meetings in 2018 ==&lt;br /&gt;
&lt;br /&gt;
=== Membership ===&lt;br /&gt;
You don&#039;t need to be a LVL1 member to enjoy any of our meetings, events and workshops. But if you&#039;d like the full LVL1 access that membership provides, and want to fully support LVL1, we&#039;d love to have you!&lt;br /&gt;
* [[How To Become A Member]]&lt;br /&gt;
* [[Previous Votes]]&lt;br /&gt;
* [[Voting ProTips]]&lt;br /&gt;
* [[Officers and Directors]]&lt;br /&gt;
&lt;br /&gt;
=== Support LVL1 ===&lt;br /&gt;
* See the [[http://www.lvl1.org/about/#support Support section]] on the About page of our web site.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* [http://makezine.com/blog Make magazine blog]&lt;br /&gt;
* [http://instructables.com Instructables]&lt;br /&gt;
&lt;br /&gt;
=== Our Neighbors ===&lt;br /&gt;
*[http://firstbuild.com/ FirstBuild] - Louisville, KY&lt;br /&gt;
*[https://www.maker13.com/ Maker13] - Louisville, KY&lt;br /&gt;
*[https://www.kre8now.com/ Kre8now] - Lexington, KY&lt;br /&gt;
*[http://bloominglabs.org/index.php/Main_Page Bloominglabs] - Bloomington, IN&lt;br /&gt;
*[http://www.hive13.org/ Hive 13] - Cincinnati, OH &lt;br /&gt;
*[https://makenashville.org/ Make Nashville] - Nashville, TN&lt;br /&gt;
*[http://www.clubcyberia.org/ Club Cyberia] - Indianapolis, IN&lt;br /&gt;
*[http://tekventure.org TekVenture] - Fort Wayne, IN&lt;br /&gt;
*[http://www.daytondiode.org/ Dayton Diode] - Dayton, OH &lt;br /&gt;
*[http://www.pumpingstationone.org/ Pumping Station One] - Chicago, IL&lt;br /&gt;
*[https://www.i3detroit.org/ i3] - Detroit, MI&lt;br /&gt;
*[https://milwaukeemakerspace.org/ Milwaukee Makerspace] - Milwaukee , WI&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
[[File:lvl1logo.png|300px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s Happening? ===&lt;br /&gt;
* See &#039;&#039;&#039;[http://www.lvl1.org/events/ Our Calendar]&#039;&#039;&#039; on our web site for details&lt;br /&gt;
* &#039;&#039;&#039;Workshops&#039;&#039;&#039; [[Workshops| - archive]]&lt;br /&gt;
** [[LED 2019]] holiday workshop (12/14)&lt;br /&gt;
* &#039;&#039;&#039;Hackathons&#039;&#039;&#039; [[Hackathons| - archive]]&lt;br /&gt;
* &#039;&#039;&#039; Regular Activities &#039;&#039;&#039;&lt;br /&gt;
** [[Louisville Soundbuilders]], Mondays fortnightly (alternates with Night of the Hat), 8:00pm&lt;br /&gt;
** [[Night of the Hat]], Mondays fortnightly (alternates with Soundbuilders), 7:00pm&lt;br /&gt;
** [[Older_Meetings|Tuesday Open Meeting &amp;amp; Making]], 8:00pm&lt;br /&gt;
** [[Dust_Collection]] - Wednesday night build sessions, 7:00pm - 9:00pm&lt;br /&gt;
** [[Threadsday Thursday]] 7:00pm - 9:00pm&lt;br /&gt;
** [[Power_Racing_Series]] - Thursday night planning and build sessions&lt;br /&gt;
** [[Thursday_Code_Night]] - Open Code Night 6:00pm - 8:00pm &lt;br /&gt;
** [[LVL1 Movie Night]] &amp;amp; Open Build Night, Friday 7:30pm&lt;br /&gt;
* &#039;&#039;&#039;[[What&#039;s Happening Archive]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== LVL1 Member Projects on the Net ===&lt;br /&gt;
&lt;br /&gt;
* [[LVL1 Member Projects on The Net]]&lt;br /&gt;
* [[JAC Projects]]&lt;br /&gt;
&lt;br /&gt;
=== Our Space ===&lt;br /&gt;
* &#039;&#039;&#039;1205 E Washington Street, The Pointe. Suite LL100!&#039;&#039;&#039;&lt;br /&gt;
* [[Space|Our Facilities]]&lt;br /&gt;
* [[Community Development Initiative]]&lt;br /&gt;
* Equipment - Partial list of popular items - [[Equipment|Click here for full list]]&lt;br /&gt;
** [[ShopBot]]&lt;br /&gt;
** [[Full Spectrum Laser]] (Small Laser)&lt;br /&gt;
** [[Rabbit Laser]] (Big Laser)&lt;br /&gt;
** [[Graphtec Vinyl Cutter]]&lt;br /&gt;
** [[Zenbot_1216_CNC]]&lt;br /&gt;
* [[Equipment Wishlist]]&lt;br /&gt;
* [[Oculus LVL1 2018]]&lt;br /&gt;
** [http://www.flickr.com/photos/lvl1 Flickr Photostream]&lt;br /&gt;
** [https://www.flickr.com/groups/lvl1/pool/ Flickr Photosharing Group]&lt;br /&gt;
*** For some info on how to interact through Flickr see [[Flickr_Photosharing]]&lt;br /&gt;
&lt;br /&gt;
=== Media ===&lt;br /&gt;
* [[Graphics]]&lt;br /&gt;
* [[t-shirts]] etc.&lt;br /&gt;
* Stickers are at the space&lt;br /&gt;
&lt;br /&gt;
=== Paper Work ===&lt;br /&gt;
* [[Articles of Incorporation]]&lt;br /&gt;
* [[Bylaws]]&lt;br /&gt;
* [[Mission]]&lt;br /&gt;
* [[Waiver]]&lt;br /&gt;
* [[Media:LVL1_MembershipForm_2015NOV24.pdf|New Member Signup/Info Form]]&lt;br /&gt;
* [[Equipment Removal Curses]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Likely unneeded as we don&#039;t control parking? * LVL1 Parking Permit ([[Media:Lvl1_parking_permits.pdf | PDF]] and [[Media:Lvl1_parking_permit.svg | Inkscape File]]) --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=LED_2019&amp;diff=12330</id>
		<title>LED 2019</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=LED_2019&amp;diff=12330"/>
		<updated>2019-11-21T16:23:46Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WiFi LED Holiday Workshop&lt;br /&gt;
Dec 14, 2019 1pm - 4pm&lt;br /&gt;
$30&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Eventbrite link coming soon!&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=LED_2019&amp;diff=12329</id>
		<title>LED 2019</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=LED_2019&amp;diff=12329"/>
		<updated>2019-11-21T16:21:28Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: Created page with &amp;quot;WiFi LED Holiday Workshop Dec 14, 2019 1pm - 4pm $30&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WiFi LED Holiday Workshop&lt;br /&gt;
Dec 14, 2019 1pm - 4pm&lt;br /&gt;
$30&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Main_Page&amp;diff=12328</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Main_Page&amp;diff=12328"/>
		<updated>2019-11-21T16:20:57Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* What&amp;#039;s Happening? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border:1px; background-color:#f9f9f9; solid #B0B0B0; padding:3px; width:100%; margin-bottom:2px;&amp;quot;&lt;br /&gt;
!width=&amp;quot;49%&amp;quot;|&lt;br /&gt;
!width=&amp;quot;49%&amp;quot;|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;;|&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===New to LVL1.org?===&lt;br /&gt;
This is our fast and loose wiki site. It&#039;s the quickest way for all those involved with LVL1 to add and update information. For lots of basic info including our calendar, blog posts, social media links, driving and parking directions, etc. check out our web site [http://www.lvl1.org http://www.lvl1.org]! For more detailed and technical info including [[Older_Meetings|minutes]] to every one of our open meetings, our [[Bylaws|bylaws]], plus [[LVL1_Member_Projects_on_The_Net|projects]], [[Equipment|tools]], instructions, etc. check out the rest of this wiki.&lt;br /&gt;
&lt;br /&gt;
==== General Info ====&lt;br /&gt;
* [[Manual]]&lt;br /&gt;
* [[Community Guidelines]]&lt;br /&gt;
** [[How To Be Excellent]]&lt;br /&gt;
* [[Finding Information]]&lt;br /&gt;
* [[:Category:HOWTO|HOWTOs]]&lt;br /&gt;
* [[LVL1&#039;s Story]]&lt;br /&gt;
* [[Makership]]&lt;br /&gt;
&lt;br /&gt;
=== Communications ===&lt;br /&gt;
* See the [[http://www.lvl1.org/connect/ Connect page]] on our web site for links to our discussion group, hangout, social media and more!&lt;br /&gt;
&lt;br /&gt;
=== Recent Meetings ===&lt;br /&gt;
These are the agendas from recent meetings:* &lt;br /&gt;
* [[11/19/2019]]&lt;br /&gt;
* [[11/12/2019]]&lt;br /&gt;
* [[11/05/2019]]&lt;br /&gt;
* [[10/29/2019]]&lt;br /&gt;
* [[10/22/2019]]&lt;br /&gt;
* [[10/15/2019]]&lt;br /&gt;
* [[10/08/2019]]&lt;br /&gt;
* [[10/01/2019]]&lt;br /&gt;
* [[09/24/2019]]&lt;br /&gt;
* [[09/17/2019]]&lt;br /&gt;
* [[09/10/2019]]&lt;br /&gt;
* [[09/03/2019]]&lt;br /&gt;
* [[08/27/2019]]&lt;br /&gt;
* [[Older_Meetings]]&lt;br /&gt;
&lt;br /&gt;
== Meetings in 2018 ==&lt;br /&gt;
&lt;br /&gt;
=== Membership ===&lt;br /&gt;
You don&#039;t need to be a LVL1 member to enjoy any of our meetings, events and workshops. But if you&#039;d like the full LVL1 access that membership provides, and want to fully support LVL1, we&#039;d love to have you!&lt;br /&gt;
* [[How To Become A Member]]&lt;br /&gt;
* [[Previous Votes]]&lt;br /&gt;
* [[Voting ProTips]]&lt;br /&gt;
* [[Officers and Directors]]&lt;br /&gt;
&lt;br /&gt;
=== Support LVL1 ===&lt;br /&gt;
* See the [[http://www.lvl1.org/about/#support Support section]] on the About page of our web site.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* [http://makezine.com/blog Make magazine blog]&lt;br /&gt;
* [http://instructables.com Instructables]&lt;br /&gt;
&lt;br /&gt;
=== Our Neighbors ===&lt;br /&gt;
*[http://firstbuild.com/ FirstBuild] - Louisville, KY&lt;br /&gt;
*[https://www.maker13.com/ Maker13] - Louisville, KY&lt;br /&gt;
*[https://www.kre8now.com/ Kre8now] - Lexington, KY&lt;br /&gt;
*[http://bloominglabs.org/index.php/Main_Page Bloominglabs] - Bloomington, IN&lt;br /&gt;
*[http://www.hive13.org/ Hive 13] - Cincinnati, OH &lt;br /&gt;
*[https://makenashville.org/ Make Nashville] - Nashville, TN&lt;br /&gt;
*[http://www.clubcyberia.org/ Club Cyberia] - Indianapolis, IN&lt;br /&gt;
*[http://tekventure.org TekVenture] - Fort Wayne, IN&lt;br /&gt;
*[http://www.daytondiode.org/ Dayton Diode] - Dayton, OH &lt;br /&gt;
*[http://www.pumpingstationone.org/ Pumping Station One] - Chicago, IL&lt;br /&gt;
*[https://www.i3detroit.org/ i3] - Detroit, MI&lt;br /&gt;
*[https://milwaukeemakerspace.org/ Milwaukee Makerspace] - Milwaukee , WI&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
[[File:lvl1logo.png|300px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s Happening? ===&lt;br /&gt;
* See &#039;&#039;&#039;[http://www.lvl1.org/events/ Our Calendar]&#039;&#039;&#039; on our web site for details&lt;br /&gt;
* &#039;&#039;&#039;Workshops&#039;&#039;&#039; [[Workshops| - archive]]&lt;br /&gt;
** [[LED 2019]] holiday workshop&lt;br /&gt;
* &#039;&#039;&#039;Hackathons&#039;&#039;&#039; [[Hackathons| - archive]]&lt;br /&gt;
* &#039;&#039;&#039; Regular Activities &#039;&#039;&#039;&lt;br /&gt;
** [[Louisville Soundbuilders]], Mondays fortnightly (alternates with Night of the Hat), 8:00pm&lt;br /&gt;
** [[Night of the Hat]], Mondays fortnightly (alternates with Soundbuilders), 7:00pm&lt;br /&gt;
** [[Older_Meetings|Tuesday Open Meeting &amp;amp; Making]], 8:00pm&lt;br /&gt;
** [[Dust_Collection]] - Wednesday night build sessions, 7:00pm - 9:00pm&lt;br /&gt;
** [[Threadsday Thursday]] 7:00pm - 9:00pm&lt;br /&gt;
** [[Power_Racing_Series]] - Thursday night planning and build sessions&lt;br /&gt;
** [[Thursday_Code_Night]] - Open Code Night 6:00pm - 8:00pm &lt;br /&gt;
** [[LVL1 Movie Night]] &amp;amp; Open Build Night, Friday 7:30pm&lt;br /&gt;
* &#039;&#039;&#039;[[What&#039;s Happening Archive]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== LVL1 Member Projects on the Net ===&lt;br /&gt;
&lt;br /&gt;
* [[LVL1 Member Projects on The Net]]&lt;br /&gt;
* [[JAC Projects]]&lt;br /&gt;
&lt;br /&gt;
=== Our Space ===&lt;br /&gt;
* &#039;&#039;&#039;1205 E Washington Street, The Pointe. Suite LL100!&#039;&#039;&#039;&lt;br /&gt;
* [[Space|Our Facilities]]&lt;br /&gt;
* [[Community Development Initiative]]&lt;br /&gt;
* Equipment - Partial list of popular items - [[Equipment|Click here for full list]]&lt;br /&gt;
** [[ShopBot]]&lt;br /&gt;
** [[Full Spectrum Laser]] (Small Laser)&lt;br /&gt;
** [[Rabbit Laser]] (Big Laser)&lt;br /&gt;
** [[Graphtec Vinyl Cutter]]&lt;br /&gt;
** [[Zenbot_1216_CNC]]&lt;br /&gt;
* [[Equipment Wishlist]]&lt;br /&gt;
* [[Oculus LVL1 2018]]&lt;br /&gt;
** [http://www.flickr.com/photos/lvl1 Flickr Photostream]&lt;br /&gt;
** [https://www.flickr.com/groups/lvl1/pool/ Flickr Photosharing Group]&lt;br /&gt;
*** For some info on how to interact through Flickr see [[Flickr_Photosharing]]&lt;br /&gt;
&lt;br /&gt;
=== Media ===&lt;br /&gt;
* [[Graphics]]&lt;br /&gt;
* [[t-shirts]] etc.&lt;br /&gt;
* Stickers are at the space&lt;br /&gt;
&lt;br /&gt;
=== Paper Work ===&lt;br /&gt;
* [[Articles of Incorporation]]&lt;br /&gt;
* [[Bylaws]]&lt;br /&gt;
* [[Mission]]&lt;br /&gt;
* [[Waiver]]&lt;br /&gt;
* [[Media:LVL1_MembershipForm_2015NOV24.pdf|New Member Signup/Info Form]]&lt;br /&gt;
* [[Equipment Removal Curses]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Likely unneeded as we don&#039;t control parking? * LVL1 Parking Permit ([[Media:Lvl1_parking_permits.pdf | PDF]] and [[Media:Lvl1_parking_permit.svg | Inkscape File]]) --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Main_Page&amp;diff=12327</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Main_Page&amp;diff=12327"/>
		<updated>2019-11-21T16:20:19Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* What&amp;#039;s Happening? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border:1px; background-color:#f9f9f9; solid #B0B0B0; padding:3px; width:100%; margin-bottom:2px;&amp;quot;&lt;br /&gt;
!width=&amp;quot;49%&amp;quot;|&lt;br /&gt;
!width=&amp;quot;49%&amp;quot;|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;;|&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===New to LVL1.org?===&lt;br /&gt;
This is our fast and loose wiki site. It&#039;s the quickest way for all those involved with LVL1 to add and update information. For lots of basic info including our calendar, blog posts, social media links, driving and parking directions, etc. check out our web site [http://www.lvl1.org http://www.lvl1.org]! For more detailed and technical info including [[Older_Meetings|minutes]] to every one of our open meetings, our [[Bylaws|bylaws]], plus [[LVL1_Member_Projects_on_The_Net|projects]], [[Equipment|tools]], instructions, etc. check out the rest of this wiki.&lt;br /&gt;
&lt;br /&gt;
==== General Info ====&lt;br /&gt;
* [[Manual]]&lt;br /&gt;
* [[Community Guidelines]]&lt;br /&gt;
** [[How To Be Excellent]]&lt;br /&gt;
* [[Finding Information]]&lt;br /&gt;
* [[:Category:HOWTO|HOWTOs]]&lt;br /&gt;
* [[LVL1&#039;s Story]]&lt;br /&gt;
* [[Makership]]&lt;br /&gt;
&lt;br /&gt;
=== Communications ===&lt;br /&gt;
* See the [[http://www.lvl1.org/connect/ Connect page]] on our web site for links to our discussion group, hangout, social media and more!&lt;br /&gt;
&lt;br /&gt;
=== Recent Meetings ===&lt;br /&gt;
These are the agendas from recent meetings:* &lt;br /&gt;
* [[11/19/2019]]&lt;br /&gt;
* [[11/12/2019]]&lt;br /&gt;
* [[11/05/2019]]&lt;br /&gt;
* [[10/29/2019]]&lt;br /&gt;
* [[10/22/2019]]&lt;br /&gt;
* [[10/15/2019]]&lt;br /&gt;
* [[10/08/2019]]&lt;br /&gt;
* [[10/01/2019]]&lt;br /&gt;
* [[09/24/2019]]&lt;br /&gt;
* [[09/17/2019]]&lt;br /&gt;
* [[09/10/2019]]&lt;br /&gt;
* [[09/03/2019]]&lt;br /&gt;
* [[08/27/2019]]&lt;br /&gt;
* [[Older_Meetings]]&lt;br /&gt;
&lt;br /&gt;
== Meetings in 2018 ==&lt;br /&gt;
&lt;br /&gt;
=== Membership ===&lt;br /&gt;
You don&#039;t need to be a LVL1 member to enjoy any of our meetings, events and workshops. But if you&#039;d like the full LVL1 access that membership provides, and want to fully support LVL1, we&#039;d love to have you!&lt;br /&gt;
* [[How To Become A Member]]&lt;br /&gt;
* [[Previous Votes]]&lt;br /&gt;
* [[Voting ProTips]]&lt;br /&gt;
* [[Officers and Directors]]&lt;br /&gt;
&lt;br /&gt;
=== Support LVL1 ===&lt;br /&gt;
* See the [[http://www.lvl1.org/about/#support Support section]] on the About page of our web site.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* [http://makezine.com/blog Make magazine blog]&lt;br /&gt;
* [http://instructables.com Instructables]&lt;br /&gt;
&lt;br /&gt;
=== Our Neighbors ===&lt;br /&gt;
*[http://firstbuild.com/ FirstBuild] - Louisville, KY&lt;br /&gt;
*[https://www.maker13.com/ Maker13] - Louisville, KY&lt;br /&gt;
*[https://www.kre8now.com/ Kre8now] - Lexington, KY&lt;br /&gt;
*[http://bloominglabs.org/index.php/Main_Page Bloominglabs] - Bloomington, IN&lt;br /&gt;
*[http://www.hive13.org/ Hive 13] - Cincinnati, OH &lt;br /&gt;
*[https://makenashville.org/ Make Nashville] - Nashville, TN&lt;br /&gt;
*[http://www.clubcyberia.org/ Club Cyberia] - Indianapolis, IN&lt;br /&gt;
*[http://tekventure.org TekVenture] - Fort Wayne, IN&lt;br /&gt;
*[http://www.daytondiode.org/ Dayton Diode] - Dayton, OH &lt;br /&gt;
*[http://www.pumpingstationone.org/ Pumping Station One] - Chicago, IL&lt;br /&gt;
*[https://www.i3detroit.org/ i3] - Detroit, MI&lt;br /&gt;
*[https://milwaukeemakerspace.org/ Milwaukee Makerspace] - Milwaukee , WI&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
[[File:lvl1logo.png|300px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s Happening? ===&lt;br /&gt;
* See &#039;&#039;&#039;[http://www.lvl1.org/events/ Our Calendar]&#039;&#039;&#039; on our web site for details&lt;br /&gt;
* &#039;&#039;&#039;Workshops&#039;&#039;&#039; [[Workshops| - archive]]&lt;br /&gt;
** Holiday 2019&lt;br /&gt;
* &#039;&#039;&#039;Hackathons&#039;&#039;&#039; [[Hackathons| - archive]]&lt;br /&gt;
* &#039;&#039;&#039; Regular Activities &#039;&#039;&#039;&lt;br /&gt;
** [[Louisville Soundbuilders]], Mondays fortnightly (alternates with Night of the Hat), 8:00pm&lt;br /&gt;
** [[Night of the Hat]], Mondays fortnightly (alternates with Soundbuilders), 7:00pm&lt;br /&gt;
** [[Older_Meetings|Tuesday Open Meeting &amp;amp; Making]], 8:00pm&lt;br /&gt;
** [[Dust_Collection]] - Wednesday night build sessions, 7:00pm - 9:00pm&lt;br /&gt;
** [[Threadsday Thursday]] 7:00pm - 9:00pm&lt;br /&gt;
** [[Power_Racing_Series]] - Thursday night planning and build sessions&lt;br /&gt;
** [[Thursday_Code_Night]] - Open Code Night 6:00pm - 8:00pm &lt;br /&gt;
** [[LVL1 Movie Night]] &amp;amp; Open Build Night, Friday 7:30pm&lt;br /&gt;
* &#039;&#039;&#039;[[What&#039;s Happening Archive]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== LVL1 Member Projects on the Net ===&lt;br /&gt;
&lt;br /&gt;
* [[LVL1 Member Projects on The Net]]&lt;br /&gt;
* [[JAC Projects]]&lt;br /&gt;
&lt;br /&gt;
=== Our Space ===&lt;br /&gt;
* &#039;&#039;&#039;1205 E Washington Street, The Pointe. Suite LL100!&#039;&#039;&#039;&lt;br /&gt;
* [[Space|Our Facilities]]&lt;br /&gt;
* [[Community Development Initiative]]&lt;br /&gt;
* Equipment - Partial list of popular items - [[Equipment|Click here for full list]]&lt;br /&gt;
** [[ShopBot]]&lt;br /&gt;
** [[Full Spectrum Laser]] (Small Laser)&lt;br /&gt;
** [[Rabbit Laser]] (Big Laser)&lt;br /&gt;
** [[Graphtec Vinyl Cutter]]&lt;br /&gt;
** [[Zenbot_1216_CNC]]&lt;br /&gt;
* [[Equipment Wishlist]]&lt;br /&gt;
* [[Oculus LVL1 2018]]&lt;br /&gt;
** [http://www.flickr.com/photos/lvl1 Flickr Photostream]&lt;br /&gt;
** [https://www.flickr.com/groups/lvl1/pool/ Flickr Photosharing Group]&lt;br /&gt;
*** For some info on how to interact through Flickr see [[Flickr_Photosharing]]&lt;br /&gt;
&lt;br /&gt;
=== Media ===&lt;br /&gt;
* [[Graphics]]&lt;br /&gt;
* [[t-shirts]] etc.&lt;br /&gt;
* Stickers are at the space&lt;br /&gt;
&lt;br /&gt;
=== Paper Work ===&lt;br /&gt;
* [[Articles of Incorporation]]&lt;br /&gt;
* [[Bylaws]]&lt;br /&gt;
* [[Mission]]&lt;br /&gt;
* [[Waiver]]&lt;br /&gt;
* [[Media:LVL1_MembershipForm_2015NOV24.pdf|New Member Signup/Info Form]]&lt;br /&gt;
* [[Equipment Removal Curses]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Likely unneeded as we don&#039;t control parking? * LVL1 Parking Permit ([[Media:Lvl1_parking_permits.pdf | PDF]] and [[Media:Lvl1_parking_permit.svg | Inkscape File]]) --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=VCarve_Pro&amp;diff=12313</id>
		<title>VCarve Pro</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=VCarve_Pro&amp;diff=12313"/>
		<updated>2019-11-09T16:29:24Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[http://www.vectric.com/media/files/products/vcp/makerspace/MakerspaceDocument.pdf Long document about the makerspace edition]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== TLDR ==&lt;br /&gt;
*[http://www.vectric.com/downloads/trial-software/vcp8.html  Download VCarve pro trial]&amp;lt;br&amp;gt;&lt;br /&gt;
*version 10 is the current and works with below code&amp;lt;br&amp;gt;&lt;br /&gt;
*Install&amp;lt;br&amp;gt;&lt;br /&gt;
*go to help -about or something like that&amp;lt;br&amp;gt;&lt;br /&gt;
*Enter Makerspace ID&amp;lt;br&amp;gt;&lt;br /&gt;
*5DA2A-25E5D-2D9F2-1BEB8-4CD21-638A7-35BC0&amp;lt;br&amp;gt;&lt;br /&gt;
*restart&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Sumobots&amp;diff=12240</id>
		<title>Sumobots</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Sumobots&amp;diff=12240"/>
		<updated>2019-10-15T21:56:22Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[File:Sumo2018.png|400px|thumb|right]]&lt;br /&gt;
==Rules==&lt;br /&gt;
We will follow these rules: http://robogames.net/rules/all-sumo.php&lt;br /&gt;
&lt;br /&gt;
Signup form for 2019: no signup... just show up&lt;br /&gt;
&lt;br /&gt;
Double elimination tournament&lt;br /&gt;
&lt;br /&gt;
Main rule is Sumo has to be &amp;lt;10cm by 10cm and &amp;lt;500g&lt;br /&gt;
&lt;br /&gt;
The ring we will use is made of MDF painted FLAT BLACK with a GLOSS WHITE border ring. The rubber surface of the last ring was just to hard to source, build, maintain and paint.  It is at LVL1 so you can test your bot anytime.&lt;br /&gt;
&lt;br /&gt;
==Kits==&lt;br /&gt;
Zumo - http://www.pololu.com/category/129/zumo-robot-and-accessories  These are excellent kits and well supported.  Arduino based.&lt;br /&gt;
&lt;br /&gt;
Parallax $240 - Comes with 2 bots.  Kit works well, but expensive http://www.parallax.com/product/27402 and http://www.amazon.com/Parallax-SumoBot-Competition-Serial-Adapter/dp/B004SRZLZU&lt;br /&gt;
&lt;br /&gt;
Sumovore Mini Sumo $98.50 http://www.solarbotics.com/products/k_sv/&lt;br /&gt;
&lt;br /&gt;
Mark III $92 http://www.junun.org/MarkIII/Store.jsp (not sure these folks are still in business)&lt;br /&gt;
&lt;br /&gt;
TAB Sumobot http://www.amazon.com/SUMO-BOT-Remote-Controlled-Programmable-Sumo-Bot/dp/0071411933 (never seen this in action)&lt;br /&gt;
&lt;br /&gt;
JSumo kit - new for 2016 but expensive $310 https://jsumo.com/shop/predator-mini-sumo-robot-kit-full-kit-not-assembled/  Will you be the first to fight this one?&lt;br /&gt;
&lt;br /&gt;
Fingertech Cobra - https://fingertechrobotics.com/proddetail.php?prod=ft-cobra-chassis  I have had my eyes on this one for a while.&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
Gallery of Sumobots&lt;br /&gt;
&lt;br /&gt;
http://www.er-online.co.uk/minisumo/wiki/index.php?page=Gallery&lt;br /&gt;
&lt;br /&gt;
http://www.solarbotics.com/&lt;br /&gt;
&lt;br /&gt;
http://www.pololu.com/&lt;br /&gt;
&lt;br /&gt;
http://www.sparkfun.com/&lt;br /&gt;
&lt;br /&gt;
Nice Bot, but not a Sumo&lt;br /&gt;
&lt;br /&gt;
http://lcamtuf.coredump.cx/tinybot/&lt;br /&gt;
&lt;br /&gt;
Another Arduino Sumo&lt;br /&gt;
&lt;br /&gt;
http://noise0.altervista.org/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sumo from Tufts Univ&lt;br /&gt;
&lt;br /&gt;
http://www.tuftsroboticsclub.com/current-projects/sumobots&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thingiverse of above sumo http://www.thingiverse.com/thing:1548&lt;br /&gt;
&lt;br /&gt;
Check this one out http://www.huv.com/miniSumo/seeker2/&lt;br /&gt;
&lt;br /&gt;
And another one http://letsmakerobots.com/node/19648&lt;br /&gt;
&lt;br /&gt;
What about Legos? http://www.nxtprograms.com/mini_sumo/index.html&lt;br /&gt;
&lt;br /&gt;
http://www.wildrobots.com/&lt;br /&gt;
&lt;br /&gt;
http://www.elex.camosun.bc.ca/robotics/mini_sumo.htm&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Please add your own!&lt;br /&gt;
&lt;br /&gt;
[[Barney_Fife]]&lt;br /&gt;
&lt;br /&gt;
[[Home Depot Special]]&lt;br /&gt;
&lt;br /&gt;
[[Darth Sidious]]&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=10/15/2019&amp;diff=12239</id>
		<title>10/15/2019</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=10/15/2019&amp;diff=12239"/>
		<updated>2019-10-15T21:53:18Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* Upcoming Events */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
[[File:lvl1logo.png|300px|thumb|right]] &lt;br /&gt;
&lt;br /&gt;
= Welcome =&lt;br /&gt;
&lt;br /&gt;
= Shoutouts =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;People doing cool things for their fellow hackers!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* &lt;br /&gt;
= The Tim VanSandt Makership LVL1 Makership =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note: This program is funded completely through donations and NOT through our membership dues.&lt;br /&gt;
&lt;br /&gt;
* We currently have enough funds to offer a Makership. See our treasurer to make a donation.&#039;&#039;&#039;&lt;br /&gt;
*Makership Application Deadline - Last day of each month @ 11:59 PM.&lt;br /&gt;
*Submit your project for a chance to win 3 months of membership and $100 toward your project.&lt;br /&gt;
*Apply at www.lvl1.org/makership&lt;br /&gt;
*If your application is not approved, PLEASE revise and resubmit!&lt;br /&gt;
* &#039;&#039;&#039;If you would like to donate ($5/mo) to this cause, see one of the directors and we can set you up!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Equipment Report = &lt;br /&gt;
* The prusa repair is underway, parts will be here on Friday&lt;br /&gt;
* Earplugs are in the woodshop&lt;br /&gt;
* Please make sure that you review the instructions and manual and ask for the training prior to using the equipment.  Someone can get really hurt.  &lt;br /&gt;
* Please give me as much information as possible; i/e links to websites.  Consumables are difficult to find sometimes and I am not a mind reader!&lt;br /&gt;
* If your project doesn&#039;t fit on your shelf or in large member storage, please take it off site. The boneyard isn&#039;t your own personal storage shed. &lt;br /&gt;
* Community safety is more important than your personal convenience.&lt;br /&gt;
&lt;br /&gt;
= First Time Visitor Info =&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Are there any 1st time Visitors?  Tour at the end of Meeting -- Please sign the waiver of liability&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Prime Directive: &#039;&#039;&#039;Be Excellent to Each Other&#039;&#039;&#039;&lt;br /&gt;
* Being unsafe is being unexcellent!&lt;br /&gt;
** Minors must be attended by Parent/Guardian! Unattended minors will be converted to non-minors by a TARDIS or DeLorean as available&lt;br /&gt;
** Always leave equipment at least as safe as you found it&lt;br /&gt;
** Do not leave equipment running unattended&lt;br /&gt;
** Do not block access to storage or exits&lt;br /&gt;
* LVL1 Means of Communication - http://www.lvl1.org/connect/&lt;br /&gt;
** Our website / calendar is www.lvl1.org&lt;br /&gt;
** Meeting Minutes, equipment information, and projects on our wiki: wiki.lvl1.org&lt;br /&gt;
** Sign up for our Google Group discussion list https://groups.google.com/forum/#!forum/lvl1&lt;br /&gt;
** Google Hangout https://hangouts.google.com/group/KrvEvKVKapRzznlh2&lt;br /&gt;
** Facebook, Twitter, Meetup&lt;br /&gt;
** &#039;&#039;&#039;learn@lvl1.org&#039;&#039;&#039; - Want to learn something new, get some equipment training, or &#039;&#039;host a workshop&#039;&#039;?  Want to help facilitate any of these things?&lt;br /&gt;
** &#039;&#039;&#039;broken@lvl1.org&#039;&#039;&#039; - Something broken?  Something needs to be restocked?&lt;br /&gt;
** &#039;&#039;&#039;directors@lvl1.org&#039;&#039;&#039; - Need to contact those who are ostensibly &amp;quot;in charge&amp;quot;?&lt;br /&gt;
* Culture of Cleanliness&lt;br /&gt;
** Please clean up your mess and keep the space usable for your fellow hackers&lt;br /&gt;
** Get a FREE Clorox Wipe! Clean all the surfaces!&lt;br /&gt;
* T-Shirts are on sale after the meeting in the classroom!!!  $10 each&lt;br /&gt;
* FREE stickers by the sign-in station! (You have signed the waiver, right?)&lt;br /&gt;
* We have an Amazon Smile account.  PLEASE USE!  Shop at smile.amazon.com and tell them we are your favorite non-profit!  LVL1 gets .05% back from each purchase at no extra cost to you!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=  Regular Weekly Meetups =&lt;br /&gt;
&#039;&#039;&#039;If you would like to host a regular meetup, see one of the directors and we can get you set up!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MONDAY&#039;&#039;&#039;&lt;br /&gt;
* Night of The Hat - fortnightly Mondays from 7:00pm - 9:00pm, next one on 10/14/2019 &#039;&#039;(hosted by The Hat)&#039;&#039;&lt;br /&gt;
** Soldering, Open making&lt;br /&gt;
&lt;br /&gt;
* Louisville Sound builders - fortnightly Mondays at 8:00pm, next one on 10/21/2019 &#039;&#039;(hosted by Chris Cprek)&#039;&#039;&lt;br /&gt;
** Make things that make noise!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;TUESDAY&#039;&#039;&#039;&lt;br /&gt;
* LVL1 Open Meeting &amp;amp; Making - Tuesdays @ 8:00pm &lt;br /&gt;
* Directors Meeting - Normally the 3rd Tuesday of the month at 9:00pm, next one on 10/15/2019 &lt;br /&gt;
** Open to the public!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;WEDNESDAY&#039;&#039;&#039;&lt;br /&gt;
*  Dust Collector build will resume 16 Oct. We have some exciting ideas for the miter saw in the works. &#039;&#039;(hosted by P&amp;lt;small&amp;gt;a&amp;lt;/small&amp;gt;u&amp;lt;small&amp;gt;l&amp;lt;/small&amp;gt;l&amp;lt;small&amp;gt;l&amp;lt;/small&amp;gt;l&amp;lt;small&amp;gt;l&amp;lt;/small&amp;gt;l)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;THURSDAY&#039;&#039;&#039;&lt;br /&gt;
* Threadsday Thursday - every Thursday Night from 7:00pm to 9:00pm &#039;&#039;(hosted by Madeline)&lt;br /&gt;
* Code Night - With Rob in the classroom 6pm till 8:00pm   all languages are welcome.&lt;br /&gt;
&lt;br /&gt;
* Power Racing Series - Back in action; on Thursdays now &#039;&#039;(hosted by Ned or David)&#039;&#039;&lt;br /&gt;
** Build an electric Go-kart out of a PowerWheels&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039; FRIDAY&#039;&#039;&#039;&lt;br /&gt;
* Irregular Movie and Open Build Night - every Friday at 8:00pm&lt;br /&gt;
** Watch a movie of wildly varying degrees of quality&lt;br /&gt;
** Or be subjected to YouTube Hour with ████████████&lt;br /&gt;
** Bring a project work on while you ignore the movie&lt;br /&gt;
** Ignore your project while you work on the movie&lt;br /&gt;
** Group food order (usually pizza, $7/person, or Chinese, $9/person) around 7:30pm&lt;br /&gt;
** Last week we watched something with a Witch in it&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
** Let us know at a Tuesday meeting that you want something repaired that Friday or post a request on our Google Group (https://groups.google.com/forum/#!forum/lvl1) so we know to expect you and what you need repaired.&lt;br /&gt;
&lt;br /&gt;
= Upcoming Events =&lt;br /&gt;
&lt;br /&gt;
* Sumo Bot and Halloween Party - October 26 &#039;&#039;(hosted by Brian)&#039;&#039;&lt;br /&gt;
** 9th annual Sumobot Tournament and Halloween Party. Costumes strongly encouraged. Lots of fun. Come geek out with us!  8pm till...  Sumo tourney around 8:30&lt;br /&gt;
*The Purge! The Purge! The Purge! The Purge! - we finalize the area of the Boneyard to clean out at Director&#039;s meeting.&lt;br /&gt;
* Hackathon! - November 15-16 &#039;&#039;(hosted by The Hat)&#039;&#039;&lt;br /&gt;
** 24 hours, 8:00 Friday to 8:00 Saturday (plus judging) (Details TBA)&lt;br /&gt;
** Resin Fest 12-6 pm in Classroom&lt;br /&gt;
&lt;br /&gt;
** Some sort of holiday workshop, sometime in Dec. Hosted by Broken&lt;br /&gt;
* Thanksgiving Dinner Looking for help!  &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Want to host an event? We&#039;ll make it happen!&#039;&#039;&#039;&lt;br /&gt;
* See the Hosting Guide on our website: http://www.lvl1.org/hosting-guide/&lt;br /&gt;
&lt;br /&gt;
= SHOW AND TELL! =&lt;br /&gt;
&#039;&#039;&#039;Need help or materials for a project?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Need a project for any materials?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tell us what you&#039;re hacking on!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= HACK ON! =&lt;br /&gt;
* See a director for t-shirts ($10 - cheap)!&lt;br /&gt;
* Tour starting by the front door!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Meeting Notes = &lt;br /&gt;
* Attendance: &lt;br /&gt;
* Meeting Start: &lt;br /&gt;
* Meeting Stop:&lt;br /&gt;
* Tour Guide:&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=AWS_Deepracer&amp;diff=11959</id>
		<title>AWS Deepracer</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=AWS_Deepracer&amp;diff=11959"/>
		<updated>2019-05-24T00:53:15Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: Created page with &amp;quot; == Learn all about Deepracer! ==  Shared braindump doc https://docs.google.com/document/d/1Z_Z44i4vJOHXBhb_3fjmGH40L5d04CyzJKMmkfNoDY0/edit?usp=sharing&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Learn all about Deepracer! ==&lt;br /&gt;
&lt;br /&gt;
Shared braindump doc https://docs.google.com/document/d/1Z_Z44i4vJOHXBhb_3fjmGH40L5d04CyzJKMmkfNoDY0/edit?usp=sharing&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=Main_Page&amp;diff=11958</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=Main_Page&amp;diff=11958"/>
		<updated>2019-05-24T00:52:09Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* What&amp;#039;s Happening? */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{| cellpadding=&amp;quot;5&amp;quot; style=&amp;quot;border:1px; background-color:#f9f9f9; solid #B0B0B0; padding:3px; width:100%; margin-bottom:2px;&amp;quot;&lt;br /&gt;
!width=&amp;quot;49%&amp;quot;|&lt;br /&gt;
!width=&amp;quot;49%&amp;quot;|&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;;|&lt;br /&gt;
| colspan=&amp;quot;2&amp;quot; |&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|valign=&amp;quot;top&amp;quot;|&lt;br /&gt;
&lt;br /&gt;
===New to LVL1.org?===&lt;br /&gt;
This is our fast and loose wiki site. It&#039;s the quickest way for all those involved with LVL1 to add and update information. For lots of basic info including our calendar, blog posts, social media links, driving and parking directions, etc. check out our web site [http://www.lvl1.org http://www.lvl1.org]! For more detailed and technical info including [[Older_Meetings|minutes]] to every one of our open meetings, our [[Bylaws|bylaws]], plus [[LVL1_Member_Projects_on_The_Net|projects]], [[Equipment|tools]], instructions, etc. check out the rest of this wiki.&lt;br /&gt;
&lt;br /&gt;
==== General Info ====&lt;br /&gt;
* [[Manual]]&lt;br /&gt;
* [[Community Guidelines]]&lt;br /&gt;
** [[How To Be Excellent]]&lt;br /&gt;
* [[Finding Information]]&lt;br /&gt;
* [[:Category:HOWTO|HOWTOs]]&lt;br /&gt;
* [[LVL1&#039;s Story]]&lt;br /&gt;
* [[Makership]]&lt;br /&gt;
&lt;br /&gt;
=== Communications ===&lt;br /&gt;
* See the [[http://www.lvl1.org/connect/ Connect page]] on our web site for links to our discussion group, hangout, social media and more!&lt;br /&gt;
&lt;br /&gt;
=== Recent Meetings ===&lt;br /&gt;
These are the agendas from recent meetings:&lt;br /&gt;
* [[05/21/2019]]&lt;br /&gt;
* [[05/14/2019]]&lt;br /&gt;
* [[05/14/2019]]&lt;br /&gt;
* [[05/07/2019]]&lt;br /&gt;
* [[04/30/2019]]&lt;br /&gt;
* [[04/23/2019]]&lt;br /&gt;
* [[04/16/2019]]&lt;br /&gt;
* [[04/09/2019]]&lt;br /&gt;
* [[04/02/2019]]&lt;br /&gt;
* [[Older_Meetings]]&lt;br /&gt;
&lt;br /&gt;
== Meetings in 2018 ==&lt;br /&gt;
&lt;br /&gt;
=== Membership ===&lt;br /&gt;
You don&#039;t need to be a LVL1 member to enjoy any of our meetings, events and workshops. But if you&#039;d like the full LVL1 access that membership provides, and want to fully support LVL1, we&#039;d love to have you!&lt;br /&gt;
* [[How To Become A Member]]&lt;br /&gt;
* [[Previous Votes]]&lt;br /&gt;
* [[Voting ProTips]]&lt;br /&gt;
* [[Officers and Directors]]&lt;br /&gt;
&lt;br /&gt;
=== Support LVL1 ===&lt;br /&gt;
* See the [[http://www.lvl1.org/about/#support Support section]] on the About page of our web site.&lt;br /&gt;
&lt;br /&gt;
=== Links ===&lt;br /&gt;
* [http://makezine.com/blog Make magazine blog]&lt;br /&gt;
* [http://instructables.com Instructables]&lt;br /&gt;
&lt;br /&gt;
=== Our Neighbors ===&lt;br /&gt;
*[http://firstbuild.com/ FirstBuild] - Louisville, KY&lt;br /&gt;
*[https://www.maker13.com/ Maker13] - Louisville, KY&lt;br /&gt;
*[http://collexion.net/wiki/Main_Page Collexion] - Lexington, KY &lt;br /&gt;
*[https://www.kre8now.com/ Kre8now] - Lexington, KY&lt;br /&gt;
*[http://bloominglabs.org/index.php/Main_Page Bloominglabs] - Bloomington, IN&lt;br /&gt;
*[http://www.hive13.org/ Hive 13] - Cincinnati, OH &lt;br /&gt;
*[https://makenashville.org/ Make Nashville] - Nashville, TN&lt;br /&gt;
*[http://www.clubcyberia.org/ Club Cyberia] - Indianapolis, IN&lt;br /&gt;
*[http://tekventure.org TekVenture] - Fort Wayne, IN&lt;br /&gt;
*[http://www.daytondiode.org/ Dayton Diode] - Dayton, OH &lt;br /&gt;
*[http://www.pumpingstationone.org/ Pumping Station One] - Chicago, IL&lt;br /&gt;
*[https://www.i3detroit.org/ i3] - Detroit, MI&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
[[File:lvl1logo.png|300px|thumb|right]]&lt;br /&gt;
&lt;br /&gt;
=== What&#039;s Happening? ===&lt;br /&gt;
* See &#039;&#039;&#039;[http://www.lvl1.org/events/ Our Calendar]&#039;&#039;&#039; on our web site for details&lt;br /&gt;
* &#039;&#039;&#039;[[Special Events]]&#039;&#039;&#039; &lt;br /&gt;
** [[Vinyl Cutter 101]] Class - Saturday, 11 May, 12:00noon &#039;&#039;(hosted by CAD_Tim)&#039;&#039;&lt;br /&gt;
** Resin 101 Class - Saturday, 18 May, 12:00noon &#039;&#039;(hosted by Tiffany)&#039;&#039;&lt;br /&gt;
** [[Handmade Winter Clothing Item Donations 2018-2019]]&lt;br /&gt;
* &#039;&#039;&#039;Workshops&#039;&#039;&#039; [[Workshops| - archive]]&lt;br /&gt;
* &#039;&#039;&#039;Hackathons&#039;&#039;&#039; [[Hackathons| - archive]]&lt;br /&gt;
* &#039;&#039;&#039; Regular Activities &#039;&#039;&#039;&lt;br /&gt;
** [[Louisville Soundbuilders]], Mondays fortnightly (alternates with Night of the Hat), 8:00pm&lt;br /&gt;
** [[Night of the Hat]], Mondays fortnightly (alternates with Soundbuilders), 7:00pm&lt;br /&gt;
** Tuesday Open Meeting &amp;amp; Making, 8:00pm&lt;br /&gt;
** [[Dust_Collection]] - Wednesday night build sessions, 7:00pm - 9:00pm&lt;br /&gt;
** [[Threadsday Thursday]] 7:00pm - 9:00pm&lt;br /&gt;
** [[Open Code Night]], the last Thursday each month, 6:00pm - 9:00pm&lt;br /&gt;
** [[Power_Racing_Series]] - Thursday night planning and build sessions&lt;br /&gt;
** [[LVL1 Movie Night]] &amp;amp; Open Build Night, 7:30pm&lt;br /&gt;
** [[Fix-It-Friday Repair Cafe]], 8:00pm by appointment&lt;br /&gt;
** [[AWS Deepracer]], Thursdays 8:00pm watch the mailing list&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;[[What&#039;s Happening Archive]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== LVL1 Member Projects on the Net ===&lt;br /&gt;
&lt;br /&gt;
* [[LVL1 Member Projects on The Net]]&lt;br /&gt;
* [[JAC Projects]]&lt;br /&gt;
&lt;br /&gt;
=== Our Space ===&lt;br /&gt;
* &#039;&#039;&#039;1205 E Washington Street, The Pointe. Suite LL100!&#039;&#039;&#039;&lt;br /&gt;
* [[Space|Our Facilities]]&lt;br /&gt;
* [[Community Development Initiative]]&lt;br /&gt;
* Equipment - Partial list of popular items - [[Equipment|Click here for full list]]&lt;br /&gt;
** [[ShopBot]]&lt;br /&gt;
** [[Full Spectrum Laser]] (Small Laser)&lt;br /&gt;
** [[Rabbit Laser]] (Big Laser)&lt;br /&gt;
** [[Graphtec Vinyl Cutter]]&lt;br /&gt;
** [[Zenbot_1216_CNC]]&lt;br /&gt;
* [[Equipment Wishlist]]&lt;br /&gt;
* [[Oculus LVL1 2018]]&lt;br /&gt;
** [http://www.flickr.com/photos/lvl1 Flickr Photostream]&lt;br /&gt;
** [https://www.flickr.com/groups/lvl1/pool/ Flickr Photosharing Group]&lt;br /&gt;
*** For some info on how to interact through Flickr see [[Flickr_Photosharing]]&lt;br /&gt;
&lt;br /&gt;
=== Media ===&lt;br /&gt;
* [[Graphics]]&lt;br /&gt;
* [[t-shirts]] etc.&lt;br /&gt;
* Stickers are at the space&lt;br /&gt;
&lt;br /&gt;
=== Paper Work ===&lt;br /&gt;
* [[Articles of Incorporation]]&lt;br /&gt;
* [[Bylaws]]&lt;br /&gt;
* [[Mission]]&lt;br /&gt;
* [[Waiver]]&lt;br /&gt;
* [[Media:LVL1_MembershipForm_2015NOV24.pdf|New Member Signup/Info Form]]&lt;br /&gt;
&amp;lt;!-- Likely unneeded as we don&#039;t control parking? * LVL1 Parking Permit ([[Media:Lvl1_parking_permits.pdf | PDF]] and [[Media:Lvl1_parking_permit.svg | Inkscape File]]) --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=ShopBot&amp;diff=11937</id>
		<title>ShopBot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=ShopBot&amp;diff=11937"/>
		<updated>2019-05-08T12:12:17Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* Instructions and How To */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Equipment&lt;br /&gt;
|owner=LVL1&lt;br /&gt;
|serial=Serial Number&lt;br /&gt;
|model=ShopBot PR Standard 48x96&lt;br /&gt;
|arrived=12/3/2015&lt;br /&gt;
|doesitwork=Yes&lt;br /&gt;
|contact=Daniel Johnsen&lt;br /&gt;
|where=Woodshop&lt;br /&gt;
|picture=DSC 7286.JPG&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Note: Training &amp;amp; sign-off is required to use this machine.  This is an advanced piece of equipment that can cause harm to itself, the surroundings, users and bystanders.  Do not hack this machine.&lt;br /&gt;
&lt;br /&gt;
Trainers&lt;br /&gt;
Daniel Johnsen, Micah &amp;quot;Meesh&amp;quot; Burkhardt, Brian Wagner, Tim VanSant&lt;br /&gt;
&lt;br /&gt;
Trained Individuals&lt;br /&gt;
&lt;br /&gt;
== Instructions and How To ==&lt;br /&gt;
How to cut aluminum sheets [[Cutting_Aluminum_Sheet_On_Shopbot]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
X and Y limit switches for the shopbot are &lt;br /&gt;
&lt;br /&gt;
Baumer Inductive sensor&lt;br /&gt;
IFRM 08N37A3/S35L . DataSheet: [https://www.baumer.com/asset/medias/__secure__/IFRM_08N37A3_S35L_web_EN.pdf?mediaPK=8799281545246]&lt;br /&gt;
&lt;br /&gt;
Y Limit Switch replaced 5/7/19 by B Wagner&lt;br /&gt;
Sensor purchased on ebay for about $50&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
	<entry>
		<id>http://wiki.lvl1.org/index.php?title=ShopBot&amp;diff=11936</id>
		<title>ShopBot</title>
		<link rel="alternate" type="text/html" href="http://wiki.lvl1.org/index.php?title=ShopBot&amp;diff=11936"/>
		<updated>2019-05-08T12:11:22Z</updated>

		<summary type="html">&lt;p&gt;Bpwagner: /* Instructions and How To */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Equipment&lt;br /&gt;
|owner=LVL1&lt;br /&gt;
|serial=Serial Number&lt;br /&gt;
|model=ShopBot PR Standard 48x96&lt;br /&gt;
|arrived=12/3/2015&lt;br /&gt;
|doesitwork=Yes&lt;br /&gt;
|contact=Daniel Johnsen&lt;br /&gt;
|where=Woodshop&lt;br /&gt;
|picture=DSC 7286.JPG&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Note: Training &amp;amp; sign-off is required to use this machine.  This is an advanced piece of equipment that can cause harm to itself, the surroundings, users and bystanders.  Do not hack this machine.&lt;br /&gt;
&lt;br /&gt;
Trainers&lt;br /&gt;
Daniel Johnsen, Micah &amp;quot;Meesh&amp;quot; Burkhardt, Brian Wagner, Tim VanSant&lt;br /&gt;
&lt;br /&gt;
Trained Individuals&lt;br /&gt;
&lt;br /&gt;
== Instructions and How To ==&lt;br /&gt;
How to cut aluminum sheets [[Cutting_Aluminum_Sheet_On_Shopbot]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
X and Y limit switches for the shopbot are &lt;br /&gt;
&lt;br /&gt;
Baumer Inductive sensor&lt;br /&gt;
IFRM 08N37A3/S35L . [[https://www.baumer.com/asset/medias/__secure__/IFRM_08N37A3_S35L_web_EN.pdf?mediaPK=8799281545246]]&lt;br /&gt;
&lt;br /&gt;
Y Limit Switch replaced 5/7/19 by B Wagner&lt;br /&gt;
Sensor purchased on ebay for about $50&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Bpwagner</name></author>
	</entry>
</feed>