![ทำปุ่มง่ายทวีตทางยาก: 6 ขั้นตอน ทำปุ่มง่ายทวีตทางยาก: 6 ขั้นตอน](https://img.gwsigeps.com/img/circuits/make-an-easy-button-tweet-the-hard-way-7.jpg)
สารบัญ:
- วัสดุ:
- ขั้นตอนที่ 1: อะไหล่
- ขั้นตอนที่ 2: การปรับเปลี่ยนปุ่มง่าย
- ขั้นตอนที่ 3: แผนผังฮาร์ดแวร์
- ขั้นตอนที่ 4: โมดูลเวิร์กโฟลว์และรหัส
- ขั้นตอนที่ 5: สร้างแอปพลิเคชั่น Twitter ใหม่
- ขั้นตอนที่ 6: การดำเนินงาน
- เชื่อมต่อกับคอมพิวเตอร์ที่ใช้สคริปต์ไพ ธ อนหรือคล้ายกัน
- เชื่อมต่อกับเราเตอร์ที่แฮ็ก (ดี - คุณรู้ว่าคุณเป็นใคร)
- การใช้พร็อกซีเซิร์ฟเวอร์ของบุคคลที่สามเช่น ThingTweet, ห้องสมุด Arduino ของ NeoCat, Arduino Tweet Library
- ไม่จำเป็นต้องมีคอมพิวเตอร์ / เราเตอร์ภายนอก
- ไม่มีความเสี่ยงด้านความปลอดภัยของวิธีที่สาม การส่งผ่านข้อมูลรับรองความปลอดภัยผ่านการขนส่งที่ไม่ปลอดภัยนั้นมีความเสี่ยง หากคุณใช้พร็อกซีเซิร์ฟเวอร์เพื่อสร้างทวีตของคุณตรวจสอบให้แน่ใจว่าคุณเข้าใจความเสี่ยง
ความตั้งใจในการสอนนี้คือการให้เฟรมเวิร์กแบบสแตนด์อโลนขั้นพื้นฐานสำหรับการสร้างทวีตจากไมโครคอนโทรลเลอร์แอพพลิเคชั่นนั้นค่อนข้างง่าย กดปุ่มและสร้างทวีตกึ่งสุ่ม
วัสดุ:
ขั้นตอนที่ 1: อะไหล่
โครงการนี้ต้องการเพียงไม่กี่ส่วน
- STM32 Discovery Board หรือคล้ายกัน
- การฝ่าวงล้อมโมดูลเครือข่าย WIZnet W5100 -
- Nokia 5110 Graphic LCD breakout -
- Breadboard Power Supply 5V / 3.3V -
- Staples® Easy ButtonTM -
ขั้นตอนที่ 2: การปรับเปลี่ยนปุ่มง่าย
- ถอดเท้ายางสี่อันและสกรูเล็ก ๆ สี่ตัวที่อยู่ด้านล่าง
- ยกเลิกการเชื่อมต่อสายไฟ Vss และ Vdd ที่เชื่อมต่อกับขั้วแบตเตอรี่
- ถอดขั้วแบตเตอรี่
- บัดกรีสายไฟใหม่เข้ากับแผ่นรอง Vss และ Vdd
- บัดกรีลวดกับแผ่นว่างเปล่าใกล้สวิตช์ปุ่มกด (ดูรูป)
- เจาะรูเข้าไปในช่องใส่แบตเตอรี่และผ่านสายไฟทั้งสามผ่านเข้าไป
- ประกอบปุ่มอีกครั้ง
- Vss - พื้น
- Vdd - แรงดันไฟฟ้าเป็นบวก (3V แม้ว่ามันจะจัดการกับ 3.3V ได้อย่างมีความสุข)
- ความรู้สึกปุ่ม - 0V เพิ่มขึ้นเป็น 3V เมื่อกดปุ่ม
ขั้นตอนที่ 3: แผนผังฮาร์ดแวร์
ฮาร์ดแวร์นั้นค่อนข้างธรรมดา ข้อ จำกัด ด้านเวลาได้หมายความว่ามันยังคงวางอยู่บนเขียงหั่นขนม แต่ฉันวางแผนที่จะสร้างวงจรถาวรขึ้นในไม่ช้าด้วยชิ้นส่วนทั้งหมดที่ติดตั้งไว้ในฐานเล็ก ๆ ใต้ปุ่ม
แหล่งจ่ายไฟให้ Discovery Board พร้อม 5V และนี่จะลดระดับลงเป็น 3.3V โดยตัวควบคุมออนบอร์ดเพื่อเรียกใช้อุปกรณ์ต่อพ่วงทั้งหมด
ปุ่มที่แก้ไขนั้นเชื่อมต่อกับ PA1 ของ Discovery Board และมาพร้อมกับ 3.3V ซึ่งดูเหมือนจะไม่ส่งผลกระทบต่อการทำงานมาตรฐาน (ซาวด์แทร็ก "ที่ง่าย")
โมดูลเครือข่าย WIZnet W5100 เชื่อมต่อกับอุปกรณ์ต่อพ่วง SPI1 (พิน PA5, PA6 และ PA7) พร้อมการเชื่อมต่อเพิ่มเติมสำหรับ / รีเซ็ต (พิน PA2) และ / Slave Select (พิน PA4)
โมดูล Nokia 5110 Graphic LCD เชื่อมต่อกับอุปกรณ์ต่อพ่วง SPI2 (พิน PB13 และ PB15) พร้อมการเชื่อมต่อเพิ่มเติมสำหรับ / รีเซ็ต (พิน PB10), ข้อมูล / คำสั่ง (พิน PB11) และ / Slave Select (พิน PB12)
มีจุดประสงค์ทั่วไปมากมายสำหรับหมุด IO และอุปกรณ์ต่อพ่วงที่เหลืออยู่ใน Discovery Board สำหรับแอปพลิเคชั่น Twitter ขั้นสูงในอนาคต
ขั้นตอนที่ 4: โมดูลเวิร์กโฟลว์และรหัส
ขณะนี้ไฟล์ไบนารียืนที่ขนาดไม่เกิน 35K รหัสไม่ได้รับการปรับปรุงในขณะนี้ดังนั้นจึงควรเป็นไปได้ที่จะได้รับไบนารีภายใต้ 32K ด้วยการทำงานเล็กน้อย แน่นอนขึ้นอยู่กับแพลตฟอร์มและคอมไพเลอร์
ต่อไปนี้ให้ภาพรวมของโมดูลซอร์สโค้ดสำหรับโครงการ ข้อ จำกัด ด้านเวลาหมายถึงรหัสไม่ได้รับความเห็นเช่นเดียวกับที่ฉันมักจะชอบ แต่หวังว่าจะมีเอกสารในคำแนะนำนี้โมดูลควรจะค่อนข้างง่ายต่อการปฏิบัติตาม
ร่วมกัน
dictionary.c
- คลาสตัวช่วยที่มีประโยชน์ที่ควบคุมรายการที่ลิงก์ที่เรียงแล้วของคู่ชื่อ / ค่า
sha1.c
hmacsha1.c
- ใช้เพื่อสร้างแฮชของคำขอ OAuth จากนั้นเข้ารหัสด้วย Consumer Secret และ Access Token Secret
- ฉันไม่สามารถเครดิตสำหรับโมดูลเหล่านี้ได้ พวกเขาส่วนใหญ่ไม่เปลี่ยนแปลงจาก AVR Crypto Library (http://www.das-labor.org/wiki/Crypto-avr-lib)
- Base64 เข้ารหัสและถอดรหัส
ไดร์เวอร์
easybutton.c
- ไดรเวอร์สำหรับปุ่ม Staples Easy ที่แก้ไข
- ไดรเวอร์ Nokia 5100 Graphic LCD (SPI)
- WIZnet W5110 ไดรเวอร์โมดูลเครือข่าย (SPI)
โปรโตคอล
ขนส่ง
udp.c
tcp.c
- โมดูล WIZnet ดูแลโปรโตคอลการขนส่งสองเลเยอร์เหล่านี้ดังนั้นในทางเทคนิคแล้วสิ่งเหล่านี้ยังอยู่ภายใต้โมดูลไดรเวอร์ แต่มันถูกแยกออกเพื่อความชัดเจน
ใบสมัคร
formdata.c
- เมธอดไคลเอ็นต์ HTTP สำหรับการร้องขอ GET และ POST ไปยังเว็บเซิร์ฟเวอร์
- วิธีเซิร์ฟเวอร์ HTTP สำหรับการรับการเรียก GET และ POST
- รับที่อยู่ IP, ซับเน็ตมาสก์, เกตเวย์และ IP เซิร์ฟเวอร์ DNS จากเซิร์ฟเวอร์ DHCP เครือข่าย
- แก้ไข URL ที่กำหนดให้เป็นที่อยู่ IP ที่สอดคล้องกัน
- OAuth ต้องการการประทับเวลาที่แม่นยำ โมดูลนี้ร้องขอเวลาปัจจุบันจากเซิร์ฟเวอร์ Simple Network Time Protocol
เว็บเซิร์ฟเวอร์
webserver.c
- ผู้ฟังสำหรับคำขอ HTTP GET และ POST
- อนุญาตให้ตั้งค่า OAuth Consumer Key, Consumer Secret, Access Token และ Access Token Secret
พูดเบาและรวดเร็ว
twitter.c
- การนำ Twitter API ไปใช้ (ปัจจุบันจะมีการอัปเดตสถานะเท่านั้น)
- การยกของหนักส่วนใหญ่ได้รับการจัดการโดยโมดูล OAuth
- โมดูลหลักของกรอบ Twitter
- สร้างตัวระบุเฉพาะสำหรับคำขอ (ไม่ใช่)
- สร้างการประทับเวลาสำหรับการร้องขอ
- สร้างฐานลายเซ็นสำหรับคำขอ OAuth
- คำนวณแฮชของฐานลายเซ็น (SHA1)
- เซ็นชื่อแฮชโดยใช้ Consumer Secret และ Access Token Secret (HMAC-SHA1)
- ส่งคำขอที่ลงชื่อไปยังเว็บเซิร์ฟเวอร์ (HTTP GET หรือ POST)
ขั้นตอนที่ 5: สร้างแอปพลิเคชั่น Twitter ใหม่
- รหัสผู้ใช้
- ความลับของผู้บริโภค
- เข้าสู่ Token
- เข้าสู่ Token Secret
โทเค็นบอก Twitter ว่าผู้ใช้คนใดกำลังทวีต
Consumer Secret และ Token Secret ไม่ได้ถูกส่งไปยัง Twitter API แต่ใช้เพื่อคำนวณแฮชการเข้ารหัสของคำขอที่ใช้เป็นลายเซ็นเพื่อป้องกันการปลอมแปลง คำขอประกอบด้วยตัวระบุที่ไม่ซ้ำกัน (ไม่ใช่) และการประทับเวลาที่ต้องอยู่ภายในห้านาทีของเวลา UTC คำขอเดียวเท่านั้นที่จะได้รับการยอมรับสำหรับการจับคู่แบบไม่มีการประทับเวลา / ที่กำหนด
ในการรับคีย์ / ความลับเหล่านี้คุณต้องสร้างแอปพลิเคชั่น Twitter ใหม่
ไปที่ http://dev.twitter.com/apps - ใช้ข้อมูลรับรอง Twitter ของคุณเพื่อลงชื่อเข้าใช้
เลือก "ลงทะเบียนแอปใหม่"
ป้อนรายละเอียดแอปพลิเคชัน
- ชื่อแอปพลิเคชัน - ทุกสิ่งที่คุณต้องการ
- คำอธิบาย - ทุกสิ่งที่คุณต้องการ
- เว็บไซต์แอปพลิเคชัน - (จำเป็น) ทุกอย่างที่คุณต้องการ
- องค์กร - (เป็นทางเลือก) ทุกสิ่งที่คุณต้องการ
- ประเภทการใช้งาน - ไคลเอนต์
- ประเภทการเข้าถึงเริ่มต้น - อ่านและเขียน
- ไอคอนแอปพลิเคชัน - ใช้ค่าเริ่มต้นหรืออัปโหลดของคุณเอง
โดยปกติแล้วสำหรับแอปพลิเคชันคุณจะต้องขอโทเค็นการเข้าใช้และการเข้าใช้โทเค็นลับสำหรับผู้ใช้แต่ละคน ในกรณีนี้เนื่องจากจะมีผู้ใช้เพียงรายเดียวเท่านั้นสำหรับแอปพลิเคชันที่มีทางลัด จากหน้าการตั้งค่าแอปพลิเคชันให้เลือก "My Access Token" เพื่อรับ Access Token และ Access Token Secret
ขอแสดงความยินดีตอนนี้คุณพร้อมที่จะสร้างทวีตแรกของคุณแล้ว
ขั้นตอนที่ 6: การดำเนินงาน
- เชื่อมต่อแจ็ค Ethernet เข้ากับเครือข่าย / เราเตอร์ของคุณ
- ตรวจสอบ LCD เพื่อดูว่าได้รับการกำหนดที่อยู่ IP ใด
- ในเว็บเบราว์เซอร์เรียกดูที่อยู่ IP (เช่น
- ป้อนรหัสผู้บริโภค, ข้อมูลลับของผู้บริโภค, โทเค็นการเข้าถึงและข้อมูลลับการเข้าใช้ที่คุณได้รับและคลิกตั้งค่า
- LCD จะแสดง "พร้อม" และปุ่มจะติดอาวุธ
- ทวีตออกไปจนกว่าคุณจะเบื่อหรือเพื่อนของคุณหยุดติดตามคุณ:)