ทำปุ่มง่ายทวีตทางยาก: 6 ขั้นตอน

ทำปุ่มง่ายทวีตทางยาก: 6 ขั้นตอน

สารบัญ:

Anonim

มีหลายวิธีในการสร้างทวีตไมโครคอนโทรลเลอร์ วิธีการง่าย ๆ ได้รับการคุ้มครองในคำแนะนำอื่น ๆ

  1. เชื่อมต่อกับคอมพิวเตอร์ที่ใช้สคริปต์ไพ ธ อนหรือคล้ายกัน
  2. เชื่อมต่อกับเราเตอร์ที่แฮ็ก (ดี - คุณรู้ว่าคุณเป็นใคร)
  3. การใช้พร็อกซีเซิร์ฟเวอร์ของบุคคลที่สามเช่น ThingTweet, ห้องสมุด Arduino ของ NeoCat, Arduino Tweet Library
วิธีที่ไม่ครอบคลุมคือการจัดการกระบวนการทั้งหมดในการสร้างทวีตโดยใช้ไมโครคอนโทรลเลอร์เท่านั้น วิธีนี้มีข้อดีสองสามข้อเหนือวิธีอื่น

  • ไม่จำเป็นต้องมีคอมพิวเตอร์ / เราเตอร์ภายนอก
  • ไม่มีความเสี่ยงด้านความปลอดภัยของวิธีที่สาม การส่งผ่านข้อมูลรับรองความปลอดภัยผ่านการขนส่งที่ไม่ปลอดภัยนั้นมีความเสี่ยง หากคุณใช้พร็อกซีเซิร์ฟเวอร์เพื่อสร้างทวีตของคุณตรวจสอบให้แน่ใจว่าคุณเข้าใจความเสี่ยง
แน่นอนวิธีนี้ยังมีข้อเสียในแง่ของขนาดรหัสและความซับซ้อน; ซึ่งเป็นเหตุผลว่าทำไมฉันถึงเรียกมันว่า "ยาก"

ความตั้งใจในการสอนนี้คือการให้เฟรมเวิร์กแบบสแตนด์อโลนขั้นพื้นฐานสำหรับการสร้างทวีตจากไมโครคอนโทรลเลอร์แอพพลิเคชั่นนั้นค่อนข้างง่าย กดปุ่มและสร้างทวีตกึ่งสุ่ม

วัสดุ:

ขั้นตอนที่ 1: อะไหล่

ฉันได้ใช้บอร์ด STM32 Discovery Board (STM32F103RG) สำหรับโครงการนี้เพราะฉันคุ้นเคยกับมันและฉันมีบอร์ดเดียว รหัสส่วนใหญ่เหนือระดับไดรเวอร์ (easybutton.c, nokia5110.c และ wiznet5100.c) ควรเป็นแพลตฟอร์มที่เป็นอิสระดังนั้นการโอนรหัสไปยังไมโครคอนโทรลเลอร์อื่น ๆ นั้นควรจะตรงไปตรงมา

โครงการนี้ต้องการเพียงไม่กี่ส่วน

  • STM32 Discovery Board หรือคล้ายกัน
  • การฝ่าวงล้อมโมดูลเครือข่าย WIZnet W5100 -
  • Nokia 5110 Graphic LCD breakout -
  • Breadboard Power Supply 5V / 3.3V -
  • Staples® Easy ButtonTM -

ขั้นตอนที่ 2: การปรับเปลี่ยนปุ่มง่าย

การปรับเปลี่ยนปุ่ม Easy Staples คือการใช้วลี ง่าย.

  1. ถอดเท้ายางสี่อันและสกรูเล็ก ๆ สี่ตัวที่อยู่ด้านล่าง
  2. ยกเลิกการเชื่อมต่อสายไฟ Vss และ Vdd ที่เชื่อมต่อกับขั้วแบตเตอรี่
  3. ถอดขั้วแบตเตอรี่
  4. บัดกรีสายไฟใหม่เข้ากับแผ่นรอง Vss และ Vdd
  5. บัดกรีลวดกับแผ่นว่างเปล่าใกล้สวิตช์ปุ่มกด (ดูรูป)
  6. เจาะรูเข้าไปในช่องใส่แบตเตอรี่และผ่านสายไฟทั้งสามผ่านเข้าไป
  7. ประกอบปุ่มอีกครั้ง
ตอนนี้คุณจะมีปุ่มที่มีสามสายยื่นออกมา
  • 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: โมดูลเวิร์กโฟลว์และรหัส

โมดูล main.c มีเวิร์กโฟลว์สำหรับโครงการ (ดูภาพ) หลังจากกำหนดค่าเริ่มต้นของบอร์ดไมโครคอนโทรลเลอร์คำร้องขอจะถูกส่งไปยังเซิร์ฟเวอร์ DHCP เครือข่ายเพื่อรับที่อยู่ IP และการตั้งค่าเครือข่าย ถัดไปคำขอจะถูกส่งไปยังเซิร์ฟเวอร์ Simple Network Time Protocol เพื่อรับเวลาและวันที่ปัจจุบัน จากนั้นรหัสจะเข้าสู่ลูปที่รอให้คุณเรียกดูที่อยู่ IP และตั้งค่าพารามิเตอร์ Oauth เมื่อตั้งค่าพารามิเตอร์แล้วรหัสจะรอให้กดปุ่มง่ายจากนั้นทวีตข้อความแบบสุ่มจากการเลือกที่มีให้

ขณะนี้ไฟล์ไบนารียืนที่ขนาดไม่เกิน 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.c
  • Base64 เข้ารหัสและถอดรหัส

ไดร์เวอร์

easybutton.c

  • ไดรเวอร์สำหรับปุ่ม Staples Easy ที่แก้ไข
nokia5110.c
  • ไดรเวอร์ Nokia 5100 Graphic LCD (SPI)
wiznet5100.c
  • WIZnet W5110 ไดรเวอร์โมดูลเครือข่าย (SPI)

โปรโตคอล

ขนส่ง

udp.c

tcp.c

  • โมดูล WIZnet ดูแลโปรโตคอลการขนส่งสองเลเยอร์เหล่านี้ดังนั้นในทางเทคนิคแล้วสิ่งเหล่านี้ยังอยู่ภายใต้โมดูลไดรเวอร์ แต่มันถูกแยกออกเพื่อความชัดเจน

ใบสมัคร

formdata.c

  • เมธอดไคลเอ็นต์ HTTP สำหรับการร้องขอ GET และ POST ไปยังเว็บเซิร์ฟเวอร์
  • วิธีเซิร์ฟเวอร์ HTTP สำหรับการรับการเรียก GET และ POST
dhcp.c
  • รับที่อยู่ IP, ซับเน็ตมาสก์, เกตเวย์และ IP เซิร์ฟเวอร์ DNS จากเซิร์ฟเวอร์ DHCP เครือข่าย
dns.c
  • แก้ไข URL ที่กำหนดให้เป็นที่อยู่ IP ที่สอดคล้องกัน
sntp.c
  • 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
oauth.c
  • โมดูลหลักของกรอบ Twitter
  • สร้างตัวระบุเฉพาะสำหรับคำขอ (ไม่ใช่)
  • สร้างการประทับเวลาสำหรับการร้องขอ
  • สร้างฐานลายเซ็นสำหรับคำขอ OAuth
  • คำนวณแฮชของฐานลายเซ็น (SHA1)
  • เซ็นชื่อแฮชโดยใช้ Consumer Secret และ Access Token Secret (HMAC-SHA1)
  • ส่งคำขอที่ลงชื่อไปยังเว็บเซิร์ฟเวอร์ (HTTP GET หรือ POST)

ขั้นตอนที่ 5: สร้างแอปพลิเคชั่น Twitter ใหม่

เพื่อทวีตคุณต้องมีสิ่งต่อไปนี้
  • รหัสผู้ใช้
  • ความลับของผู้บริโภค
  • เข้าสู่ Token
  • เข้าสู่ Token Secret
Consumer Key จะบอก Twitter ว่าแอปพลิเคชันใดกำลังส่งทวีต

โทเค็นบอก Twitter ว่าผู้ใช้คนใดกำลังทวีต

Consumer Secret และ Token Secret ไม่ได้ถูกส่งไปยัง Twitter API แต่ใช้เพื่อคำนวณแฮชการเข้ารหัสของคำขอที่ใช้เป็นลายเซ็นเพื่อป้องกันการปลอมแปลง คำขอประกอบด้วยตัวระบุที่ไม่ซ้ำกัน (ไม่ใช่) และการประทับเวลาที่ต้องอยู่ภายในห้านาทีของเวลา UTC คำขอเดียวเท่านั้นที่จะได้รับการยอมรับสำหรับการจับคู่แบบไม่มีการประทับเวลา / ที่กำหนด

ในการรับคีย์ / ความลับเหล่านี้คุณต้องสร้างแอปพลิเคชั่น Twitter ใหม่

ไปที่ http://dev.twitter.com/apps - ใช้ข้อมูลรับรอง Twitter ของคุณเพื่อลงชื่อเข้าใช้

เลือก "ลงทะเบียนแอปใหม่"

ป้อนรายละเอียดแอปพลิเคชัน

  • ชื่อแอปพลิเคชัน - ทุกสิ่งที่คุณต้องการ
  • คำอธิบาย - ทุกสิ่งที่คุณต้องการ
  • เว็บไซต์แอปพลิเคชัน - (จำเป็น) ทุกอย่างที่คุณต้องการ
  • องค์กร - (เป็นทางเลือก) ทุกสิ่งที่คุณต้องการ
  • ประเภทการใช้งาน - ไคลเอนต์
  • ประเภทการเข้าถึงเริ่มต้น - อ่านและเขียน
  • ไอคอนแอปพลิเคชัน - ใช้ค่าเริ่มต้นหรืออัปโหลดของคุณเอง
สิ่งนี้จะสร้างแอปพลิเคชันใหม่และมอบรหัสผู้บริโภคและข้อมูลลับของผู้บริโภคให้คุณ

โดยปกติแล้วสำหรับแอปพลิเคชันคุณจะต้องขอโทเค็นการเข้าใช้และการเข้าใช้โทเค็นลับสำหรับผู้ใช้แต่ละคน ในกรณีนี้เนื่องจากจะมีผู้ใช้เพียงรายเดียวเท่านั้นสำหรับแอปพลิเคชันที่มีทางลัด จากหน้าการตั้งค่าแอปพลิเคชันให้เลือก "My Access Token" เพื่อรับ Access Token และ Access Token Secret

ขอแสดงความยินดีตอนนี้คุณพร้อมที่จะสร้างทวีตแรกของคุณแล้ว

ขั้นตอนที่ 6: การดำเนินงาน

การดำเนินการของโครงการนี้ตรงไปตรงมา
  1. เชื่อมต่อแจ็ค Ethernet เข้ากับเครือข่าย / เราเตอร์ของคุณ
  2. ตรวจสอบ LCD เพื่อดูว่าได้รับการกำหนดที่อยู่ IP ใด
  3. ในเว็บเบราว์เซอร์เรียกดูที่อยู่ IP (เช่น
  4. ป้อนรหัสผู้บริโภค, ข้อมูลลับของผู้บริโภค, โทเค็นการเข้าถึงและข้อมูลลับการเข้าใช้ที่คุณได้รับและคลิกตั้งค่า
  5. LCD จะแสดง "พร้อม" และปุ่มจะติดอาวุธ
  6. ทวีตออกไปจนกว่าคุณจะเบื่อหรือเพื่อนของคุณหยุดติดตามคุณ:)