<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
	xmlns:georss="http://www.georss.org/georss"
	xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
	>

<channel>
	<title>seeedstudio &#8211; Squix &#8211; TechBlog</title>
	<atom:link href="https://blog.squix.org/tag/seeedstudio/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.squix.org</link>
	<description></description>
	<lastBuildDate>Sat, 01 Aug 2020 06:35:29 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.5.8</generator>
<site xmlns="com-wordpress:feed-additions:1">121913304</site>	<item>
		<title>PCB Assembly Service Review</title>
		<link>https://blog.squix.org/2019/09/pcb-assembly-service-review.html</link>
					<comments>https://blog.squix.org/2019/09/pcb-assembly-service-review.html#comments</comments>
		
		<dc:creator><![CDATA[Daniel Eichhorn]]></dc:creator>
		<pubDate>Thu, 19 Sep 2019 08:55:59 +0000</pubDate>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[IoT Products]]></category>
		<category><![CDATA[Product Review]]></category>
		<category><![CDATA[locopcb]]></category>
		<category><![CDATA[pcb assembly]]></category>
		<category><![CDATA[PCBA]]></category>
		<category><![CDATA[pcbgogo]]></category>
		<category><![CDATA[pcbway]]></category>
		<category><![CDATA[seeedstudio]]></category>
		<guid isPermaLink="false">https://blog.squix.org/?p=4480</guid>

					<description><![CDATA[Until recently I believed that having PCBs assembled by a professional service is either too costly for small batches or not possible at all. That was until I realized that some PCB manufacturers offer an additional assembly service (PCBA) and that their minimum order quantity ... <p><a class="read-more btn btn-secondary" href="https://blog.squix.org/2019/09/pcb-assembly-service-review.html">Read More</a></p>]]></description>
										<content:encoded><![CDATA[
<p>Until recently I believed that having PCBs assembled by a professional service is either too costly for small batches or not possible at all. That was until I realized that some PCB manufacturers offer an additional assembly service (PCBA) and that their minimum order quantity (MOQ) is often very low. But which service should you use for future prototypes and market tests? </p>



<p>So I decided to pick a handful of PCBA services and order the same small board from them. Placing the same order with different services should allow me to compare quality, speed and costs between the different services. </p>



<span id="more-4480"></span>



<p>In this post, I&#8217;m going to compare four assembly services for printed circuit boards. I got quotes from four services but placed orders with only three of them. One service (Seeedstudio) was simply too expensive for my little experiment. </p>



<p>All four services have a combined PCB/PCBA service. The services first manufacture the printed circuit boards and then they use the boards in a second stage to solder the components. Before you place the order you have to define the job with a couple of form fields. The required documents vary slightly from service to service but basically, you have to deliver Gerber files for the PCB stage and a detailed bill of material (BOM) in CSV or Excel format. </p>



<p>Two services also required a file which describes how to position the components with a pick-and-place machine, sometimes referred to as centroid files. CAD tools often can export this information. Eagle CAD, for instance, can do this with a few simple steps.</p>



<p>In the following paragraphs, I will describe the four services. At the end of this post, I will compare them side by side.</p>



<p></p>



<h2 class="wp-block-heading">PCBWay</h2>



<p><a href="https://blog.squix.org/go/pcbway">PCBWay</a> offers a rich set of services: regular PCB manufacturing, SMD stencils, flexible PCBs, advanced PCBs as well ass PCB assembly.</p>



<p>For the initial price quote, you have to provide 4 numbers: quantity of boards for assembly, number of unique parts on one board, number of surface-mounted parts and number of through-hole parts.</p>



<figure class="wp-block-image"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="640" height="728" data-attachment-id="4517" data-permalink="https://blog.squix.org/2019/09/pcb-assembly-service-review.html/image-81" data-orig-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/image.png?fit=640%2C728&amp;ssl=1" data-orig-size="640,728" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/image.png?fit=264%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/image.png?fit=640%2C728&amp;ssl=1" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/image.png?resize=640%2C728&#038;ssl=1" alt="" class="wp-image-4517" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/image.png?w=640&amp;ssl=1 640w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/image.png?resize=264%2C300&amp;ssl=1 264w" sizes="(max-width: 640px) 100vw, 640px" /></figure>



<p>You can then choose from three options how the components will be sourced: either PCBWay sources the parts for you or you send the parts to them. Or you provide some of them and PCBWay sources the rest.</p>



<p>For the initial quote, you also need to provide the size of the PCB and a couple of other aspects for PCB manufacturing. To get the final quote you need to have the Gerber files, a bill of materials (BOM) and a CSV file containing coordinates for the pick-and-place machine. The BOM is in Excel format. It&#8217;s best to download their Excel template and to provide the required information.</p>



<p>It took only a couple of hours until I got a reply from a PCBWay sales rep. The email contained an updated Excel file with costs per part. The sales rep asked me to check the BOM to make sure that they will source the correct components.</p>



<p>Since everything seemed to be as planned I paid. PCBWay has a wide range of payment options: PayPal, Credit Cards, Western Union and even Bank Transfer. </p>



<p></p>



<h4 class="wp-block-heading">Production Phase</h4>



<p>What I really liked about the PCBWay platform was the possibility to closely track the progress of the PCB order. The assembly doesn&#8217;t quite provide this level of information. I would assume that the IT system for PCB production is a lot more mature and integrated than the one for assembly. For my small quantity they probably even soldered by hand.</p>



<figure class="wp-block-image"><img decoding="async" width="1110" height="1232" data-attachment-id="4520" data-permalink="https://blog.squix.org/2019/09/pcb-assembly-service-review.html/image-1-2" data-orig-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/image-1.png?fit=1110%2C1232&amp;ssl=1" data-orig-size="1110,1232" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image-1" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/image-1.png?fit=270%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/image-1.png?fit=730%2C810&amp;ssl=1" src="https://i1.wp.com/blog.squix.org/wp-content/uploads/2019/09/image-1.png?fit=730%2C810&amp;ssl=1" alt="" class="wp-image-4520" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/image-1.png?w=1110&amp;ssl=1 1110w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/image-1.png?resize=270%2C300&amp;ssl=1 270w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/image-1.png?resize=768%2C852&amp;ssl=1 768w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/image-1.png?resize=923%2C1024&amp;ssl=1 923w" sizes="(max-width: 730px) 100vw, 730px" /><figcaption>Progress of the PCB production with PCBWay</figcaption></figure>



<p>14 days after I placed the order I received an email with photos from some PCBs. I told them that they were not mine and they quickly fixed the mistake by sending photos of my order. With the photos you can verify that the first assembly is according to your plan before they continue with the rest.</p>



<p>A day later the PCBs were shipped by DHL to Switzerland. Another 3 days later the PCBs were in my inbox. </p>



<p><strong>Note</strong>:  for this order with PCBWay I had used a slightly different design than with the later providers. In this design, I had used the wrong coil and they were not able to fit the board. So, in the end, I wasn&#8217;t able to test the functionality of the board. However, this was my mistake, not PCBWay&#8217;s and I believe for this comparison this is irrelevant. For full disclosure, I thought you should know. </p>



<p></p>



<h2 class="wp-block-heading">LocoPCB</h2>



<p><a href="https://blog.squix.org/go/locopcb">LocoPCB</a> is another manufacturer who also offers assembly services. Initially, I thought &#8220;Loco&#8221; stands for &#8220;low cost&#8221; but a closer look at their logo reveals a locomotive. So it&#8217;s relatively safe to assume that &#8220;loco&#8221; is short for locomotive. </p>



<p>Besides fun facts about their name, the ordering process for PCB and PCBA is very similar to PCBWay. They offer many options for the PCB manufacturing and for the assembly you can choose to provide parts by yourself, have them source the parts for you or a mix between the two. Minimal order quantity is 5 boards for both PCB manufacturing and PCB assembly. While in my first order I could profit from a discount for the assembly base fee the regular price is USD $50.</p>



<p>To get a quote you need to upload a ZIP file with the Gerber files. For PCB assembly an additional Excel file following their template has to be provided. The BOM has to contain the designator (e.g. C1, C2, etc.), a serial number of the part manufacturer, a column for quantities and additional description. You can use the description field to give them additional instructions per part. For instance, I wanted them to source the male header pins, but they should solder them. I wanted them to add the pins in the anti-static bag so the user could later decide if he needed the pins or not.</p>



<p>I placed the order in the evening (Central European Time) and the next morning I already had a response. They suggested replacements for some of the components in the BOM since they were easier to source. </p>



<p>All in all, they were very responsive during the order process. I had the feeling that their engineers were actually looking at the PCB design to make sure that the order would be completed as fast as possible in good quality.</p>



<p>Production and shipment were the fastest of the three tested services. Only 14 days after placing the order I had 10 perfectly looking boards in my mailbox. Quality was perfect and they worked as expected.</p>



<p>LocoPCB made to me the impression of a younger company than PCBWay but maybe I should explain this. On one hand, the LocoPCB IT systems are not as far integrated into the production process as PCBWays. While I could track every step of the production process with PCBWay the information available to me in LocoPCBs user interface was much more sparse. On the other hand, LocoPCB also seems younger because they were more eager to support me personally during the ordering process. This in my experience is usually the case for smaller and younger companies. </p>



<p></p>



<h2 class="wp-block-heading">PCBGogo</h2>



<p><a href="https://blog.squix.org/go/pcbgogo">PCPBGogo</a> was the third service from where I ordered the Buck/Boost converter board. The required information to get a quote is nearly identical with the other two services. By filling out the number of boards, number of unique parts, number of SMD parts and number of through-hole parts you get a preliminary quote. For a full quote, you also need to upload Gerber files as well as a BOM-Excel in their format. </p>



<figure class="wp-block-image"><img decoding="async" width="1908" height="934" data-attachment-id="4526" data-permalink="https://blog.squix.org/2019/09/pcb-assembly-service-review.html/image-2-2" data-orig-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/image-2.png?fit=1908%2C934&amp;ssl=1" data-orig-size="1908,934" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image-2" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/image-2.png?fit=300%2C147&amp;ssl=1" data-large-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/image-2.png?fit=730%2C357&amp;ssl=1" src="https://i1.wp.com/blog.squix.org/wp-content/uploads/2019/09/image-2.png?fit=730%2C357&amp;ssl=1" alt="" class="wp-image-4526" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/image-2.png?w=1908&amp;ssl=1 1908w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/image-2.png?resize=300%2C147&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/image-2.png?resize=768%2C376&amp;ssl=1 768w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/image-2.png?resize=1024%2C501&amp;ssl=1 1024w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/image-2.png?w=1460&amp;ssl=1 1460w" sizes="(max-width: 730px) 100vw, 730px" /><figcaption>The PCBGogo Assembly Form</figcaption></figure>



<p>Parts can either be sourced by PCBGogo, by you or as a mix. Minimal order quantity is 5 boards. The user interface looks rather old and the email communication was not as personal as with the first two services. </p>



<p>After completing the first board they also sent me a photo for review:</p>



<figure class="wp-block-image"><img data-recalc-dims="1" loading="lazy" decoding="async" width="730" height="434" data-attachment-id="4527" data-permalink="https://blog.squix.org/2019/09/pcb-assembly-service-review.html/attachment/20190625092554" data-orig-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/20190625092554-e1568879709294.jpg?fit=2767%2C1646&amp;ssl=1" data-orig-size="2767,1646" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="20190625092554" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/20190625092554-e1568879709294.jpg?fit=300%2C178&amp;ssl=1" data-large-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/20190625092554-e1568879709294.jpg?fit=730%2C434&amp;ssl=1" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/20190625092554-e1568879709294-1024x609.jpg?resize=730%2C434&#038;ssl=1" alt="" class="wp-image-4527" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/20190625092554-e1568879709294.jpg?resize=1024%2C609&amp;ssl=1 1024w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/20190625092554-e1568879709294.jpg?resize=300%2C178&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/20190625092554-e1568879709294.jpg?resize=768%2C457&amp;ssl=1 768w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/20190625092554-e1568879709294.jpg?w=1460&amp;ssl=1 1460w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/09/20190625092554-e1568879709294.jpg?w=2190&amp;ssl=1 2190w" sizes="(max-width: 730px) 100vw, 730px" /><figcaption>Preview Photo from PCBGogo</figcaption></figure>



<p>PCBGogo was not only more expensive than PCBWay and LocoPCB but also much slower. It took 27 days from placing the order until the 10 boards were in my mailbox. So it took nearly twice as much time as with the fastest contender (LocoPCB).</p>



<p></p>



<h2 class="wp-block-heading">Seeedstudio</h2>



<p>If you are an electronics enthusiast like me you probably know Seeedstudio already. They have a shop with many cool gadgets to build fantastic projects. But did you know that they also offer a lot of other services? This includes PCB/PCBA, 3D printing, and kitting services. So being quite a fan of all that Seeedstudio does I wanted to include them in my little experiment. </p>



<p>Their PCB/PCBA order forms look suspiciously similar to the ones from LocoPCB and PCBWay and I wonder Seeedstudio actually sub-contracts one of the other two services to manufacture the PCBs. Even the BOM has exactly the same format as LocoPCBs. After placing the request-for-quote they didn&#8217;t respond for a long time. After asking them if they had forgotten my request they answered that they couldn&#8217;t source the component described as &#8220;Any 2.54mm pin header&#8221;.</p>



<p>Finally, I got a quote for USD $170, more than twice the price compared to the cheapest and fastest provider. So I decided to ditch Seeedstudio from my experiment, just far too expensive!</p>



<h2 class="wp-block-heading">Elecrow</h2>



<p><strong>Update November 16, 2019:</strong> After I published the initial post somebody asked me in the comments if I had tried the Elecrow&#8217;s PCBA service. I thought, why not add more services to the post?</p>



<p>So I sent them exactly the same gerber and bom files and requested a quote. They responded relatively quickly and pointed out that they were not able to source one coil. It seems that my manufacturer part number had changed or that I had used the wrong name.</p>



<p>After providing the proper name they responded quickly with a quote by email. The price was USD $154 for 10 pieces on the upper end of the field. The high price was mostly driven by the relatively high assembly costs of USD $85, which already had a huge discount from the regular price of USD $140. Also, shipping costs drove the total price at USD $21.</p>



<figure class="wp-block-image size-large"><a href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/ElecrowQuote-scaled.png?ssl=1"><img loading="lazy" decoding="async" width="2560" height="1182" data-attachment-id="4620" data-permalink="https://blog.squix.org/2019/09/pcb-assembly-service-review.html/elecrowquote" data-orig-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/ElecrowQuote-scaled.png?fit=2560%2C1182&amp;ssl=1" data-orig-size="2560,1182" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="ElecrowQuote" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/ElecrowQuote-scaled.png?fit=300%2C139&amp;ssl=1" data-large-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/ElecrowQuote-scaled.png?fit=730%2C337&amp;ssl=1" src="https://i1.wp.com/blog.squix.org/wp-content/uploads/2019/11/ElecrowQuote-scaled.png?fit=730%2C337&amp;ssl=1" alt="" class="wp-image-4620" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/ElecrowQuote-scaled.png?w=2560&amp;ssl=1 2560w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/ElecrowQuote-scaled.png?resize=300%2C139&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/ElecrowQuote-scaled.png?resize=1024%2C473&amp;ssl=1 1024w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/ElecrowQuote-scaled.png?resize=768%2C355&amp;ssl=1 768w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/ElecrowQuote-scaled.png?resize=1536%2C709&amp;ssl=1 1536w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/ElecrowQuote-scaled.png?resize=2048%2C946&amp;ssl=1 2048w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/ElecrowQuote-scaled.png?w=1460&amp;ssl=1 1460w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/ElecrowQuote-scaled.png?w=2190&amp;ssl=1 2190w" sizes="(max-width: 730px) 100vw, 730px" /></a></figure>



<h2 class="wp-block-heading">Makerfabs</h2>



<p><strong>Update November 20, 2019:</strong> Since I published the initial version of this post I keep getting contacted by PCBA services to include them in my article. Jennifer from Makerfabs contacted me and I sent them exactly the same documents as the other services had received: Gerber files and the BOM table. They processed the request rather quickly. I submitted the documents on a Friday and on Monday I already had a quote.</p>



<p>The prices are quite comparable to PCBWay and LocoPCB. Since I already have quite a number of these Buck/Boost converters I haven&#8217;t actually executed the order. Because of this the table below doesn&#8217;t have any numbers about processing time.</p>



<p><a href="https://blog.squix.org/go/makerfabs">Makerfabs</a> doesn&#8217;t only help you to manufacture PCBs and does PCB assembly, they also offer other services. I asked them how much engineering of a ESP32 development board would cost. For USD $200 they would provide the following:</p>



<ul><li>Design of the board</li><li>3pcs PCBA samples</li><li>Simple testing instruction for the board</li><li>Schematics, PCB, Gerber and BOM files</li><li>Fees for shipping the samples</li><li>Lead time: 2-3 weeks</li></ul>



<p>It can be quite interesting to get all this from one service. Makerfabs also offers 3D printing and CNC manufacturing but I haven&#8217;t asked for a quote there.</p>



<p></p>



<figure class="wp-block-image size-large"><a href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/MakerFabsQuote.png?ssl=1"><img loading="lazy" decoding="async" width="2224" height="1312" data-attachment-id="4637" data-permalink="https://blog.squix.org/2019/09/pcb-assembly-service-review.html/makerfabsquote" data-orig-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/MakerFabsQuote.png?fit=2224%2C1312&amp;ssl=1" data-orig-size="2224,1312" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="MakerFabsQuote" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/MakerFabsQuote.png?fit=300%2C177&amp;ssl=1" data-large-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/MakerFabsQuote.png?fit=730%2C431&amp;ssl=1" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/MakerFabsQuote.png?fit=730%2C431&amp;ssl=1" alt="" class="wp-image-4637" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/MakerFabsQuote.png?w=2224&amp;ssl=1 2224w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/MakerFabsQuote.png?resize=300%2C177&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/MakerFabsQuote.png?resize=1024%2C604&amp;ssl=1 1024w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/MakerFabsQuote.png?resize=768%2C453&amp;ssl=1 768w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/MakerFabsQuote.png?resize=1536%2C906&amp;ssl=1 1536w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/MakerFabsQuote.png?resize=2048%2C1208&amp;ssl=1 2048w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2019/11/MakerFabsQuote.png?w=1460&amp;ssl=1 1460w" sizes="(max-width: 730px) 100vw, 730px" /></a><figcaption>Makerfabs Quote for 10 Buck/Boost converters</figcaption></figure>



<p></p>



<h2 class="wp-block-heading">Comparison</h2>



<p>The following table compares the four services side by side:</p>



<table id="tablepress-8" class="tablepress tablepress-id-8">
<thead>
<tr class="row-1">
	<td class="column-1"></td><th class="column-2"><a href="https://blog.squix.org/go/pcbway" target=_blank rel="noopener noreferrer">PCBWay</a></th><th class="column-3"><a href="https://blog.squix.org/go/locopcb" target=_blank rel="noopener noreferrer">LocoPCB</a></th><th class="column-4"><a href="https://blog.squix.org/go/pcbgogo" target=_blank rel="noopener noreferrer">PCBGogo</a></th><th class="column-5"><a href="https://blog.squix.org/go/seeedstudio" target=_blank rel="noopener noreferrer">Seeedstudio</a></th><th class="column-6"><a href="https://blog.squix.org/go/elecrow" target=_blank rel="noopener noreferrer">Elecrow</a></th><th class="column-7"><a href="https://blog.squix.org/go/makerfabs" target=_blank rel="noopener noreferrer">Makerfabs</a></th>
</tr>
</thead>
<tbody class="row-striping row-hover">
<tr class="row-2">
	<td class="column-1">Parts supplied by service</td><td class="column-2">Yes</td><td class="column-3">Yes</td><td class="column-4">Yes</td><td class="column-5">Yes</td><td class="column-6">Yes</td><td class="column-7">Yes</td>
</tr>
<tr class="row-3">
	<td class="column-1">Parts supplied by customer</td><td class="column-2">Yes</td><td class="column-3">Yes</td><td class="column-4">Yes</td><td class="column-5">Yes</td><td class="column-6">N/A</td><td class="column-7">N/A</td>
</tr>
<tr class="row-4">
	<td class="column-1">Mixed</td><td class="column-2">Yes</td><td class="column-3">Yes</td><td class="column-4">Yes</td><td class="column-5">Yes</td><td class="column-6">N/A</td><td class="column-7">N/A</td>
</tr>
<tr class="row-5">
	<td class="column-1">Min. Order Quantity</td><td class="column-2">5</td><td class="column-3">5</td><td class="column-4">5</td><td class="column-5">5</td><td class="column-6">5</td><td class="column-7">5</td>
</tr>
<tr class="row-6">
	<td class="column-1">Files Required</td><td class="column-2">Gerber, Pick&amp;Place, BOM</td><td class="column-3">Gerber, BOM</td><td class="column-4">Gerber, BOM</td><td class="column-5">Gerber, BOM</td><td class="column-6">Gerber, BOM</td><td class="column-7">Gerber, BOM</td>
</tr>
<tr class="row-7">
	<td class="column-1">Photo Review</td><td class="column-2">Yes</td><td class="column-3">No</td><td class="column-4">Yes</td><td class="column-5">N/A</td><td class="column-6">N/A</td><td class="column-7">N/A</td>
</tr>
<tr class="row-8">
	<td class="column-1">Total Days</td><td class="column-2">17</td><td class="column-3">14</td><td class="column-4">27</td><td class="column-5">N/A</td><td class="column-6">N/A</td><td class="column-7">N/A</td>
</tr>
<tr class="row-9">
	<td class="column-1">PCB Costs</td><td class="column-2">$38</td><td class="column-3">$5</td><td class="column-4">$5</td><td class="column-5">N/A</td><td class="column-6">$21</td><td class="column-7">$22.90</td>
</tr>
<tr class="row-10">
	<td class="column-1">Assembly Costs</td><td class="column-2">$30</td><td class="column-3">$30 (Regular $50)</td><td class="column-4">$66</td><td class="column-5">N/A</td><td class="column-6">$85</td><td class="column-7">$30</td>
</tr>
<tr class="row-11">
	<td class="column-1">Component Costs</td><td class="column-2">$22</td><td class="column-3">$39</td><td class="column-4">$22</td><td class="column-5">$45</td><td class="column-6">$21</td><td class="column-7">$25</td>
</tr>
<tr class="row-12">
	<td class="column-1">Shipping</td><td class="column-2">$0</td><td class="column-3">$0</td><td class="column-4">$36</td><td class="column-5">$0</td><td class="column-6">$21.50</td><td class="column-7">$19.80</td>
</tr>
<tr class="row-13">
	<td class="column-1">Bank Fee</td><td class="column-2">$5</td><td class="column-3">$0</td><td class="column-4">$7</td><td class="column-5">N/A</td><td class="column-6">N/A</td><td class="column-7">$0</td>
</tr>
<tr class="row-14">
	<td class="column-1">Total Costs</td><td class="column-2">$95</td><td class="column-3">$69.99</td><td class="column-4">$129</td><td class="column-5">$170.63</td><td class="column-6">$154.50</td><td class="column-7">$98.32</td>
</tr>
</tbody>
</table>
<!-- #tablepress-8 from cache -->



<p>As you can see from the table the costs are distributed in different ways. PCBGogo, for instance, has reasonable component costs but exorbitant shipping costs. For exactly the same shipping service (DHL) as the other two contenders. LocoPCB has relatively high component costs but won the price category because of the one-time assembly-base fee discount. Without that LocoPCB would be level with PCBWay. PCBWay offered a good quote for the components but a relatively high price for the 10 PCBs. </p>



<p><strong>Update August, 2020: </strong>Since I published this blog post we ordered many components with <a href="https://blog.squix.org/go/makerfabs">MakerFabs</a>. Their customer support is excellent and the prices are also quite comparable with PCBWay or former LocoPCB. They manufactured the <a href="https://blog.squix.org/go/tp-epulse-pu">ePulse Board </a> for us and we are very happy with the results. So my current recommendation is to go with MakerFabs.</p>



<p></p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.squix.org/2019/09/pcb-assembly-service-review.html/feed</wfw:commentRss>
			<slash:comments>18</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4480</post-id>	</item>
		<item>
		<title>Using Seeeduino LoRaWAN with GPS and Loriot.io</title>
		<link>https://blog.squix.org/2017/11/using-seeeduino-lorawan-with-gps-and-loriot-io.html</link>
					<comments>https://blog.squix.org/2017/11/using-seeeduino-lorawan-with-gps-and-loriot-io.html#comments</comments>
		
		<dc:creator><![CDATA[Daniel Eichhorn]]></dc:creator>
		<pubDate>Wed, 22 Nov 2017 15:46:16 +0000</pubDate>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[LoRaWAN]]></category>
		<category><![CDATA[lorawan]]></category>
		<category><![CDATA[loriot]]></category>
		<category><![CDATA[seeedstudio]]></category>
		<category><![CDATA[seeeduino]]></category>
		<guid isPermaLink="false">https://blog.squix.org/?p=3784</guid>

					<description><![CDATA[In the first blog post blog post in this series I showed you how can configure the Seeeduino LoRaWAN module to connect it to TheThingsNetwork (TTN). The second post showed you how the LoRaWAN message can be sent to a Google Spreadsheet. Now this post goes one ... <p><a class="read-more btn btn-secondary" href="https://blog.squix.org/2017/11/using-seeeduino-lorawan-with-gps-and-loriot-io.html">Read More</a></p>]]></description>
										<content:encoded><![CDATA[<p>In the <a href="https://blog.squix.org/2017/07/seeeduino-lora-gps-getting-started-with-lorawan-and-ttn.html" target="_blank" rel="noopener">first blog post blog</a> post in this series I showed you how can configure the <a href="https://blog.squix.org/go/seeedstudio-lorawan-gps" target="_blank" rel="noopener">Seeeduino LoRaWAN module</a> to connect it to TheThingsNetwork (TTN). The <a href="https://blog.squix.org/2017/07/thethingsnetwork-how-to-use-google-spreadsheet-to-log-data.html" target="_blank" rel="noopener">second post</a> showed you how the LoRaWAN message can be sent to a Google Spreadsheet. Now this post goes one step further and uses the GPS module in the Seeeduino to post the coordinates together with humidity and temperature to a Google Spreadsheet. We then visualize the coordinates on Google Maps. To make it even more interesting decided to replace the TTN backend with the backend of a Swiss startup called Loriot.io. They offer a free service where you have to connect one LoRaWAN gateway in order to participate.</p>
<p><span id="more-3784"></span></p>
<h2>Setting up a Loriot.io Account</h2>
<p>Loriot.io is a cool Swiss startup located close to Zurich and they are proving the infrastructure for LoRaWAN applications. Beside their commercial offerings they also have a service which doesn&#8217;t cost you anything. But in return you have to contribute to the network by connecting your own LoRaWAN gateway. I&#8217;m not going into detail here how to do that but here is some additional information: I configured my existing TTN gatway with a Raspberry Pi Zero W and a IMST IC880A concentrator to forward packages also to the Loriot network. In order to do that I just had to alter the local_conf.json file: Loriot uses a slightly different gateway ID (with FFFF in the middle, the default with TTN is FFFE). I also had to add the Loriot servers to the same configuration file:</p>
<pre>{
        "gateway_conf": {
                "gateway_ID": "XXXXXXFFFFXXXXXX",
                "servers": [
                  {
                        "server_address": "router.eu.thethings.network",
                        "serv_port_up": 1700,
                        "serv_port_down": 1700,
                        "serv_enabled": true
                },
                {
                        "server_address": "eu1.loriot.io",
                        "serv_port_up": 1780,
                        "serv_port_down": 1780,
                        "serv_enabled": true,
                        "keepalive_interval": 10,
                        "stat_interval": 30,
                        "push_timeout_ms": 100,

                        "forward_crc_valid": true,
                        "forward_crc_error": false,
                        "forward_crc_disabled": false
                }],
                "ref_latitude": 0,
                "ref_longitude": 0,
                "ref_altitude": 0,
                "contact_email": "",
                "description": "ttn-ic880a"
        }
}
</pre>
<p>After that you can create a free account on the <a href="https://loriot.io/" target="_blank" rel="noopener">Loriot.io page</a>. Now setup the gateway and place the created ID in the local_conf.json file, assuming that you are using a similar setup like mine (I&#8217;m using a semtek packet forwarder). Now you can switch to the &#8220;Application&#8221; menu and select the &#8220;Sample Application&#8221;. Now click on &#8220;Enroll device&#8221;:</p>
<p><a href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.22.55.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="3786" data-permalink="https://blog.squix.org/2017/11/using-seeeduino-lorawan-with-gps-and-loriot-io.html/screen-shot-2017-11-22-at-16-22-55" data-orig-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.22.55.png?fit=3330%2C1030&amp;ssl=1" data-orig-size="3330,1030" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Loriot Device enrolment" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.22.55.png?fit=300%2C93&amp;ssl=1" data-large-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.22.55.png?fit=730%2C226&amp;ssl=1" class="alignnone wp-image-3786 size-large" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.22.55.png?resize=730%2C226&#038;ssl=1" alt="" width="730" height="226" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.22.55.png?resize=1024%2C317&amp;ssl=1 1024w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.22.55.png?resize=300%2C93&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.22.55.png?resize=768%2C238&amp;ssl=1 768w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.22.55.png?w=1460&amp;ssl=1 1460w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.22.55.png?w=2190&amp;ssl=1 2190w" sizes="(max-width: 730px) 100vw, 730px" /></a></p>
<p>Enter your device ID in the form field and click &#8220;Enroll OTAA / ABP device&#8221;. In the first post I showed you how to figure out the device ID. Now navigate to &#8220;Devices&#8221; and click on the newly created device. Here you can find the DevEUI, AppEUI and AppKey which you&#8217;ll have to use in the next paragraph.</p>
<p>&nbsp;</p>
<h2>Setting up the Seeeduino Code</h2>
<p>In order to have the Seeeduino read out the GPS coordinates and the temperature and humidity we have to install two libraries. Download the TinyGpsPlus library from <a href="http://arduiniana.org/libraries/tinygpsplus/">http://arduiniana.org/libraries/tinygpsplus/</a> Then install also the DHT library from Adafruit from the library manager under Sketch &gt; Include Library &gt; Library Manager&#8230; Menu. Copy the code you previously generated in the Loriot.io interface when adding a new device.</p>
<pre>//Download http://arduiniana.org/libraries/tinygpsplus/
#include &lt;TinyGPS++.h&gt;
#include &lt;LoRaWan.h&gt;
#include "DHT.h"


TinyGPSPlus gps;
#define DHTPIN A0 // what pin we're connected to

#define DHTTYPE DHT11 // DHT 11
 
DHT dht(DHTPIN, DHTTYPE);
char buffer[256];


void setup(void)
{
    SerialUSB.begin(115200);
    Serial.begin(9600);
    
    lora.init();
    
    memset(buffer, 0, 256);
    lora.getVersion(buffer, 256, 1);
    SerialUSB.print(buffer); 
    
    memset(buffer, 0, 256);
    lora.getId(buffer, 256, 1);
    SerialUSB.print(buffer);
    SerialUSB.println("That was the id");
    // void setId(char *DevAddr, char *DevEUI, char *AppEUI);
    lora.setId(NULL, "XXX", "XXX");
    // setKey(char *NwkSKey, char *AppSKey, char *AppKey);
    lora.setKey(NULL, NULL, "XXX");
    
    lora.setDeciveMode(LWOTAA);
    lora.setDataRate(DR0, EU868);
    
    lora.setChannel(0, 868.1);
    lora.setChannel(1, 868.3);
    lora.setChannel(2, 868.5);
    lora.setChannel(3, 867.1);
    lora.setChannel(4, 867.3);
    lora.setChannel(5, 867.5);
    lora.setChannel(6, 867.7);
    
    lora.setReceiceWindowFirst(0);
    lora.setReceiceWindowSecond(869.5, DR3);
    lora.setAdaptiveDataRate(false);
    
    lora.setPower(20);
    
    while(!lora.setOTAAJoin(JOIN, 20000));
    SerialUSB.println("After OTAA join");

    // Start DHT sensor
    dht.begin();
}

void loop(void)
{   
    while (Serial.available() &gt; 0) {
      gps.encode(Serial.read());
    }
    if (gps.altitude.isUpdated()) {
      SerialUSB.println(gps.altitude.meters());
      SerialUSB.print("LAT=");  SerialUSB.println(gps.location.lat(), 6);
      SerialUSB.print("LONG="); SerialUSB.println(gps.location.lng(), 6);
      SerialUSB.print("ALT=");  SerialUSB.println(gps.altitude.meters());
      long latEncoded = (gps.location.lat() * 8388606) / 90;
      long lonEncoded = (gps.location.lng() * 8388606) / 180;
      SerialUSB.print("Lat encoded: "); 
      SerialUSB.println(latEncoded);
      SerialUSB.print("Lon encoded: "); 
      SerialUSB.println(lonEncoded);
      float h = dht.readHumidity();
      float t = dht.readTemperature();
      SerialUSB.print("Humidity is: ");
      SerialUSB.print(h);
      SerialUSB.print(", Temperature: ");
      SerialUSB.print(t);
      bool result = false;
      byte data[10] = {0};
      data[0] = h;
      data[1] = t + 100;
      data[2] = (byte) (latEncoded &gt;&gt; 16);
      data[3] = (byte) (latEncoded &gt;&gt; 8);
      data[4] = (byte) latEncoded;
      
      data[5] = (byte) (lonEncoded &gt;&gt; 16);
      data[6] = (byte) (lonEncoded &gt;&gt; 8);
      data[7] = (byte) lonEncoded;

      result = lora.transferPacket(data, 10);
      //result = lora.transferPacket(data, 10, 10);
      
      if(result)
      {
          short length;
          short rssi;
          
          memset(buffer, 0, 256);
          length = lora.receivePacket(buffer, 256, &amp;rssi);
          
          if(length)
          {
              SerialUSB.print("Length is: ");
              SerialUSB.println(length);
              SerialUSB.print("RSSI is: ");
              SerialUSB.println(rssi);
              SerialUSB.print("Data is: ");
              for(unsigned char i = 0; i &lt; length; i ++)
              {
                  SerialUSB.print("0x");
                  SerialUSB.print(buffer[i], HEX);
                  SerialUSB.print(" ");
              }
              SerialUSB.println();
          }
          delay(1000 * 60 * 5);
      }
    }
    
}


</pre>
<h2>Setting Up the Spreadsheet</h2>
<p>Log into your Google Docs account and create an new Spreadsheet</p>
<p>Give the Spreadsheet a meaningful name, e.g. LoriotLogger</p>
<p>You might also want to add the column headers:</p>
<table dir="ltr" border="1" cellspacing="0" cellpadding="0">
<colgroup>
<col width="100" />
<col width="100" />
<col width="171" />
<col width="235" />
<col width="100" />
<col width="100" />
<col width="100" />
<col width="100" />
<col width="100" />
<col width="100" />
<col width="100" />
<col width="100" />
<col width="100" />
<col width="100" />
<col width="100" />
<col width="100" />
<col width="100" /></colgroup>
<tbody>
<tr>
<td data-sheets-value="{&quot;1&quot;:2,&quot;2&quot;:&quot;rssi&quot;}">rssi</td>
<td data-sheets-value="{&quot;1&quot;:2,&quot;2&quot;:&quot;seqno&quot;}">seqno</td>
<td data-sheets-value="{&quot;1&quot;:2,&quot;2&quot;:&quot;data&quot;}">data</td>
<td data-sheets-value="{&quot;1&quot;:2,&quot;2&quot;:&quot;humidity&quot;}">humidity</td>
<td data-sheets-value="{&quot;1&quot;:2,&quot;2&quot;:&quot;temp&quot;}">temp</td>
<td data-sheets-value="{&quot;1&quot;:2,&quot;2&quot;:&quot;lat&quot;}">lat</td>
<td data-sheets-value="{&quot;1&quot;:2,&quot;2&quot;:&quot;lon&quot;}">lon</td>
<td data-sheets-value="{&quot;1&quot;:2,&quot;2&quot;:&quot;freq&quot;}">freq</td>
<td data-sheets-value="{&quot;1&quot;:2,&quot;2&quot;:&quot;ack&quot;}">ack</td>
<td data-sheets-value="{&quot;1&quot;:2,&quot;2&quot;:&quot;fcnt&quot;}">fcnt</td>
<td data-sheets-value="{&quot;1&quot;:2,&quot;2&quot;:&quot;dr&quot;}">dr</td>
<td data-sheets-value="{&quot;1&quot;:2,&quot;2&quot;:&quot;bat&quot;}">bat</td>
<td data-sheets-value="{&quot;1&quot;:2,&quot;2&quot;:&quot;port&quot;}">port</td>
<td data-sheets-value="{&quot;1&quot;:2,&quot;2&quot;:&quot;snr&quot;}">snr</td>
<td data-sheets-value="{&quot;1&quot;:2,&quot;2&quot;:&quot;EUI&quot;}">EUI</td>
<td data-sheets-value="{&quot;1&quot;:2,&quot;2&quot;:&quot;cmc&quot;}">cmc</td>
<td data-sheets-value="{&quot;1&quot;:2,&quot;2&quot;:&quot;ts&quot;}">ts</td>
</tr>
</tbody>
</table>
<p>Copy/paste them from here and insert them before all other rows.</p>
<p>Then go to Tools &gt; Script Editor&#8230;</p>
<p><a href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/ToolsScriptEditor.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="2738" data-permalink="https://blog.squix.org/2017/07/thethingsnetwork-how-to-use-google-spreadsheet-to-log-data.html/toolsscripteditor" data-orig-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/ToolsScriptEditor.png?fit=1120%2C602&amp;ssl=1" data-orig-size="1120,602" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="ToolsScriptEditor" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/ToolsScriptEditor.png?fit=300%2C161&amp;ssl=1" data-large-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/ToolsScriptEditor.png?fit=730%2C392&amp;ssl=1" class="size-medium wp-image-2738 alignnone" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/ToolsScriptEditor.png?resize=300%2C161&#038;ssl=1" alt="" width="300" height="161" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/ToolsScriptEditor.png?resize=300%2C161&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/ToolsScriptEditor.png?resize=768%2C413&amp;ssl=1 768w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/ToolsScriptEditor.png?resize=1024%2C550&amp;ssl=1 1024w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/ToolsScriptEditor.png?w=1120&amp;ssl=1 1120w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Replace the few lines of code with the code below:</p>
<pre>// 2017 by Daniel Eichhorn, https://blog.squix.org
// Inspired by https://gist.github.com/bmcbride/7069aebd643944c9ee8b
// Create or open an existing Sheet and click Tools &gt; Script editor and enter the code below
// 1. Enter sheet name where data is to be written below
var SHEET_NAME = "Sheet1";
// 2. Publish &gt; Deploy as web app
//    - enter Project Version name and click 'Save New Version'
//    - set security level and enable service (most likely execute as 'me' and access 'anyone, even anonymously)
// 3. Copy the 'Current web app URL' and post this in your form/script action

var SCRIPT_PROP = PropertiesService.getScriptProperties(); // new property service

// If you don't want to expose either GET or POST methods you can comment out the appropriate function
function doGet(e){
  return handleResponse(e);
}

function doPost(e){
  return handleResponse(e);
}

function handleResponse(e) {
  Logger.log("arrived in handleResponse");
  var jsonData = JSON.parse(e.postData.contents);
  
  try {
    // next set where we write the data - you could write to multiple/alternate destinations
    var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty("key"));
    var sheet = doc.getSheetByName(SHEET_NAME); 

    var nextRow = sheet.getLastRow()+1; // get next row
    var row = [];
    var headerRow = [];

    row.push(jsonData.rssi);
    row.push(jsonData.seqno);
    row.push(jsonData.data);
    var humidityHex = jsonData.data.substring(0, 2);
    row.push(parseInt(humidityHex, 16));
    var tempHex = jsonData.data.substring(2, 4);
    row.push(parseInt(tempHex, 16) - 100);
    var latHex = jsonData.data.substring(4, 10);
    var lonHex = jsonData.data.substring(10, 16);
    var latEncoded = parseInt(latHex, 16);
    var lonEncoded = parseInt(lonHex, 16);
    row.push((latEncoded / 8388606) * 90);
    row.push((lonEncoded / 8388606) * 180);

    row.push(jsonData.freq);
    row.push(jsonData.ack);
    row.push(jsonData.fcnt);
    row.push(jsonData.dr);
    row.push(jsonData.bat);
    row.push(jsonData.port);
    row.push(jsonData.snr);
    row.push(jsonData.EUI);
    row.push(jsonData.cmd);
    row.push(jsonData.ts);

    // more efficient to set values as [][] array than individually
    sheet.getRange(nextRow, 1, 1, row.length).setValues([row]);
    // return json success results
    return ContentService
          .createTextOutput(JSON.stringify({"result":"success", "row": nextRow}))
          .setMimeType(ContentService.MimeType.JSON);
  } catch(e) {
    // if error return this
    return ContentService
          .createTextOutput(JSON.stringify({"result":"error", "error": e}))
          .setMimeType(ContentService.MimeType.JSON);
  } 
}


</pre>
<p><a href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/LoRaWANLoggerScriptEditor.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="2737" data-permalink="https://blog.squix.org/2017/07/thethingsnetwork-how-to-use-google-spreadsheet-to-log-data.html/lorawanloggerscripteditor" data-orig-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/LoRaWANLoggerScriptEditor.png?fit=2396%2C968&amp;ssl=1" data-orig-size="2396,968" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="LoRaWANLoggerScriptEditor" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/LoRaWANLoggerScriptEditor.png?fit=300%2C121&amp;ssl=1" data-large-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/LoRaWANLoggerScriptEditor.png?fit=730%2C295&amp;ssl=1" class="alignnone wp-image-2737 size-large" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/LoRaWANLoggerScriptEditor.png?resize=730%2C295&#038;ssl=1" alt="" width="730" height="295" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/LoRaWANLoggerScriptEditor.png?resize=1024%2C414&amp;ssl=1 1024w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/LoRaWANLoggerScriptEditor.png?resize=300%2C121&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/LoRaWANLoggerScriptEditor.png?resize=768%2C310&amp;ssl=1 768w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/LoRaWANLoggerScriptEditor.png?w=1460&amp;ssl=1 1460w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/LoRaWANLoggerScriptEditor.png?w=2190&amp;ssl=1 2190w" sizes="(max-width: 730px) 100vw, 730px" /></a></p>
<p>Publish &gt; Deploy as web app</p>
<ul>
<li>enter Project Version name and click &#8216;Save New Version&#8217;</li>
<li>set security level and enable service (most likely execute as &#8216;me&#8217; and access &#8216;anyone, even anonymously)</li>
<li>Copy the &#8216;Current web app URL&#8217; and post this in your form/script action</li>
</ul>
<p><a href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/PublishDialog.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="2736" data-permalink="https://blog.squix.org/2017/07/thethingsnetwork-how-to-use-google-spreadsheet-to-log-data.html/publishdialog" data-orig-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/PublishDialog.png?fit=918%2C836&amp;ssl=1" data-orig-size="918,836" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="PublishDialog" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/PublishDialog.png?fit=300%2C273&amp;ssl=1" data-large-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/PublishDialog.png?fit=730%2C665&amp;ssl=1" class="size-medium wp-image-2736 alignnone" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/PublishDialog.png?resize=300%2C273&#038;ssl=1" alt="" width="300" height="273" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/PublishDialog.png?resize=300%2C273&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/PublishDialog.png?resize=768%2C699&amp;ssl=1 768w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/PublishDialog.png?w=918&amp;ssl=1 918w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Give permissions to the script:</p>
<p><a href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/ReviewPermissions.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="2735" data-permalink="https://blog.squix.org/2017/07/thethingsnetwork-how-to-use-google-spreadsheet-to-log-data.html/reviewpermissions" data-orig-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/ReviewPermissions.png?fit=1022%2C358&amp;ssl=1" data-orig-size="1022,358" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="ReviewPermissions" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/ReviewPermissions.png?fit=300%2C105&amp;ssl=1" data-large-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/ReviewPermissions.png?fit=730%2C256&amp;ssl=1" class="size-medium wp-image-2735 alignnone" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/ReviewPermissions.png?resize=300%2C105&#038;ssl=1" alt="" width="300" height="105" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/ReviewPermissions.png?resize=300%2C105&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/ReviewPermissions.png?resize=768%2C269&amp;ssl=1 768w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/ReviewPermissions.png?w=1022&amp;ssl=1 1022w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>Copy the URL:</p>
<p><a href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/DeployAsWebAppURL.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="2734" data-permalink="https://blog.squix.org/2017/07/thethingsnetwork-how-to-use-google-spreadsheet-to-log-data.html/deployaswebappurl" data-orig-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/DeployAsWebAppURL.png?fit=910%2C558&amp;ssl=1" data-orig-size="910,558" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="DeployAsWebAppURL" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/DeployAsWebAppURL.png?fit=300%2C184&amp;ssl=1" data-large-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/DeployAsWebAppURL.png?fit=730%2C448&amp;ssl=1" class="size-medium wp-image-2734 alignnone" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/DeployAsWebAppURL.png?resize=300%2C184&#038;ssl=1" alt="" width="300" height="184" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/DeployAsWebAppURL.png?resize=300%2C184&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/DeployAsWebAppURL.png?resize=768%2C471&amp;ssl=1 768w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/DeployAsWebAppURL.png?resize=908%2C558&amp;ssl=1 908w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/07/DeployAsWebAppURL.png?w=910&amp;ssl=1 910w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>&nbsp;</p>
<h2>Connecting Loriot with your Google Spreadsheet</h2>
<p>Switch again to the Loriot page in your browser. Navigate to the Sample App &gt; Output page:</p>
<p><a href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.31.23.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="3787" data-permalink="https://blog.squix.org/2017/11/using-seeeduino-lorawan-with-gps-and-loriot-io.html/screen-shot-2017-11-22-at-16-31-23" data-orig-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.31.23.png?fit=2050%2C1002&amp;ssl=1" data-orig-size="2050,1002" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screen Shot 2017-11-22 at 16.31.23" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.31.23.png?fit=300%2C147&amp;ssl=1" data-large-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.31.23.png?fit=730%2C357&amp;ssl=1" class="alignnone wp-image-3787 size-large" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.31.23.png?resize=730%2C357&#038;ssl=1" alt="" width="730" height="357" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.31.23.png?resize=1024%2C501&amp;ssl=1 1024w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.31.23.png?resize=300%2C147&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.31.23.png?resize=768%2C375&amp;ssl=1 768w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.31.23.png?w=1460&amp;ssl=1 1460w" sizes="(max-width: 730px) 100vw, 730px" /></a></p>
<p>Click on the &#8220;Change button&#8221; and select HTTP Push. Now enter the address from Google Docs, when you published the app. Done, Loriot should now send the data to Google Docs! <strong>One Note:</strong> I was logged into two google accounts at the same time, so my URL generated had an additional &#8220;/u/1&#8221; and it started with https://script.google.com/macros/u/1/XXX. If your URL looks like this then remove the /u/1/ from the URL.</p>
<p>&nbsp;</p>
<h2>Starting the Seeduino</h2>
<p>Now let&#8217;s see if the data arrives!</p>
<p><a href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.36.31.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="3788" data-permalink="https://blog.squix.org/2017/11/using-seeeduino-lorawan-with-gps-and-loriot-io.html/screen-shot-2017-11-22-at-16-36-31" data-orig-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.36.31.png?fit=2144%2C1002&amp;ssl=1" data-orig-size="2144,1002" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screen Shot 2017-11-22 at 16.36.31" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.36.31.png?fit=300%2C140&amp;ssl=1" data-large-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.36.31.png?fit=730%2C341&amp;ssl=1" class="alignnone wp-image-3788 size-large" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.36.31.png?resize=730%2C341&#038;ssl=1" alt="" width="730" height="341" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.36.31.png?resize=1024%2C479&amp;ssl=1 1024w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.36.31.png?resize=300%2C140&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.36.31.png?resize=768%2C359&amp;ssl=1 768w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.36.31.png?w=1460&amp;ssl=1 1460w" sizes="(max-width: 730px) 100vw, 730px" /></a></p>
<p>Hurray!</p>
<p>&nbsp;</p>
<h2>Visualize the data on Google Maps</h2>
<p>Now to the finishing: let&#8217;s put the markers on a map! Google Spreadsheets only have very simple maps so navigate to <a href="https://www.google.com/maps/d/u/0/" target="_blank" rel="noopener">https://www.google.com/maps/d/u/0/</a>.</p>
<p>In the left menu select &#8220;Import&#8221; and select your Spreadsheet from Google drive.</p>
<p><a href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.40.58.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="3789" data-permalink="https://blog.squix.org/2017/11/using-seeeduino-lorawan-with-gps-and-loriot-io.html/screen-shot-2017-11-22-at-16-40-58" data-orig-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.40.58.png?fit=626%2C742&amp;ssl=1" data-orig-size="626,742" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screen Shot 2017-11-22 at 16.40.58" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.40.58.png?fit=253%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.40.58.png?fit=626%2C742&amp;ssl=1" class="alignnone size-medium wp-image-3789" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.40.58.png?resize=253%2C300&#038;ssl=1" alt="" width="253" height="300" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.40.58.png?resize=253%2C300&amp;ssl=1 253w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.40.58.png?w=626&amp;ssl=1 626w" sizes="(max-width: 253px) 100vw, 253px" /></a></p>
<p>Now select the &#8220;lat&#8221; and &#8220;lon&#8221; column as the coordinate columns and the seqno column for the title. Create the map and you get a wonderful representation of your geo fixes, sent over LoRaWan to Loriot.io, from there to a App Script instance, which inserted the data into a spreadsheet, and from there you imported the data into a map! Wow! If you got it to work you really made it!</p>
<p><a href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.45.16.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="3790" data-permalink="https://blog.squix.org/2017/11/using-seeeduino-lorawan-with-gps-and-loriot-io.html/screen-shot-2017-11-22-at-16-45-16" data-orig-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.45.16.png?fit=2318%2C1344&amp;ssl=1" data-orig-size="2318,1344" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Screen Shot 2017-11-22 at 16.45.16" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.45.16.png?fit=300%2C174&amp;ssl=1" data-large-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.45.16.png?fit=730%2C423&amp;ssl=1" class="alignnone wp-image-3790 size-large" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.45.16.png?resize=730%2C423&#038;ssl=1" alt="" width="730" height="423" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.45.16.png?resize=1024%2C594&amp;ssl=1 1024w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.45.16.png?resize=300%2C174&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.45.16.png?resize=768%2C445&amp;ssl=1 768w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.45.16.png?w=1460&amp;ssl=1 1460w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/11/Screen-Shot-2017-11-22-at-16.45.16.png?w=2190&amp;ssl=1 2190w" sizes="(max-width: 730px) 100vw, 730px" /></a></p>
<p>Do you have questions about this post? Go over to <a href="https://support.squix.org" target="_blank" rel="noopener">https://support.squix.org</a> and place it there so everyone can profit!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.squix.org/2017/11/using-seeeduino-lorawan-with-gps-and-loriot-io.html/feed</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3784</post-id>	</item>
		<item>
		<title>First Steps with the LinkIt 7697</title>
		<link>https://blog.squix.org/2017/08/first-steps-with-the-linkit-7697.html</link>
					<comments>https://blog.squix.org/2017/08/first-steps-with-the-linkit-7697.html#respond</comments>
		
		<dc:creator><![CDATA[Daniel Eichhorn]]></dc:creator>
		<pubDate>Thu, 17 Aug 2017 09:01:39 +0000</pubDate>
				<category><![CDATA[IoT Products]]></category>
		<category><![CDATA[iot]]></category>
		<category><![CDATA[linkIt]]></category>
		<category><![CDATA[seeedstudio]]></category>
		<guid isPermaLink="false">https://blog.squix.org/?p=2833</guid>

					<description><![CDATA[The LinkIt 7697 is a development board equipped with the MT7697 from MediaTek and at first glance it looks a bit like a twin of the ESP32. It comes with Bluetooth Low Energy, has a WiFi module and plenty of RAM (compared to the ESP8266) ... <p><a class="read-more btn btn-secondary" href="https://blog.squix.org/2017/08/first-steps-with-the-linkit-7697.html">Read More</a></p>]]></description>
										<content:encoded><![CDATA[<p>The <a href="https://blog.squix.org/go/seeedstudio-linkit-7697" target="_blank" rel="noopener">LinkIt 7697</a> is a development board equipped with the MT7697 from MediaTek and at first glance it looks a bit like a twin of the ESP32. It comes with Bluetooth Low Energy, has a WiFi module and plenty of RAM (compared to the ESP8266) to write nasty memory consuming applications.</p>
<p><span id="more-2833"></span></p>
<p>One of the perks of being a blogger is that from time to time you get some cool new hardware to review. Seeedstudio asked me if I would like to play around with their brand new LinkIt 7697 and hey, I can almost never say NO to a shiny new gadget!</p>
<h2>The Peripherals</h2>
<p>The module has a luxurious set of available pins and just like the ESP8266 and the ESP32 many of them have more than one function. Starting with regular GPIO pins with PWM support (18 pins) to UARTs, ADC, hardware I2C and SPI and some more exotic ones like IrDA and I2S. The Cortex-M4 core is running with 192MHz which should give you plenty of power for more complex operations and also has a floating point unit (FPU) in case you need to do extensive math operations.</p>
<p>With 4MB of flash memory it can take your regular programs and art work without any problems, telling from my experience with the ESP8266 connected to displays.</p>
<p><a href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/LinkIt7697PinOut.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="2891" data-permalink="https://blog.squix.org/2017/08/first-steps-with-the-linkit-7697.html/linkit7697pinout" data-orig-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/LinkIt7697PinOut.png?fit=3020%2C1598&amp;ssl=1" data-orig-size="3020,1598" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="LinkIt7697PinOut" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/LinkIt7697PinOut.png?fit=300%2C159&amp;ssl=1" data-large-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/LinkIt7697PinOut.png?fit=730%2C386&amp;ssl=1" class="aligncenter wp-image-2891 size-large" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/LinkIt7697PinOut.png?resize=730%2C386&#038;ssl=1" alt="" width="730" height="386" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/LinkIt7697PinOut.png?resize=1024%2C542&amp;ssl=1 1024w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/LinkIt7697PinOut.png?resize=300%2C159&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/LinkIt7697PinOut.png?resize=768%2C406&amp;ssl=1 768w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/LinkIt7697PinOut.png?w=1460&amp;ssl=1 1460w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/LinkIt7697PinOut.png?w=2190&amp;ssl=1 2190w" sizes="(max-width: 730px) 100vw, 730px" /></a></p>
<p>If you want more details about the specs go to the <a href="https://blog.squix.org/go/seeedstudio-linkit-7697" target="_blank" rel="noopener">product page</a>.</p>
<p>&nbsp;</p>
<h2>Something practical &#8211; Controlling LED over Bluetooth</h2>
<p>The LinkIt 7697 can currently programmed by three different platforms: One is based on FreeRTOS which aims at professional embedded developers, one for the Arduino IDE and one for a graphical editor called BlocklyDuino editor, ideal for kids. In the following examples I chose the Arduino IDE since it is a good mix between removing complexity while still having access to all the hardware features.</p>
<p>Installation is easy and painless when you <a href="https://docs.labs.mediatek.com/resource/linkit7697-arduino/en" target="_blank" rel="noopener">follow this guide</a> and very similar to the ESP8266 setup:</p>
<ul>
<li>Add the JSON Url to the Arduino preferences</li>
<li>Pick the LinkIt board from the board manager</li>
<li>Select the LinkIt board from the available boards in the Tools menu</li>
</ul>
<p>After choosing the LinkIt 7697 board new examples show up in the file menu. And these examples, especially the ones for Bluetooth Low Energy (BLE) are very helpful.  For the following demo I opened <em>File &gt; Examples &gt; LBLE &gt; Simple Peripheral</em>, connected the module over USB and uploaded the sketch to the module.</p>
<p>This sketch advertises a BLE LED service which allows other devices to turn one of the on-board LEDs on and off. To test that I installed a iOS app called LightBlue which immediately displayed the service.</p>
<p><figure id="attachment_2913" aria-describedby="caption-attachment-2913" style="width: 169px" class="wp-caption aligncenter"><a href="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/IMG_2162.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="2913" data-permalink="https://blog.squix.org/2017/08/first-steps-with-the-linkit-7697.html/img_2162" data-orig-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/IMG_2162.png?fit=750%2C1334&amp;ssl=1" data-orig-size="750,1334" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="BLE LED service discovery" data-image-description="" data-image-caption="&lt;p&gt;The LinkIt 7697 advertises the BLE LED service&lt;/p&gt;
" data-medium-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/IMG_2162.png?fit=169%2C300&amp;ssl=1" data-large-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/IMG_2162.png?fit=576%2C1024&amp;ssl=1" class="size-medium wp-image-2913" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/IMG_2162.png?resize=169%2C300&#038;ssl=1" alt="" width="169" height="300" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/IMG_2162.png?resize=169%2C300&amp;ssl=1 169w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/IMG_2162.png?resize=576%2C1024&amp;ssl=1 576w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/IMG_2162.png?w=750&amp;ssl=1 750w" sizes="(max-width: 169px) 100vw, 169px" /></a><figcaption id="caption-attachment-2913" class="wp-caption-text">The LinkIt 7697 advertises the BLE LED service</figcaption></figure></p>
<p>In the LightBlue app (and in many other BLE discovery tools) you can then send values to the device. Sending a &#8220;1&#8221; turns on the LED, a &#8220;0&#8221; turns it of. Simple as that! I have to say, this was very easy to accomplish!</p>
<p>I tried another experiment, but didn&#8217;t succeed. I probably don&#8217;t understand enough of the BLE protocol. I have some bluetooth devices like a Sensirion SHT31 BLE &#8220;Humigadget&#8221;. And I couldn&#8217;t get the LinkIt 7697 to see it. While I see the device on the iOS app I cannot see it in the output of the test devices. It also seems not to update the list of discovered devices once it has taken them into the list. You can tell this because the RSSI should be fluctuating&#8230;</p>
<p>&nbsp;</p>
<h2>Comparison of the LinkIt 7697 and the ESP32</h2>
<p>As mentioned initially the two chips have many things in common, GPIO pins and types, memory, connectivity (BLE and WiFi). While the LinkIt&#8217;s development platform for the Arduino looks really mature the ESP32&#8217;s is far from this state. You have to install it with a git checkout (instead of just pasting the URL in the Arduino preferences) and some APIs like the one for BLE are not even implemented yet.</p>
<p>&nbsp;</p>
<h2>Summary</h2>
<p>The LinkIt is certainly an interesting option if you want to get started with a development module and BLE right away. I would like to find out why my BLE gadgets didn&#8217;t show up in the scan. It might be due to a bug in the BLE API or the represent a type of Bluetooth device which cannot be seen the by the LinkIt module. The quality of the examples is really good and it is really easy to setup the Arduino IDE to develop with the LinkIt module. I would like to see the ESP8266 lend some ideas from here. For instance the Serial baud rate seems to get detected automatically with the LinkIt setup, while I have to set this manually in the ESP8266 setup. And I have tested this with ESP8266 modules which also had a CP2102 serial-to-usb converter just like the LinkIt 7697. So give this Seeedstudio/MediaTek module a shot. You can buy it from Seeedstudio <a href="https://blog.squix.org/go/seeedstudio-linkit-7697" target="_blank" rel="noopener">here</a>.</p>
<p><a href="https://blog.squix.org/go/seeedstudio-linkit-7697"><img data-recalc-dims="1" loading="lazy" decoding="async" data-attachment-id="2914" data-permalink="https://blog.squix.org/2017/08/first-steps-with-the-linkit-7697.html/linkit7697" data-orig-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/LinkIt7697.jpg?fit=1600%2C1066&amp;ssl=1" data-orig-size="1600,1066" data-comments-opened="1" data-image-meta="{&quot;aperture&quot;:&quot;29&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon EOS 700D&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1492600583&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;135&quot;,&quot;iso&quot;:&quot;800&quot;,&quot;shutter_speed&quot;:&quot;0.01&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="LinkIt7697" data-image-description="" data-image-caption="" data-medium-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/LinkIt7697.jpg?fit=300%2C200&amp;ssl=1" data-large-file="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/LinkIt7697.jpg?fit=730%2C486&amp;ssl=1" class="aligncenter wp-image-2914 size-medium" src="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/LinkIt7697.jpg?resize=300%2C200&#038;ssl=1" alt="" width="300" height="200" srcset="https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/LinkIt7697.jpg?resize=300%2C200&amp;ssl=1 300w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/LinkIt7697.jpg?resize=768%2C512&amp;ssl=1 768w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/LinkIt7697.jpg?resize=1024%2C682&amp;ssl=1 1024w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/LinkIt7697.jpg?w=1600&amp;ssl=1 1600w, https://i0.wp.com/blog.squix.org/wp-content/uploads/2017/08/LinkIt7697.jpg?w=1460&amp;ssl=1 1460w" sizes="(max-width: 300px) 100vw, 300px" /></a></p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.squix.org/2017/08/first-steps-with-the-linkit-7697.html/feed</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2833</post-id>	</item>
	</channel>
</rss>
